@vuu-ui/vuu-utils 0.13.9 → 0.13.11
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/cjs/node_modules/@dnd-kit/abstract/index.js +625 -0
- package/cjs/node_modules/@dnd-kit/abstract/index.js.map +1 -0
- package/cjs/node_modules/@dnd-kit/abstract/modifiers.js +85 -0
- package/cjs/node_modules/@dnd-kit/abstract/modifiers.js.map +1 -0
- package/cjs/node_modules/@dnd-kit/collision/dist/index.js +91 -0
- package/cjs/node_modules/@dnd-kit/collision/dist/index.js.map +1 -0
- package/cjs/node_modules/@dnd-kit/dom/index.js +1649 -0
- package/cjs/node_modules/@dnd-kit/dom/index.js.map +1 -0
- package/cjs/node_modules/@dnd-kit/dom/sortable.js +833 -0
- package/cjs/node_modules/@dnd-kit/dom/sortable.js.map +1 -0
- package/cjs/node_modules/@dnd-kit/dom/utilities.js +1389 -0
- package/cjs/node_modules/@dnd-kit/dom/utilities.js.map +1 -0
- package/cjs/node_modules/@dnd-kit/geometry/dist/index.js +310 -0
- package/cjs/node_modules/@dnd-kit/geometry/dist/index.js.map +1 -0
- package/cjs/node_modules/@dnd-kit/react/hooks.js +86 -0
- package/cjs/node_modules/@dnd-kit/react/hooks.js.map +1 -0
- package/cjs/node_modules/@dnd-kit/react/sortable.js +177 -0
- package/cjs/node_modules/@dnd-kit/react/sortable.js.map +1 -0
- package/cjs/node_modules/@dnd-kit/react/utilities.js +19 -0
- package/cjs/node_modules/@dnd-kit/react/utilities.js.map +1 -0
- package/cjs/node_modules/@dnd-kit/state/dist/index.js +272 -0
- package/cjs/node_modules/@dnd-kit/state/dist/index.js.map +1 -0
- package/cjs/node_modules/@preact/signals-core/dist/signals-core.js +11 -0
- package/cjs/node_modules/@preact/signals-core/dist/signals-core.js.map +1 -0
- package/cjs/packages/vuu-utils/src/DataWindow.js +76 -0
- package/cjs/packages/vuu-utils/src/DataWindow.js.map +1 -0
- package/cjs/packages/vuu-utils/src/ShellContext.js +13 -0
- package/cjs/packages/vuu-utils/src/ShellContext.js.map +1 -0
- package/cjs/packages/vuu-utils/src/ThemeProvider.js +85 -0
- package/cjs/packages/vuu-utils/src/ThemeProvider.js.map +1 -0
- package/cjs/packages/vuu-utils/src/array-utils.js +87 -0
- package/cjs/packages/vuu-utils/src/array-utils.js.map +1 -0
- package/cjs/packages/vuu-utils/src/box-utils.js +53 -0
- package/cjs/packages/vuu-utils/src/box-utils.js.map +1 -0
- package/cjs/packages/vuu-utils/src/column-utils.js +891 -0
- package/cjs/packages/vuu-utils/src/column-utils.js.map +1 -0
- package/cjs/packages/vuu-utils/src/common-types.js +15 -0
- package/cjs/packages/vuu-utils/src/common-types.js.map +1 -0
- package/cjs/packages/vuu-utils/src/component-registry.js +140 -0
- package/cjs/packages/vuu-utils/src/component-registry.js.map +1 -0
- package/cjs/packages/vuu-utils/src/context-definitions/DataContext.js +20 -0
- package/cjs/packages/vuu-utils/src/context-definitions/DataContext.js.map +1 -0
- package/cjs/packages/vuu-utils/src/context-definitions/DataProvider.js +24 -0
- package/cjs/packages/vuu-utils/src/context-definitions/DataProvider.js.map +1 -0
- package/cjs/packages/vuu-utils/src/context-definitions/DataSourceProvider.js +33 -0
- package/cjs/packages/vuu-utils/src/context-definitions/DataSourceProvider.js.map +1 -0
- package/cjs/packages/vuu-utils/src/context-definitions/WorkspaceContext.js +20 -0
- package/cjs/packages/vuu-utils/src/context-definitions/WorkspaceContext.js.map +1 -0
- package/cjs/packages/vuu-utils/src/cookie-utils.js +10 -0
- package/cjs/packages/vuu-utils/src/cookie-utils.js.map +1 -0
- package/cjs/packages/vuu-utils/src/css-utils.js +9 -0
- package/cjs/packages/vuu-utils/src/css-utils.js.map +1 -0
- package/cjs/packages/vuu-utils/src/data-utils.js +81 -0
- package/cjs/packages/vuu-utils/src/data-utils.js.map +1 -0
- package/cjs/packages/vuu-utils/src/datasource/BaseDataSource.js +248 -0
- package/cjs/packages/vuu-utils/src/datasource/BaseDataSource.js.map +1 -0
- package/cjs/packages/vuu-utils/src/datasource/datasource-action-utils.js +14 -0
- package/cjs/packages/vuu-utils/src/datasource/datasource-action-utils.js.map +1 -0
- package/cjs/packages/vuu-utils/src/datasource/datasource-filter-utils.js +23 -0
- package/cjs/packages/vuu-utils/src/datasource/datasource-filter-utils.js.map +1 -0
- package/cjs/packages/vuu-utils/src/datasource/datasource-utils.js +207 -0
- package/cjs/packages/vuu-utils/src/datasource/datasource-utils.js.map +1 -0
- package/cjs/packages/vuu-utils/src/date/date-utils.js +10 -0
- package/cjs/packages/vuu-utils/src/date/date-utils.js.map +1 -0
- package/cjs/packages/vuu-utils/src/date/dateTimePattern.js +25 -0
- package/cjs/packages/vuu-utils/src/date/dateTimePattern.js.map +1 -0
- package/cjs/packages/vuu-utils/src/date/formatter.js +66 -0
- package/cjs/packages/vuu-utils/src/date/formatter.js.map +1 -0
- package/cjs/packages/vuu-utils/src/date/types.js +27 -0
- package/cjs/packages/vuu-utils/src/date/types.js.map +1 -0
- package/cjs/packages/vuu-utils/src/debug-utils.js +34 -0
- package/cjs/packages/vuu-utils/src/debug-utils.js.map +1 -0
- package/cjs/packages/vuu-utils/src/event-emitter.js +113 -0
- package/cjs/packages/vuu-utils/src/event-emitter.js.map +1 -0
- package/cjs/packages/vuu-utils/src/feature-utils.js +139 -0
- package/cjs/packages/vuu-utils/src/feature-utils.js.map +1 -0
- package/cjs/packages/vuu-utils/src/filters/filter-utils.js +136 -0
- package/cjs/packages/vuu-utils/src/filters/filter-utils.js.map +1 -0
- package/cjs/packages/vuu-utils/src/filters/filterAsQuery.js +76 -0
- package/cjs/packages/vuu-utils/src/filters/filterAsQuery.js.map +1 -0
- package/cjs/packages/vuu-utils/src/form-utils.js +48 -0
- package/cjs/packages/vuu-utils/src/form-utils.js.map +1 -0
- package/cjs/packages/vuu-utils/src/formatting-utils.js +68 -0
- package/cjs/packages/vuu-utils/src/formatting-utils.js.map +1 -0
- package/cjs/packages/vuu-utils/src/getUniqueId.js +6 -0
- package/cjs/packages/vuu-utils/src/getUniqueId.js.map +1 -0
- package/cjs/packages/vuu-utils/src/group-utils.js +27 -0
- package/cjs/packages/vuu-utils/src/group-utils.js.map +1 -0
- package/cjs/packages/vuu-utils/src/html-utils.js +162 -0
- package/cjs/packages/vuu-utils/src/html-utils.js.map +1 -0
- package/cjs/packages/vuu-utils/src/index.js +414 -0
- package/cjs/packages/vuu-utils/src/index.js.map +1 -0
- package/cjs/packages/vuu-utils/src/input-utils.js +10 -0
- package/cjs/packages/vuu-utils/src/input-utils.js.map +1 -0
- package/cjs/packages/vuu-utils/src/invariant.js +13 -0
- package/cjs/packages/vuu-utils/src/invariant.js.map +1 -0
- package/cjs/packages/vuu-utils/src/itemToString.js +23 -0
- package/cjs/packages/vuu-utils/src/itemToString.js.map +1 -0
- package/cjs/packages/vuu-utils/src/json-utils.js +103 -0
- package/cjs/packages/vuu-utils/src/json-utils.js.map +1 -0
- package/cjs/packages/vuu-utils/src/keyboard-utils.js +30 -0
- package/cjs/packages/vuu-utils/src/keyboard-utils.js.map +1 -0
- package/cjs/packages/vuu-utils/src/keyset.js +72 -0
- package/cjs/packages/vuu-utils/src/keyset.js.map +1 -0
- package/cjs/packages/vuu-utils/src/list-utils.js +11 -0
- package/cjs/packages/vuu-utils/src/list-utils.js.map +1 -0
- package/cjs/packages/vuu-utils/src/local-storage-utils.js +20 -0
- package/cjs/packages/vuu-utils/src/local-storage-utils.js.map +1 -0
- package/cjs/packages/vuu-utils/src/logging-utils.js +65 -0
- package/cjs/packages/vuu-utils/src/logging-utils.js.map +1 -0
- package/cjs/packages/vuu-utils/src/menu-utils.js +10 -0
- package/cjs/packages/vuu-utils/src/menu-utils.js.map +1 -0
- package/cjs/packages/vuu-utils/src/module-utils.js +6 -0
- package/cjs/packages/vuu-utils/src/module-utils.js.map +1 -0
- package/cjs/packages/vuu-utils/src/moving-window.js +103 -0
- package/cjs/packages/vuu-utils/src/moving-window.js.map +1 -0
- package/cjs/packages/vuu-utils/src/nanoid/index.js +22 -0
- package/cjs/packages/vuu-utils/src/nanoid/index.js.map +1 -0
- package/cjs/packages/vuu-utils/src/perf-utils.js +35 -0
- package/cjs/packages/vuu-utils/src/perf-utils.js.map +1 -0
- package/cjs/packages/vuu-utils/src/promise-utils.js +42 -0
- package/cjs/packages/vuu-utils/src/promise-utils.js.map +1 -0
- package/cjs/packages/vuu-utils/src/protocol-message-utils.js +86 -0
- package/cjs/packages/vuu-utils/src/protocol-message-utils.js.map +1 -0
- package/cjs/packages/vuu-utils/src/range-utils.js +152 -0
- package/cjs/packages/vuu-utils/src/range-utils.js.map +1 -0
- package/cjs/packages/vuu-utils/src/react-utils.js +36 -0
- package/cjs/packages/vuu-utils/src/react-utils.js.map +1 -0
- package/cjs/packages/vuu-utils/src/round-decimal.js +86 -0
- package/cjs/packages/vuu-utils/src/round-decimal.js.map +1 -0
- package/cjs/packages/vuu-utils/src/row-utils.js +44 -0
- package/cjs/packages/vuu-utils/src/row-utils.js.map +1 -0
- package/cjs/packages/vuu-utils/src/selection-utils.js +246 -0
- package/cjs/packages/vuu-utils/src/selection-utils.js.map +1 -0
- package/cjs/packages/vuu-utils/src/shell-layout-types.js +13 -0
- package/cjs/packages/vuu-utils/src/shell-layout-types.js.map +1 -0
- package/cjs/packages/vuu-utils/src/sort-utils.js +78 -0
- package/cjs/packages/vuu-utils/src/sort-utils.js.map +1 -0
- package/cjs/packages/vuu-utils/src/table-schema-utils.js +13 -0
- package/cjs/packages/vuu-utils/src/table-schema-utils.js.map +1 -0
- package/cjs/packages/vuu-utils/src/text-utils.js +21 -0
- package/cjs/packages/vuu-utils/src/text-utils.js.map +1 -0
- package/cjs/packages/vuu-utils/src/tree-utils.js +106 -0
- package/cjs/packages/vuu-utils/src/tree-utils.js.map +1 -0
- package/cjs/packages/vuu-utils/src/ts-utils.js +12 -0
- package/cjs/packages/vuu-utils/src/ts-utils.js.map +1 -0
- package/cjs/packages/vuu-utils/src/typeahead-utils.js +6 -0
- package/cjs/packages/vuu-utils/src/typeahead-utils.js.map +1 -0
- package/cjs/packages/vuu-utils/src/url-utils.js +21 -0
- package/cjs/packages/vuu-utils/src/url-utils.js.map +1 -0
- package/cjs/packages/vuu-utils/src/useId.js +9 -0
- package/cjs/packages/vuu-utils/src/useId.js.map +1 -0
- package/cjs/packages/vuu-utils/src/useLayoutEffectSkipFirst.js +17 -0
- package/cjs/packages/vuu-utils/src/useLayoutEffectSkipFirst.js.map +1 -0
- package/cjs/packages/vuu-utils/src/useStateRef.js +23 -0
- package/cjs/packages/vuu-utils/src/useStateRef.js.map +1 -0
- package/esm/node_modules/@dnd-kit/abstract/index.js +612 -0
- package/esm/node_modules/@dnd-kit/abstract/index.js.map +1 -0
- package/esm/node_modules/@dnd-kit/abstract/modifiers.js +82 -0
- package/esm/node_modules/@dnd-kit/abstract/modifiers.js.map +1 -0
- package/esm/node_modules/@dnd-kit/collision/dist/index.js +86 -0
- package/esm/node_modules/@dnd-kit/collision/dist/index.js.map +1 -0
- package/esm/node_modules/@dnd-kit/dom/index.js +1642 -0
- package/esm/node_modules/@dnd-kit/dom/index.js.map +1 -0
- package/esm/node_modules/@dnd-kit/dom/sortable.js +827 -0
- package/esm/node_modules/@dnd-kit/dom/sortable.js.map +1 -0
- package/esm/node_modules/@dnd-kit/dom/utilities.js +1344 -0
- package/esm/node_modules/@dnd-kit/dom/utilities.js.map +1 -0
- package/esm/node_modules/@dnd-kit/geometry/dist/index.js +303 -0
- package/esm/node_modules/@dnd-kit/geometry/dist/index.js.map +1 -0
- package/esm/node_modules/@dnd-kit/react/hooks.js +80 -0
- package/esm/node_modules/@dnd-kit/react/hooks.js.map +1 -0
- package/esm/node_modules/@dnd-kit/react/sortable.js +175 -0
- package/esm/node_modules/@dnd-kit/react/sortable.js.map +1 -0
- package/esm/node_modules/@dnd-kit/react/utilities.js +17 -0
- package/esm/node_modules/@dnd-kit/react/utilities.js.map +1 -0
- package/esm/node_modules/@dnd-kit/state/dist/index.js +259 -0
- package/esm/node_modules/@dnd-kit/state/dist/index.js.map +1 -0
- package/esm/node_modules/@preact/signals-core/dist/signals-core.js +4 -0
- package/esm/node_modules/@preact/signals-core/dist/signals-core.js.map +1 -0
- package/esm/packages/vuu-utils/src/DataWindow.js +74 -0
- package/esm/packages/vuu-utils/src/DataWindow.js.map +1 -0
- package/esm/packages/vuu-utils/src/ShellContext.js +10 -0
- package/esm/packages/vuu-utils/src/ShellContext.js.map +1 -0
- package/esm/packages/vuu-utils/src/ThemeProvider.js +78 -0
- package/esm/packages/vuu-utils/src/ThemeProvider.js.map +1 -0
- package/esm/packages/vuu-utils/src/array-utils.js +79 -0
- package/esm/packages/vuu-utils/src/array-utils.js.map +1 -0
- package/esm/packages/vuu-utils/src/box-utils.js +47 -0
- package/esm/packages/vuu-utils/src/box-utils.js.map +1 -0
- package/esm/packages/vuu-utils/src/column-utils.js +815 -0
- package/esm/packages/vuu-utils/src/column-utils.js.map +1 -0
- package/esm/packages/vuu-utils/src/common-types.js +13 -0
- package/esm/packages/vuu-utils/src/common-types.js.map +1 -0
- package/esm/packages/vuu-utils/src/component-registry.js +124 -0
- package/esm/packages/vuu-utils/src/component-registry.js.map +1 -0
- package/esm/packages/vuu-utils/src/context-definitions/DataContext.js +18 -0
- package/esm/packages/vuu-utils/src/context-definitions/DataContext.js.map +1 -0
- package/esm/packages/vuu-utils/src/context-definitions/DataProvider.js +20 -0
- package/esm/packages/vuu-utils/src/context-definitions/DataProvider.js.map +1 -0
- package/esm/packages/vuu-utils/src/context-definitions/DataSourceProvider.js +29 -0
- package/esm/packages/vuu-utils/src/context-definitions/DataSourceProvider.js.map +1 -0
- package/esm/packages/vuu-utils/src/context-definitions/WorkspaceContext.js +17 -0
- package/esm/packages/vuu-utils/src/context-definitions/WorkspaceContext.js.map +1 -0
- package/esm/packages/vuu-utils/src/cookie-utils.js +8 -0
- package/esm/packages/vuu-utils/src/cookie-utils.js.map +1 -0
- package/esm/packages/vuu-utils/src/css-utils.js +7 -0
- package/esm/packages/vuu-utils/src/css-utils.js.map +1 -0
- package/esm/packages/vuu-utils/src/data-utils.js +68 -0
- package/esm/packages/vuu-utils/src/data-utils.js.map +1 -0
- package/esm/packages/vuu-utils/src/datasource/BaseDataSource.js +246 -0
- package/esm/packages/vuu-utils/src/datasource/BaseDataSource.js.map +1 -0
- package/esm/packages/vuu-utils/src/datasource/datasource-action-utils.js +8 -0
- package/esm/packages/vuu-utils/src/datasource/datasource-action-utils.js.map +1 -0
- package/esm/packages/vuu-utils/src/datasource/datasource-filter-utils.js +21 -0
- package/esm/packages/vuu-utils/src/datasource/datasource-filter-utils.js.map +1 -0
- package/esm/packages/vuu-utils/src/datasource/datasource-utils.js +184 -0
- package/esm/packages/vuu-utils/src/datasource/datasource-utils.js.map +1 -0
- package/esm/packages/vuu-utils/src/date/date-utils.js +8 -0
- package/esm/packages/vuu-utils/src/date/date-utils.js.map +1 -0
- package/esm/packages/vuu-utils/src/date/dateTimePattern.js +21 -0
- package/esm/packages/vuu-utils/src/date/dateTimePattern.js.map +1 -0
- package/esm/packages/vuu-utils/src/date/formatter.js +63 -0
- package/esm/packages/vuu-utils/src/date/formatter.js.map +1 -0
- package/esm/packages/vuu-utils/src/date/types.js +21 -0
- package/esm/packages/vuu-utils/src/date/types.js.map +1 -0
- package/esm/packages/vuu-utils/src/debug-utils.js +32 -0
- package/esm/packages/vuu-utils/src/debug-utils.js.map +1 -0
- package/esm/packages/vuu-utils/src/event-emitter.js +111 -0
- package/esm/packages/vuu-utils/src/event-emitter.js.map +1 -0
- package/esm/packages/vuu-utils/src/feature-utils.js +125 -0
- package/esm/packages/vuu-utils/src/feature-utils.js.map +1 -0
- package/esm/packages/vuu-utils/src/filters/filter-utils.js +120 -0
- package/esm/packages/vuu-utils/src/filters/filter-utils.js.map +1 -0
- package/esm/packages/vuu-utils/src/filters/filterAsQuery.js +72 -0
- package/esm/packages/vuu-utils/src/filters/filterAsQuery.js.map +1 -0
- package/esm/packages/vuu-utils/src/form-utils.js +44 -0
- package/esm/packages/vuu-utils/src/form-utils.js.map +1 -0
- package/esm/packages/vuu-utils/src/formatting-utils.js +63 -0
- package/esm/packages/vuu-utils/src/formatting-utils.js.map +1 -0
- package/esm/packages/vuu-utils/src/getUniqueId.js +4 -0
- package/esm/packages/vuu-utils/src/getUniqueId.js.map +1 -0
- package/esm/packages/vuu-utils/src/group-utils.js +23 -0
- package/esm/packages/vuu-utils/src/group-utils.js.map +1 -0
- package/esm/packages/vuu-utils/src/html-utils.js +145 -0
- package/esm/packages/vuu-utils/src/html-utils.js.map +1 -0
- package/esm/packages/vuu-utils/src/index.js +70 -0
- package/esm/packages/vuu-utils/src/index.js.map +1 -0
- package/esm/packages/vuu-utils/src/input-utils.js +7 -0
- package/esm/packages/vuu-utils/src/input-utils.js.map +1 -0
- package/esm/packages/vuu-utils/src/invariant.js +11 -0
- package/esm/packages/vuu-utils/src/invariant.js.map +1 -0
- package/esm/packages/vuu-utils/src/itemToString.js +21 -0
- package/esm/packages/vuu-utils/src/itemToString.js.map +1 -0
- package/esm/packages/vuu-utils/src/json-utils.js +101 -0
- package/esm/packages/vuu-utils/src/json-utils.js.map +1 -0
- package/esm/packages/vuu-utils/src/keyboard-utils.js +16 -0
- package/esm/packages/vuu-utils/src/keyboard-utils.js.map +1 -0
- package/esm/packages/vuu-utils/src/keyset.js +70 -0
- package/esm/packages/vuu-utils/src/keyset.js.map +1 -0
- package/esm/packages/vuu-utils/src/list-utils.js +9 -0
- package/esm/packages/vuu-utils/src/list-utils.js.map +1 -0
- package/esm/packages/vuu-utils/src/local-storage-utils.js +16 -0
- package/esm/packages/vuu-utils/src/local-storage-utils.js.map +1 -0
- package/esm/packages/vuu-utils/src/logging-utils.js +61 -0
- package/esm/packages/vuu-utils/src/logging-utils.js.map +1 -0
- package/esm/packages/vuu-utils/src/menu-utils.js +6 -0
- package/esm/packages/vuu-utils/src/menu-utils.js.map +1 -0
- package/esm/packages/vuu-utils/src/module-utils.js +4 -0
- package/esm/packages/vuu-utils/src/module-utils.js.map +1 -0
- package/esm/packages/vuu-utils/src/moving-window.js +101 -0
- package/esm/packages/vuu-utils/src/moving-window.js.map +1 -0
- package/esm/packages/vuu-utils/src/nanoid/index.js +20 -0
- package/esm/packages/vuu-utils/src/nanoid/index.js.map +1 -0
- package/esm/packages/vuu-utils/src/perf-utils.js +32 -0
- package/esm/packages/vuu-utils/src/perf-utils.js.map +1 -0
- package/esm/packages/vuu-utils/src/promise-utils.js +40 -0
- package/esm/packages/vuu-utils/src/promise-utils.js.map +1 -0
- package/esm/packages/vuu-utils/src/protocol-message-utils.js +71 -0
- package/esm/packages/vuu-utils/src/protocol-message-utils.js.map +1 -0
- package/esm/packages/vuu-utils/src/range-utils.js +145 -0
- package/esm/packages/vuu-utils/src/range-utils.js.map +1 -0
- package/esm/packages/vuu-utils/src/react-utils.js +32 -0
- package/esm/packages/vuu-utils/src/react-utils.js.map +1 -0
- package/esm/packages/vuu-utils/src/round-decimal.js +84 -0
- package/esm/packages/vuu-utils/src/round-decimal.js.map +1 -0
- package/esm/packages/vuu-utils/src/row-utils.js +40 -0
- package/esm/packages/vuu-utils/src/row-utils.js.map +1 -0
- package/esm/packages/vuu-utils/src/selection-utils.js +236 -0
- package/esm/packages/vuu-utils/src/selection-utils.js.map +1 -0
- package/esm/packages/vuu-utils/src/shell-layout-types.js +11 -0
- package/esm/packages/vuu-utils/src/shell-layout-types.js.map +1 -0
- package/esm/packages/vuu-utils/src/sort-utils.js +73 -0
- package/esm/packages/vuu-utils/src/sort-utils.js.map +1 -0
- package/esm/packages/vuu-utils/src/table-schema-utils.js +11 -0
- package/esm/packages/vuu-utils/src/table-schema-utils.js.map +1 -0
- package/esm/packages/vuu-utils/src/text-utils.js +18 -0
- package/esm/packages/vuu-utils/src/text-utils.js.map +1 -0
- package/esm/packages/vuu-utils/src/tree-utils.js +100 -0
- package/esm/packages/vuu-utils/src/tree-utils.js.map +1 -0
- package/esm/packages/vuu-utils/src/ts-utils.js +8 -0
- package/esm/packages/vuu-utils/src/ts-utils.js.map +1 -0
- package/esm/packages/vuu-utils/src/typeahead-utils.js +4 -0
- package/esm/packages/vuu-utils/src/typeahead-utils.js.map +1 -0
- package/esm/packages/vuu-utils/src/url-utils.js +18 -0
- package/esm/packages/vuu-utils/src/url-utils.js.map +1 -0
- package/esm/packages/vuu-utils/src/useId.js +7 -0
- package/esm/packages/vuu-utils/src/useId.js.map +1 -0
- package/esm/packages/vuu-utils/src/useLayoutEffectSkipFirst.js +15 -0
- package/esm/packages/vuu-utils/src/useLayoutEffectSkipFirst.js.map +1 -0
- package/esm/packages/vuu-utils/src/useStateRef.js +21 -0
- package/esm/packages/vuu-utils/src/useStateRef.js.map +1 -0
- package/package.json +11 -8
- package/cjs/index.js +0 -9622
- package/cjs/index.js.map +0 -1
- package/esm/index.js +0 -9283
- package/esm/index.js.map +0 -1
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __typeError = (msg) => {
|
|
5
|
+
throw TypeError(msg);
|
|
6
|
+
};
|
|
7
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
8
|
+
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
9
|
+
var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
|
|
10
|
+
var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
|
|
11
|
+
var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
|
12
|
+
var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), member.set(obj, value), value);
|
|
13
|
+
var _baseFrom, _renderBufferSize, _rowCount, _baseTo;
|
|
14
|
+
const defaultRangeOptions = {
|
|
15
|
+
renderBufferSize: 0,
|
|
16
|
+
rowCount: -1
|
|
17
|
+
};
|
|
18
|
+
const _RangeImpl = class _RangeImpl {
|
|
19
|
+
constructor(from, to, rangeOptions = defaultRangeOptions) {
|
|
20
|
+
__privateAdd(this, _baseFrom);
|
|
21
|
+
__privateAdd(this, _renderBufferSize, 0);
|
|
22
|
+
__privateAdd(this, _rowCount, -1);
|
|
23
|
+
__privateAdd(this, _baseTo);
|
|
24
|
+
// We have to keep these as simple public properties (not getters) so they survive structuredClone
|
|
25
|
+
__publicField(this, "from", 0);
|
|
26
|
+
__publicField(this, "to", 0);
|
|
27
|
+
__privateSet(this, _baseFrom, from);
|
|
28
|
+
__privateSet(this, _baseTo, to);
|
|
29
|
+
this.renderBufferSize = rangeOptions.renderBufferSize ?? defaultRangeOptions.renderBufferSize;
|
|
30
|
+
this.rowCount = rangeOptions.rowCount ?? defaultRangeOptions.rowCount;
|
|
31
|
+
}
|
|
32
|
+
get firstRowInViewport() {
|
|
33
|
+
return __privateGet(this, _baseFrom) + 1;
|
|
34
|
+
}
|
|
35
|
+
get lastRowInViewport() {
|
|
36
|
+
if (__privateGet(this, _rowCount) > 0) {
|
|
37
|
+
return Math.min(__privateGet(this, _baseTo), __privateGet(this, _rowCount));
|
|
38
|
+
} else {
|
|
39
|
+
return __privateGet(this, _baseTo);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
get renderBufferSize() {
|
|
43
|
+
return __privateGet(this, _renderBufferSize);
|
|
44
|
+
}
|
|
45
|
+
set renderBufferSize(value) {
|
|
46
|
+
__privateSet(this, _renderBufferSize, value);
|
|
47
|
+
this.from = Math.max(0, __privateGet(this, _baseFrom) - value);
|
|
48
|
+
if (__privateGet(this, _rowCount) > 0) {
|
|
49
|
+
this.to = Math.max(__privateGet(this, _baseTo) + __privateGet(this, _renderBufferSize), __privateGet(this, _rowCount));
|
|
50
|
+
} else {
|
|
51
|
+
this.to = __privateGet(this, _baseTo) + __privateGet(this, _renderBufferSize);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
get rowCount() {
|
|
55
|
+
return __privateGet(this, _rowCount);
|
|
56
|
+
}
|
|
57
|
+
set rowCount(value) {
|
|
58
|
+
__privateSet(this, _rowCount, value);
|
|
59
|
+
if (value > 0) {
|
|
60
|
+
this.to = Math.min(__privateGet(this, _baseTo) + __privateGet(this, _renderBufferSize), value);
|
|
61
|
+
} else {
|
|
62
|
+
this.to = __privateGet(this, _baseTo) + __privateGet(this, _renderBufferSize);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
get reset() {
|
|
66
|
+
return new _RangeImpl(0, __privateGet(this, _baseTo) - __privateGet(this, _baseFrom), {
|
|
67
|
+
rowCount: __privateGet(this, _rowCount),
|
|
68
|
+
renderBufferSize: __privateGet(this, _renderBufferSize)
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
equals(range) {
|
|
72
|
+
return range.from === __privateGet(this, _baseFrom) && range.to === __privateGet(this, _baseTo);
|
|
73
|
+
}
|
|
74
|
+
toJson() {
|
|
75
|
+
return {
|
|
76
|
+
from: this.from,
|
|
77
|
+
to: this.to,
|
|
78
|
+
baseFrom: __privateGet(this, _baseFrom),
|
|
79
|
+
baseTo: __privateGet(this, _baseTo),
|
|
80
|
+
renderBufferSize: __privateGet(this, _renderBufferSize),
|
|
81
|
+
rowCount: __privateGet(this, _rowCount)
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
_baseFrom = new WeakMap();
|
|
86
|
+
_renderBufferSize = new WeakMap();
|
|
87
|
+
_rowCount = new WeakMap();
|
|
88
|
+
_baseTo = new WeakMap();
|
|
89
|
+
let RangeImpl = _RangeImpl;
|
|
90
|
+
const Range = (from, to, rangeOptions) => new RangeImpl(from, to, rangeOptions);
|
|
91
|
+
const NULL_RANGE = Range(0, 0);
|
|
92
|
+
function getFullRange({ from, to }, bufferSize = 0, totalRowCount = Number.MAX_SAFE_INTEGER) {
|
|
93
|
+
if (from === 0 && to === 0) {
|
|
94
|
+
return { from, to };
|
|
95
|
+
} else if (bufferSize === 0) {
|
|
96
|
+
if (totalRowCount < from) {
|
|
97
|
+
return { from: 0, to: 0 };
|
|
98
|
+
} else {
|
|
99
|
+
return { from, to: Math.min(to, totalRowCount) };
|
|
100
|
+
}
|
|
101
|
+
} else if (from === 0) {
|
|
102
|
+
return { from, to: Math.min(to + bufferSize, totalRowCount) };
|
|
103
|
+
} else {
|
|
104
|
+
const shortfallBefore = from - bufferSize < 0;
|
|
105
|
+
const shortfallAfter = totalRowCount - (to + bufferSize) < 0;
|
|
106
|
+
if (shortfallBefore && shortfallAfter) {
|
|
107
|
+
return { from: 0, to: totalRowCount };
|
|
108
|
+
} else if (shortfallBefore) {
|
|
109
|
+
return { from: 0, to: to + bufferSize };
|
|
110
|
+
} else if (shortfallAfter) {
|
|
111
|
+
return {
|
|
112
|
+
from: Math.max(0, from - bufferSize),
|
|
113
|
+
to: totalRowCount
|
|
114
|
+
};
|
|
115
|
+
} else {
|
|
116
|
+
return { from: from - bufferSize, to: to + bufferSize };
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
const withinRange = (value, { from, to }) => value >= from && value < to;
|
|
121
|
+
const rangeNewItems = ({ from: from1, to: to1 }, newRange) => {
|
|
122
|
+
const { from: from2, to: to2 } = newRange;
|
|
123
|
+
const noOverlap = from2 >= to1 || to2 <= from1;
|
|
124
|
+
const newFullySubsumesOld = from2 < from1 && to2 > to1;
|
|
125
|
+
return noOverlap || newFullySubsumesOld ? newRange : to2 > to1 ? { from: to1, to: to2 } : { from: from2, to: from1 };
|
|
126
|
+
};
|
|
127
|
+
class WindowRange {
|
|
128
|
+
constructor(from, to) {
|
|
129
|
+
__publicField(this, "from");
|
|
130
|
+
__publicField(this, "to");
|
|
131
|
+
this.from = from;
|
|
132
|
+
this.to = to;
|
|
133
|
+
}
|
|
134
|
+
isWithin(index) {
|
|
135
|
+
return withinRange(index, this);
|
|
136
|
+
}
|
|
137
|
+
//find the overlap of this range and a new one
|
|
138
|
+
overlap(from, to) {
|
|
139
|
+
return from >= this.to || to < this.from ? [0, 0] : [Math.max(from, this.from), Math.min(to, this.to)];
|
|
140
|
+
}
|
|
141
|
+
copy() {
|
|
142
|
+
return new WindowRange(this.from, this.to);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
exports.NULL_RANGE = NULL_RANGE;
|
|
147
|
+
exports.Range = Range;
|
|
148
|
+
exports.WindowRange = WindowRange;
|
|
149
|
+
exports.getFullRange = getFullRange;
|
|
150
|
+
exports.rangeNewItems = rangeNewItems;
|
|
151
|
+
exports.withinRange = withinRange;
|
|
152
|
+
//# sourceMappingURL=range-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"range-utils.js","sources":["../../../../src/range-utils.ts"],"sourcesContent":["import { VuuRange } from \"@vuu-ui/vuu-protocol-types\";\n\ninterface FromToRange {\n from: number;\n to: number;\n}\n\nexport interface Range extends VuuRange {\n equals: (vuuRange: VuuRange) => boolean;\n firstRowInViewport: number;\n lastRowInViewport: number;\n renderBufferSize?: number;\n reset: Range;\n rowCount?: number;\n}\n\nexport interface RangeOptions {\n renderBufferSize?: number;\n rowCount?: number;\n}\n\nconst defaultRangeOptions = {\n renderBufferSize: 0,\n rowCount: -1,\n};\nclass RangeImpl implements Range {\n #baseFrom: number;\n #renderBufferSize = 0;\n #rowCount = -1;\n #baseTo: number;\n\n // We have to keep these as simple public properties (not getters) so they survive structuredClone\n public from = 0;\n public to = 0;\n\n constructor(\n /** Index position of first visible row in viewport */\n from: number,\n /** Index position of last visible row in viewport + 1 */\n to: number,\n rangeOptions: RangeOptions = defaultRangeOptions,\n ) {\n this.#baseFrom = from;\n this.#baseTo = to;\n this.renderBufferSize =\n rangeOptions.renderBufferSize ?? defaultRangeOptions.renderBufferSize;\n this.rowCount = rangeOptions.rowCount ?? defaultRangeOptions.rowCount;\n }\n\n get firstRowInViewport() {\n return this.#baseFrom + 1;\n }\n\n get lastRowInViewport() {\n if (this.#rowCount > 0) {\n return Math.min(this.#baseTo, this.#rowCount);\n } else {\n return this.#baseTo;\n }\n }\n\n get renderBufferSize() {\n return this.#renderBufferSize;\n }\n\n set renderBufferSize(value: number) {\n this.#renderBufferSize = value;\n this.from = Math.max(0, this.#baseFrom - value);\n if (this.#rowCount > 0) {\n this.to = Math.max(this.#baseTo + this.#renderBufferSize, this.#rowCount);\n } else {\n this.to = this.#baseTo + this.#renderBufferSize;\n }\n }\n\n get rowCount() {\n return this.#rowCount;\n }\n\n set rowCount(value: number) {\n this.#rowCount = value;\n if (value > 0) {\n this.to = Math.min(this.#baseTo + this.#renderBufferSize, value);\n } else {\n this.to = this.#baseTo + this.#renderBufferSize;\n }\n }\n\n get reset() {\n return new RangeImpl(0, this.#baseTo - this.#baseFrom, {\n rowCount: this.#rowCount,\n renderBufferSize: this.#renderBufferSize,\n });\n }\n\n equals(range: VuuRange) {\n return range.from === this.#baseFrom && range.to === this.#baseTo;\n }\n\n toJson() {\n return {\n from: this.from,\n to: this.to,\n baseFrom: this.#baseFrom,\n baseTo: this.#baseTo,\n renderBufferSize: this.#renderBufferSize,\n rowCount: this.#rowCount,\n };\n }\n}\n\nexport const Range = (\n from: number,\n to: number,\n rangeOptions?: RangeOptions,\n): Range => new RangeImpl(from, to, rangeOptions);\n\nexport const NULL_RANGE = Range(0, 0);\n\nexport function getFullRange(\n { from, to }: VuuRange,\n bufferSize = 0,\n totalRowCount: number = Number.MAX_SAFE_INTEGER,\n): FromToRange {\n if (from === 0 && to === 0) {\n return { from, to };\n } else if (bufferSize === 0) {\n if (totalRowCount < from) {\n return { from: 0, to: 0 };\n } else {\n return { from, to: Math.min(to, totalRowCount) };\n }\n } else if (from === 0) {\n return { from, to: Math.min(to + bufferSize, totalRowCount) };\n } else {\n const shortfallBefore = from - bufferSize < 0;\n const shortfallAfter = totalRowCount - (to + bufferSize) < 0;\n if (shortfallBefore && shortfallAfter) {\n return { from: 0, to: totalRowCount };\n } else if (shortfallBefore) {\n return { from: 0, to: to + bufferSize };\n } else if (shortfallAfter) {\n return {\n from: Math.max(0, from - bufferSize),\n to: totalRowCount,\n };\n } else {\n return { from: from - bufferSize, to: to + bufferSize };\n }\n }\n}\n\nexport const withinRange = (value: number, { from, to }: VuuRange) =>\n value >= from && value < to;\n\n// export const rangeOverlap = (\n// { from: from1, to: to1 }: VuuRange,\n// { from: from2, to: to2 }: VuuRange\n// ): VuuRange => {\n// return from2 >= to1 || to2 < from1\n// ? { from: 0, to: 0 }\n// : { from: Math.max(from2, from1), to: Math.min(to2, to1) };\n// };\n\nexport const rangeNewItems = (\n { from: from1, to: to1 }: VuuRange,\n newRange: VuuRange,\n): VuuRange => {\n const { from: from2, to: to2 } = newRange;\n const noOverlap = from2 >= to1 || to2 <= from1;\n const newFullySubsumesOld = from2 < from1 && to2 > to1;\n return noOverlap || newFullySubsumesOld\n ? newRange\n : to2 > to1\n ? { from: to1, to: to2 }\n : { from: from2, to: from1 };\n};\n\nexport class WindowRange {\n public from: number;\n public to: number;\n\n constructor(from: number, to: number) {\n this.from = from;\n this.to = to;\n }\n\n public isWithin(index: number) {\n return withinRange(index, this);\n }\n\n //find the overlap of this range and a new one\n public overlap(from: number, to: number): [number, number] {\n return from >= this.to || to < this.from\n ? [0, 0]\n : [Math.max(from, this.from), Math.min(to, this.to)];\n }\n\n public copy(): WindowRange {\n return new WindowRange(this.from, this.to);\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var React = require('react');
|
|
4
|
+
|
|
5
|
+
const EMPTY_ARRAY = [];
|
|
6
|
+
const asReactElements = (children) => {
|
|
7
|
+
const isArray = Array.isArray(children);
|
|
8
|
+
const count = isArray ? children.length : React.Children.count(children);
|
|
9
|
+
if (isArray && children.every(React.isValidElement)) {
|
|
10
|
+
return children;
|
|
11
|
+
} else if (count === 1 && !isArray && React.isValidElement(children)) {
|
|
12
|
+
return [children];
|
|
13
|
+
} else if (count > 1) {
|
|
14
|
+
return children;
|
|
15
|
+
} else {
|
|
16
|
+
return EMPTY_ARRAY;
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
const useIsMounted = (id = "") => {
|
|
20
|
+
const isMountedRef = React.useRef(false);
|
|
21
|
+
React.useEffect(() => {
|
|
22
|
+
console.log(`is MOUNTED ${id}`);
|
|
23
|
+
isMountedRef.current = true;
|
|
24
|
+
return () => {
|
|
25
|
+
console.log(`is UNMOUNTED ${id}`);
|
|
26
|
+
isMountedRef.current = false;
|
|
27
|
+
};
|
|
28
|
+
}, [id]);
|
|
29
|
+
return isMountedRef;
|
|
30
|
+
};
|
|
31
|
+
const isSimpleStateValue = (arg) => typeof arg !== "function";
|
|
32
|
+
|
|
33
|
+
exports.asReactElements = asReactElements;
|
|
34
|
+
exports.isSimpleStateValue = isSimpleStateValue;
|
|
35
|
+
exports.useIsMounted = useIsMounted;
|
|
36
|
+
//# sourceMappingURL=react-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"react-utils.js","sources":["../../../../src/react-utils.ts"],"sourcesContent":["import {\n Children,\n isValidElement,\n ReactElement,\n ReactNode,\n SetStateAction,\n useEffect,\n useRef,\n} from \"react\";\n\nconst EMPTY_ARRAY: ReactElement[] = [];\n\nexport const asReactElements = (children: ReactNode): ReactElement[] => {\n const isArray = Array.isArray(children);\n const count = isArray ? children.length : Children.count(children);\n if (isArray && children.every(isValidElement)) {\n return children;\n } else if (count === 1 && !isArray && isValidElement(children)) {\n return [children];\n } else if (count > 1) {\n return children as ReactElement[];\n } else {\n return EMPTY_ARRAY;\n }\n};\n\nexport const useIsMounted = (id = \"\") => {\n const isMountedRef = useRef(false);\n useEffect(() => {\n console.log(`is MOUNTED ${id}`);\n isMountedRef.current = true;\n return () => {\n console.log(`is UNMOUNTED ${id}`);\n isMountedRef.current = false;\n };\n }, [id]);\n\n return isMountedRef;\n};\n\nexport const isSimpleStateValue = <T>(arg: SetStateAction<T>): arg is T =>\n typeof arg !== \"function\";\n"],"names":["Children","isValidElement","useRef","useEffect"],"mappings":";;;;AAUA,MAAM,cAA8B,EAAC;AAExB,MAAA,eAAA,GAAkB,CAAC,QAAwC,KAAA;AACtE,EAAM,MAAA,OAAA,GAAU,KAAM,CAAA,OAAA,CAAQ,QAAQ,CAAA;AACtC,EAAA,MAAM,QAAQ,OAAU,GAAA,QAAA,CAAS,MAAS,GAAAA,cAAA,CAAS,MAAM,QAAQ,CAAA;AACjE,EAAA,IAAI,OAAW,IAAA,QAAA,CAAS,KAAM,CAAAC,oBAAc,CAAG,EAAA;AAC7C,IAAO,OAAA,QAAA;AAAA,aACE,KAAU,KAAA,CAAA,IAAK,CAAC,OAAW,IAAAA,oBAAA,CAAe,QAAQ,CAAG,EAAA;AAC9D,IAAA,OAAO,CAAC,QAAQ,CAAA;AAAA,GAClB,MAAA,IAAW,QAAQ,CAAG,EAAA;AACpB,IAAO,OAAA,QAAA;AAAA,GACF,MAAA;AACL,IAAO,OAAA,WAAA;AAAA;AAEX;AAEa,MAAA,YAAA,GAAe,CAAC,EAAA,GAAK,EAAO,KAAA;AACvC,EAAM,MAAA,YAAA,GAAeC,aAAO,KAAK,CAAA;AACjC,EAAAC,eAAA,CAAU,MAAM;AACd,IAAQ,OAAA,CAAA,GAAA,CAAI,CAAc,WAAA,EAAA,EAAE,CAAE,CAAA,CAAA;AAC9B,IAAA,YAAA,CAAa,OAAU,GAAA,IAAA;AACvB,IAAA,OAAO,MAAM;AACX,MAAQ,OAAA,CAAA,GAAA,CAAI,CAAgB,aAAA,EAAA,EAAE,CAAE,CAAA,CAAA;AAChC,MAAA,YAAA,CAAa,OAAU,GAAA,KAAA;AAAA,KACzB;AAAA,GACF,EAAG,CAAC,EAAE,CAAC,CAAA;AAEP,EAAO,OAAA,YAAA;AACT;AAEO,MAAM,kBAAqB,GAAA,CAAI,GACpC,KAAA,OAAO,GAAQ,KAAA;;;;;;"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const PUNCTUATION_STR = String.fromCharCode(8200);
|
|
4
|
+
const DIGIT_STR = String.fromCharCode(8199);
|
|
5
|
+
const DECIMALS_AUTO = -1;
|
|
6
|
+
const Space = {
|
|
7
|
+
DIGIT: DIGIT_STR,
|
|
8
|
+
TWO_DIGITS: DIGIT_STR + DIGIT_STR,
|
|
9
|
+
THREE_DIGITS: DIGIT_STR + DIGIT_STR + DIGIT_STR,
|
|
10
|
+
FULL_PADDING: [
|
|
11
|
+
null,
|
|
12
|
+
PUNCTUATION_STR + DIGIT_STR,
|
|
13
|
+
PUNCTUATION_STR + DIGIT_STR + DIGIT_STR,
|
|
14
|
+
PUNCTUATION_STR + DIGIT_STR + DIGIT_STR + DIGIT_STR,
|
|
15
|
+
PUNCTUATION_STR + DIGIT_STR + DIGIT_STR + DIGIT_STR + DIGIT_STR
|
|
16
|
+
]
|
|
17
|
+
};
|
|
18
|
+
const Zero = {
|
|
19
|
+
DIGIT: "0",
|
|
20
|
+
TWO_DIGITS: "00",
|
|
21
|
+
THREE_DIGITS: "000",
|
|
22
|
+
FULL_PADDING: [null, "0", "00", "000", "0000"]
|
|
23
|
+
};
|
|
24
|
+
function padLeft(value, maxLength = 6) {
|
|
25
|
+
return (LEADING_FILL + value).slice(-maxLength);
|
|
26
|
+
}
|
|
27
|
+
const LEADING_FILL = DIGIT_STR + DIGIT_STR + DIGIT_STR + DIGIT_STR + DIGIT_STR + DIGIT_STR + DIGIT_STR + DIGIT_STR + DIGIT_STR;
|
|
28
|
+
const Align = {
|
|
29
|
+
Right: "right",
|
|
30
|
+
Center: "center",
|
|
31
|
+
Left: "left"
|
|
32
|
+
};
|
|
33
|
+
function pad(n, dp, Pad) {
|
|
34
|
+
let len = n.length;
|
|
35
|
+
const diff = dp - len;
|
|
36
|
+
if (diff > 0) {
|
|
37
|
+
if (diff === 1) {
|
|
38
|
+
n = n + Pad.DIGIT;
|
|
39
|
+
} else if (diff === 2) {
|
|
40
|
+
n = n + Pad.TWO_DIGITS;
|
|
41
|
+
} else if (diff === 3) {
|
|
42
|
+
n = n + Pad.THREE_DIGITS;
|
|
43
|
+
}
|
|
44
|
+
} else {
|
|
45
|
+
if (diff < 0) {
|
|
46
|
+
n = n.slice(0, dp);
|
|
47
|
+
len = dp;
|
|
48
|
+
}
|
|
49
|
+
if (Pad === Space && n.charAt(len - 1) === "0") {
|
|
50
|
+
n = n.replace(/0+$/, "");
|
|
51
|
+
return pad(n, dp, Pad);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return n;
|
|
55
|
+
}
|
|
56
|
+
function roundDecimal(value, align = Align.Right, decimals = 4, zeroPad, alignOnDecimals) {
|
|
57
|
+
if (value === void 0 || typeof value !== "number" || isNaN(value)) {
|
|
58
|
+
return "";
|
|
59
|
+
}
|
|
60
|
+
let integral, fraction, Pad;
|
|
61
|
+
const [part1, part2 = ""] = value.toString().split(".");
|
|
62
|
+
const actualDecimals = part2.length;
|
|
63
|
+
integral = parseFloat(part1).toLocaleString();
|
|
64
|
+
if (align === Align.Left && alignOnDecimals) {
|
|
65
|
+
integral = padLeft(integral);
|
|
66
|
+
}
|
|
67
|
+
if (decimals === DECIMALS_AUTO || actualDecimals === decimals) {
|
|
68
|
+
fraction = part2;
|
|
69
|
+
} else if (actualDecimals > decimals) {
|
|
70
|
+
fraction = parseFloat("0." + part2).toFixed(decimals).slice(2);
|
|
71
|
+
} else {
|
|
72
|
+
if (Pad = zeroPad ? Zero : alignOnDecimals && align !== Align.Left ? Space : null) {
|
|
73
|
+
if (actualDecimals === 0) {
|
|
74
|
+
fraction = Pad.FULL_PADDING[decimals];
|
|
75
|
+
} else {
|
|
76
|
+
fraction = pad(part2, decimals, Pad);
|
|
77
|
+
}
|
|
78
|
+
} else {
|
|
79
|
+
fraction = part2;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
return integral + (fraction ? "." + fraction : "");
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
exports.roundDecimal = roundDecimal;
|
|
86
|
+
//# sourceMappingURL=round-decimal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"round-decimal.js","sources":["../../../../src/round-decimal.ts"],"sourcesContent":["const PUNCTUATION_STR = String.fromCharCode(8200);\nconst DIGIT_STR = String.fromCharCode(8199);\nconst DECIMALS_AUTO = -1;\n\ntype PadMap = {\n DIGIT: string;\n TWO_DIGITS: string;\n THREE_DIGITS: string;\n FULL_PADDING: [null, string, string, string, string];\n};\n\nconst Space: PadMap = {\n DIGIT: DIGIT_STR,\n TWO_DIGITS: DIGIT_STR + DIGIT_STR,\n THREE_DIGITS: DIGIT_STR + DIGIT_STR + DIGIT_STR,\n FULL_PADDING: [\n null,\n PUNCTUATION_STR + DIGIT_STR,\n PUNCTUATION_STR + DIGIT_STR + DIGIT_STR,\n PUNCTUATION_STR + DIGIT_STR + DIGIT_STR + DIGIT_STR,\n PUNCTUATION_STR + DIGIT_STR + DIGIT_STR + DIGIT_STR + DIGIT_STR,\n ],\n};\n\nconst Zero: PadMap = {\n DIGIT: \"0\",\n TWO_DIGITS: \"00\",\n THREE_DIGITS: \"000\",\n FULL_PADDING: [null, \"0\", \"00\", \"000\", \"0000\"],\n};\n\nfunction padLeft(value: string, maxLength = 6) {\n return (LEADING_FILL + value).slice(-maxLength);\n}\n\nconst LEADING_FILL =\n DIGIT_STR +\n DIGIT_STR +\n DIGIT_STR +\n DIGIT_STR +\n DIGIT_STR +\n DIGIT_STR +\n DIGIT_STR +\n DIGIT_STR +\n DIGIT_STR;\n\nconst Align = {\n Right: \"right\",\n Center: \"center\",\n Left: \"left\",\n};\n\nfunction pad(n: string, dp: number, Pad: PadMap): string {\n let len = n.length;\n const diff = dp - len;\n\n if (diff > 0) {\n if (diff === 1) {\n n = n + Pad.DIGIT;\n } else if (diff === 2) {\n n = n + Pad.TWO_DIGITS;\n } else if (diff === 3) {\n n = n + Pad.THREE_DIGITS;\n }\n } else {\n if (diff < 0) {\n n = n.slice(0, dp);\n len = dp;\n }\n\n if (Pad === Space && n.charAt(len - 1) === \"0\") {\n n = n.replace(/0+$/, \"\");\n return pad(n, dp, Pad);\n }\n }\n return n;\n}\n\nexport function roundDecimal(\n value?: number,\n align = Align.Right,\n decimals = 4,\n zeroPad?: boolean,\n alignOnDecimals?: boolean\n) {\n if (value === undefined || typeof value !== \"number\" || isNaN(value)) {\n return \"\";\n }\n let integral, fraction, Pad;\n\n const [part1, part2 = \"\"] = value.toString().split(\".\");\n const actualDecimals = part2.length;\n\n integral = parseFloat(part1).toLocaleString();\n\n if (align === Align.Left && alignOnDecimals) {\n integral = padLeft(integral);\n }\n\n if (decimals === DECIMALS_AUTO || actualDecimals === decimals) {\n fraction = part2;\n } else if (actualDecimals > decimals) {\n fraction = parseFloat(\"0.\" + part2)\n .toFixed(decimals)\n .slice(2);\n } else {\n /* eslint-disable no-cond-assign */\n if (\n (Pad = zeroPad\n ? Zero\n : alignOnDecimals && align !== Align.Left\n ? Space\n : null)\n ) {\n if (actualDecimals === 0) {\n fraction = Pad.FULL_PADDING[decimals];\n } else {\n fraction = pad(part2, decimals, Pad);\n }\n } else {\n fraction = part2;\n }\n }\n\n return integral + (fraction ? \".\" + fraction : \"\");\n}\n"],"names":[],"mappings":";;AAAA,MAAM,eAAA,GAAkB,MAAO,CAAA,YAAA,CAAa,IAAI,CAAA;AAChD,MAAM,SAAA,GAAY,MAAO,CAAA,YAAA,CAAa,IAAI,CAAA;AAC1C,MAAM,aAAgB,GAAA,CAAA,CAAA;AAStB,MAAM,KAAgB,GAAA;AAAA,EACpB,KAAO,EAAA,SAAA;AAAA,EACP,YAAY,SAAY,GAAA,SAAA;AAAA,EACxB,YAAA,EAAc,YAAY,SAAY,GAAA,SAAA;AAAA,EACtC,YAAc,EAAA;AAAA,IACZ,IAAA;AAAA,IACA,eAAkB,GAAA,SAAA;AAAA,IAClB,kBAAkB,SAAY,GAAA,SAAA;AAAA,IAC9B,eAAA,GAAkB,YAAY,SAAY,GAAA,SAAA;AAAA,IAC1C,eAAA,GAAkB,SAAY,GAAA,SAAA,GAAY,SAAY,GAAA;AAAA;AAE1D,CAAA;AAEA,MAAM,IAAe,GAAA;AAAA,EACnB,KAAO,EAAA,GAAA;AAAA,EACP,UAAY,EAAA,IAAA;AAAA,EACZ,YAAc,EAAA,KAAA;AAAA,EACd,cAAc,CAAC,IAAA,EAAM,GAAK,EAAA,IAAA,EAAM,OAAO,MAAM;AAC/C,CAAA;AAEA,SAAS,OAAA,CAAQ,KAAe,EAAA,SAAA,GAAY,CAAG,EAAA;AAC7C,EAAA,OAAA,CAAQ,YAAe,GAAA,KAAA,EAAO,KAAM,CAAA,CAAC,SAAS,CAAA;AAChD;AAEA,MAAM,YAAA,GACJ,YACA,SACA,GAAA,SAAA,GACA,YACA,SACA,GAAA,SAAA,GACA,YACA,SACA,GAAA,SAAA;AAEF,MAAM,KAAQ,GAAA;AAAA,EACZ,KAAO,EAAA,OAAA;AAAA,EACP,MAAQ,EAAA,QAAA;AAAA,EACR,IAAM,EAAA;AACR,CAAA;AAEA,SAAS,GAAA,CAAI,CAAW,EAAA,EAAA,EAAY,GAAqB,EAAA;AACvD,EAAA,IAAI,MAAM,CAAE,CAAA,MAAA;AACZ,EAAA,MAAM,OAAO,EAAK,GAAA,GAAA;AAElB,EAAA,IAAI,OAAO,CAAG,EAAA;AACZ,IAAA,IAAI,SAAS,CAAG,EAAA;AACd,MAAA,CAAA,GAAI,IAAI,GAAI,CAAA,KAAA;AAAA,KACd,MAAA,IAAW,SAAS,CAAG,EAAA;AACrB,MAAA,CAAA,GAAI,IAAI,GAAI,CAAA,UAAA;AAAA,KACd,MAAA,IAAW,SAAS,CAAG,EAAA;AACrB,MAAA,CAAA,GAAI,IAAI,GAAI,CAAA,YAAA;AAAA;AACd,GACK,MAAA;AACL,IAAA,IAAI,OAAO,CAAG,EAAA;AACZ,MAAI,CAAA,GAAA,CAAA,CAAE,KAAM,CAAA,CAAA,EAAG,EAAE,CAAA;AACjB,MAAM,GAAA,GAAA,EAAA;AAAA;AAGR,IAAA,IAAI,QAAQ,KAAS,IAAA,CAAA,CAAE,OAAO,GAAM,GAAA,CAAC,MAAM,GAAK,EAAA;AAC9C,MAAI,CAAA,GAAA,CAAA,CAAE,OAAQ,CAAA,KAAA,EAAO,EAAE,CAAA;AACvB,MAAO,OAAA,GAAA,CAAI,CAAG,EAAA,EAAA,EAAI,GAAG,CAAA;AAAA;AACvB;AAEF,EAAO,OAAA,CAAA;AACT;AAEgB,SAAA,YAAA,CACd,OACA,KAAQ,GAAA,KAAA,CAAM,OACd,QAAW,GAAA,CAAA,EACX,SACA,eACA,EAAA;AACA,EAAA,IAAI,UAAU,KAAa,CAAA,IAAA,OAAO,UAAU,QAAY,IAAA,KAAA,CAAM,KAAK,CAAG,EAAA;AACpE,IAAO,OAAA,EAAA;AAAA;AAET,EAAA,IAAI,UAAU,QAAU,EAAA,GAAA;AAExB,EAAM,MAAA,CAAC,OAAO,KAAQ,GAAA,EAAE,IAAI,KAAM,CAAA,QAAA,EAAW,CAAA,KAAA,CAAM,GAAG,CAAA;AACtD,EAAA,MAAM,iBAAiB,KAAM,CAAA,MAAA;AAE7B,EAAW,QAAA,GAAA,UAAA,CAAW,KAAK,CAAA,CAAE,cAAe,EAAA;AAE5C,EAAI,IAAA,KAAA,KAAU,KAAM,CAAA,IAAA,IAAQ,eAAiB,EAAA;AAC3C,IAAA,QAAA,GAAW,QAAQ,QAAQ,CAAA;AAAA;AAG7B,EAAI,IAAA,QAAA,KAAa,aAAiB,IAAA,cAAA,KAAmB,QAAU,EAAA;AAC7D,IAAW,QAAA,GAAA,KAAA;AAAA,GACb,MAAA,IAAW,iBAAiB,QAAU,EAAA;AACpC,IAAW,QAAA,GAAA,UAAA,CAAW,OAAO,KAAK,CAAA,CAC/B,QAAQ,QAAQ,CAAA,CAChB,MAAM,CAAC,CAAA;AAAA,GACL,MAAA;AAEL,IACG,IAAA,GAAA,GAAM,UACH,IACA,GAAA,eAAA,IAAmB,UAAU,KAAM,CAAA,IAAA,GACnC,QACA,IACJ,EAAA;AACA,MAAA,IAAI,mBAAmB,CAAG,EAAA;AACxB,QAAW,QAAA,GAAA,GAAA,CAAI,aAAa,QAAQ,CAAA;AAAA,OAC/B,MAAA;AACL,QAAW,QAAA,GAAA,GAAA,CAAI,KAAO,EAAA,QAAA,EAAU,GAAG,CAAA;AAAA;AACrC,KACK,MAAA;AACL,MAAW,QAAA,GAAA,KAAA;AAAA;AACb;AAGF,EAAO,OAAA,QAAA,IAAY,QAAW,GAAA,GAAA,GAAM,QAAW,GAAA,EAAA,CAAA;AACjD;;;;"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var columnUtils = require('./column-utils.js');
|
|
4
|
+
var selectionUtils = require('./selection-utils.js');
|
|
5
|
+
|
|
6
|
+
const { IS_LEAF, KEY, IDX } = columnUtils.metadataKeys;
|
|
7
|
+
const actualRowPositioning = (rowHeight) => [
|
|
8
|
+
(row) => row[IDX] * rowHeight,
|
|
9
|
+
(position) => Math.floor(position / rowHeight),
|
|
10
|
+
false
|
|
11
|
+
];
|
|
12
|
+
const virtualRowPositioning = (rowHeight, virtualisedExtent, pctScrollTop) => [
|
|
13
|
+
(row, offset = 0) => {
|
|
14
|
+
const rowOffset = pctScrollTop.current * virtualisedExtent;
|
|
15
|
+
return (row[IDX] - offset) * rowHeight - rowOffset;
|
|
16
|
+
},
|
|
17
|
+
/*
|
|
18
|
+
Return index position of closest row
|
|
19
|
+
*/
|
|
20
|
+
(position) => {
|
|
21
|
+
const rowOffset = pctScrollTop.current * virtualisedExtent;
|
|
22
|
+
return Math.round((position + rowOffset) / rowHeight);
|
|
23
|
+
},
|
|
24
|
+
true
|
|
25
|
+
];
|
|
26
|
+
const asDataSourceRowObject = (row, columnMap) => {
|
|
27
|
+
const { [IS_LEAF]: isLeaf, [KEY]: key, [IDX]: index } = row;
|
|
28
|
+
const rowObject = {
|
|
29
|
+
key,
|
|
30
|
+
index,
|
|
31
|
+
isGroupRow: !isLeaf,
|
|
32
|
+
isSelected: selectionUtils.isRowSelected(row),
|
|
33
|
+
data: {}
|
|
34
|
+
};
|
|
35
|
+
for (const [colName, colIdx] of Object.entries(columnMap)) {
|
|
36
|
+
rowObject.data[colName] = row[colIdx];
|
|
37
|
+
}
|
|
38
|
+
return rowObject;
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
exports.actualRowPositioning = actualRowPositioning;
|
|
42
|
+
exports.asDataSourceRowObject = asDataSourceRowObject;
|
|
43
|
+
exports.virtualRowPositioning = virtualRowPositioning;
|
|
44
|
+
//# sourceMappingURL=row-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"row-utils.js","sources":["../../../../src/row-utils.ts"],"sourcesContent":["//TODO this all probably belongs in vuu-table\nimport type {\n DataSourceRow,\n DataSourceRowObject,\n} from \"@vuu-ui/vuu-data-types\";\nimport type { MutableRefObject } from \"react\";\nimport { ColumnMap, metadataKeys } from \"./column-utils\";\nimport { isRowSelected } from \"./selection-utils\";\n\nconst { IS_LEAF, KEY, IDX } = metadataKeys;\n\nexport type RowOffsetFunc = (\n row: DataSourceRow,\n pctScrollTop?: number,\n) => number;\nexport type RowAtPositionFunc = (position: number) => number;\n\n/**\n * RowOffset function, RowAtPosition function, isVirtualScroll\n */\nexport type RowPositioning = [RowOffsetFunc, RowAtPositionFunc, boolean];\n\nexport const actualRowPositioning = (rowHeight: number): RowPositioning => [\n (row) => row[IDX] * rowHeight,\n (position) => Math.floor(position / rowHeight),\n false,\n];\n\n/**\n * return functions for determining a) the pixel offset to apply to a row, given the\n * row index and b) the index of the row at a given scroll offset. This implementation\n * is used when we are forced to 'virtualise' scrolling - because the number of rows\n * is high enough that we cannot create a large enough HTML content container.\n *\n * @param rowHeight\n * @param virtualisedExtent\n * @param pctScrollTop\n * @returns\n */\nexport const virtualRowPositioning = (\n rowHeight: number,\n virtualisedExtent: number,\n pctScrollTop: MutableRefObject<number>,\n): RowPositioning => [\n (row, offset = 0) => {\n const rowOffset = pctScrollTop.current * virtualisedExtent;\n return (row[IDX] - offset) * rowHeight - rowOffset;\n },\n /*\n Return index position of closest row \n */\n (position) => {\n const rowOffset = pctScrollTop.current * virtualisedExtent;\n return Math.round((position + rowOffset) / rowHeight);\n },\n true,\n];\n\nexport type RowToObjectMapper = (\n row: DataSourceRow,\n columnMap: ColumnMap,\n) => DataSourceRowObject;\n\nexport const asDataSourceRowObject: RowToObjectMapper = (\n row,\n columnMap,\n): DataSourceRowObject => {\n const { [IS_LEAF]: isLeaf, [KEY]: key, [IDX]: index } = row;\n\n const rowObject: DataSourceRowObject = {\n key,\n index,\n isGroupRow: !isLeaf,\n isSelected: isRowSelected(row),\n data: {},\n };\n\n for (const [colName, colIdx] of Object.entries(columnMap)) {\n rowObject.data[colName] = row[colIdx];\n }\n\n return rowObject;\n};\n"],"names":["metadataKeys","isRowSelected"],"mappings":";;;;;AASA,MAAM,EAAE,OAAA,EAAS,GAAK,EAAA,GAAA,EAAQ,GAAAA,wBAAA;AAajB,MAAA,oBAAA,GAAuB,CAAC,SAAsC,KAAA;AAAA,EACzE,CAAC,GAAA,KAAQ,GAAI,CAAA,GAAG,CAAI,GAAA,SAAA;AAAA,EACpB,CAAC,QAAA,KAAa,IAAK,CAAA,KAAA,CAAM,WAAW,SAAS,CAAA;AAAA,EAC7C;AACF;AAaO,MAAM,qBAAwB,GAAA,CACnC,SACA,EAAA,iBAAA,EACA,YACmB,KAAA;AAAA,EACnB,CAAC,GAAK,EAAA,MAAA,GAAS,CAAM,KAAA;AACnB,IAAM,MAAA,SAAA,GAAY,aAAa,OAAU,GAAA,iBAAA;AACzC,IAAA,OAAA,CAAQ,GAAI,CAAA,GAAG,CAAI,GAAA,MAAA,IAAU,SAAY,GAAA,SAAA;AAAA,GAC3C;AAAA;AAAA;AAAA;AAAA,EAIA,CAAC,QAAa,KAAA;AACZ,IAAM,MAAA,SAAA,GAAY,aAAa,OAAU,GAAA,iBAAA;AACzC,IAAA,OAAO,IAAK,CAAA,KAAA,CAAA,CAAO,QAAW,GAAA,SAAA,IAAa,SAAS,CAAA;AAAA,GACtD;AAAA,EACA;AACF;AAOa,MAAA,qBAAA,GAA2C,CACtD,GAAA,EACA,SACwB,KAAA;AACxB,EAAA,MAAM,EAAE,CAAC,OAAO,GAAG,MAAQ,EAAA,CAAC,GAAG,GAAG,GAAK,EAAA,CAAC,GAAG,GAAG,OAAU,GAAA,GAAA;AAExD,EAAA,MAAM,SAAiC,GAAA;AAAA,IACrC,GAAA;AAAA,IACA,KAAA;AAAA,IACA,YAAY,CAAC,MAAA;AAAA,IACb,UAAA,EAAYC,6BAAc,GAAG,CAAA;AAAA,IAC7B,MAAM;AAAC,GACT;AAEA,EAAA,KAAA,MAAW,CAAC,OAAS,EAAA,MAAM,KAAK,MAAO,CAAA,OAAA,CAAQ,SAAS,CAAG,EAAA;AACzD,IAAA,SAAA,CAAU,IAAK,CAAA,OAAO,CAAI,GAAA,GAAA,CAAI,MAAM,CAAA;AAAA;AAGtC,EAAO,OAAA,SAAA;AACT;;;;;;"}
|
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var columnUtils = require('./column-utils.js');
|
|
4
|
+
|
|
5
|
+
const NO_SELECTION = [];
|
|
6
|
+
const { SELECTED } = columnUtils.metadataKeys;
|
|
7
|
+
const RowSelected = {
|
|
8
|
+
False: 0,
|
|
9
|
+
True: 1,
|
|
10
|
+
First: 2,
|
|
11
|
+
Last: 4
|
|
12
|
+
};
|
|
13
|
+
const isRowSelected = (row) => (row[SELECTED] & RowSelected.True) === RowSelected.True;
|
|
14
|
+
const isRowSelectedLast = (row) => row !== void 0 && (row[SELECTED] & RowSelected.Last) === RowSelected.Last;
|
|
15
|
+
const inAscendingOrder = (item1, item2) => {
|
|
16
|
+
const n1 = typeof item1 === "number" ? item1 : item1[0];
|
|
17
|
+
const n2 = typeof item2 === "number" ? item2 : item2[0];
|
|
18
|
+
return n1 - n2;
|
|
19
|
+
};
|
|
20
|
+
const deselectItem = (selectionModel, selected, itemIndex, rangeSelect, keepExistingSelection = false) => {
|
|
21
|
+
const singleSelect = selectionModel === "single";
|
|
22
|
+
const multiSelect = selectionModel === "extended" || selectionModel === "checkbox";
|
|
23
|
+
const actsLikeSingleSelect = singleSelect || multiSelect && !keepExistingSelection && !rangeSelect;
|
|
24
|
+
if (actsLikeSingleSelect || !rangeSelect && !keepExistingSelection) {
|
|
25
|
+
return NO_SELECTION;
|
|
26
|
+
} else if (!rangeSelect && keepExistingSelection) {
|
|
27
|
+
return removeSelectedItem(selected, itemIndex);
|
|
28
|
+
}
|
|
29
|
+
return NO_SELECTION;
|
|
30
|
+
};
|
|
31
|
+
const newSelectedFillsGapOrExtends = (selection, itemIndex) => {
|
|
32
|
+
for (let i = 0; i < selection.length; i++) {
|
|
33
|
+
const item = selection[i];
|
|
34
|
+
if (typeof item === "number") {
|
|
35
|
+
if (item === itemIndex - 1) {
|
|
36
|
+
return true;
|
|
37
|
+
} else if (item > itemIndex) {
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
} else if (item[0] === itemIndex + 1 || item[1] === itemIndex - 1) {
|
|
41
|
+
return true;
|
|
42
|
+
} else if (item[0] > itemIndex) {
|
|
43
|
+
return false;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return false;
|
|
47
|
+
};
|
|
48
|
+
const fillGapOrExtendSelection = (selection, itemIndex) => {
|
|
49
|
+
for (let i = 0; i < selection.length; i++) {
|
|
50
|
+
const item = selection[i];
|
|
51
|
+
if (typeof item === "number") {
|
|
52
|
+
if (item === itemIndex - 1) {
|
|
53
|
+
const nextSelectionItem = selection[i + 1];
|
|
54
|
+
if (nextSelectionItem === itemIndex + 1) {
|
|
55
|
+
const newRange = [item, nextSelectionItem];
|
|
56
|
+
return selection.slice(0, i).concat([newRange]).concat(selection.slice(i + 2));
|
|
57
|
+
} else {
|
|
58
|
+
const newRange = [item, itemIndex];
|
|
59
|
+
return selection.slice(0, i).concat([newRange]).concat(selection.slice(i + 1));
|
|
60
|
+
}
|
|
61
|
+
} else if (item > itemIndex) {
|
|
62
|
+
break;
|
|
63
|
+
}
|
|
64
|
+
} else if (item[0] === itemIndex + 1) {
|
|
65
|
+
const newRange = [itemIndex, item[1]];
|
|
66
|
+
return selection.slice(0, i).concat([newRange]).concat(selection.slice(i + 1));
|
|
67
|
+
} else if (item[1] === itemIndex - 1) {
|
|
68
|
+
const nextItem = selection[i + 1];
|
|
69
|
+
if (Array.isArray(nextItem) && nextItem[0] === itemIndex + 1) {
|
|
70
|
+
const newRange = [item[0], nextItem[1]];
|
|
71
|
+
return selection.slice(0, i).concat([newRange]).concat(selection.slice(i + 2));
|
|
72
|
+
} else if (typeof nextItem === "number" && nextItem === itemIndex + 1) {
|
|
73
|
+
const newRange = [item[0], nextItem];
|
|
74
|
+
return selection.slice(0, i).concat([newRange]).concat(selection.slice(i + 2));
|
|
75
|
+
} else {
|
|
76
|
+
const newRange = [item[0], itemIndex];
|
|
77
|
+
return selection.slice(0, i).concat([newRange]).concat(selection.slice(i + 1));
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return selection;
|
|
82
|
+
};
|
|
83
|
+
const selectItem = (selectionModel, selected, itemIndex, rangeSelect, keepExistingSelection = false, activeItemIndex = -1) => {
|
|
84
|
+
const singleSelect = selectionModel === "single";
|
|
85
|
+
const multiSelect = selectionModel === "extended" || selectionModel === "checkbox";
|
|
86
|
+
const actsLikeSingleSelect = singleSelect || multiSelect && !keepExistingSelection && !rangeSelect || rangeSelect && activeItemIndex === -1;
|
|
87
|
+
if (selectionModel === "none") {
|
|
88
|
+
return NO_SELECTION;
|
|
89
|
+
} else if (actsLikeSingleSelect) {
|
|
90
|
+
return [itemIndex];
|
|
91
|
+
} else if (rangeSelect) {
|
|
92
|
+
if (selected.length === 0) {
|
|
93
|
+
return [itemIndex];
|
|
94
|
+
} else {
|
|
95
|
+
const range = itemIndex > activeItemIndex ? [activeItemIndex, itemIndex] : [itemIndex, activeItemIndex];
|
|
96
|
+
return insertRange(selected, range);
|
|
97
|
+
}
|
|
98
|
+
} else if (!rangeSelect) {
|
|
99
|
+
if (newSelectedFillsGapOrExtends(selected, itemIndex)) {
|
|
100
|
+
return fillGapOrExtendSelection(selected, itemIndex);
|
|
101
|
+
} else {
|
|
102
|
+
return selected?.concat(itemIndex).sort(inAscendingOrder);
|
|
103
|
+
}
|
|
104
|
+
} else ;
|
|
105
|
+
return NO_SELECTION;
|
|
106
|
+
};
|
|
107
|
+
function removeSelectedItem(selected, itemIndex) {
|
|
108
|
+
if (selected.includes(itemIndex)) {
|
|
109
|
+
return selected.filter((selectedItem) => selectedItem !== itemIndex);
|
|
110
|
+
} else {
|
|
111
|
+
const newSelected = [];
|
|
112
|
+
for (const selectedItem of selected) {
|
|
113
|
+
if (Array.isArray(selectedItem)) {
|
|
114
|
+
if (rangeIncludes(selectedItem, itemIndex)) {
|
|
115
|
+
newSelected.push(...splitRange(selectedItem, itemIndex));
|
|
116
|
+
} else {
|
|
117
|
+
newSelected.push(selectedItem);
|
|
118
|
+
}
|
|
119
|
+
} else {
|
|
120
|
+
newSelected.push(selectedItem);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
return newSelected;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
function insertRange(selected, range) {
|
|
127
|
+
const [from, to] = range;
|
|
128
|
+
return selected.reduce((newSelected, selectedItem) => {
|
|
129
|
+
if (typeof selectedItem === "number") {
|
|
130
|
+
if (selectedItem < from || selectedItem > to) {
|
|
131
|
+
newSelected.push(selectedItem);
|
|
132
|
+
} else if (!includedInRange(newSelected.at(-1), selectedItem)) {
|
|
133
|
+
newSelected.push(range);
|
|
134
|
+
}
|
|
135
|
+
} else if (overlappingRange(selectedItem, range)) {
|
|
136
|
+
newSelected.push(mergeRanges(selectedItem, range));
|
|
137
|
+
} else {
|
|
138
|
+
if (range[1] < selectedItem[0]) {
|
|
139
|
+
newSelected.push(range);
|
|
140
|
+
}
|
|
141
|
+
newSelected.push(selectedItem);
|
|
142
|
+
}
|
|
143
|
+
return newSelected;
|
|
144
|
+
}, []);
|
|
145
|
+
}
|
|
146
|
+
const overlappingRange = (r1, r2) => r1[1] >= r2[0] && r1[1] <= r2[1] || r1[0] >= r2[0] && r1[0] <= r2[1];
|
|
147
|
+
const mergeRanges = (r1, r2) => [
|
|
148
|
+
Math.min(r1[0], r2[0]),
|
|
149
|
+
Math.max(r1[1], r2[1])
|
|
150
|
+
];
|
|
151
|
+
const includedInRange = (selectedItem, index) => {
|
|
152
|
+
if (typeof selectedItem === "undefined" || typeof selectedItem === "number") {
|
|
153
|
+
return false;
|
|
154
|
+
} else return rangeIncludes(selectedItem, index);
|
|
155
|
+
};
|
|
156
|
+
const rangeIncludes = (range, index) => index >= range[0] && index <= range[1];
|
|
157
|
+
const SINGLE_SELECTED_ROW = RowSelected.True + RowSelected.First + RowSelected.Last;
|
|
158
|
+
const FIRST_SELECTED_ROW_OF_BLOCK = RowSelected.True + RowSelected.First;
|
|
159
|
+
const LAST_SELECTED_ROW_OF_BLOCK = RowSelected.True + RowSelected.Last;
|
|
160
|
+
const getSelectionStatus = (selected, itemIndex) => {
|
|
161
|
+
for (const item of selected) {
|
|
162
|
+
if (typeof item === "number") {
|
|
163
|
+
if (item === itemIndex) {
|
|
164
|
+
return SINGLE_SELECTED_ROW;
|
|
165
|
+
}
|
|
166
|
+
} else if (rangeIncludes(item, itemIndex)) {
|
|
167
|
+
if (itemIndex === item[0]) {
|
|
168
|
+
return FIRST_SELECTED_ROW_OF_BLOCK;
|
|
169
|
+
} else if (itemIndex === item[1]) {
|
|
170
|
+
return LAST_SELECTED_ROW_OF_BLOCK;
|
|
171
|
+
} else {
|
|
172
|
+
return RowSelected.True;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
return RowSelected.False;
|
|
177
|
+
};
|
|
178
|
+
const isSelected = (selected, itemIndex) => {
|
|
179
|
+
for (const item of selected) {
|
|
180
|
+
if (typeof item === "number") {
|
|
181
|
+
if (item === itemIndex) {
|
|
182
|
+
return true;
|
|
183
|
+
} else if (item > itemIndex) {
|
|
184
|
+
return false;
|
|
185
|
+
}
|
|
186
|
+
} else if (rangeIncludes(item, itemIndex)) {
|
|
187
|
+
return true;
|
|
188
|
+
} else if (item[0] > itemIndex) {
|
|
189
|
+
return false;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
return false;
|
|
193
|
+
};
|
|
194
|
+
const expandSelection = (selected) => {
|
|
195
|
+
if (selected.every((selectedItem) => typeof selectedItem === "number")) {
|
|
196
|
+
return selected;
|
|
197
|
+
}
|
|
198
|
+
const expandedSelected = [];
|
|
199
|
+
for (const selectedItem of selected) {
|
|
200
|
+
if (typeof selectedItem === "number") {
|
|
201
|
+
expandedSelected.push(selectedItem);
|
|
202
|
+
} else {
|
|
203
|
+
for (let i = selectedItem[0]; i <= selectedItem[1]; i++) {
|
|
204
|
+
expandedSelected.push(i);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
return expandedSelected;
|
|
209
|
+
};
|
|
210
|
+
function splitRange([from, to], itemIndex) {
|
|
211
|
+
if (itemIndex === from) {
|
|
212
|
+
return [[from + 1, to]];
|
|
213
|
+
} else if (itemIndex === to) {
|
|
214
|
+
return [[from, to - 1]];
|
|
215
|
+
} else if (to - from === 2) {
|
|
216
|
+
return [from, to];
|
|
217
|
+
} else if (itemIndex === to - 1) {
|
|
218
|
+
return [[from, to - 2], to];
|
|
219
|
+
} else {
|
|
220
|
+
return [
|
|
221
|
+
[from, itemIndex - 1],
|
|
222
|
+
[itemIndex + 1, to]
|
|
223
|
+
];
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
const selectionCount = (selected = NO_SELECTION) => {
|
|
227
|
+
let count = selected.length;
|
|
228
|
+
for (const selectionItem of selected) {
|
|
229
|
+
if (Array.isArray(selectionItem)) {
|
|
230
|
+
const [from, to] = selectionItem;
|
|
231
|
+
count += to - (from + 1);
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
return count;
|
|
235
|
+
};
|
|
236
|
+
|
|
237
|
+
exports.RowSelected = RowSelected;
|
|
238
|
+
exports.deselectItem = deselectItem;
|
|
239
|
+
exports.expandSelection = expandSelection;
|
|
240
|
+
exports.getSelectionStatus = getSelectionStatus;
|
|
241
|
+
exports.isRowSelected = isRowSelected;
|
|
242
|
+
exports.isRowSelectedLast = isRowSelectedLast;
|
|
243
|
+
exports.isSelected = isSelected;
|
|
244
|
+
exports.selectItem = selectItem;
|
|
245
|
+
exports.selectionCount = selectionCount;
|
|
246
|
+
//# sourceMappingURL=selection-utils.js.map
|