@salt-ds/data-grid 1.0.28 → 1.0.29
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +18 -0
- package/dist-cjs/BaseCell.js.map +1 -1
- package/dist-cjs/CellEditor.js.map +1 -1
- package/dist-cjs/CellFrame.js.map +1 -1
- package/dist-cjs/ColumnDataContext.js.map +1 -1
- package/dist-cjs/ColumnDragContext.js.map +1 -1
- package/dist-cjs/ColumnGroup.js.map +1 -1
- package/dist-cjs/ColumnSortContext.js.map +1 -1
- package/dist-cjs/CornerTag.js.map +1 -1
- package/dist-cjs/CursorContext.js.map +1 -1
- package/dist-cjs/DropdownCellEditor.js.map +1 -1
- package/dist-cjs/EditorContext.js.map +1 -1
- package/dist-cjs/Grid.js.map +1 -1
- package/dist-cjs/GridColumn.js.map +1 -1
- package/dist-cjs/GridContext.js.map +1 -1
- package/dist-cjs/GroupHeaderCell.js.map +1 -1
- package/dist-cjs/GroupHeaderCellValue.js.map +1 -1
- package/dist-cjs/HeaderCell.js.map +1 -1
- package/dist-cjs/HeaderCellValue.js.map +1 -1
- package/dist-cjs/LayoutContext.js.map +1 -1
- package/dist-cjs/NumberRange.js.map +1 -1
- package/dist-cjs/NumericColumn.js.map +1 -1
- package/dist-cjs/RowSelectionCheckboxCellValue.js.map +1 -1
- package/dist-cjs/RowSelectionCheckboxColumn.js.map +1 -1
- package/dist-cjs/RowSelectionCheckboxHeaderCellValue.js.map +1 -1
- package/dist-cjs/RowSelectionRadioCellValue.js.map +1 -1
- package/dist-cjs/RowSelectionRadioColumn.js.map +1 -1
- package/dist-cjs/RowSelectionRadioHeaderCell.js.map +1 -1
- package/dist-cjs/RowValidationStatus.js.map +1 -1
- package/dist-cjs/SelectionContext.js.map +1 -1
- package/dist-cjs/SizingContext.js.map +1 -1
- package/dist-cjs/TextCellEditor.js.map +1 -1
- package/dist-cjs/internal/CellMeasure.js.map +1 -1
- package/dist-cjs/internal/CellStatusIcons.js.map +1 -1
- package/dist-cjs/internal/ColumnDropTarget.js.map +1 -1
- package/dist-cjs/internal/ColumnGhost.js.map +1 -1
- package/dist-cjs/internal/Cursor.js.map +1 -1
- package/dist-cjs/internal/DefaultCellValue.js.map +1 -1
- package/dist-cjs/internal/FakeCell.js.map +1 -1
- package/dist-cjs/internal/FakeGroupCell.js.map +1 -1
- package/dist-cjs/internal/FakeHeaderCell.js.map +1 -1
- package/dist-cjs/internal/GroupHeaderRow.js.map +1 -1
- package/dist-cjs/internal/HeaderRow.js.map +1 -1
- package/dist-cjs/internal/LeftPart.js.map +1 -1
- package/dist-cjs/internal/MiddlePart.js.map +1 -1
- package/dist-cjs/internal/RightPart.js.map +1 -1
- package/dist-cjs/internal/Scrollable.js.map +1 -1
- package/dist-cjs/internal/TableBody.js.map +1 -1
- package/dist-cjs/internal/TableColGroup.js.map +1 -1
- package/dist-cjs/internal/TableRow.js.map +1 -1
- package/dist-cjs/internal/TopLeftPart.js.map +1 -1
- package/dist-cjs/internal/TopPart.js.map +1 -1
- package/dist-cjs/internal/TopRightPart.js.map +1 -1
- package/dist-cjs/internal/gridHooks.js.map +1 -1
- package/dist-cjs/internal/utils.js.map +1 -1
- package/dist-es/BaseCell.js.map +1 -1
- package/dist-es/CellEditor.js.map +1 -1
- package/dist-es/CellFrame.js.map +1 -1
- package/dist-es/ColumnDataContext.js.map +1 -1
- package/dist-es/ColumnDragContext.js.map +1 -1
- package/dist-es/ColumnGroup.js.map +1 -1
- package/dist-es/ColumnSortContext.js.map +1 -1
- package/dist-es/CornerTag.js.map +1 -1
- package/dist-es/CursorContext.js.map +1 -1
- package/dist-es/DropdownCellEditor.js.map +1 -1
- package/dist-es/EditorContext.js.map +1 -1
- package/dist-es/Grid.js.map +1 -1
- package/dist-es/GridColumn.js.map +1 -1
- package/dist-es/GridContext.js.map +1 -1
- package/dist-es/GroupHeaderCell.js.map +1 -1
- package/dist-es/GroupHeaderCellValue.js.map +1 -1
- package/dist-es/HeaderCell.js.map +1 -1
- package/dist-es/HeaderCellValue.js.map +1 -1
- package/dist-es/LayoutContext.js.map +1 -1
- package/dist-es/NumberRange.js.map +1 -1
- package/dist-es/NumericColumn.js.map +1 -1
- package/dist-es/RowSelectionCheckboxCellValue.js.map +1 -1
- package/dist-es/RowSelectionCheckboxColumn.js.map +1 -1
- package/dist-es/RowSelectionCheckboxHeaderCellValue.js.map +1 -1
- package/dist-es/RowSelectionRadioCellValue.js.map +1 -1
- package/dist-es/RowSelectionRadioColumn.js.map +1 -1
- package/dist-es/RowSelectionRadioHeaderCell.js.map +1 -1
- package/dist-es/RowValidationStatus.js.map +1 -1
- package/dist-es/SelectionContext.js.map +1 -1
- package/dist-es/SizingContext.js.map +1 -1
- package/dist-es/TextCellEditor.js.map +1 -1
- package/dist-es/internal/CellMeasure.js.map +1 -1
- package/dist-es/internal/CellStatusIcons.js.map +1 -1
- package/dist-es/internal/ColumnDropTarget.js.map +1 -1
- package/dist-es/internal/ColumnGhost.js.map +1 -1
- package/dist-es/internal/Cursor.js.map +1 -1
- package/dist-es/internal/DefaultCellValue.js.map +1 -1
- package/dist-es/internal/FakeCell.js.map +1 -1
- package/dist-es/internal/FakeGroupCell.js.map +1 -1
- package/dist-es/internal/FakeHeaderCell.js.map +1 -1
- package/dist-es/internal/GroupHeaderRow.js.map +1 -1
- package/dist-es/internal/HeaderRow.js.map +1 -1
- package/dist-es/internal/LeftPart.js.map +1 -1
- package/dist-es/internal/MiddlePart.js.map +1 -1
- package/dist-es/internal/RightPart.js.map +1 -1
- package/dist-es/internal/Scrollable.js.map +1 -1
- package/dist-es/internal/TableBody.js.map +1 -1
- package/dist-es/internal/TableColGroup.js.map +1 -1
- package/dist-es/internal/TableRow.js.map +1 -1
- package/dist-es/internal/TopLeftPart.js.map +1 -1
- package/dist-es/internal/TopPart.js.map +1 -1
- package/dist-es/internal/TopRightPart.js.map +1 -1
- package/dist-es/internal/gridHooks.js.map +1 -1
- package/dist-es/internal/utils.js.map +1 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MiddlePart.js","sources":["../src/internal/MiddlePart.tsx"],"sourcesContent":["import { makePrefixer } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport type { RefObject } from \"react\";\n\nimport type { GridColumnModel, GridRowModel } from \"../Grid\";\nimport type { CellValidationState } from \"../GridColumn\";\nimport { useActiveOnWheel } from \"./gridHooks\";\nimport middlePartCss from \"./MiddlePart.css\";\nimport { TableBody } from \"./TableBody\";\nimport { TableColGroup } from \"./TableColGroup\";\n\nconst withBaseName = makePrefixer(\"saltGridMiddlePart\");\n\nexport interface MiddlePartProps<T> {\n middleRef: RefObject<HTMLDivElement>;\n onWheel: EventListener;\n columns: GridColumnModel<T>[];\n rows: GridRowModel<T>[];\n hoverOverRowKey?: string;\n setHoverOverRowKey: (key: string | undefined) => void;\n midGap: number;\n zebra?: boolean;\n getRowValidationStatus?: (\n row: GridRowModel<T>,\n ) => CellValidationState | undefined;\n}\n\nexport function MiddlePart<T>(props: MiddlePartProps<T>) {\n const {\n middleRef,\n onWheel,\n columns,\n rows,\n hoverOverRowKey,\n setHoverOverRowKey,\n midGap,\n zebra,\n getRowValidationStatus,\n } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-middle-part\",\n css: middlePartCss,\n window: targetWindow,\n });\n\n const tableRef = useActiveOnWheel(onWheel);\n\n return (\n <div\n ref={middleRef}\n className={withBaseName()}\n data-testid=\"grid-middle-part\"\n >\n <div className={withBaseName(\"space\")}>\n <table ref={tableRef} role=\"presentation\">\n <TableColGroup columns={columns} gap={midGap} />\n <TableBody\n columns={columns}\n rows={rows}\n hoverRowKey={hoverOverRowKey}\n setHoverRowKey={setHoverOverRowKey}\n gap={midGap}\n zebra={zebra}\n getRowValidationStatus={getRowValidationStatus}\n />\n </table>\n </div>\n </div>\n );\n}\n"],"names":["makePrefixer","useWindow","useComponentCssInjection","middlePartCss","useActiveOnWheel","jsx","jsxs","TableColGroup","TableBody"],"mappings":";;;;;;;;;;;AAYA,MAAM,YAAA,GAAeA,kBAAa,oBAAoB,CAAA;AAgB/C,SAAS,WAAc,
|
|
1
|
+
{"version":3,"file":"MiddlePart.js","sources":["../src/internal/MiddlePart.tsx"],"sourcesContent":["import { makePrefixer } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport type { RefObject } from \"react\";\n\nimport type { GridColumnModel, GridRowModel } from \"../Grid\";\nimport type { CellValidationState } from \"../GridColumn\";\nimport { useActiveOnWheel } from \"./gridHooks\";\nimport middlePartCss from \"./MiddlePart.css\";\nimport { TableBody } from \"./TableBody\";\nimport { TableColGroup } from \"./TableColGroup\";\n\nconst withBaseName = makePrefixer(\"saltGridMiddlePart\");\n\nexport interface MiddlePartProps<T> {\n middleRef: RefObject<HTMLDivElement>;\n onWheel: EventListener;\n columns: GridColumnModel<T>[];\n rows: GridRowModel<T>[];\n hoverOverRowKey?: string;\n setHoverOverRowKey: (key: string | undefined) => void;\n midGap: number;\n zebra?: boolean;\n getRowValidationStatus?: (\n row: GridRowModel<T>,\n ) => CellValidationState | undefined;\n}\n\nexport function MiddlePart<T>(props: MiddlePartProps<T>) {\n const {\n middleRef,\n onWheel,\n columns,\n rows,\n hoverOverRowKey,\n setHoverOverRowKey,\n midGap,\n zebra,\n getRowValidationStatus,\n } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-middle-part\",\n css: middlePartCss,\n window: targetWindow,\n });\n\n const tableRef = useActiveOnWheel(onWheel);\n\n return (\n <div\n ref={middleRef}\n className={withBaseName()}\n data-testid=\"grid-middle-part\"\n >\n <div className={withBaseName(\"space\")}>\n <table ref={tableRef} role=\"presentation\">\n <TableColGroup columns={columns} gap={midGap} />\n <TableBody\n columns={columns}\n rows={rows}\n hoverRowKey={hoverOverRowKey}\n setHoverRowKey={setHoverOverRowKey}\n gap={midGap}\n zebra={zebra}\n getRowValidationStatus={getRowValidationStatus}\n />\n </table>\n </div>\n </div>\n );\n}\n"],"names":["makePrefixer","useWindow","useComponentCssInjection","middlePartCss","useActiveOnWheel","jsx","jsxs","TableColGroup","TableBody"],"mappings":";;;;;;;;;;;AAYA,MAAM,YAAA,GAAeA,kBAAa,oBAAoB,CAAA;AAgB/C,SAAS,WAAc,KAAA,EAA2B;AACvD,EAAA,MAAM;AAAA,IACJ,SAAA;AAAA,IACA,OAAA;AAAA,IACA,OAAA;AAAA,IACA,IAAA;AAAA,IACA,eAAA;AAAA,IACA,kBAAA;AAAA,IACA,MAAA;AAAA,IACA,KAAA;AAAA,IACA;AAAA,GACF,GAAI,KAAA;AAEJ,EAAA,MAAM,eAAeC,gBAAA,EAAU;AAC/B,EAAAC,+BAAA,CAAyB;AAAA,IACvB,MAAA,EAAQ,kBAAA;AAAA,IACR,GAAA,EAAKC,YAAA;AAAA,IACL,MAAA,EAAQ;AAAA,GACT,CAAA;AAED,EAAA,MAAM,QAAA,GAAWC,2BAAiB,OAAO,CAAA;AAEzC,EAAA,uBACEC,cAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA,EAAK,SAAA;AAAA,MACL,WAAW,YAAA,EAAa;AAAA,MACxB,aAAA,EAAY,kBAAA;AAAA,MAEZ,QAAA,kBAAAA,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,YAAA,CAAa,OAAO,CAAA,EAClC,QAAA,kBAAAC,eAAA,CAAC,OAAA,EAAA,EAAM,GAAA,EAAK,QAAA,EAAU,IAAA,EAAK,cAAA,EACzB,QAAA,EAAA;AAAA,wBAAAD,cAAA,CAACE,2BAAA,EAAA,EAAc,OAAA,EAAkB,GAAA,EAAK,MAAA,EAAQ,CAAA;AAAA,wBAC9CF,cAAA;AAAA,UAACG,mBAAA;AAAA,UAAA;AAAA,YACC,OAAA;AAAA,YACA,IAAA;AAAA,YACA,WAAA,EAAa,eAAA;AAAA,YACb,cAAA,EAAgB,kBAAA;AAAA,YAChB,GAAA,EAAK,MAAA;AAAA,YACL,KAAA;AAAA,YACA;AAAA;AAAA;AACF,OAAA,EACF,CAAA,EACF;AAAA;AAAA,GACF;AAEJ;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RightPart.js","sources":["../src/internal/RightPart.tsx"],"sourcesContent":["import { makePrefixer } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport type { RefObject } from \"react\";\n\nimport type { GridColumnModel, GridRowModel } from \"../Grid\";\nimport type { CellValidationState } from \"../GridColumn\";\nimport { useActiveOnWheel } from \"./gridHooks\";\nimport rightPartCss from \"./RightPart.css\";\nimport { TableBody } from \"./TableBody\";\nimport { TableColGroup } from \"./TableColGroup\";\n\nconst withBaseName = makePrefixer(\"saltGridRightPart\");\n\nexport interface RightPartProps<T> {\n rightRef: RefObject<HTMLDivElement>;\n onWheel: EventListener;\n leftShadow?: boolean;\n columns: GridColumnModel<T>[];\n rows: GridRowModel<T>[];\n hoverOverRowKey?: string;\n setHoverOverRowKey: (key: string | undefined) => void;\n zebra?: boolean;\n getRowValidationStatus?: (\n row: GridRowModel<T>,\n ) => CellValidationState | undefined;\n}\n\nexport function RightPart<T>(props: RightPartProps<T>) {\n const {\n rightRef,\n onWheel,\n columns,\n leftShadow,\n rows,\n hoverOverRowKey,\n setHoverOverRowKey,\n zebra,\n getRowValidationStatus,\n } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-right-part\",\n css: rightPartCss,\n window: targetWindow,\n });\n\n const tableRef = useActiveOnWheel(onWheel);\n\n if (columns.length === 0) {\n return null;\n }\n\n return (\n <div\n ref={rightRef}\n className={clsx(withBaseName(), {\n [withBaseName(\"leftShadow\")]: leftShadow,\n })}\n data-testid=\"grid-right-part\"\n >\n <div className={withBaseName(\"space\")}>\n <table ref={tableRef} role=\"presentation\">\n <TableColGroup columns={columns} />\n <TableBody\n columns={columns}\n rows={rows}\n hoverRowKey={hoverOverRowKey}\n setHoverRowKey={setHoverOverRowKey}\n zebra={zebra}\n getRowValidationStatus={getRowValidationStatus}\n />\n </table>\n </div>\n </div>\n );\n}\n"],"names":["makePrefixer","useWindow","useComponentCssInjection","rightPartCss","useActiveOnWheel","jsx","clsx","jsxs","TableColGroup","TableBody"],"mappings":";;;;;;;;;;;;AAaA,MAAM,YAAA,GAAeA,kBAAa,mBAAmB,CAAA;AAgB9C,SAAS,UAAa,
|
|
1
|
+
{"version":3,"file":"RightPart.js","sources":["../src/internal/RightPart.tsx"],"sourcesContent":["import { makePrefixer } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport type { RefObject } from \"react\";\n\nimport type { GridColumnModel, GridRowModel } from \"../Grid\";\nimport type { CellValidationState } from \"../GridColumn\";\nimport { useActiveOnWheel } from \"./gridHooks\";\nimport rightPartCss from \"./RightPart.css\";\nimport { TableBody } from \"./TableBody\";\nimport { TableColGroup } from \"./TableColGroup\";\n\nconst withBaseName = makePrefixer(\"saltGridRightPart\");\n\nexport interface RightPartProps<T> {\n rightRef: RefObject<HTMLDivElement>;\n onWheel: EventListener;\n leftShadow?: boolean;\n columns: GridColumnModel<T>[];\n rows: GridRowModel<T>[];\n hoverOverRowKey?: string;\n setHoverOverRowKey: (key: string | undefined) => void;\n zebra?: boolean;\n getRowValidationStatus?: (\n row: GridRowModel<T>,\n ) => CellValidationState | undefined;\n}\n\nexport function RightPart<T>(props: RightPartProps<T>) {\n const {\n rightRef,\n onWheel,\n columns,\n leftShadow,\n rows,\n hoverOverRowKey,\n setHoverOverRowKey,\n zebra,\n getRowValidationStatus,\n } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-right-part\",\n css: rightPartCss,\n window: targetWindow,\n });\n\n const tableRef = useActiveOnWheel(onWheel);\n\n if (columns.length === 0) {\n return null;\n }\n\n return (\n <div\n ref={rightRef}\n className={clsx(withBaseName(), {\n [withBaseName(\"leftShadow\")]: leftShadow,\n })}\n data-testid=\"grid-right-part\"\n >\n <div className={withBaseName(\"space\")}>\n <table ref={tableRef} role=\"presentation\">\n <TableColGroup columns={columns} />\n <TableBody\n columns={columns}\n rows={rows}\n hoverRowKey={hoverOverRowKey}\n setHoverRowKey={setHoverOverRowKey}\n zebra={zebra}\n getRowValidationStatus={getRowValidationStatus}\n />\n </table>\n </div>\n </div>\n );\n}\n"],"names":["makePrefixer","useWindow","useComponentCssInjection","rightPartCss","useActiveOnWheel","jsx","clsx","jsxs","TableColGroup","TableBody"],"mappings":";;;;;;;;;;;;AAaA,MAAM,YAAA,GAAeA,kBAAa,mBAAmB,CAAA;AAgB9C,SAAS,UAAa,KAAA,EAA0B;AACrD,EAAA,MAAM;AAAA,IACJ,QAAA;AAAA,IACA,OAAA;AAAA,IACA,OAAA;AAAA,IACA,UAAA;AAAA,IACA,IAAA;AAAA,IACA,eAAA;AAAA,IACA,kBAAA;AAAA,IACA,KAAA;AAAA,IACA;AAAA,GACF,GAAI,KAAA;AAEJ,EAAA,MAAM,eAAeC,gBAAA,EAAU;AAC/B,EAAAC,+BAAA,CAAyB;AAAA,IACvB,MAAA,EAAQ,iBAAA;AAAA,IACR,GAAA,EAAKC,WAAA;AAAA,IACL,MAAA,EAAQ;AAAA,GACT,CAAA;AAED,EAAA,MAAM,QAAA,GAAWC,2BAAiB,OAAO,CAAA;AAEzC,EAAA,IAAI,OAAA,CAAQ,WAAW,CAAA,EAAG;AACxB,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,uBACEC,cAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA,EAAK,QAAA;AAAA,MACL,SAAA,EAAWC,SAAA,CAAK,YAAA,EAAa,EAAG;AAAA,QAC9B,CAAC,YAAA,CAAa,YAAY,CAAC,GAAG;AAAA,OAC/B,CAAA;AAAA,MACD,aAAA,EAAY,iBAAA;AAAA,MAEZ,QAAA,kBAAAD,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,YAAA,CAAa,OAAO,CAAA,EAClC,QAAA,kBAAAE,eAAA,CAAC,OAAA,EAAA,EAAM,GAAA,EAAK,QAAA,EAAU,IAAA,EAAK,cAAA,EACzB,QAAA,EAAA;AAAA,wBAAAF,cAAA,CAACG,+BAAc,OAAA,EAAkB,CAAA;AAAA,wBACjCH,cAAA;AAAA,UAACI,mBAAA;AAAA,UAAA;AAAA,YACC,OAAA;AAAA,YACA,IAAA;AAAA,YACA,WAAA,EAAa,eAAA;AAAA,YACb,cAAA,EAAgB,kBAAA;AAAA,YAChB,KAAA;AAAA,YACA;AAAA;AAAA;AACF,OAAA,EACF,CAAA,EACF;AAAA;AAAA,GACF;AAEJ;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Scrollable.js","sources":["../src/internal/Scrollable.tsx"],"sourcesContent":["import { makePrefixer } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { type RefObject, type UIEventHandler, useEffect } from \"react\";\n\nimport scrollableCss from \"./Scrollable.css\";\n\nconst withBaseName = makePrefixer(\"saltGridScrollable\");\n\nexport interface ScrollableProps<T> {\n resizeClient: (params: {\n clientWidth: number;\n clientHeight: number;\n scrollBarWidth: number;\n scrollBarHeight: number;\n }) => void;\n\n scrollLeft: number;\n scrollTop: number;\n scrollSource: \"user\" | \"table\";\n scroll: (left?: number, top?: number, source?: \"user\" | \"table\") => void;\n\n scrollerRef: RefObject<HTMLDivElement>;\n middleRef: RefObject<HTMLDivElement>;\n topRef: RefObject<HTMLDivElement>;\n leftRef: RefObject<HTMLDivElement>;\n rightRef: RefObject<HTMLDivElement>;\n bottomRef: RefObject<HTMLDivElement>;\n}\n\n// Provides scrollbars for the grid. Synchronizes scrolling across all parts\n// (pinned and unpinned).\nexport function Scrollable<T>(props: ScrollableProps<T>) {\n const {\n scrollerRef,\n middleRef,\n topRef,\n leftRef,\n rightRef,\n bottomRef,\n resizeClient,\n scrollLeft,\n scrollTop,\n scrollSource,\n } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-scrollable\",\n css: scrollableCss,\n window: targetWindow,\n });\n\n const onScroll: UIEventHandler<HTMLDivElement> = (event) => {\n if (!scrollerRef.current) {\n return;\n }\n const { scrollLeft, scrollTop } = scrollerRef.current;\n const top = topRef.current;\n if (top) {\n top.scrollLeft = scrollLeft;\n }\n const bottom = bottomRef.current;\n if (bottom) {\n bottom.scrollLeft = scrollLeft;\n }\n const left = leftRef.current;\n if (left) {\n left.scrollTop = scrollTop;\n }\n const right = rightRef.current;\n if (right) {\n right.scrollTop = scrollTop;\n }\n const middle = middleRef.current;\n if (middle) {\n middle.scrollTop = scrollTop;\n middle.scrollLeft = scrollLeft;\n }\n props.scroll(scrollLeft, scrollTop, \"user\");\n };\n\n useEffect(() => {\n if (!scrollerRef.current) {\n return;\n }\n const resizeObserver = new ResizeObserver(([entry]) => {\n const { offsetWidth, offsetHeight, clientWidth, clientHeight } =\n entry.target as HTMLDivElement;\n const scrollBarWidth = offsetWidth - clientWidth;\n const scrollBarHeight = offsetHeight - clientHeight;\n resizeClient({\n clientWidth,\n clientHeight,\n scrollBarWidth,\n scrollBarHeight,\n });\n });\n\n resizeObserver.observe(scrollerRef.current);\n return () => resizeObserver.disconnect();\n }, [resizeClient, scrollerRef]);\n\n useEffect(() => {\n if (!scrollerRef.current) {\n return;\n }\n if (scrollSource === \"table\") {\n if (scrollLeft !== scrollerRef.current.scrollLeft) {\n scrollerRef.current.scrollLeft = scrollLeft;\n }\n if (scrollTop !== scrollerRef.current.scrollTop) {\n scrollerRef.current.scrollTop = scrollTop;\n }\n }\n }, [scrollLeft, scrollTop, scrollSource, scrollerRef]);\n\n return (\n <div\n ref={scrollerRef}\n className={withBaseName()}\n onScroll={onScroll}\n data-testid=\"grid-scrollable\"\n >\n <div className={withBaseName(\"space\")} />\n </div>\n );\n}\n"],"names":["makePrefixer","useWindow","useComponentCssInjection","scrollableCss","scrollLeft","scrollTop","useEffect","jsx"],"mappings":";;;;;;;;;AAOA,MAAM,YAAA,GAAeA,kBAAa,oBAAoB,CAAA;AAyB/C,SAAS,WAAc,
|
|
1
|
+
{"version":3,"file":"Scrollable.js","sources":["../src/internal/Scrollable.tsx"],"sourcesContent":["import { makePrefixer } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { type RefObject, type UIEventHandler, useEffect } from \"react\";\n\nimport scrollableCss from \"./Scrollable.css\";\n\nconst withBaseName = makePrefixer(\"saltGridScrollable\");\n\nexport interface ScrollableProps<T> {\n resizeClient: (params: {\n clientWidth: number;\n clientHeight: number;\n scrollBarWidth: number;\n scrollBarHeight: number;\n }) => void;\n\n scrollLeft: number;\n scrollTop: number;\n scrollSource: \"user\" | \"table\";\n scroll: (left?: number, top?: number, source?: \"user\" | \"table\") => void;\n\n scrollerRef: RefObject<HTMLDivElement>;\n middleRef: RefObject<HTMLDivElement>;\n topRef: RefObject<HTMLDivElement>;\n leftRef: RefObject<HTMLDivElement>;\n rightRef: RefObject<HTMLDivElement>;\n bottomRef: RefObject<HTMLDivElement>;\n}\n\n// Provides scrollbars for the grid. Synchronizes scrolling across all parts\n// (pinned and unpinned).\nexport function Scrollable<T>(props: ScrollableProps<T>) {\n const {\n scrollerRef,\n middleRef,\n topRef,\n leftRef,\n rightRef,\n bottomRef,\n resizeClient,\n scrollLeft,\n scrollTop,\n scrollSource,\n } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-scrollable\",\n css: scrollableCss,\n window: targetWindow,\n });\n\n const onScroll: UIEventHandler<HTMLDivElement> = (event) => {\n if (!scrollerRef.current) {\n return;\n }\n const { scrollLeft, scrollTop } = scrollerRef.current;\n const top = topRef.current;\n if (top) {\n top.scrollLeft = scrollLeft;\n }\n const bottom = bottomRef.current;\n if (bottom) {\n bottom.scrollLeft = scrollLeft;\n }\n const left = leftRef.current;\n if (left) {\n left.scrollTop = scrollTop;\n }\n const right = rightRef.current;\n if (right) {\n right.scrollTop = scrollTop;\n }\n const middle = middleRef.current;\n if (middle) {\n middle.scrollTop = scrollTop;\n middle.scrollLeft = scrollLeft;\n }\n props.scroll(scrollLeft, scrollTop, \"user\");\n };\n\n useEffect(() => {\n if (!scrollerRef.current) {\n return;\n }\n const resizeObserver = new ResizeObserver(([entry]) => {\n const { offsetWidth, offsetHeight, clientWidth, clientHeight } =\n entry.target as HTMLDivElement;\n const scrollBarWidth = offsetWidth - clientWidth;\n const scrollBarHeight = offsetHeight - clientHeight;\n resizeClient({\n clientWidth,\n clientHeight,\n scrollBarWidth,\n scrollBarHeight,\n });\n });\n\n resizeObserver.observe(scrollerRef.current);\n return () => resizeObserver.disconnect();\n }, [resizeClient, scrollerRef]);\n\n useEffect(() => {\n if (!scrollerRef.current) {\n return;\n }\n if (scrollSource === \"table\") {\n if (scrollLeft !== scrollerRef.current.scrollLeft) {\n scrollerRef.current.scrollLeft = scrollLeft;\n }\n if (scrollTop !== scrollerRef.current.scrollTop) {\n scrollerRef.current.scrollTop = scrollTop;\n }\n }\n }, [scrollLeft, scrollTop, scrollSource, scrollerRef]);\n\n return (\n <div\n ref={scrollerRef}\n className={withBaseName()}\n onScroll={onScroll}\n data-testid=\"grid-scrollable\"\n >\n <div className={withBaseName(\"space\")} />\n </div>\n );\n}\n"],"names":["makePrefixer","useWindow","useComponentCssInjection","scrollableCss","scrollLeft","scrollTop","useEffect","jsx"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableBody.js","sources":["../src/internal/TableBody.tsx"],"sourcesContent":["import { type MouseEventHandler, useCallback } from \"react\";\nimport { useCursorContext } from \"../CursorContext\";\nimport { useEditorContext } from \"../EditorContext\";\nimport type { GridColumnModel, GridRowModel } from \"../Grid\";\nimport type { CellValidationState } from \"../GridColumn\";\nimport { useSelectionContext } from \"../SelectionContext\";\nimport { TableRow } from \"./TableRow\";\nimport { getRowKeyAttribute } from \"./utils\";\n\nexport interface TableBodyProps<T> {\n columns: GridColumnModel<T>[];\n rows: GridRowModel<T>[];\n hoverRowKey?: string;\n setHoverRowKey: (key: string | undefined) => void;\n gap?: number;\n zebra?: boolean;\n getRowValidationStatus?: (\n row: GridRowModel<T>,\n ) => CellValidationState | undefined;\n}\n\nexport function TableBody<T>(props: TableBodyProps<T>) {\n const {\n columns,\n rows,\n hoverRowKey,\n setHoverRowKey,\n gap,\n zebra,\n getRowValidationStatus,\n } = props;\n const { selRowIdxs, selectedCellRange } = useSelectionContext();\n\n const isCellInSelectedRange = useCallback(\n (rowIdx: number, colIdx: number) => {\n if (!selectedCellRange) {\n return false;\n }\n const { start, end } = selectedCellRange;\n const minRowIdx = Math.min(start.rowIdx, end.rowIdx);\n const maxRowIdx = Math.max(start.rowIdx, end.rowIdx);\n const minColIdx = Math.min(start.colIdx, end.colIdx);\n const maxColIdx = Math.max(start.colIdx, end.colIdx);\n return (\n rowIdx >= minRowIdx &&\n rowIdx <= maxRowIdx &&\n colIdx >= minColIdx &&\n colIdx <= maxColIdx\n );\n },\n [selectedCellRange],\n );\n\n const { cursorRowIdx, cursorColIdx, focusedPart, headerIsFocusable } =\n useCursorContext();\n\n const { editMode, startEditMode } = useEditorContext();\n\n const onRowMouseEnter: MouseEventHandler<HTMLTableRowElement> = (event) => {\n const target = event.currentTarget as HTMLElement;\n const rowKey = getRowKeyAttribute(target);\n setHoverRowKey(rowKey);\n };\n\n const onMouseLeave: MouseEventHandler<HTMLTableSectionElement> = () => {\n setHoverRowKey(undefined);\n };\n\n const onDoubleClick: MouseEventHandler<HTMLTableSectionElement> = () => {\n startEditMode();\n };\n\n return (\n <tbody onMouseLeave={onMouseLeave} onDoubleClick={onDoubleClick}>\n {rows.map((row) => {\n const isSelected = selRowIdxs.has(row.index);\n const cursorIdx =\n focusedPart === \"body\" && cursorRowIdx === row.index\n ? cursorColIdx\n : undefined;\n const editorColIdx = editMode ? cursorIdx : undefined;\n return (\n <TableRow\n key={row.key}\n row={row}\n onMouseEnter={onRowMouseEnter}\n columns={columns}\n isHoverOver={row.key === hoverRowKey}\n isSelected={isSelected}\n cursorColIdx={cursorIdx}\n gap={gap}\n zebra={zebra && row.index % 2 === 0}\n editorColIdx={editorColIdx}\n isCellSelected={isCellInSelectedRange}\n headerIsFocusable={headerIsFocusable}\n validationStatus={\n getRowValidationStatus ? getRowValidationStatus(row) : undefined\n }\n />\n );\n })}\n </tbody>\n );\n}\n"],"names":["useSelectionContext","useCallback","useCursorContext","useEditorContext","getRowKeyAttribute","jsx","TableRow"],"mappings":";;;;;;;;;;AAqBO,SAAS,UAAa,
|
|
1
|
+
{"version":3,"file":"TableBody.js","sources":["../src/internal/TableBody.tsx"],"sourcesContent":["import { type MouseEventHandler, useCallback } from \"react\";\nimport { useCursorContext } from \"../CursorContext\";\nimport { useEditorContext } from \"../EditorContext\";\nimport type { GridColumnModel, GridRowModel } from \"../Grid\";\nimport type { CellValidationState } from \"../GridColumn\";\nimport { useSelectionContext } from \"../SelectionContext\";\nimport { TableRow } from \"./TableRow\";\nimport { getRowKeyAttribute } from \"./utils\";\n\nexport interface TableBodyProps<T> {\n columns: GridColumnModel<T>[];\n rows: GridRowModel<T>[];\n hoverRowKey?: string;\n setHoverRowKey: (key: string | undefined) => void;\n gap?: number;\n zebra?: boolean;\n getRowValidationStatus?: (\n row: GridRowModel<T>,\n ) => CellValidationState | undefined;\n}\n\nexport function TableBody<T>(props: TableBodyProps<T>) {\n const {\n columns,\n rows,\n hoverRowKey,\n setHoverRowKey,\n gap,\n zebra,\n getRowValidationStatus,\n } = props;\n const { selRowIdxs, selectedCellRange } = useSelectionContext();\n\n const isCellInSelectedRange = useCallback(\n (rowIdx: number, colIdx: number) => {\n if (!selectedCellRange) {\n return false;\n }\n const { start, end } = selectedCellRange;\n const minRowIdx = Math.min(start.rowIdx, end.rowIdx);\n const maxRowIdx = Math.max(start.rowIdx, end.rowIdx);\n const minColIdx = Math.min(start.colIdx, end.colIdx);\n const maxColIdx = Math.max(start.colIdx, end.colIdx);\n return (\n rowIdx >= minRowIdx &&\n rowIdx <= maxRowIdx &&\n colIdx >= minColIdx &&\n colIdx <= maxColIdx\n );\n },\n [selectedCellRange],\n );\n\n const { cursorRowIdx, cursorColIdx, focusedPart, headerIsFocusable } =\n useCursorContext();\n\n const { editMode, startEditMode } = useEditorContext();\n\n const onRowMouseEnter: MouseEventHandler<HTMLTableRowElement> = (event) => {\n const target = event.currentTarget as HTMLElement;\n const rowKey = getRowKeyAttribute(target);\n setHoverRowKey(rowKey);\n };\n\n const onMouseLeave: MouseEventHandler<HTMLTableSectionElement> = () => {\n setHoverRowKey(undefined);\n };\n\n const onDoubleClick: MouseEventHandler<HTMLTableSectionElement> = () => {\n startEditMode();\n };\n\n return (\n <tbody onMouseLeave={onMouseLeave} onDoubleClick={onDoubleClick}>\n {rows.map((row) => {\n const isSelected = selRowIdxs.has(row.index);\n const cursorIdx =\n focusedPart === \"body\" && cursorRowIdx === row.index\n ? cursorColIdx\n : undefined;\n const editorColIdx = editMode ? cursorIdx : undefined;\n return (\n <TableRow\n key={row.key}\n row={row}\n onMouseEnter={onRowMouseEnter}\n columns={columns}\n isHoverOver={row.key === hoverRowKey}\n isSelected={isSelected}\n cursorColIdx={cursorIdx}\n gap={gap}\n zebra={zebra && row.index % 2 === 0}\n editorColIdx={editorColIdx}\n isCellSelected={isCellInSelectedRange}\n headerIsFocusable={headerIsFocusable}\n validationStatus={\n getRowValidationStatus ? getRowValidationStatus(row) : undefined\n }\n />\n );\n })}\n </tbody>\n );\n}\n"],"names":["useSelectionContext","useCallback","useCursorContext","useEditorContext","getRowKeyAttribute","jsx","TableRow"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableColGroup.js","sources":["../src/internal/TableColGroup.tsx"],"sourcesContent":["import { useMemo } from \"react\";\nimport type { GridColumnModel } from \"../Grid\";\n\nexport interface TableColGroupProps<T> {\n columns: GridColumnModel<T>[];\n gap?: number;\n}\n\nexport interface TableColProps<T> {\n width: number;\n}\n\n// Controls column widths.\nexport function TableColGroup<T>(props: TableColGroupProps<T>) {\n const { columns, gap } = props;\n return (\n <colgroup>\n {columns.map((column) => {\n return (\n <TableCol key={column.info.props.id} width={column.info.width} />\n );\n })}\n {gap !== undefined && gap > 0 ? (\n <TableCol key=\"__gap\" width={gap} />\n ) : null}\n </colgroup>\n );\n}\n\nexport function TableCol<T>(props: TableColProps<T>) {\n const { width } = props;\n const style = useMemo(() => {\n return {\n width: `${width}px`,\n };\n }, [width]);\n return <col style={style} />;\n}\n"],"names":["jsx","useMemo"],"mappings":";;;;;AAaO,SAAS,cAAiB,
|
|
1
|
+
{"version":3,"file":"TableColGroup.js","sources":["../src/internal/TableColGroup.tsx"],"sourcesContent":["import { useMemo } from \"react\";\nimport type { GridColumnModel } from \"../Grid\";\n\nexport interface TableColGroupProps<T> {\n columns: GridColumnModel<T>[];\n gap?: number;\n}\n\nexport interface TableColProps<T> {\n width: number;\n}\n\n// Controls column widths.\nexport function TableColGroup<T>(props: TableColGroupProps<T>) {\n const { columns, gap } = props;\n return (\n <colgroup>\n {columns.map((column) => {\n return (\n <TableCol key={column.info.props.id} width={column.info.width} />\n );\n })}\n {gap !== undefined && gap > 0 ? (\n <TableCol key=\"__gap\" width={gap} />\n ) : null}\n </colgroup>\n );\n}\n\nexport function TableCol<T>(props: TableColProps<T>) {\n const { width } = props;\n const style = useMemo(() => {\n return {\n width: `${width}px`,\n };\n }, [width]);\n return <col style={style} />;\n}\n"],"names":["jsx","useMemo"],"mappings":";;;;;AAaO,SAAS,cAAiB,KAAA,EAA8B;AAC7D,EAAA,MAAM,EAAE,OAAA,EAAS,GAAA,EAAI,GAAI,KAAA;AACzB,EAAA,uCACG,UAAA,EAAA,EACE,QAAA,EAAA;AAAA,IAAA,OAAA,CAAQ,GAAA,CAAI,CAAC,MAAA,KAAW;AACvB,MAAA,uBACEA,cAAA,CAAC,YAAoC,KAAA,EAAO,MAAA,CAAO,KAAK,KAAA,EAAA,EAAzC,MAAA,CAAO,IAAA,CAAK,KAAA,CAAM,EAA8B,CAAA;AAAA,IAEnE,CAAC,CAAA;AAAA,IACA,GAAA,KAAQ,UAAa,GAAA,GAAM,CAAA,kCACzB,QAAA,EAAA,EAAqB,KAAA,EAAO,GAAA,EAAA,EAAf,OAAoB,CAAA,GAChC;AAAA,GAAA,EACN,CAAA;AAEJ;AAEO,SAAS,SAAY,KAAA,EAAyB;AACnD,EAAA,MAAM,EAAE,OAAM,GAAI,KAAA;AAClB,EAAA,MAAM,KAAA,GAAQC,cAAQ,MAAM;AAC1B,IAAA,OAAO;AAAA,MACL,KAAA,EAAO,GAAG,KAAK,CAAA,EAAA;AAAA,KACjB;AAAA,EACF,CAAA,EAAG,CAAC,KAAK,CAAC,CAAA;AACV,EAAA,uBAAOD,cAAA,CAAC,SAAI,KAAA,EAAc,CAAA;AAC5B;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableRow.js","sources":["../src/internal/TableRow.tsx"],"sourcesContent":["import { makePrefixer } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport {\n Children,\n cloneElement,\n isValidElement,\n type MouseEventHandler,\n} from \"react\";\n\nimport { BaseCell } from \"../BaseCell\";\nimport type { GridColumnModel, GridRowModel } from \"../Grid\";\nimport type { CellValidationState } from \"../GridColumn\";\nimport { useGridContext } from \"../GridContext\";\nimport { RowValidationStatusContext } from \"../RowValidationStatus\";\n\nimport { DefaultCellValue } from \"./DefaultCellValue\";\nimport { FakeCell } from \"./FakeCell\";\n\nimport tableRowCss from \"./TableRow.css\";\n\nconst withBaseName = makePrefixer(\"saltGridTableRow\");\n\nexport interface TableRowProps<T> {\n row: GridRowModel<T>;\n isSelected?: boolean;\n isHoverOver?: boolean;\n zebra?: boolean;\n columns: GridColumnModel<T>[];\n cursorColIdx?: number;\n onMouseEnter?: MouseEventHandler<HTMLTableRowElement>;\n onMouseLeave?: MouseEventHandler<HTMLTableRowElement>;\n gap?: number;\n editorColIdx?: number;\n isCellSelected?: (rowIdx: number, colIdx: number) => boolean;\n headerIsFocusable?: boolean;\n validationStatus?: CellValidationState;\n}\n\nexport function TableRow<T>(props: TableRowProps<T>) {\n const {\n row,\n isSelected,\n zebra,\n isHoverOver,\n columns,\n onMouseEnter,\n onMouseLeave,\n cursorColIdx,\n gap,\n editorColIdx,\n isCellSelected,\n headerIsFocusable,\n validationStatus: rowValidationStatus,\n } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-table-row\",\n css: tableRowCss,\n window: targetWindow,\n });\n\n const grid = useGridContext();\n\n if (!row.key) {\n throw new Error(\"Invalid row\");\n }\n\n const ariaRowIndex = headerIsFocusable ? row.index + 2 : row.index + 1;\n\n return (\n <tr\n aria-rowindex={ariaRowIndex}\n aria-selected={isSelected ? true : undefined}\n className={clsx(withBaseName(), {\n [withBaseName(\"zebra\")]: zebra,\n [withBaseName(\"hover\")]: isHoverOver,\n [withBaseName(\"selected\")]: isSelected,\n [withBaseName(\"first\")]: row.index === 0,\n [withBaseName(`validationStatus-${rowValidationStatus}`)]:\n rowValidationStatus,\n })}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n data-row-index={row.index}\n data-row-key={row.key}\n >\n {columns.map((column, i) => {\n const colKey = column.info.props.id;\n const editorInfo = grid.getEditor(column.info.props.id);\n const isEditable = !!editorInfo;\n\n if (editorColIdx === column.index) {\n if (isEditable) {\n if (isValidElement(editorInfo.children)) {\n const editorElement = Children.only(editorInfo.children);\n return cloneElement(editorElement, {\n key: colKey,\n row,\n column,\n } as any);\n }\n }\n }\n\n const Cell = column.info.props.cellComponent || BaseCell;\n const CellValue =\n column.info.props.cellValueComponent || DefaultCellValue;\n const value =\n column.info.props.getValue && row.data\n ? column.info.props.getValue(row.data)\n : null;\n const isFocused = cursorColIdx === column.index;\n const isSelected = isCellSelected?.(row.index, column.index);\n const validationFnArg = {\n row,\n column,\n isFocused,\n value,\n };\n const validationStatus =\n column.info.props.getValidationStatus?.(validationFnArg);\n const validationMessage =\n validationStatus &&\n column.info.props.getValidationMessage?.(validationFnArg);\n\n return (\n <RowValidationStatusContext.Provider\n key={colKey}\n value={{ status: rowValidationStatus }}\n >\n <Cell\n row={row}\n column={column}\n isFocused={isFocused}\n isSelected={isSelected}\n isEditable={isEditable}\n validationStatus={validationStatus}\n validationMessage={validationMessage}\n validationType={column.info.props.validationType}\n value={value}\n align={column.info.props.align}\n >\n <CellValue\n column={column}\n row={row}\n value={value}\n isFocused={isFocused}\n validationStatus={validationStatus}\n validationMessage={validationMessage}\n validationType={column.info.props.validationType}\n />\n </Cell>\n </RowValidationStatusContext.Provider>\n );\n })}\n {gap !== undefined && gap > 0 ? <FakeCell row={row} /> : null}\n </tr>\n );\n}\n"],"names":["makePrefixer","useWindow","useComponentCssInjection","tableRowCss","useGridContext","jsxs","clsx","isValidElement","Children","cloneElement","BaseCell","DefaultCellValue","isSelected","jsx","RowValidationStatusContext","FakeCell"],"mappings":";;;;;;;;;;;;;;;AAsBA,MAAM,YAAA,GAAeA,kBAAa,kBAAkB,CAAA;AAkB7C,SAAS,SAAY,
|
|
1
|
+
{"version":3,"file":"TableRow.js","sources":["../src/internal/TableRow.tsx"],"sourcesContent":["import { makePrefixer } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport {\n Children,\n cloneElement,\n isValidElement,\n type MouseEventHandler,\n} from \"react\";\n\nimport { BaseCell } from \"../BaseCell\";\nimport type { GridColumnModel, GridRowModel } from \"../Grid\";\nimport type { CellValidationState } from \"../GridColumn\";\nimport { useGridContext } from \"../GridContext\";\nimport { RowValidationStatusContext } from \"../RowValidationStatus\";\n\nimport { DefaultCellValue } from \"./DefaultCellValue\";\nimport { FakeCell } from \"./FakeCell\";\n\nimport tableRowCss from \"./TableRow.css\";\n\nconst withBaseName = makePrefixer(\"saltGridTableRow\");\n\nexport interface TableRowProps<T> {\n row: GridRowModel<T>;\n isSelected?: boolean;\n isHoverOver?: boolean;\n zebra?: boolean;\n columns: GridColumnModel<T>[];\n cursorColIdx?: number;\n onMouseEnter?: MouseEventHandler<HTMLTableRowElement>;\n onMouseLeave?: MouseEventHandler<HTMLTableRowElement>;\n gap?: number;\n editorColIdx?: number;\n isCellSelected?: (rowIdx: number, colIdx: number) => boolean;\n headerIsFocusable?: boolean;\n validationStatus?: CellValidationState;\n}\n\nexport function TableRow<T>(props: TableRowProps<T>) {\n const {\n row,\n isSelected,\n zebra,\n isHoverOver,\n columns,\n onMouseEnter,\n onMouseLeave,\n cursorColIdx,\n gap,\n editorColIdx,\n isCellSelected,\n headerIsFocusable,\n validationStatus: rowValidationStatus,\n } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-table-row\",\n css: tableRowCss,\n window: targetWindow,\n });\n\n const grid = useGridContext();\n\n if (!row.key) {\n throw new Error(\"Invalid row\");\n }\n\n const ariaRowIndex = headerIsFocusable ? row.index + 2 : row.index + 1;\n\n return (\n <tr\n aria-rowindex={ariaRowIndex}\n aria-selected={isSelected ? true : undefined}\n className={clsx(withBaseName(), {\n [withBaseName(\"zebra\")]: zebra,\n [withBaseName(\"hover\")]: isHoverOver,\n [withBaseName(\"selected\")]: isSelected,\n [withBaseName(\"first\")]: row.index === 0,\n [withBaseName(`validationStatus-${rowValidationStatus}`)]:\n rowValidationStatus,\n })}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n data-row-index={row.index}\n data-row-key={row.key}\n >\n {columns.map((column, i) => {\n const colKey = column.info.props.id;\n const editorInfo = grid.getEditor(column.info.props.id);\n const isEditable = !!editorInfo;\n\n if (editorColIdx === column.index) {\n if (isEditable) {\n if (isValidElement(editorInfo.children)) {\n const editorElement = Children.only(editorInfo.children);\n return cloneElement(editorElement, {\n key: colKey,\n row,\n column,\n } as any);\n }\n }\n }\n\n const Cell = column.info.props.cellComponent || BaseCell;\n const CellValue =\n column.info.props.cellValueComponent || DefaultCellValue;\n const value =\n column.info.props.getValue && row.data\n ? column.info.props.getValue(row.data)\n : null;\n const isFocused = cursorColIdx === column.index;\n const isSelected = isCellSelected?.(row.index, column.index);\n const validationFnArg = {\n row,\n column,\n isFocused,\n value,\n };\n const validationStatus =\n column.info.props.getValidationStatus?.(validationFnArg);\n const validationMessage =\n validationStatus &&\n column.info.props.getValidationMessage?.(validationFnArg);\n\n return (\n <RowValidationStatusContext.Provider\n key={colKey}\n value={{ status: rowValidationStatus }}\n >\n <Cell\n row={row}\n column={column}\n isFocused={isFocused}\n isSelected={isSelected}\n isEditable={isEditable}\n validationStatus={validationStatus}\n validationMessage={validationMessage}\n validationType={column.info.props.validationType}\n value={value}\n align={column.info.props.align}\n >\n <CellValue\n column={column}\n row={row}\n value={value}\n isFocused={isFocused}\n validationStatus={validationStatus}\n validationMessage={validationMessage}\n validationType={column.info.props.validationType}\n />\n </Cell>\n </RowValidationStatusContext.Provider>\n );\n })}\n {gap !== undefined && gap > 0 ? <FakeCell row={row} /> : null}\n </tr>\n );\n}\n"],"names":["makePrefixer","useWindow","useComponentCssInjection","tableRowCss","useGridContext","jsxs","clsx","isValidElement","Children","cloneElement","BaseCell","DefaultCellValue","isSelected","jsx","RowValidationStatusContext","FakeCell"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TopLeftPart.js","sources":["../src/internal/TopLeftPart.tsx"],"sourcesContent":["import { makePrefixer } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\n\nimport type { GridColumnGroupModel, GridColumnModel } from \"../Grid\";\n\nimport { GroupHeaderRow } from \"./GroupHeaderRow\";\nimport { useActiveOnWheel } from \"./gridHooks\";\nimport { HeaderRow } from \"./HeaderRow\";\nimport { TableColGroup } from \"./TableColGroup\";\n\nimport topLeftPartCss from \"./TopLeftPart.css\";\n\nconst withBaseName = makePrefixer(\"saltGridTopLeftPart\");\n\nexport interface TopLeftPartProps<T> {\n onWheel: EventListener;\n columns: GridColumnModel<T>[];\n columnGroups: GridColumnGroupModel[];\n rightShadow?: boolean;\n bottomShadow?: boolean;\n}\n\nexport function TopLeftPart<T>(props: TopLeftPartProps<T>) {\n const { onWheel, columns, columnGroups, rightShadow, bottomShadow } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-top-left-part\",\n css: topLeftPartCss,\n window: targetWindow,\n });\n\n const tableRef = useActiveOnWheel(onWheel);\n\n if (columns.length === 0) {\n return null;\n }\n\n return (\n <div\n className={clsx(withBaseName(), {\n [withBaseName(\"rightShadow\")]: rightShadow,\n [withBaseName(\"bottomShadow\")]: bottomShadow,\n })}\n data-testid=\"grid-top-left-part\"\n >\n <table ref={tableRef} role=\"presentation\">\n <TableColGroup columns={columns} />\n <thead>\n <GroupHeaderRow groups={columnGroups} />\n <HeaderRow columns={columns} />\n </thead>\n </table>\n </div>\n );\n}\n"],"names":["makePrefixer","useWindow","useComponentCssInjection","topLeftPartCss","useActiveOnWheel","jsx","clsx","jsxs","TableColGroup","GroupHeaderRow","HeaderRow"],"mappings":";;;;;;;;;;;;;AAcA,MAAM,YAAA,GAAeA,kBAAa,qBAAqB,CAAA;AAUhD,SAAS,YAAe,
|
|
1
|
+
{"version":3,"file":"TopLeftPart.js","sources":["../src/internal/TopLeftPart.tsx"],"sourcesContent":["import { makePrefixer } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\n\nimport type { GridColumnGroupModel, GridColumnModel } from \"../Grid\";\n\nimport { GroupHeaderRow } from \"./GroupHeaderRow\";\nimport { useActiveOnWheel } from \"./gridHooks\";\nimport { HeaderRow } from \"./HeaderRow\";\nimport { TableColGroup } from \"./TableColGroup\";\n\nimport topLeftPartCss from \"./TopLeftPart.css\";\n\nconst withBaseName = makePrefixer(\"saltGridTopLeftPart\");\n\nexport interface TopLeftPartProps<T> {\n onWheel: EventListener;\n columns: GridColumnModel<T>[];\n columnGroups: GridColumnGroupModel[];\n rightShadow?: boolean;\n bottomShadow?: boolean;\n}\n\nexport function TopLeftPart<T>(props: TopLeftPartProps<T>) {\n const { onWheel, columns, columnGroups, rightShadow, bottomShadow } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-top-left-part\",\n css: topLeftPartCss,\n window: targetWindow,\n });\n\n const tableRef = useActiveOnWheel(onWheel);\n\n if (columns.length === 0) {\n return null;\n }\n\n return (\n <div\n className={clsx(withBaseName(), {\n [withBaseName(\"rightShadow\")]: rightShadow,\n [withBaseName(\"bottomShadow\")]: bottomShadow,\n })}\n data-testid=\"grid-top-left-part\"\n >\n <table ref={tableRef} role=\"presentation\">\n <TableColGroup columns={columns} />\n <thead>\n <GroupHeaderRow groups={columnGroups} />\n <HeaderRow columns={columns} />\n </thead>\n </table>\n </div>\n );\n}\n"],"names":["makePrefixer","useWindow","useComponentCssInjection","topLeftPartCss","useActiveOnWheel","jsx","clsx","jsxs","TableColGroup","GroupHeaderRow","HeaderRow"],"mappings":";;;;;;;;;;;;;AAcA,MAAM,YAAA,GAAeA,kBAAa,qBAAqB,CAAA;AAUhD,SAAS,YAAe,KAAA,EAA4B;AACzD,EAAA,MAAM,EAAE,OAAA,EAAS,OAAA,EAAS,YAAA,EAAc,WAAA,EAAa,cAAa,GAAI,KAAA;AAEtE,EAAA,MAAM,eAAeC,gBAAA,EAAU;AAC/B,EAAAC,+BAAA,CAAyB;AAAA,IACvB,MAAA,EAAQ,oBAAA;AAAA,IACR,GAAA,EAAKC,aAAA;AAAA,IACL,MAAA,EAAQ;AAAA,GACT,CAAA;AAED,EAAA,MAAM,QAAA,GAAWC,2BAAiB,OAAO,CAAA;AAEzC,EAAA,IAAI,OAAA,CAAQ,WAAW,CAAA,EAAG;AACxB,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,uBACEC,cAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAWC,SAAA,CAAK,YAAA,EAAa,EAAG;AAAA,QAC9B,CAAC,YAAA,CAAa,aAAa,CAAC,GAAG,WAAA;AAAA,QAC/B,CAAC,YAAA,CAAa,cAAc,CAAC,GAAG;AAAA,OACjC,CAAA;AAAA,MACD,aAAA,EAAY,oBAAA;AAAA,MAEZ,QAAA,kBAAAC,eAAA,CAAC,OAAA,EAAA,EAAM,GAAA,EAAK,QAAA,EAAU,MAAK,cAAA,EACzB,QAAA,EAAA;AAAA,wBAAAF,cAAA,CAACG,+BAAc,OAAA,EAAkB,CAAA;AAAA,wCAChC,OAAA,EAAA,EACC,QAAA,EAAA;AAAA,0BAAAH,cAAA,CAACI,6BAAA,EAAA,EAAe,QAAQ,YAAA,EAAc,CAAA;AAAA,0BACtCJ,cAAA,CAACK,uBAAU,OAAA,EAAkB;AAAA,SAAA,EAC/B;AAAA,OAAA,EACF;AAAA;AAAA,GACF;AAEJ;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TopPart.js","sources":["../src/internal/TopPart.tsx"],"sourcesContent":["import { makePrefixer } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport type { RefObject } from \"react\";\n\nimport type { GridColumnGroupModel, GridColumnModel } from \"../Grid\";\n\nimport { GroupHeaderRow } from \"./GroupHeaderRow\";\nimport { useActiveOnWheel } from \"./gridHooks\";\nimport { HeaderRow } from \"./HeaderRow\";\nimport { TableColGroup } from \"./TableColGroup\";\n\nimport topPartCss from \"./TopPart.css\";\n\nconst withBaseName = makePrefixer(\"saltGridTopPart\");\n\nexport interface TopPartProps<T> {\n topRef: RefObject<HTMLDivElement>;\n onWheel: EventListener;\n columns: GridColumnModel<T>[];\n columnGroups: GridColumnGroupModel[];\n midGap: number;\n bottomShadow?: boolean;\n}\n\nexport function TopPart<T>(props: TopPartProps<T>) {\n const { topRef, onWheel, columns, columnGroups, midGap, bottomShadow } =\n props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-top-part\",\n css: topPartCss,\n window: targetWindow,\n });\n\n const tableRef = useActiveOnWheel(onWheel);\n\n return (\n <div\n className={clsx(withBaseName(), {\n [withBaseName(\"bottomShadow\")]: bottomShadow,\n })}\n ref={topRef}\n data-testid=\"grid-top-part\"\n >\n <div className={withBaseName(\"space\")}>\n <table ref={tableRef} role=\"presentation\">\n <TableColGroup columns={columns} gap={midGap} />\n <thead>\n <GroupHeaderRow groups={columnGroups} gap={midGap} />\n <HeaderRow columns={columns} gap={midGap} />\n </thead>\n </table>\n </div>\n </div>\n );\n}\n"],"names":["makePrefixer","useWindow","useComponentCssInjection","topPartCss","useActiveOnWheel","jsx","clsx","jsxs","TableColGroup","GroupHeaderRow","HeaderRow"],"mappings":";;;;;;;;;;;;;AAeA,MAAM,YAAA,GAAeA,kBAAa,iBAAiB,CAAA;AAW5C,SAAS,QAAW,
|
|
1
|
+
{"version":3,"file":"TopPart.js","sources":["../src/internal/TopPart.tsx"],"sourcesContent":["import { makePrefixer } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport type { RefObject } from \"react\";\n\nimport type { GridColumnGroupModel, GridColumnModel } from \"../Grid\";\n\nimport { GroupHeaderRow } from \"./GroupHeaderRow\";\nimport { useActiveOnWheel } from \"./gridHooks\";\nimport { HeaderRow } from \"./HeaderRow\";\nimport { TableColGroup } from \"./TableColGroup\";\n\nimport topPartCss from \"./TopPart.css\";\n\nconst withBaseName = makePrefixer(\"saltGridTopPart\");\n\nexport interface TopPartProps<T> {\n topRef: RefObject<HTMLDivElement>;\n onWheel: EventListener;\n columns: GridColumnModel<T>[];\n columnGroups: GridColumnGroupModel[];\n midGap: number;\n bottomShadow?: boolean;\n}\n\nexport function TopPart<T>(props: TopPartProps<T>) {\n const { topRef, onWheel, columns, columnGroups, midGap, bottomShadow } =\n props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-top-part\",\n css: topPartCss,\n window: targetWindow,\n });\n\n const tableRef = useActiveOnWheel(onWheel);\n\n return (\n <div\n className={clsx(withBaseName(), {\n [withBaseName(\"bottomShadow\")]: bottomShadow,\n })}\n ref={topRef}\n data-testid=\"grid-top-part\"\n >\n <div className={withBaseName(\"space\")}>\n <table ref={tableRef} role=\"presentation\">\n <TableColGroup columns={columns} gap={midGap} />\n <thead>\n <GroupHeaderRow groups={columnGroups} gap={midGap} />\n <HeaderRow columns={columns} gap={midGap} />\n </thead>\n </table>\n </div>\n </div>\n );\n}\n"],"names":["makePrefixer","useWindow","useComponentCssInjection","topPartCss","useActiveOnWheel","jsx","clsx","jsxs","TableColGroup","GroupHeaderRow","HeaderRow"],"mappings":";;;;;;;;;;;;;AAeA,MAAM,YAAA,GAAeA,kBAAa,iBAAiB,CAAA;AAW5C,SAAS,QAAW,KAAA,EAAwB;AACjD,EAAA,MAAM,EAAE,MAAA,EAAQ,OAAA,EAAS,SAAS,YAAA,EAAc,MAAA,EAAQ,cAAa,GACnE,KAAA;AAEF,EAAA,MAAM,eAAeC,gBAAA,EAAU;AAC/B,EAAAC,+BAAA,CAAyB;AAAA,IACvB,MAAA,EAAQ,eAAA;AAAA,IACR,GAAA,EAAKC,SAAA;AAAA,IACL,MAAA,EAAQ;AAAA,GACT,CAAA;AAED,EAAA,MAAM,QAAA,GAAWC,2BAAiB,OAAO,CAAA;AAEzC,EAAA,uBACEC,cAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAWC,SAAA,CAAK,YAAA,EAAa,EAAG;AAAA,QAC9B,CAAC,YAAA,CAAa,cAAc,CAAC,GAAG;AAAA,OACjC,CAAA;AAAA,MACD,GAAA,EAAK,MAAA;AAAA,MACL,aAAA,EAAY,eAAA;AAAA,MAEZ,QAAA,kBAAAD,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,YAAA,CAAa,OAAO,CAAA,EAClC,QAAA,kBAAAE,eAAA,CAAC,OAAA,EAAA,EAAM,GAAA,EAAK,QAAA,EAAU,IAAA,EAAK,cAAA,EACzB,QAAA,EAAA;AAAA,wBAAAF,cAAA,CAACG,2BAAA,EAAA,EAAc,OAAA,EAAkB,GAAA,EAAK,MAAA,EAAQ,CAAA;AAAA,wCAC7C,OAAA,EAAA,EACC,QAAA,EAAA;AAAA,0BAAAH,cAAA,CAACI,6BAAA,EAAA,EAAe,MAAA,EAAQ,YAAA,EAAc,GAAA,EAAK,MAAA,EAAQ,CAAA;AAAA,0BACnDJ,cAAA,CAACK,mBAAA,EAAA,EAAU,OAAA,EAAkB,GAAA,EAAK,MAAA,EAAQ;AAAA,SAAA,EAC5C;AAAA,OAAA,EACF,CAAA,EACF;AAAA;AAAA,GACF;AAEJ;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TopRightPart.js","sources":["../src/internal/TopRightPart.tsx"],"sourcesContent":["import { makePrefixer } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport type { GridColumnGroupModel, GridColumnModel } from \"../Grid\";\nimport { GroupHeaderRow } from \"./GroupHeaderRow\";\nimport { useActiveOnWheel } from \"./gridHooks\";\nimport { HeaderRow } from \"./HeaderRow\";\nimport { TableColGroup } from \"./TableColGroup\";\n\nimport topRightPartCss from \"./TopRightPart.css\";\n\nconst withBaseName = makePrefixer(\"saltGridTopRightPart\");\n\nexport interface TopRightPartProps<T> {\n onWheel: EventListener;\n columns: GridColumnModel<T>[];\n columnGroups: GridColumnGroupModel[];\n leftShadow?: boolean;\n bottomShadow?: boolean;\n}\n\nexport function TopRightPart<T>(props: TopRightPartProps<T>) {\n const { onWheel, columns, columnGroups, leftShadow, bottomShadow } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-top-right-part\",\n css: topRightPartCss,\n window: targetWindow,\n });\n\n const tableRef = useActiveOnWheel(onWheel);\n\n if (columns.length === 0) {\n return null;\n }\n\n return (\n <div\n className={clsx(withBaseName(), {\n [withBaseName(\"leftShadow\")]: leftShadow,\n [withBaseName(\"bottomShadow\")]: bottomShadow,\n })}\n data-testid=\"grid-top-right-part\"\n >\n <table\n className={withBaseName(\"table\")}\n ref={tableRef}\n role=\"presentation\"\n >\n <TableColGroup columns={columns} />\n <thead>\n <GroupHeaderRow groups={columnGroups} />\n <HeaderRow columns={columns} />\n {/*TODO Do we need a toolbar?*/}\n {/*{showToolbar ? <HeaderToolbarRow columns={rightColumns} /> : null}*/}\n </thead>\n </table>\n </div>\n );\n}\n"],"names":["makePrefixer","useWindow","useComponentCssInjection","topRightPartCss","useActiveOnWheel","jsx","clsx","jsxs","TableColGroup","GroupHeaderRow","HeaderRow"],"mappings":";;;;;;;;;;;;;AAYA,MAAM,YAAA,GAAeA,kBAAa,sBAAsB,CAAA;AAUjD,SAAS,aAAgB,
|
|
1
|
+
{"version":3,"file":"TopRightPart.js","sources":["../src/internal/TopRightPart.tsx"],"sourcesContent":["import { makePrefixer } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport type { GridColumnGroupModel, GridColumnModel } from \"../Grid\";\nimport { GroupHeaderRow } from \"./GroupHeaderRow\";\nimport { useActiveOnWheel } from \"./gridHooks\";\nimport { HeaderRow } from \"./HeaderRow\";\nimport { TableColGroup } from \"./TableColGroup\";\n\nimport topRightPartCss from \"./TopRightPart.css\";\n\nconst withBaseName = makePrefixer(\"saltGridTopRightPart\");\n\nexport interface TopRightPartProps<T> {\n onWheel: EventListener;\n columns: GridColumnModel<T>[];\n columnGroups: GridColumnGroupModel[];\n leftShadow?: boolean;\n bottomShadow?: boolean;\n}\n\nexport function TopRightPart<T>(props: TopRightPartProps<T>) {\n const { onWheel, columns, columnGroups, leftShadow, bottomShadow } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-top-right-part\",\n css: topRightPartCss,\n window: targetWindow,\n });\n\n const tableRef = useActiveOnWheel(onWheel);\n\n if (columns.length === 0) {\n return null;\n }\n\n return (\n <div\n className={clsx(withBaseName(), {\n [withBaseName(\"leftShadow\")]: leftShadow,\n [withBaseName(\"bottomShadow\")]: bottomShadow,\n })}\n data-testid=\"grid-top-right-part\"\n >\n <table\n className={withBaseName(\"table\")}\n ref={tableRef}\n role=\"presentation\"\n >\n <TableColGroup columns={columns} />\n <thead>\n <GroupHeaderRow groups={columnGroups} />\n <HeaderRow columns={columns} />\n {/*TODO Do we need a toolbar?*/}\n {/*{showToolbar ? <HeaderToolbarRow columns={rightColumns} /> : null}*/}\n </thead>\n </table>\n </div>\n );\n}\n"],"names":["makePrefixer","useWindow","useComponentCssInjection","topRightPartCss","useActiveOnWheel","jsx","clsx","jsxs","TableColGroup","GroupHeaderRow","HeaderRow"],"mappings":";;;;;;;;;;;;;AAYA,MAAM,YAAA,GAAeA,kBAAa,sBAAsB,CAAA;AAUjD,SAAS,aAAgB,KAAA,EAA6B;AAC3D,EAAA,MAAM,EAAE,OAAA,EAAS,OAAA,EAAS,YAAA,EAAc,UAAA,EAAY,cAAa,GAAI,KAAA;AAErE,EAAA,MAAM,eAAeC,gBAAA,EAAU;AAC/B,EAAAC,+BAAA,CAAyB;AAAA,IACvB,MAAA,EAAQ,qBAAA;AAAA,IACR,GAAA,EAAKC,cAAA;AAAA,IACL,MAAA,EAAQ;AAAA,GACT,CAAA;AAED,EAAA,MAAM,QAAA,GAAWC,2BAAiB,OAAO,CAAA;AAEzC,EAAA,IAAI,OAAA,CAAQ,WAAW,CAAA,EAAG;AACxB,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,uBACEC,cAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAWC,SAAA,CAAK,YAAA,EAAa,EAAG;AAAA,QAC9B,CAAC,YAAA,CAAa,YAAY,CAAC,GAAG,UAAA;AAAA,QAC9B,CAAC,YAAA,CAAa,cAAc,CAAC,GAAG;AAAA,OACjC,CAAA;AAAA,MACD,aAAA,EAAY,qBAAA;AAAA,MAEZ,QAAA,kBAAAC,eAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAW,aAAa,OAAO,CAAA;AAAA,UAC/B,GAAA,EAAK,QAAA;AAAA,UACL,IAAA,EAAK,cAAA;AAAA,UAEL,QAAA,EAAA;AAAA,4BAAAF,cAAA,CAACG,+BAAc,OAAA,EAAkB,CAAA;AAAA,4CAChC,OAAA,EAAA,EACC,QAAA,EAAA;AAAA,8BAAAH,cAAA,CAACI,6BAAA,EAAA,EAAe,QAAQ,YAAA,EAAc,CAAA;AAAA,8BACtCJ,cAAA,CAACK,uBAAU,OAAA,EAAkB;AAAA,aAAA,EAG/B;AAAA;AAAA;AAAA;AACF;AAAA,GACF;AAEJ;;;;"}
|