AI Slop Code Risk Monitor

handsontable/handsontable

SlopCodeMonitor badge for handsontable/handsontable Adjusted legacy signal; badge bands: 25 / 50 / 75 (different from dashboard bands).

JavaScript Data Grid / Data Table with a Spreadsheet Look & Feel. Works with React, Angular, and Vue. Supported by the Handsontable team ⚡

1.7 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for handsontable/handsontable, a TypeScript project with 22,074 GitHub stars. SynthScan examined 1,424,157 lines of code across 7983 source files, recording 1502 pattern matches distributed across 15 syntactic categories. The legacy adjusted pattern signal is 1.7 (Low pattern signal); it is not an authorship estimate.

Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.

1.7
Adjusted Signal
1.7
Raw Pattern Score
100%
Time Factor
2026-10-31
Last Push
22.1K
Stars
TypeScript
Language
1.4M
Lines of Code
8.0K
Files
1.5K
Pattern Hits
2026-10-31
Scan Date
0.01
HC Hit Rate

Risk Review · Payload v1

Use each vector to guide manual verification of the underlying findings.

Payload schema: 1.0.0 · Engine: 2.0.0 · Scoring: heuristic-density-v1 · Scan date: 2026-10-31.

Cognitive Ownership Risk 5.6/100 · LOW

Can maintainers explain intent, assumptions, and trade-offs? 1295 finding(s).

Hallucinated Dependency & Supply Chain Risk 1.9/100 · LOW

Are imports declared and package/API names verified? 144 finding(s).

Agent Over-Engineering Ratio 2.2/100 · LOW

Are wrappers, guards, and repeated structures necessary? 480 finding(s).

PR Review Velocity Impact 6.8/100 · LOW

Which changes need focused human review? 1502 finding(s).

What These Metrics Mean

Adjusted Signal
Legacy pattern score normalized per 1,000 scanned lines and multiplied by the repository-level time factor. It is not an estimate of AI authorship.
Raw Pattern Score
Sum of severity- and context-weighted pattern findings before applying the time factor.
Time Factor
A coarse multiplier based on repository last-push metadata. It does not identify when individual code was written.
Pattern Hits
Count of configured pattern findings. Review each location and surrounding code before acting.
HC Hit Rate
High- and critical-severity findings per scanned file. Severity is a configured detector weight, not proof of a vulnerability or authorship.
Lines / Files
Scan coverage denominators used by the legacy normalized score.

Pattern-Signal History

This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.

Severity Breakdown

Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.

CRITICAL 40HIGH 1MEDIUM 75LOW 1386

Directory Score Breakdown

This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.

Pattern Findings

The scanner identified 1502 distinct pattern matches across 15 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.

Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.

Structural Annotation Overuse503 hits · 782 pts
SeverityFileLineSnippetContext
LOWhandsontable/.ai/TESTING.md39# Step 1: rebuild the test bundle with the pattern (skips full UMD build):COMMENT
LOWhandsontable/.ai/TESTING.md41# Step 2: run puppeteer against the filtered bundle:COMMENT
LOW⚡…/columnSummary/__tests__/moveAndPhysicalCoords.unit.js110 // Step 1: an edit before any move works.COMMENT
LOW⚡…/columnSummary/__tests__/moveAndPhysicalCoords.unit.js115 // Step 2: move column A after column B. The result travels with its column.COMMENT
LOW⚡…/columnSummary/__tests__/moveAndPhysicalCoords.unit.js120 // Step 3: editing the moved column (now B) must update its summary. It stayed at 9 before the fix.COMMENT
LOW⚡…/columnSummary/__tests__/moveAndPhysicalCoords.unit.js125 // Step 4: editing the column that moved into A's old place must not write a summary there. Before the fixCOMMENT
LOW⚡…columnSummary/__tests__/reversedRowCoordsAlter.unit.js243 // Step 1: shrink the table so B re-derives to 4 - 4 - 1 = -1 and parks (with a warning), while ACOMMENT
LOW⚡…columnSummary/__tests__/reversedRowCoordsAlter.unit.js250 // Step 2: append. A re-anchors from `aRowBefore` to the new last row; its old cell must be cleared.COMMENT
LOW⚡.claude/skills/handsontable-demo-page/SKILL.md19## Step 1: Analyze the PR contextCOMMENT
LOW⚡.claude/skills/handsontable-demo-page/SKILL.md23## Step 2: Build HandsontableCOMMENT
LOW⚡.claude/skills/handsontable-demo-page/SKILL.md31## Step 3: Generate the two filesCOMMENT
LOW.claude/skills/handsontable-demo-page/SKILL.md138## Step 4: Serve and verifyCOMMENT
LOW.claude/skills/browserstack-live/SKILL.md10## Step 1: Prepare something to testCOMMENT
LOW.claude/skills/browserstack-live/SKILL.md47## Step 2: Start the Cloudflare tunnelCOMMENT
LOW.claude/skills/browserstack-live/SKILL.md60## Step 3: Launch the BrowserStack sessionCOMMENT
LOW.claude/skills/browserstack-live/SKILL.md98## Step 4: CleanupCOMMENT
LOW⚡…ering-styling/frozen-summary-row/frozen-summary-row.md80## Step 1: Include the summary row in your dataCOMMENT
LOW⚡…ering-styling/frozen-summary-row/frozen-summary-row.md84## Step 2: Freeze the bottom rowCOMMENT
LOW⚡…ering-styling/frozen-summary-row/frozen-summary-row.md88## Step 3: Compute sum, average, and countCOMMENT
LOW…ering-styling/frozen-summary-row/frozen-summary-row.md102## Step 4: Recalculate on load and on editsCOMMENT
LOW…ering-styling/frozen-summary-row/frozen-summary-row.md109## Step 5: Make the summary row read-only and styledCOMMENT
LOW⚡…ing/sparkline-cell-renderer/sparkline-cell-renderer.md78## Step 1: Run `baseRenderer` before the SVGCOMMENT
LOW⚡…ing/sparkline-cell-renderer/sparkline-cell-renderer.md84## Step 2: Map cell values to slotsCOMMENT
LOW⚡…ing/sparkline-cell-renderer/sparkline-cell-renderer.md88## Step 3: Compute a global scaleCOMMENT
LOW⚡…ing/sparkline-cell-renderer/sparkline-cell-renderer.md92## Step 4: Build the SVGCOMMENT
LOW⚡…ing/sparkline-cell-renderer/sparkline-cell-renderer.md96## Step 5: Register the renderer and cell typeCOMMENT
LOW…g/conditional-row-coloring/conditional-row-coloring.md79## Step 1: Define the status-to-class mappingCOMMENT
LOW…g/conditional-row-coloring/conditional-row-coloring.md107## Step 2: Wire up the `cells` callbackCOMMENT
LOW…g/conditional-row-coloring/conditional-row-coloring.md147## Step 3: Configure columns and dataCOMMENT
LOW…g/conditional-row-coloring/conditional-row-coloring.md184## Step 4: Write scoped CSS for each statusCOMMENT
LOW…g/conditional-row-coloring/conditional-row-coloring.md226## Step 5: Flash feedback for rejected editsCOMMENT
LOW…ent/recipes/platforms/web-components/web-components.md47## Step 1: Define the element and its stylesCOMMENT
LOW…ent/recipes/platforms/web-components/web-components.md110## Step 2: Create the grid and emit its editsCOMMENT
LOW…ent/recipes/platforms/web-components/web-components.md212## Step 3: Expose the grid through methodsCOMMENT
LOW…ent/recipes/platforms/web-components/web-components.md344## Step 4: Clean up on disconnectCOMMENT
LOW…ent/recipes/platforms/web-components/web-components.md379## Step 5: Use the elementCOMMENT
LOW…ent/recipes/platforms/salesforce-lwc/salesforce-lwc.md72## Step 1: Add Handsontable DataGrid as a static resourceCOMMENT
LOW…ent/recipes/platforms/salesforce-lwc/salesforce-lwc.md115## Step 2: Create the grid wrapper componentCOMMENT
LOW…ent/recipes/platforms/salesforce-lwc/salesforce-lwc.md256## Step 3: Understand which shadow DOM mode you are inCOMMENT
LOW…ent/recipes/platforms/salesforce-lwc/salesforce-lwc.md324## Step 4: Expose the grid's settings and hooksCOMMENT
LOW…ent/recipes/platforms/salesforce-lwc/salesforce-lwc.md394## Step 5: Build the columns from Salesforce field metadataCOMMENT
LOW…ent/recipes/platforms/salesforce-lwc/salesforce-lwc.md656## Step 6: Save changes back to SalesforceCOMMENT
LOW…ent/recipes/platforms/salesforce-lwc/salesforce-lwc.md795## Step 7: Deploy and open the gridCOMMENT
LOW…multi-column-filter-panel/multi-column-filter-panel.md77## Step 1 - Enable filtering and create the gridCOMMENT
LOW…multi-column-filter-panel/multi-column-filter-panel.md99## Step 2 - Get the plugin and apply conditionsCOMMENT
LOW…multi-column-filter-panel/multi-column-filter-panel.md132## Step 3 - Add clear-all behaviorCOMMENT
LOW…pes/column-management/freeze-columns/freeze-columns.md81## Step 1: Set up the grid with fixedColumnsStart and manualColumnMoveCOMMENT
LOW…pes/column-management/freeze-columns/freeze-columns.md111## Step 2: Track state and apply the freeze boundaryCOMMENT
LOW…pes/column-management/freeze-columns/freeze-columns.md131## Step 3: Generate freeze buttons from the column headersCOMMENT
LOW…pes/column-management/freeze-columns/freeze-columns.md155## Step 4: Add the Unfreeze all buttonCOMMENT
LOW…pes/column-management/freeze-columns/freeze-columns.md167## Step 5: Show a frozen column count indicatorCOMMENT
LOW…lumn-management/column-visibility/column-visibility.md77## Step 1: Define the full columns configCOMMENT
LOW…lumn-management/column-visibility/column-visibility.md108## Step 2: Track visible column indicesCOMMENT
LOW…lumn-management/column-visibility/column-visibility.md130## Step 3: Initialize Handsontable DataGridCOMMENT
LOW…lumn-management/column-visibility/column-visibility.md147## Step 4: Generate the checkbox listCOMMENT
LOW…lumn-management/column-visibility/column-visibility.md170## Step 5: Implement the toggle handlerCOMMENT
LOW…anagement/server-side-supabase/server-side-supabase.md62## Step 1: Create the database tableCOMMENT
LOW…anagement/server-side-supabase/server-side-supabase.md119## Step 2: Configure environment variablesCOMMENT
LOW…anagement/server-side-supabase/server-side-supabase.md134## Step 3: Create the Supabase clientCOMMENT
LOW…anagement/server-side-supabase/server-side-supabase.md148## Step 4: Map filter conditions to PostgRESTCOMMENT
443 more matches not shown…
Hallucination Indicators40 hits · 435 pts
SeverityFileLineSnippetContext
CRITICALhandsontable/test/lib/jquery.min.js4},cur:function(){var a=Zb.propHooks[this.prop];return a&&a.get?a.get(this):Zb.propHooks._default.get(this)},run:functionCODE
CRITICAL…lugins/formulaBuilder/__tests__/formulaBuilder.unit.ts564 const addedHooks = stub.hot.addHook.mock.calls.map(call => call[0]);CODE
CRITICAL…lugins/formulaBuilder/__tests__/formulaBuilder.unit.ts578 const removedHooks = stub.hot.removeHook.mock.calls.map(call => call[0]);CODE
CRITICAL…lugins/formulaBuilder/__tests__/formulaBuilder.unit.ts589 const callOf = (name: string) => stub.hot.addHook.mock.calls.find(call => call[0] === name);CODE
CRITICAL…lugins/formulaBuilder/__tests__/formulaBuilder.unit.ts662 const hooksAfterEnable = stub.hot.addHook.mock.calls.map(call => call[0]);CODE
CRITICAL…lugins/formulaBuilder/__tests__/formulaBuilder.unit.ts1023 const removedHooks = stub.hot.removeHook.mock.calls.map(call => call[0]);CODE
CRITICAL…lugins/formulaBuilder/__tests__/formulaBuilder.unit.ts1683 rendererRemoved: stub.hot.removeHook.mock.calls.some(call => call[0] === 'afterRenderer'),CODE
CRITICALhandsontable/src/plugins/mergeCells/mergeCells.ts655 this.hot.view._wt.wtOverlays.getOverlays(true).map(CODE
CRITICAL…s/nestedHeaders/__tests__/generalFunctionality.spec.js504 const headerRows = hot.view._wt.wtTable.THEAD.querySelectorAll('tr');CODE
CRITICAL…e/src/plugins/nestedHeaders/__tests__/helpers/index.js30 const headerRows = hot.view._wt.wtTable.THEAD.querySelectorAll('tr');CODE
CRITICAL…e/src/plugins/manualColumnResize/manualColumnResize.ts582 this.hot.view._wt.wtViewport.resetHasOversizedColumnHeadersMarked();CODE
CRITICALhandsontable/src/plugins/manualRowMove/manualRowMove.ts471 tdStartPixel += this.hot.view._wt.wtOverlays.topOverlay.getOverlayOffset();CODE
CRITICALhandsontable/src/plugins/manualRowMove/manualRowMove.ts716 const headerWidth = this.hot.view._wt.wtViewport.getRowHeaderWidth();CODE
CRITICAL…table/src/plugins/manualColumnMove/manualColumnMove.ts442 columnsWidth += this.hot.view._wt.wtViewport.getRowHeaderWidth() || 0;CODE
CRITICAL…table/src/plugins/manualColumnMove/manualColumnMove.ts445 columnsWidth += this.hot.view._wt.wtTable.getColumnWidth(renderableIndex) || 0;CODE
CRITICAL…table/src/plugins/manualColumnMove/manualColumnMove.ts851 const horizontalScrollPosition = this.hot.view._wt.wtOverlays.inlineStartOverlay.getOverlayOffset();CODE
CRITICAL…ins/manualColumnMove/__tests__/fixedColumnsEnd.unit.js109 const cells = hot.view._wt.wtOverlays.inlineEndOverlay.clone.wtTable.TBODY.querySelector('tr').children;CODE
CRITICAL…e/src/editors/autocompleteEditor/autocompleteEditor.ts159 addClass(this.htContainer, this.hot.rootWindow.navigator.platform.indexOf('Mac') === -1 ? '' : 'htMacScroll');CODE
CRITICAL…e/src/editors/autocompleteEditor/autocompleteEditor.ts819 this.htEditor.view._wt.wtTable.alignOverlaysWithTrimmingContainer();CODE
CRITICAL…e/src/editors/autocompleteEditor/autocompleteEditor.ts844 this.htEditor.view._wt.wtTable.alignOverlaysWithTrimmingContainer();CODE
CRITICALhandsontable/src/__tests__/settings/validator.spec.js1501 const mostRecentRendererCallArgs = tableView()._wt.wtSettings.settings.cellRenderer.calls.mostRecent().args;CODE
CRITICALhandsontable/src/__tests__/settings/width.spec.js565 expect(hot.view._wt.wtOverlays.inlineStartOverlay.getScrollPosition()).toBe(holder.scrollLeft);CODE
CRITICAL…cuts/__tests__/keyboardShortcuts/tabNavigation.spec.js1221 expect(hot1.view._wt.wtOverlays.topOverlay.getScrollPosition()).toBe(0);CODE
CRITICAL…cuts/__tests__/keyboardShortcuts/tabNavigation.spec.js1222 expect(hot1.view._wt.wtOverlays.inlineStartOverlay.getScrollPosition()).toBe(0);CODE
CRITICAL⚡…cuts/__tests__/keyboardShortcuts/tabNavigation.spec.js1353 expect(hot1.view._wt.wtOverlays.topOverlay.getScrollPosition()).toBe(0);CODE
CRITICAL⚡…cuts/__tests__/keyboardShortcuts/tabNavigation.spec.js1354 expect(hot1.view._wt.wtOverlays.inlineStartOverlay.getScrollPosition()).toBe(0);CODE
CRITICAL⚡…cuts/__tests__/keyboardShortcuts/tabNavigation.spec.js1362 expect(hot1.view._wt.wtOverlays.topOverlay.getScrollPosition()).toBe(0);CODE
CRITICAL⚡…cuts/__tests__/keyboardShortcuts/tabNavigation.spec.js1363 expect(hot1.view._wt.wtOverlays.inlineStartOverlay.getScrollPosition()).toBe(0);CODE
CRITICAL⚡…cuts/__tests__/keyboardShortcuts/tabNavigation.spec.js1371 expect(hot1.view._wt.wtOverlays.topOverlay.getScrollPosition()).toBe(0);CODE
CRITICAL⚡…cuts/__tests__/keyboardShortcuts/tabNavigation.spec.js1372 expect(hot1.view._wt.wtOverlays.inlineStartOverlay.getScrollPosition()).toBe(0);CODE
CRITICAL…rty/walkontable/test/spec/table/drawCycleHooks.spec.js195 expect(wt.wtTable.holder.parentNode.classList.contains('innerBorderTop')).toBe(true);CODE
CRITICAL…e/test/spec/selection/frozenBoundarySeamHeader.spec.js89 const lastFrozen = wt.wtOverlays.inlineStartOverlay.clone.wtTable.getColumnHeader(1);CODE
CRITICAL…e/test/spec/selection/frozenBoundarySeamHeader.spec.js100 const lastFrozen = wt.wtOverlays.inlineStartOverlay.clone.wtTable.getColumnHeader(1);CODE
CRITICAL…e/test/spec/selection/frozenBoundarySeamHeader.spec.js162 const lastFrozenRowHeader = wt.wtOverlays.topInlineStartCornerOverlay.clone.wtTable.getRowHeader(1);CODE
CRITICAL…e/test/spec/selection/frozenBoundarySeamHeader.spec.js203 const firstFrozenRowHeader = wt.wtOverlays.bottomInlineStartCornerOverlay.clone.wtTable.getRowHeader(6);CODE
CRITICAL⚡…ontent/recipes/cell-types/color-picker/color-picker.md300 editor.pickr._root.app.classList.remove('visible');CODE
CRITICAL…ontent/recipes/cell-types/color-picker/color-picker.md425 editor.pickr._root.app.classList.remove('visible');CODE
CRITICAL…recipes/cell-types/color-picker/javascript/example1.js270 editor.pickr._root.app.classList.remove('visible');CODE
CRITICAL…recipes/cell-types/color-picker/javascript/example1.ts275 editor.pickr._root.app.classList.remove('visible');CODE
CRITICAL…ent/recipes/cell-types/color-picker/react/example1.jsx78 editor.pickr._root.app.classList.remove('visible');CODE
Hyper-Verbose Identifiers417 hits · 422 pts
SeverityFileLineSnippetContext
LOWhandsontable/.config/themes-umd-development.js33function createHandsontableExternals() {CODE
LOWhandsontable/.config/themes-umd-development.js117function createRuleForVariablesRegistration(variableName, namespacePath) {CODE
LOWhandsontable/test/jsdomThemeCssFilter.js31function isThemeStylesheetParseError(args) {CODE
LOWhandsontable/test/jsdomThemeCssFilter.js44function withoutThemeStylesheetParseError(error) {CODE
LOWhandsontable/test/helpers/jasmine-bridge-reporter.js32 function toSerializableExpectation(expectation) {CODE
LOWhandsontable/test/helpers/focusNavigator.js92function findFirstFocusableElement(elements) {CODE
LOWhandsontable/test/helpers/common.js104export function waitForNextAnimationFrames(framesToWait = 1) {CODE
LOWhandsontable/test/helpers/common.js204function normalizeLegacyFrameCount(framesToWait) {CODE
LOWhandsontable/test/helpers/common.js311export function handsontableMethodFactory(method) {CODE
LOWhandsontable/test/helpers/common.js483export function getFirstRenderedRowDefaultHeight() {CODE
LOWhandsontable/test/helpers/common.js497export function getDefaultColumnHeaderHeight() {CODE
LOWhandsontable/test/helpers/common.js509export function getColumnHeaderBandHeight(levels = 1) {CODE
LOWhandsontable/test/helpers/common.js543export function expectedLastFullyVisibleRow(containerHeight, colHeaderRows = 1) {CODE
LOWhandsontable/test/helpers/common.js771export function topInlineStartCornerOverlay() {CODE
LOWhandsontable/test/helpers/common.js785export function bottomInlineStartCornerOverlay() {CODE
LOWhandsontable/test/helpers/common.js819export async function scrollViewportHorizontally(x) {CODE
LOWhandsontable/test/helpers/common.js951export function getBottomInlineStartClone() {CODE
LOWhandsontable/test/helpers/common.js1114export async function selectContextSubmenuOption(submenuName, optionName, cell) {CODE
LOWhandsontable/test/helpers/common.js1192export function openDropdownSubmenuOption(submenuName, cell) {CODE
LOWhandsontable/test/helpers/common.js1209export async function selectDropdownSubmenuOption(submenuName, optionName, cell) {CODE
LOWhandsontable/test/helpers/common.js1242export function openDropdownByConditionMenu(menuName = 'first') {CODE
LOWhandsontable/test/helpers/common.js1257export function selectDropdownByConditionMenuOption(optionName, menuName = 'first') {CODE
LOWhandsontable/test/helpers/common.js1289export function serveImmediatePropagation(event) {CODE
LOWhandsontable/test/helpers/common.js1492export function createAccessorForProperty(name) {CODE
LOWhandsontable/test/helpers/common.js1556export function moveSecondDisplayedRowBeforeFirstRow(container, secondDisplayedRowIndex) {CODE
LOWhandsontable/test/helpers/common.js1583export function moveFirstDisplayedRowAfterSecondRow(container, firstDisplayedRowIndex) {CODE
LOWhandsontable/test/helpers/common.js1731function getFillHandleDragEventArgs(targetElement, options = {}) {CODE
LOWhandsontable/test/helpers/common.js1785export function simulateFillHandleDragStart(targetElement, options = {}) {CODE
LOWhandsontable/test/helpers/common.js1810export function simulateFillHandleDragMove(targetElement, options = {}) {CODE
LOWhandsontable/test/helpers/common.js1861export function simulateFillHandleDragFinish(targetElement, options = {}) {CODE
LOWhandsontable/test/helpers/common.js1908export function simulateModernThemeStylesheet(container) {CODE
LOWhandsontable/test/helpers/common.js1920export function clearModernThemeStylesheetMock(container) {CODE
LOWhandsontable/test/helpers/common.js1945export function createEmptySpreadsheetData(...args) {CODE
LOWhandsontable/test/helpers/common.js1956export function createSpreadsheetObjectData(...args) {CODE
LOWhandsontable/test/helpers/common.js2007export function spyOnConsoleDeprecatedWarn() {CODE
LOWhandsontable/test/helpers/mouseEvents.js28export function handsontableMouseTriggerFactory(type, defaultButtonKey = getMouseButton('LMB')) {CODE
LOWhandsontable/src/core.ts2933 function refreshAfterFontsLoadOnceShown() {CODE
LOWhandsontable/src/core.ts3108 function doesChangeAffectOpenedEditor(changes: CellChange[], activeEditor: BaseEditor | undefined) {CODE
LOWhandsontable/src/core.ts3125 function doesSourceChangeAffectOpenedEditor(CODE
LOWhandsontable/src/core.ts3185 function discardResultsOfUncreatedRows(pendingRowMetas: Array<{ row?: number, valid?: boolean }>) {CODE
LOWhandsontable/src/core.ts4061 function validateAndApplyChanges(changes: CellChange[], source: string | undefined) {CODE
LOWhandsontable/src/core.ts5145 function runWithGridTrackingFitsSuspended(action: () => void) {CODE
LOWhandsontable/src/core.ts6055 function warnAboutInvalidCellOption(settings: SettingsUpdate, isCellOptionRestated: boolean): void {CODE
LOWhandsontable/src/core.ts6213 function applyColumnMetaBeforeLoad(CODE
LOWhandsontable/src/tableView.ts147function isResolvedHeaderSizeEntry(entry: unknown): entry is number | null | undefined {CODE
LOWhandsontable/src/tableView.ts209function hookHeightOmitsBottomBorder(hot: HotInstance, hookHeight: unknown): boolean {CODE
LOWhandsontable/src/dataMap/replaceData.ts92function warnAboutUndetectableColumns(hotInstance: HotInstance, data: unknown[], loadedRowsCount: number) {CODE
LOWhandsontable/src/dataMap/sourceDataValidator.ts332function canStoredMetaAddValidator(hotInstance: HotInstance, settings: GridSettings): boolean {CODE
LOWhandsontable/src/dataMap/metaManager/lazyFactoryMap.ts44function assertUnsignedKeyOrNullish(key: unknown): asserts key is number | null | undefined {CODE
LOW…table/src/dataMap/metaManager/metaLayers/globalMeta.ts11function createTableMetaEmptyClass() {CODE
LOW…table/src/renderers/multiSelectRenderer/utils/utils.ts161export function registerDropdownIndicatorEvents(hotInstance: HotInstance): void {CODE
LOW…table/src/renderers/multiSelectRenderer/utils/utils.ts222export function registerChipRemovingEvents(CODE
LOW…table/src/renderers/multiSelectRenderer/utils/utils.ts277export function cacheColumnWidthAndRegisterResizeHook(CODE
LOW…table/src/renderers/multiSelectRenderer/utils/utils.ts324function getDropdownIndicatorReserve(chipsContainer: HTMLElement, rootDocument: Document): number {CODE
LOW…table/src/renderers/multiSelectRenderer/utils/utils.ts341function recalculateChipsVisibility(CODE
LOW…ble/src/renderers/checkboxRenderer/checkboxRenderer.ts316 function changeSelectedCheckboxesState(uncheckCheckbox = false, consumesKey = false) {CODE
LOWhandsontable/src/core/minimumSizes.ts75export function countSurplusTrailingItems({CODE
LOWhandsontable/src/core/viewportScroll/utils.ts122function scrollWindowToCellKeepingGridScroll(hot: HotInstance, element: HTMLElement | null) {CODE
LOWhandsontable/src/core/viewportScroll/utils.ts174export function createScrollTargetCalculator(hotInstance: HotInstance) {CODE
LOW…viewportScroll/scrollStrategies/noncontiguousScroll.ts11export function noncontiguousScrollStrategy(hot: HotInstance) {CODE
357 more matches not shown…
Over-Commented Block292 hits · 289 pts
SeverityFileLineSnippetContext
LOWlefthook.yml1# Local git hooks (lefthook) — the enforcement FLOOR for everyone (Claude Code'sCOMMENT
LOWhandsontable/.eslintrc.js21 // does not resolve prototype methods on non-literal receivers, which is how `toSorted` andCOMMENT
LOWhandsontable/.eslintrc.js301 // A NEW occurrence on a line a branch adds is already blocked: theCOMMENT
LOW…e/test/helpers/__tests__/themeLayoutFromTokens.unit.js181 it('defaults to main when theme name is falsy', () => {COMMENT
LOWhandsontable/src/core.ts1081 // by RENDER index, while the sizes behind them resolve per PHYSICAL index - `modifyRowHeight`COMMENT
LOWhandsontable/src/core.ts1121 // Restored BEFORE `commit()`, which is the only order that works: the restore puts every layerCOMMENT
LOWhandsontable/src/core.ts6141 const invalidCellMetas = metaManager.getInvalidCellMetas();COMMENT
LOWhandsontable/src/tableView.ts2621 * @privateCOMMENT
LOWhandsontable/src/tableView.ts2641 // listener does not fire at all while such a surface is set), so the edit ends on the `mouseup`COMMENT
LOWhandsontable/src/editorManager.ts681COMMENT
LOWhandsontable/src/renderSizeProbe.ts61COMMENT
LOW…ontable/src/dataMap/metaManager/metaLayers/cellMeta.ts481COMMENT
LOW…renderers/autocompleteRenderer/autocompleteRenderer.ts61COMMENT
LOWhandsontable/src/core/settings.ts421 // Returning a `TrustedHTML` is supported for pages enforcing Trusted Types; see `TrustedHTMLLike`.COMMENT
LOWhandsontable/src/plugins/filters/filters.ts2081 } else {COMMENT
LOWhandsontable/src/plugins/filters/ui/multipleSelect.ts281 */COMMENT
LOWhandsontable/src/plugins/comments/comments.ts501 // second binding, the dedupe and the point reader all inert - the grid then behavesCOMMENT
LOWhandsontable/src/plugins/comments/comments.ts1121 const target = eventTargetEl(event)!;COMMENT
LOWhandsontable/src/plugins/customBorders/customBorders.ts741 this.#modelVersion += 1;COMMENT
LOWhandsontable/src/plugins/copyPaste/copyPaste.ts421 };COMMENT
LOWhandsontable/src/plugins/copyPaste/copyPaste.ts1221 // `DOMParser`), so a sanitizer may pass this payload through without reopening an injectionCOMMENT
LOW…ble/src/plugins/exportFile/types/xlsx/numeric-utils.ts101 const intPart = integerPart(integerDigits, useGrouping !== false);COMMENT
LOWhandsontable/src/plugins/dropdownMenu/dropdownMenu.ts601 * @param {*} params Additional parameters passed to the command executor.COMMENT
LOWhandsontable/src/plugins/autoRowSize/autoRowSize.ts1021 // first, and the last chunk of the sweep renders once it ends.COMMENT
LOW…ns/autoRowSize/__tests__/rowHeightsInteraction.unit.ts281 window.requestAnimationFrame = originalRequestAnimationFrame;COMMENT
LOWhandsontable/src/plugins/nestedHeaders/nestedHeaders.ts261COMMENT
LOWhandsontable/src/plugins/nestedHeaders/nestedHeaders.ts281 // Only release the captured move state once it has been consumed here. A move that splits aCOMMENT
LOW…le/src/plugins/contextMenu/predefinedItems/readOnly.ts121 // "At least one", unlike the mark: a partly read-only selection is made writable as a whole.COMMENT
LOW…/src/plugins/contextMenu/__tests__/positioning.spec.js81 // keyboard events cross-realm that confuse the recorder's listener cleanup logic.COMMENT
LOWhandsontable/src/plugins/contextMenu/menu/menu.ts341 this.eventManager.addEventListener(frame.document, 'touchstart', event => this.onDocumentMouseDown(event));COMMENT
LOWhandsontable/src/plugins/columnSorting/columnSorting.ts861 * @returns {number}COMMENT
LOWhandsontable/src/plugins/columnSorting/columnSorting.ts921 // upper bound.COMMENT
LOW…gins/columnSorting/__tests__/guardedColumnRead.unit.js1import Handsontable from '../../../base';COMMENT
LOW…s/columnSorting/__tests__/comparatorCrossCheck.unit.ts1// The barrel first, exactly as `columnSorting.ts` does. `sortService` sits in a module cycle, and aCOMMENT
LOWhandsontable/src/plugins/sheetsBar/sheetsBar.ts4161 selectFirstItem: fromKeyboard,COMMENT
LOWhandsontable/src/plugins/sheetsBar/ui/menus.ts301 // A 4px gap on both sides of the anchor. Below, the positioner adds one pixel of its own.COMMENT
LOW…tiColumnSorting/__tests__/comparatorCrossCheck.unit.ts1// The barrel first. `sortService` sits in a module cycle, and a deep import that reaches `registry` orCOMMENT
LOW…dsontable/src/plugins/autoColumnSize/autoColumnSize.ts581 if (newSettings !== undefined && newSettings[PLUGIN_KEY] === undefined) {COMMENT
LOW…dsontable/src/plugins/autoColumnSize/autoColumnSize.ts601 // view. This mirrors `#onAfterLoadData`, the other "everything is stale" path. On a grid thatCOMMENT
LOWhandsontable/src/plugins/columnSummary/endpoints.ts501COMMENT
LOWhandsontable/src/plugins/hiddenColumns/hiddenColumns.ts681 // its own content: on a `columnHeaderHeight` taller than one line a caret anchored to it satCOMMENT
LOWhandsontable/src/plugins/nestedRows/ui/collapsing.ts581 const isCollapse = action === 'collapse';COMMENT
LOWhandsontable/src/plugins/nestedRows/data/dataManager.ts941 } else {COMMENT
LOWhandsontable/src/plugins/formulas/formulas.ts2961 * If the value is an object, utilize the valueGetter for that cell, otherwise return the value as is.COMMENT
LOW…ntable/src/plugins/formulas/__tests__/formulas.spec.js4261 const p = getPlugin('formulas');COMMENT
LOWhandsontable/src/editors/baseEditor/baseEditor.ts501 // Ctrl/Meta + Enter over a real range copies the edited value into every other cell of theCOMMENT
LOW…e/src/editors/handsontableEditor/handsontableEditor.ts701COMMENT
LOW…ble/src/editors/multiSelectEditor/multiSelectEditor.ts521 * listener before the event manager releases it - and `getEditedCell()` throws on a destroyedCOMMENT
LOW…e/src/editors/autocompleteEditor/autocompleteEditor.ts241 const { filteringCaseSensitive, allowHtml } = this.cellProperties;COMMENT
LOW…e/src/editors/autocompleteEditor/autocompleteEditor.ts501 */COMMENT
LOW…e/src/editors/autocompleteEditor/autocompleteEditor.ts621 *COMMENT
LOW…e/src/editors/autocompleteEditor/autocompleteEditor.ts741 // `getDropdownHeight()` reports the trimmed size once the clamp below has run, so a cell thatCOMMENT
LOW…e/src/editors/autocompleteEditor/autocompleteEditor.ts761 // every choice - the flexbox-squeezed grids reported in #8872. The MultiSelect editor'sCOMMENT
LOW…e/src/editors/autocompleteEditor/autocompleteEditor.ts781 // `style.top` by hand, for the flipped case only. Re-applying the flip rather thanCOMMENT
LOWhandsontable/src/utils/stylesHandler.ts361 // the cell outgrows its declared box on every row (issue #6280). Every other case keeps theCOMMENT
LOWhandsontable/src/utils/parseTable.ts541 // it down the element branch instead, where it matched no table and the paste silently producedCOMMENT
LOWhandsontable/src/utils/xlsxEngine/capabilities.ts81 // model holds worksheets and nothing else, so the sheet is skipped and the others keep theirCOMMENT
LOWhandsontable/src/utils/xlsxEngine/capabilities.ts101 // Raised by the native reader only: a `t="s"` cell whose shared-string index resolves to nothingCOMMENT
LOW…le/src/utils/xlsxEngine/adapters/native/xml/escapes.ts21const TEXT_ESCAPED_CHARS = /[\u0000-\u0008\u000B-\u001F\u007F\uFFFE\uFFFF]/g;COMMENT
LOW…ble/src/utils/xlsxEngine/__tests__/nativeParts.unit.js1321 // whole-column range, so a reader that walks every range does ~200M cell writes for a file of aCOMMENT
232 more matches not shown…
Decorative Section Separators62 hits · 195 pts
SeverityFileLineSnippetContext
MEDIUM…e/src/plugins/exportFile/__tests__/exportFile.types.ts44// ─── CSV — synchronous ───────────────────────────────COMMENT
MEDIUM…e/src/plugins/exportFile/__tests__/exportFile.types.ts71// ─── XLSX — asynchronous ───────────────────────────────────────────────────COMMENT
MEDIUM…e/src/plugins/exportFile/__tests__/exportFile.types.ts90// ─── Conditional formatting ────────────────────────────────────────────────COMMENT
MEDIUM…e/src/plugins/exportFile/__tests__/exportFile.types.ts106// ─── Multi-sheet export ────────────────────────────────────────────────────COMMENT
MEDIUM⚡…e/src/plugins/exportFile/__tests__/exportFile.types.ts128// ─── SheetOptions: name is optional ───────────────────────────────────────COMMENT
MEDIUM⚡…e/src/plugins/exportFile/__tests__/exportFile.types.ts135// ─── ExportOptions: headerStyle (XLSX) ────────────────────────────────────COMMENT
MEDIUM⚡…e/src/plugins/exportFile/__tests__/exportFile.types.ts141// ─── ExportOptions: engine (per-call override) ────────────────────────────COMMENT
MEDIUM…e/src/plugins/exportFile/__tests__/exportFile.types.ts162// ─── sanitizeValues variants ───────────────────────────────────────────────COMMENT
MEDIUM…e/src/plugins/exportFile/__tests__/exportFile.types.ts168// ─── downloadFileAsync ────────────────────────────────────────────────────COMMENT
MEDIUM…e/src/plugins/exportFile/__tests__/exportFile.types.ts186// ─── supportsExportFormat ─────────────────────────────────────────────────COMMENT
MEDIUM…e/src/plugins/exportFile/__tests__/exportFile.types.ts191// ─── exportAsBlobAsync ────────────────────────────────────────────────────COMMENT
MEDIUM…nagement/server-side-rails/server/orders_controller.rb18 # ------------------------------------------------------------------COMMENT
MEDIUM…nagement/server-side-rails/server/orders_controller.rb32 # ------------------------------------------------------------------COMMENT
MEDIUM…nagement/server-side-rails/server/orders_controller.rb45 # ------------------------------------------------------------------COMMENT
MEDIUM…nagement/server-side-rails/server/orders_controller.rb51 # ------------------------------------------------------------------COMMENT
MEDIUM…nagement/server-side-rails/server/orders_controller.rb67 # ------------------------------------------------------------------COMMENT
MEDIUM…nagement/server-side-rails/server/orders_controller.rb72 # ------------------------------------------------------------------COMMENT
MEDIUM…nagement/server-side-rails/server/orders_controller.rb93 # ------------------------------------------------------------------COMMENT
MEDIUM…nagement/server-side-rails/server/orders_controller.rb99 # ------------------------------------------------------------------COMMENT
MEDIUM…pes/data-management/server-side-django/server/views.py138 # ------------------------------------------------------------------COMMENT
MEDIUM…pes/data-management/server-side-django/server/views.py140 # ------------------------------------------------------------------COMMENT
MEDIUMdocs/public/example-tabs.js10 // ── Hot-example code assembly (Expressive Code blocks) ───────────────────COMMENT
MEDIUMdocs/public/example-tabs.js238 // ── Source code toggle ────────────────────────────────────────────────────COMMENT
MEDIUMdocs/public/example-tabs.js254 // ── Code group tabs (npm / Yarn / pnpm etc.) ────────────────────────────COMMENT
MEDIUM⚡docs/src/scripts/example-runner.ts24// ── Glob maps resolved by Vite at build time ──────────────────────────────COMMENT
MEDIUM⚡docs/src/scripts/example-runner.ts33// ── Zone.js load-once guard ───────────────────────────────────────────────COMMENT
MEDIUM⚡docs/src/scripts/example-runner.ts43// ── Angular bootstrap helper (NgModule + standalone) ─────────────────────COMMENT
MEDIUMdocs/src/scripts/example-runner.ts69// ── Helpers ───────────────────────────────────────────────────────────────COMMENT
MEDIUMdocs/src/scripts/example-runner.ts239// ── Main runner ───────────────────────────────────────────────────────────COMMENT
MEDIUMdocs/src/scripts/example-runner.ts242 // ── Inject example CSS files ──────────────────────────────────────────COMMENT
MEDIUMdocs/src/scripts/example-runner.ts262 // ── Vanilla JS examples ────────────────────────────────────────────────COMMENT
MEDIUMdocs/src/scripts/example-runner.ts284 // ── React JSX examples ─────────────────────────────────────────────────COMMENT
MEDIUMdocs/src/scripts/example-runner.ts332 // ── Vue 3 examples ────────────────────────────────────────────────────COMMENT
MEDIUMdocs/src/scripts/example-runner.ts391 // ── Angular examples ───────────────────────────────────────────────────COMMENT
MEDIUMdocs/src/scripts/a11y-utils.ts11// ── Focus trap ──────────────────────────────────────────────────────────COMMENT
MEDIUMdocs/src/scripts/a11y-utils.ts53// ── Dropdown keyboard navigation ────────────────────────────────────────COMMENT
MEDIUMdocs/src/scripts/a11y-utils.ts172// ── Table of contents keyboard navigation ────────────────────────────────COMMENT
MEDIUM.github/workflows/publish.yml45 # ============================================================COMMENT
MEDIUM.github/workflows/publish.yml48 # ============================================================COMMENT
MEDIUM.github/workflows/publish.yml176 # ============================================================COMMENT
MEDIUM.github/workflows/publish.yml178 # ============================================================COMMENT
MEDIUM.github/workflows/publish.yml485 # ============================================================COMMENT
MEDIUM.github/workflows/publish.yml487 # ============================================================COMMENT
MEDIUM.github/workflows/publish.yml659 # ============================================================COMMENT
MEDIUM.github/workflows/publish.yml661 # ============================================================COMMENT
MEDIUM.github/workflows/publish.yml961 # ============================================================COMMENT
MEDIUM.github/workflows/publish.yml963 # ============================================================COMMENT
MEDIUM.github/workflows/publish.yml1180 # ============================================================COMMENT
MEDIUM.github/workflows/publish.yml1182 # ============================================================COMMENT
MEDIUM.github/workflows/publish.yml1646 # ============================================================COMMENT
MEDIUM.github/workflows/publish.yml1648 # ============================================================COMMENT
MEDIUM.github/workflows/publish.yml2107 # ============================================================COMMENT
MEDIUM.github/workflows/publish.yml2109 # ============================================================COMMENT
MEDIUM.github/workflows/publish.yml2135 # ============================================================COMMENT
MEDIUM.github/workflows/publish.yml2137 # ============================================================COMMENT
MEDIUM.github/workflows/publish.yml2156 # ============================================================COMMENT
MEDIUM.github/workflows/publish.yml2158 # ============================================================COMMENT
MEDIUM.github/workflows/test.yml3# ── PR pipeline ORCHESTRATOR ────────────────────────────────────────────────COMMENT
MEDIUM.github/workflows/test.yml247 # ── Single merge gate ──────────────────────────────────────────────────────COMMENT
MEDIUM.github/workflows/develop.yml3# ── Post-merge (develop) pipeline ORCHESTRATOR ──────────────────────────────COMMENT
2 more matches not shown…
Fake / Example Data104 hits · 110 pts
SeverityFileLineSnippetContext
LOW⚡…/renderers/baseRenderer/__tests__/baseRenderer.unit.ts177 placeholderCellClassName: 'placeholder'CODE
LOW⚡…/renderers/baseRenderer/__tests__/baseRenderer.unit.ts180 expect(TD.outerHTML).toMatchHTML('<td class="placeholder"></td>', toMatchHTMLConfig);CODE
LOW⚡…/renderers/baseRenderer/__tests__/baseRenderer.unit.ts188 placeholderCellClassName: 'placeholder'CODE
LOW…/renderers/baseRenderer/__tests__/baseRenderer.unit.ts199 placeholderCellClassName: 'placeholder'CODE
LOW…tiSelectRenderer/__tests__/multiSelectRenderer.unit.js134 ['placeholder', { placeholder: 'Select items' }, []],CODE
LOW…gins/manualRowResize/__tests__/manualRowResize.spec.js1320 data[0][4] = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas hendrerit elit sed quam porta ' +CODE
LOW…gins/manualRowResize/__tests__/manualRowResize.spec.js1320 data[0][4] = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas hendrerit elit sed quam porta ' +CODE
LOW…ns/dialog/__tests__/keyboardShortcuts/shiftTab.spec.js63 <h6>Hello world</h6><p>Lorem ipsum</p>CODE
LOW…ns/dialog/__tests__/keyboardShortcuts/shiftTab.spec.js109 <h6>Hello world</h6><p>Lorem ipsum</p>CODE
LOW…plugins/dialog/__tests__/keyboardShortcuts/tab.spec.js63 <h6>Hello world</h6><p>Lorem ipsum</p>CODE
LOW…plugins/dialog/__tests__/keyboardShortcuts/tab.spec.js109 <h6>Hello world</h6><p>Lorem ipsum</p>CODE
LOWhandsontable/src/plugins/sheetsBar/sheetsBar.ts534 * { name: 'Q1 2025', data: [['Acme Corp', 4200000]] },COMMENT
LOWhandsontable/src/plugins/sheetsBar/sheetsBar.ts535 * { name: 'Q2 2025', data: [['Acme Corp', 4700000]] },COMMENT
LOWhandsontable/src/plugins/sheetsBar/sheetsBar.ts553 * { name: 'Q1 2025', data: [['Acme Corp', 4200000]] },COMMENT
LOWhandsontable/src/plugins/sheetsBar/sheetsBar.ts554 * { name: 'Q2 2025', data: [['Acme Corp', 4700000]] },COMMENT
LOWhandsontable/src/plugins/sheetsBar/sheetsBar.ts570 * { name: 'Q1 2025', data: [['Acme Corp', 4200000]] },COMMENT
LOWhandsontable/src/plugins/sheetsBar/sheetsBar.ts571 * { name: 'Q2 2025', data: [['Acme Corp', 4700000]] },COMMENT
LOW…c/plugins/columnSummary/__tests__/readOnlyLock.unit.js87 hot.setCellMeta(2, 0, 'placeholder', 'total');CODE
LOW…c/plugins/columnSummary/__tests__/readOnlyLock.unit.js88 hot.setCellMeta(2, 0, 'placeholder', '');CODE
LOW…c/plugins/columnSummary/__tests__/readOnlyLock.unit.js104 hot.setCellMeta(2, 0, 'placeholder', 'total');CODE
LOW…c/plugins/columnSummary/__tests__/readOnlyLock.unit.js105 hot.removeCellMeta(2, 0, 'placeholder');CODE
LOW…ble/src/plugins/nestedRows/__tests__/dataHooks.unit.js29 data: [['flat', 'placeholder']],CODE
LOW⚡…ntable/src/plugins/formulas/__tests__/formulas.spec.js3075 hfInstance.renameSheet(0, 'Lorem Ipsum');CODE
LOW⚡…ntable/src/plugins/formulas/__tests__/formulas.spec.js3077 expect(getPlugin('formulas').sheetName).toBe('Lorem Ipsum');CODE
LOW⚡…ntable/src/plugins/formulas/__tests__/formulas.spec.js3078 expect(sheetNameInsideHook).toBe('Lorem Ipsum');CODE
LOW…ntable/src/plugins/formulas/__tests__/formulas.spec.js3099 hfInstance.renameSheet(0, 'Lorem Ipsum');CODE
LOW…/multiSelectEditor/__tests__/multiSelectEditor.spec.js727 expect($searchInput.attr('placeholder')).toBe('Search...');CODE
LOW…ble/src/editors/multiSelectEditor/controllers/utils.ts109 ['placeholder', SEARCH_INPUT_PLACEHOLDER],CODE
LOWhandsontable/src/helpers/dom/__tests__/element.spec.js103 .fill('Lorem ipsum dolor sit amet, consectetur adipiscing elit.').join(' ');CODE
LOWhandsontable/src/helpers/dom/__tests__/element.spec.js103 .fill('Lorem ipsum dolor sit amet, consectetur adipiscing elit.').join(' ');CODE
LOWhandsontable/src/helpers/dom/__tests__/element.spec.js130 .fill('Lorem ipsum dolor sit amet, consectetur adipiscing elit.').join(' ');CODE
LOWhandsontable/src/helpers/dom/__tests__/element.spec.js130 .fill('Lorem ipsum dolor sit amet, consectetur adipiscing elit.').join(' ');CODE
LOWhandsontable/src/helpers/dom/__tests__/element.spec.js155 .fill('Lorem ipsum dolor sit amet, consectetur adipiscing elit.').join(' ');CODE
LOWhandsontable/src/helpers/dom/__tests__/element.spec.js155 .fill('Lorem ipsum dolor sit amet, consectetur adipiscing elit.').join(' ');CODE
LOWhandsontable/src/helpers/dom/__tests__/element.spec.js174 .fill('Lorem ipsum dolor sit amet, consectetur adipiscing elit.').join(' ');CODE
LOWhandsontable/src/helpers/dom/__tests__/element.spec.js174 .fill('Lorem ipsum dolor sit amet, consectetur adipiscing elit.').join(' ');CODE
LOWhandsontable/src/helpers/dom/__tests__/element.spec.js198 .fill('Lorem ipsum dolor sit amet, consectetur adipiscing elit.').join(' ');CODE
LOWhandsontable/src/helpers/dom/__tests__/element.spec.js198 .fill('Lorem ipsum dolor sit amet, consectetur adipiscing elit.').join(' ');CODE
LOWhandsontable/src/helpers/dom/__tests__/element.spec.js226 .fill('Lorem ipsum dolor sit amet, consectetur adipiscing elit.').join(' ');CODE
LOWhandsontable/src/helpers/dom/__tests__/element.spec.js226 .fill('Lorem ipsum dolor sit amet, consectetur adipiscing elit.').join(' ');CODE
LOWtests/e2e/trusted-types.spec.ts239 data: [['R&D', 'Budget'], ['Acme Corp', 4200]],CODE
LOW.claude/skills/creating-docs-examples/SKILL.md130 ['Acme Corp', 'Q1 2025', '$4.2M'],CODE
LOW…ipes/data-management/server-side-rails/server/seeds.rb12 "Acme Corp", "Vertex Industries", "Harbor Goods", "Alpine Supply Co.",CODE
LOW…erformance/expensive-cell-renderer/angular/example1.ts14const CUSTOMERS = ['Acme Corp', 'Vertex Industries', 'Harbor Goods', 'Alpine Supply Co.', 'Northwind Traders', 'Lumen ReCODE
LOW…ormance/expensive-cell-renderer/javascript/example1.js8const CUSTOMERS = ['Acme Corp', 'Vertex Industries', 'Harbor Goods', 'Alpine Supply Co.', 'Northwind Traders', 'Lumen ReCODE
LOW…ormance/expensive-cell-renderer/javascript/example1.ts15const CUSTOMERS = ['Acme Corp', 'Vertex Industries', 'Harbor Goods', 'Alpine Supply Co.', 'Northwind Traders', 'Lumen ReCODE
LOW…performance/expensive-cell-renderer/react/example1.tsx17const CUSTOMERS = ['Acme Corp', 'Vertex Industries', 'Harbor Goods', 'Alpine Supply Co.', 'Northwind Traders', 'Lumen ReCODE
LOW…performance/expensive-cell-renderer/react/example1.jsx9const CUSTOMERS = ['Acme Corp', 'Vertex Industries', 'Harbor Goods', 'Alpine Supply Co.', 'Northwind Traders', 'Lumen ReCODE
LOW…uration/configuration-option-levels/option-levels.json1222 "name": "placeholder",CODE
LOW…iguration-option-levels/configuration-option-levels.md236| <span data-option="placeholder" data-levels="grid columns cells cell"></span>[`placeholder`](@/api/options.md#placeholCODE
LOW…nt/guides/cell-functions/custom-cells/vue/example3.vue15 this.TEXTAREA.setAttribute('placeholder', 'Type a book title...');CODE
LOW…t/guides/cell-functions/cell-renderer/vue/example2.vue44 ['Acme Corp', 'Q1 2025', '42000'],CODE
LOW…/guides/cell-functions/cell-editor/angular/example2.ts11 this.TEXTAREA.setAttribute('placeholder', 'Custom placeholder');CODE
LOW…t/guides/cell-functions/cell-editor/react/example2.tsx13 this.TEXTAREA.setAttribute('placeholder', 'Custom placeholder');CODE
LOW…t/guides/cell-functions/cell-editor/react/example2.jsx12 this.TEXTAREA.setAttribute('placeholder', 'Custom placeholder');CODE
LOW…ating-from-15.3-to-16.0/migrating-from-15.3-to-16.0.md314 this.TEXTAREA.setAttribute('placeholder', 'Custom placeholder');CODE
LOW…uides/getting-started/vue3-hot-column/vue/example3.vue15 this.TEXTAREA.setAttribute('placeholder', 'Custom placeholder');CODE
LOW…nt/guides/styling/theme-customization/vue/example1.vue13 ['John Doe', 'johndoe@example.com', 'New York', 32, 'Engineer'],CODE
LOW…nt/guides/styling/theme-customization/vue/example2.vue28 ['John Doe', 'johndoe@example.com', 'New York', 32, 'Engineer'],CODE
LOW…guides/styling/theme-customization/angular/example2.ts41 ['John Doe', 'johndoe@example.com', 'New York', 32, 'Engineer'],CODE
44 more matches not shown…
Verbosity Indicators64 hits · 110 pts
SeverityFileLineSnippetContext
LOW⚡…/columnSummary/__tests__/moveAndPhysicalCoords.unit.js110 // Step 1: an edit before any move works.COMMENT
LOW⚡…/columnSummary/__tests__/moveAndPhysicalCoords.unit.js115 // Step 2: move column A after column B. The result travels with its column.COMMENT
LOW⚡…/columnSummary/__tests__/moveAndPhysicalCoords.unit.js120 // Step 3: editing the moved column (now B) must update its summary. It stayed at 9 before the fix.COMMENT
LOW⚡…/columnSummary/__tests__/moveAndPhysicalCoords.unit.js125 // Step 4: editing the column that moved into A's old place must not write a summary there. Before the fixCOMMENT
LOW⚡…columnSummary/__tests__/reversedRowCoordsAlter.unit.js243 // Step 1: shrink the table so B re-derives to 4 - 4 - 1 = -1 and parks (with a warning), while ACOMMENT
LOW⚡…columnSummary/__tests__/reversedRowCoordsAlter.unit.js250 // Step 2: append. A re-anchors from `aRowBefore` to the new last row; its old cell must be cleared.COMMENT
LOW…a-management/server-side-django/javascript/example1.js28// Step 1: Read Django's CSRF token from the cookie.COMMENT
LOW…a-management/server-side-django/javascript/example1.js42// Step 2: Build the request URL for fetchRows.COMMENT
LOW…a-management/server-side-django/javascript/example1.js79// Step 3: Initialize Handsontable with the dataProvider plugin.COMMENT
LOW…a-management/server-side-django/javascript/example1.ts34// Step 1: Read Django's CSRF token from the cookie.COMMENT
LOW…a-management/server-side-django/javascript/example1.ts48// Step 2: Build the request URL for fetchRows.COMMENT
LOW…a-management/server-side-django/javascript/example1.ts77// Step 3: Initialize Handsontable with the dataProvider plugin.COMMENT
LOW⚡…/data-management/server-side-django/react/example1.tsx15// Step 1: Read Django's CSRF token from the cookie.COMMENT
LOW⚡…/data-management/server-side-django/react/example1.tsx25// Step 2: Build the request URL for fetchRows.COMMENT
LOW…/data-management/server-side-django/react/example1.tsx51// Step 3: React component with the dataProvider plugin.COMMENT
LOW…/data-management/server-side-django/react/example1.jsx8// Step 1: Read Django's CSRF token from the cookie.COMMENT
LOW…/data-management/server-side-django/react/example1.jsx22// Step 2: Build the request URL for fetchRows.COMMENT
LOW…/data-management/server-side-django/react/example1.jsx51// Step 3: React component with the dataProvider plugin.COMMENT
LOW…a-management/load-data-rest-api/javascript/example2.ts50// Step 1: Initialize the grid with columnSorting enabled and an empty dataset.COMMENT
LOW…a-management/load-data-rest-api/javascript/example2.ts72// Step 2: A helper that keeps the toolbar consistent with the current request state.COMMENT
LOW…a-management/load-data-rest-api/javascript/example2.ts92// Step 3: Map the API response to flat row objects that match the column definitions.COMMENT
LOW…a-management/load-data-rest-api/javascript/example2.ts104// Step 4: Shared fetch helper used by both initialLoad() and refreshUsers().COMMENT
LOW…a-management/load-data-rest-api/javascript/example2.ts115// Step 5: Initial load uses loadData(), which resets all grid states.COMMENT
LOW…a-management/load-data-rest-api/javascript/example2.ts131// Step 6: Subsequent refreshes use updateData(), which replaces the dataCOMMENT
LOW…a-management/load-data-rest-api/javascript/example3.ts20// Step 1: Cache the full response after the first request.COMMENT
LOW⚡…a-management/load-data-rest-api/javascript/example3.ts72 // Step 2: Use dataProvider instead of a static data array.COMMENT
LOW⚡…a-management/load-data-rest-api/javascript/example3.ts79 // Step 3: fetchRows receives current query parameters and an AbortSignal.COMMENT
LOW⚡…a-management/load-data-rest-api/javascript/example3.ts87 // Step 4: Apply server-side sort from query parameters.COMMENT
LOW⚡…a-management/load-data-rest-api/javascript/example3.ts99 // Step 5: Apply server-side pagination from query parameters.COMMENT
LOW⚡…a-management/load-data-rest-api/javascript/example3.ts109 // Step 6: CRUD callbacks. jsonplaceholder is read-only, so these are no-ops.COMMENT
LOW…a-management/load-data-rest-api/javascript/example3.ts126 // Step 7: Enable the Pagination plugin and pass pageSize so the plugin knowsCOMMENT
LOW…a-management/load-data-rest-api/javascript/example3.ts140 // Step 8: Use fetch hooks to update the status label.COMMENT
LOW…a-management/load-data-rest-api/javascript/example3.js6// Step 1: Cache the full response after the first request.COMMENT
LOW⚡…a-management/load-data-rest-api/javascript/example3.js55 // Step 2: Use dataProvider instead of a static data array.COMMENT
LOW⚡…a-management/load-data-rest-api/javascript/example3.js62 // Step 3: fetchRows receives current query parameters and an AbortSignal.COMMENT
LOW⚡…a-management/load-data-rest-api/javascript/example3.js67 // Step 4: Apply server-side sort from query parameters.COMMENT
LOW⚡…a-management/load-data-rest-api/javascript/example3.js79 // Step 5: Apply server-side pagination from query parameters.COMMENT
LOW⚡…a-management/load-data-rest-api/javascript/example3.js89 // Step 6: CRUD callbacks. jsonplaceholder is read-only, so these are no-ops.COMMENT
LOW…a-management/load-data-rest-api/javascript/example3.js106 // Step 7: Enable the Pagination plugin and pass pageSize so the plugin knowsCOMMENT
LOW…a-management/load-data-rest-api/javascript/example3.js120 // Step 8: Use fetch hooks to update the status label.COMMENT
LOW…a-management/load-data-rest-api/javascript/example2.js45// Step 1: Initialize the grid with columnSorting enabled and an empty dataset.COMMENT
LOW…a-management/load-data-rest-api/javascript/example2.js67// Step 2: A helper that keeps the toolbar consistent with the current request state.COMMENT
LOW…a-management/load-data-rest-api/javascript/example2.js79// Step 3: Map the API response to flat row objects that match the column definitions.COMMENT
LOW…a-management/load-data-rest-api/javascript/example2.js91// Step 4: Shared fetch helper used by both initialLoad() and refreshUsers().COMMENT
LOW…a-management/load-data-rest-api/javascript/example2.js102// Step 5: Initial load uses loadData(), which resets all grid states.COMMENT
LOW…a-management/load-data-rest-api/javascript/example2.js118// Step 6: Subsequent refreshes use updateData(), which replaces the dataCOMMENT
LOW…/data-management/load-data-graphql/angular/example2.ts93 // Step 5: Initial load uses loadData() directly on the hot instance, which resets all grid states.COMMENT
LOW…/data-management/load-data-graphql/angular/example2.ts117 // Step 6: Subsequent refreshes use updateData(), which replaces the dataCOMMENT
LOW…ta-management/load-data-graphql/javascript/example2.ts73// Step 1: Initialize the grid with columnSorting enabled and an empty dataset.COMMENT
LOW…ta-management/load-data-graphql/javascript/example2.ts95// Step 2: A helper that keeps the toolbar consistent with the current request state.COMMENT
LOW…ta-management/load-data-graphql/javascript/example2.ts115// Step 3: Map the API response to flat row objects that match the column definitions.COMMENT
LOW…ta-management/load-data-graphql/javascript/example2.ts127// Step 4: Shared GraphQL helper used by both initialLoad() and refreshUsers().COMMENT
LOW…ta-management/load-data-graphql/javascript/example2.ts156// Step 5: Initial load uses loadData(), which resets all grid states.COMMENT
LOW…ta-management/load-data-graphql/javascript/example2.ts172// Step 6: Subsequent refreshes use updateData(), which replaces the dataCOMMENT
LOW…ta-management/load-data-graphql/javascript/example2.js64// Step 1: Initialize the grid with columnSorting enabled and an empty dataset.COMMENT
LOW…ta-management/load-data-graphql/javascript/example2.js86// Step 2: A helper that keeps the toolbar consistent with the current request state.COMMENT
LOW…ta-management/load-data-graphql/javascript/example2.js98// Step 3: Map the API response to flat row objects that match the column definitions.COMMENT
LOW…ta-management/load-data-graphql/javascript/example2.js110// Step 4: Shared fetch helper used by both initialLoad() and refreshUsers().COMMENT
LOW…ta-management/load-data-graphql/javascript/example2.js132// Step 5: Initial load uses loadData(), which resets all grid states.COMMENT
LOW…ta-management/load-data-graphql/javascript/example2.js148// Step 6: Subsequent refreshes use updateData(), which replaces the dataCOMMENT
4 more matches not shown…
AI Slop Vocabulary7 hits · 21 pts
SeverityFileLineSnippetContext
MEDIUM…dataMap/metaManager/__tests__/cellMetaEviction.spec.js186 // `type` is always a resolved string, so it is the robust correctness lock.COMMENT
MEDIUM…s/nestedHeaders/__tests__/generalFunctionality.spec.js583 // range (mapped from renderable to visual so the check is robust to anyCOMMENT
MEDIUMhandsontable/src/plugins/formulas/formulas.ts1106 // The `updateData` hooks utilize the same logic as the `loadData` hooks.COMMENT
MEDIUM…le/src/editors/textEditor/__tests__/textEditor.spec.js763 // this robust across themes whose font metrics make AutoColumnSize grow columns past theCOMMENT
MEDIUMhandsontable/src/utils/manualResize/axis.ts178 // TODO: this should utilize `hot.getRowHeight` after it's fixed and working properly.COMMENT
MEDIUMtests/e2e/icon-elements.spec.ts104 // Absolutely positioned inside the `.htCheckboxRendererBox` wrapper, over the input.COMMENT
MEDIUM.github/workflows/performance-tests.yml136 # same Chromium build, platform, and harness version). Compare mode only: in golden modeCOMMENT
Modern AI Meta-Vocabulary3 hits · 9 pts
SeverityFileLineSnippetContext
MEDIUM…ntable/src/3rdparty/walkontable/src/table/drawCycle.ts73 * (never `#deps`), exactly like the `cellAccess`/`domScaffold` mixins — so the draw orchestrationCOMMENT
MEDIUM.github/workflows/develop.yml18# orchestration differs. master / release/** keep their existing workflowsCOMMENT
MEDIUM.ai/BUILD.md25### Core build orchestrationCOMMENT
Empty Error Handlers1 hit · 5 pts
SeverityFileLineSnippetContext
HIGH…pes/data-management/server-side-django/server/views.py133except (json.JSONDecodeError, TypeError, KeyError):CODE
Slop Phrases2 hits · 4 pts
SeverityFileLineSnippetContext
MEDIUMdocs/content/guides/dialog/loading/angular/example4.ts43 <p style="padding: 0; font-size: var(--sl-text-xs, 0.75rem); color: var(--sl-color-gray-3, #777777);">This is a deCODE
MEDIUM…content/guides/dialog/loading/javascript/example4.html9 <p style="padding: 0; font-size: var(--sl-text-xs, 0.75rem); color: var(--sl-color-gray-3, #777777);">This is a demonsCODE
Overly Generic Function Names3 hits · 3 pts
SeverityFileLineSnippetContext
LOW…ntable/src/3rdparty/walkontable/test/helpers/common.js176export function getData(row, col) {CODE
LOW…les/next/visual-tests/vue3/demo/src/utils/constants.ts1204export function getData() {CODE
LOW…/angular-wrapper/demo/src/data-grid/utils/constants.ts1204export function getData() {CODE
Self-Referential Comments1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUM.github/workflows/test.yml4# This file is the DAG only: it wires the module reusable workflows (one perCOMMENT
Redundant / Tautological Comments2 hits · 2 pts
SeverityFileLineSnippetContext
LOW.github/workflows/publish.yml1423 # Check if a merge PR already exists before pushing (idempotent for workflow re-runs)COMMENT
LOW.github/workflows/publish.yml1547 # Check if LTS branch already existsCOMMENT
Deep Nesting1 hit · 1 pts
SeverityFileLineSnippetContext
LOW…pes/data-management/server-side-django/server/views.py47CODE