@vuu-ui/vuu-utils 3.0.0 → 3.1.0-beta.2
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/package.json +16 -12
- package/src/Clock.js +43 -0
- package/src/PageVisibilityObserver.js +42 -0
- package/src/ScaledDecimal.js +32 -0
- package/src/ShellContext.js +5 -0
- package/src/ThemeProvider.js +56 -0
- package/src/array-utils.js +61 -0
- package/src/box-utils.js +51 -0
- package/src/broadcast-channel.js +0 -0
- package/src/column-utils.js +787 -0
- package/src/common-types.js +11 -0
- package/src/component-registry.js +83 -0
- package/src/context-definitions/DataContext.js +15 -0
- package/src/context-definitions/DataProvider.js +13 -0
- package/src/context-definitions/DataSourceProvider.js +18 -0
- package/src/context-definitions/WorkspaceContext.js +14 -0
- package/src/cookie-utils.js +15 -0
- package/src/css-utils.js +5 -0
- package/src/data-utils.js +66 -0
- package/src/datasource/BaseDataSource.js +233 -0
- package/src/datasource/datasource-action-utils.js +6 -0
- package/src/datasource/datasource-filter-utils.js +27 -0
- package/src/datasource/datasource-utils.js +148 -0
- package/src/date/date-utils.js +80 -0
- package/src/date/dateTimePattern.js +17 -0
- package/src/date/formatter.js +101 -0
- package/src/date/index.js +4 -0
- package/src/date/types.js +27 -0
- package/src/debug-utils.js +25 -0
- package/src/edit-utils.js +2 -0
- package/{esm/packages/vuu-utils/src → src}/errors.js +0 -2
- package/src/event-emitter.js +78 -0
- package/src/feature-utils.js +86 -0
- package/src/filters/filter-utils.js +136 -0
- package/src/filters/filterAsQuery.js +70 -0
- package/src/filters/index.js +2 -0
- package/src/form-utils.js +71 -0
- package/src/formatting-utils.js +58 -0
- package/src/getUniqueId.js +2 -0
- package/src/group-utils.js +16 -0
- package/src/html-utils.js +108 -0
- package/src/index.js +74 -0
- package/src/input-utils.js +3 -0
- package/src/invariant.js +9 -0
- package/src/itemToString.js +9 -0
- package/src/json-types.js +0 -0
- package/src/json-utils.js +108 -0
- package/{esm/packages/vuu-utils/src → src}/keyboard-utils.js +1 -3
- package/src/keyset.js +57 -0
- package/src/layout-types.js +0 -0
- package/src/list-utils.js +5 -0
- package/src/local-storage-utils.js +23 -0
- package/src/logging-utils.js +52 -0
- package/src/module-utils.js +2 -0
- package/src/nanoid/index.js +13 -0
- package/src/perf-utils.js +28 -0
- package/src/promise-utils.js +26 -0
- package/src/protocol-message-utils.js +71 -0
- package/src/range-utils.js +125 -0
- package/src/react-utils.js +64 -0
- package/src/round-decimal.js +83 -0
- package/src/row-utils.js +43 -0
- package/src/selection-utils.js +50 -0
- package/src/shell-layout-types.js +9 -0
- package/src/sort-utils.js +75 -0
- package/src/table-schema-utils.js +16 -0
- package/src/text-utils.js +15 -0
- package/src/theme-utils.js +21 -0
- package/src/tree-types.js +0 -0
- package/src/tree-utils.js +96 -0
- package/src/ts-utils.js +6 -0
- package/src/typeahead-utils.js +4 -0
- package/src/url-utils.js +12 -0
- package/src/useId.js +6 -0
- package/src/useLayoutEffectSkipFirst.js +9 -0
- package/src/useResizeObserver.js +122 -0
- package/src/useStateRef.js +21 -0
- package/src/user-types.js +0 -0
- package/cjs/node_modules/@dnd-kit/abstract/index.js +0 -1488
- package/cjs/node_modules/@dnd-kit/abstract/index.js.map +0 -1
- package/cjs/node_modules/@dnd-kit/abstract/modifiers.js +0 -85
- package/cjs/node_modules/@dnd-kit/abstract/modifiers.js.map +0 -1
- package/cjs/node_modules/@dnd-kit/collision/dist/index.js +0 -91
- package/cjs/node_modules/@dnd-kit/collision/dist/index.js.map +0 -1
- package/cjs/node_modules/@dnd-kit/dom/index.js +0 -1991
- package/cjs/node_modules/@dnd-kit/dom/index.js.map +0 -1
- package/cjs/node_modules/@dnd-kit/dom/sortable.js +0 -828
- package/cjs/node_modules/@dnd-kit/dom/sortable.js.map +0 -1
- package/cjs/node_modules/@dnd-kit/dom/utilities.js +0 -1389
- package/cjs/node_modules/@dnd-kit/dom/utilities.js.map +0 -1
- package/cjs/node_modules/@dnd-kit/geometry/dist/index.js +0 -310
- package/cjs/node_modules/@dnd-kit/geometry/dist/index.js.map +0 -1
- package/cjs/node_modules/@dnd-kit/react/hooks.js +0 -134
- package/cjs/node_modules/@dnd-kit/react/hooks.js.map +0 -1
- package/cjs/node_modules/@dnd-kit/react/index.js +0 -398
- package/cjs/node_modules/@dnd-kit/react/index.js.map +0 -1
- package/cjs/node_modules/@dnd-kit/react/sortable.js +0 -177
- package/cjs/node_modules/@dnd-kit/react/sortable.js.map +0 -1
- package/cjs/node_modules/@dnd-kit/react/utilities.js +0 -19
- package/cjs/node_modules/@dnd-kit/react/utilities.js.map +0 -1
- package/cjs/node_modules/@dnd-kit/state/dist/index.js +0 -280
- package/cjs/node_modules/@dnd-kit/state/dist/index.js.map +0 -1
- package/cjs/node_modules/@preact/signals-core/dist/signals-core.js +0 -11
- package/cjs/node_modules/@preact/signals-core/dist/signals-core.js.map +0 -1
- package/cjs/packages/vuu-utils/src/Clock.js +0 -62
- package/cjs/packages/vuu-utils/src/Clock.js.map +0 -1
- package/cjs/packages/vuu-utils/src/PageVisibilityObserver.js +0 -80
- package/cjs/packages/vuu-utils/src/PageVisibilityObserver.js.map +0 -1
- package/cjs/packages/vuu-utils/src/ScaledDecimal.js +0 -43
- package/cjs/packages/vuu-utils/src/ScaledDecimal.js.map +0 -1
- package/cjs/packages/vuu-utils/src/ShellContext.js +0 -13
- package/cjs/packages/vuu-utils/src/ShellContext.js.map +0 -1
- package/cjs/packages/vuu-utils/src/ThemeProvider.js +0 -85
- package/cjs/packages/vuu-utils/src/ThemeProvider.js.map +0 -1
- package/cjs/packages/vuu-utils/src/array-utils.js +0 -102
- package/cjs/packages/vuu-utils/src/array-utils.js.map +0 -1
- package/cjs/packages/vuu-utils/src/box-utils.js +0 -53
- package/cjs/packages/vuu-utils/src/box-utils.js.map +0 -1
- package/cjs/packages/vuu-utils/src/column-utils.js +0 -1056
- package/cjs/packages/vuu-utils/src/column-utils.js.map +0 -1
- package/cjs/packages/vuu-utils/src/common-types.js +0 -15
- package/cjs/packages/vuu-utils/src/common-types.js.map +0 -1
- package/cjs/packages/vuu-utils/src/component-registry.js +0 -144
- package/cjs/packages/vuu-utils/src/component-registry.js.map +0 -1
- package/cjs/packages/vuu-utils/src/context-definitions/DataContext.js +0 -21
- package/cjs/packages/vuu-utils/src/context-definitions/DataContext.js.map +0 -1
- package/cjs/packages/vuu-utils/src/context-definitions/DataProvider.js +0 -19
- package/cjs/packages/vuu-utils/src/context-definitions/DataProvider.js.map +0 -1
- package/cjs/packages/vuu-utils/src/context-definitions/DataSourceProvider.js +0 -33
- package/cjs/packages/vuu-utils/src/context-definitions/DataSourceProvider.js.map +0 -1
- package/cjs/packages/vuu-utils/src/context-definitions/WorkspaceContext.js +0 -20
- package/cjs/packages/vuu-utils/src/context-definitions/WorkspaceContext.js.map +0 -1
- package/cjs/packages/vuu-utils/src/cookie-utils.js +0 -22
- package/cjs/packages/vuu-utils/src/cookie-utils.js.map +0 -1
- package/cjs/packages/vuu-utils/src/css-utils.js +0 -9
- package/cjs/packages/vuu-utils/src/css-utils.js.map +0 -1
- package/cjs/packages/vuu-utils/src/data-utils.js +0 -110
- package/cjs/packages/vuu-utils/src/data-utils.js.map +0 -1
- package/cjs/packages/vuu-utils/src/datasource/BaseDataSource.js +0 -317
- package/cjs/packages/vuu-utils/src/datasource/BaseDataSource.js.map +0 -1
- package/cjs/packages/vuu-utils/src/datasource/datasource-action-utils.js +0 -14
- package/cjs/packages/vuu-utils/src/datasource/datasource-action-utils.js.map +0 -1
- package/cjs/packages/vuu-utils/src/datasource/datasource-filter-utils.js +0 -40
- package/cjs/packages/vuu-utils/src/datasource/datasource-filter-utils.js.map +0 -1
- package/cjs/packages/vuu-utils/src/datasource/datasource-utils.js +0 -218
- package/cjs/packages/vuu-utils/src/datasource/datasource-utils.js.map +0 -1
- package/cjs/packages/vuu-utils/src/date/date-utils.js +0 -131
- package/cjs/packages/vuu-utils/src/date/date-utils.js.map +0 -1
- package/cjs/packages/vuu-utils/src/date/dateTimePattern.js +0 -26
- package/cjs/packages/vuu-utils/src/date/dateTimePattern.js.map +0 -1
- package/cjs/packages/vuu-utils/src/date/formatter.js +0 -82
- package/cjs/packages/vuu-utils/src/date/formatter.js.map +0 -1
- package/cjs/packages/vuu-utils/src/date/types.js +0 -32
- package/cjs/packages/vuu-utils/src/date/types.js.map +0 -1
- package/cjs/packages/vuu-utils/src/debug-utils.js +0 -34
- package/cjs/packages/vuu-utils/src/debug-utils.js.map +0 -1
- package/cjs/packages/vuu-utils/src/edit-utils.js +0 -6
- package/cjs/packages/vuu-utils/src/edit-utils.js.map +0 -1
- package/cjs/packages/vuu-utils/src/errors.js +0 -7
- package/cjs/packages/vuu-utils/src/errors.js.map +0 -1
- package/cjs/packages/vuu-utils/src/event-emitter.js +0 -113
- package/cjs/packages/vuu-utils/src/event-emitter.js.map +0 -1
- package/cjs/packages/vuu-utils/src/feature-utils.js +0 -139
- package/cjs/packages/vuu-utils/src/feature-utils.js.map +0 -1
- package/cjs/packages/vuu-utils/src/filters/filter-utils.js +0 -182
- package/cjs/packages/vuu-utils/src/filters/filter-utils.js.map +0 -1
- package/cjs/packages/vuu-utils/src/filters/filterAsQuery.js +0 -69
- package/cjs/packages/vuu-utils/src/filters/filterAsQuery.js.map +0 -1
- package/cjs/packages/vuu-utils/src/form-utils.js +0 -123
- package/cjs/packages/vuu-utils/src/form-utils.js.map +0 -1
- package/cjs/packages/vuu-utils/src/formatting-utils.js +0 -114
- package/cjs/packages/vuu-utils/src/formatting-utils.js.map +0 -1
- package/cjs/packages/vuu-utils/src/getUniqueId.js +0 -6
- package/cjs/packages/vuu-utils/src/getUniqueId.js.map +0 -1
- package/cjs/packages/vuu-utils/src/group-utils.js +0 -27
- package/cjs/packages/vuu-utils/src/group-utils.js.map +0 -1
- package/cjs/packages/vuu-utils/src/html-utils.js +0 -162
- package/cjs/packages/vuu-utils/src/html-utils.js.map +0 -1
- package/cjs/packages/vuu-utils/src/index.js +0 -478
- package/cjs/packages/vuu-utils/src/index.js.map +0 -1
- package/cjs/packages/vuu-utils/src/input-utils.js +0 -10
- package/cjs/packages/vuu-utils/src/input-utils.js.map +0 -1
- package/cjs/packages/vuu-utils/src/invariant.js +0 -13
- package/cjs/packages/vuu-utils/src/invariant.js.map +0 -1
- package/cjs/packages/vuu-utils/src/itemToString.js +0 -23
- package/cjs/packages/vuu-utils/src/itemToString.js.map +0 -1
- package/cjs/packages/vuu-utils/src/json-utils.js +0 -105
- package/cjs/packages/vuu-utils/src/json-utils.js.map +0 -1
- package/cjs/packages/vuu-utils/src/keyboard-utils.js +0 -30
- package/cjs/packages/vuu-utils/src/keyboard-utils.js.map +0 -1
- package/cjs/packages/vuu-utils/src/keyset.js +0 -72
- package/cjs/packages/vuu-utils/src/keyset.js.map +0 -1
- package/cjs/packages/vuu-utils/src/list-utils.js +0 -11
- package/cjs/packages/vuu-utils/src/list-utils.js.map +0 -1
- package/cjs/packages/vuu-utils/src/local-storage-utils.js +0 -35
- package/cjs/packages/vuu-utils/src/local-storage-utils.js.map +0 -1
- package/cjs/packages/vuu-utils/src/logging-utils.js +0 -65
- package/cjs/packages/vuu-utils/src/logging-utils.js.map +0 -1
- package/cjs/packages/vuu-utils/src/module-utils.js +0 -6
- package/cjs/packages/vuu-utils/src/module-utils.js.map +0 -1
- package/cjs/packages/vuu-utils/src/nanoid/index.js +0 -22
- package/cjs/packages/vuu-utils/src/nanoid/index.js.map +0 -1
- package/cjs/packages/vuu-utils/src/perf-utils.js +0 -35
- package/cjs/packages/vuu-utils/src/perf-utils.js.map +0 -1
- package/cjs/packages/vuu-utils/src/promise-utils.js +0 -42
- package/cjs/packages/vuu-utils/src/promise-utils.js.map +0 -1
- package/cjs/packages/vuu-utils/src/protocol-message-utils.js +0 -110
- package/cjs/packages/vuu-utils/src/protocol-message-utils.js.map +0 -1
- package/cjs/packages/vuu-utils/src/range-utils.js +0 -140
- package/cjs/packages/vuu-utils/src/range-utils.js.map +0 -1
- package/cjs/packages/vuu-utils/src/react-utils.js +0 -72
- package/cjs/packages/vuu-utils/src/react-utils.js.map +0 -1
- package/cjs/packages/vuu-utils/src/round-decimal.js +0 -131
- package/cjs/packages/vuu-utils/src/round-decimal.js.map +0 -1
- package/cjs/packages/vuu-utils/src/row-utils.js +0 -59
- package/cjs/packages/vuu-utils/src/row-utils.js.map +0 -1
- package/cjs/packages/vuu-utils/src/selection-utils.js +0 -65
- package/cjs/packages/vuu-utils/src/selection-utils.js.map +0 -1
- package/cjs/packages/vuu-utils/src/shell-layout-types.js +0 -13
- package/cjs/packages/vuu-utils/src/shell-layout-types.js.map +0 -1
- package/cjs/packages/vuu-utils/src/sort-utils.js +0 -78
- package/cjs/packages/vuu-utils/src/sort-utils.js.map +0 -1
- package/cjs/packages/vuu-utils/src/table-schema-utils.js +0 -23
- package/cjs/packages/vuu-utils/src/table-schema-utils.js.map +0 -1
- package/cjs/packages/vuu-utils/src/text-utils.js +0 -26
- package/cjs/packages/vuu-utils/src/text-utils.js.map +0 -1
- package/cjs/packages/vuu-utils/src/theme-utils.js +0 -36
- package/cjs/packages/vuu-utils/src/theme-utils.js.map +0 -1
- package/cjs/packages/vuu-utils/src/tree-utils.js +0 -114
- package/cjs/packages/vuu-utils/src/tree-utils.js.map +0 -1
- package/cjs/packages/vuu-utils/src/ts-utils.js +0 -12
- package/cjs/packages/vuu-utils/src/ts-utils.js.map +0 -1
- package/cjs/packages/vuu-utils/src/typeahead-utils.js +0 -6
- package/cjs/packages/vuu-utils/src/typeahead-utils.js.map +0 -1
- package/cjs/packages/vuu-utils/src/url-utils.js +0 -21
- package/cjs/packages/vuu-utils/src/url-utils.js.map +0 -1
- package/cjs/packages/vuu-utils/src/useId.js +0 -9
- package/cjs/packages/vuu-utils/src/useId.js.map +0 -1
- package/cjs/packages/vuu-utils/src/useLayoutEffectSkipFirst.js +0 -17
- package/cjs/packages/vuu-utils/src/useLayoutEffectSkipFirst.js.map +0 -1
- package/cjs/packages/vuu-utils/src/useResizeObserver.js +0 -134
- package/cjs/packages/vuu-utils/src/useResizeObserver.js.map +0 -1
- package/cjs/packages/vuu-utils/src/useStateRef.js +0 -23
- package/cjs/packages/vuu-utils/src/useStateRef.js.map +0 -1
- package/esm/node_modules/@dnd-kit/abstract/index.js +0 -1472
- package/esm/node_modules/@dnd-kit/abstract/index.js.map +0 -1
- package/esm/node_modules/@dnd-kit/abstract/modifiers.js +0 -82
- package/esm/node_modules/@dnd-kit/abstract/modifiers.js.map +0 -1
- package/esm/node_modules/@dnd-kit/collision/dist/index.js +0 -86
- package/esm/node_modules/@dnd-kit/collision/dist/index.js.map +0 -1
- package/esm/node_modules/@dnd-kit/dom/index.js +0 -1977
- package/esm/node_modules/@dnd-kit/dom/index.js.map +0 -1
- package/esm/node_modules/@dnd-kit/dom/sortable.js +0 -822
- package/esm/node_modules/@dnd-kit/dom/sortable.js.map +0 -1
- package/esm/node_modules/@dnd-kit/dom/utilities.js +0 -1344
- package/esm/node_modules/@dnd-kit/dom/utilities.js.map +0 -1
- package/esm/node_modules/@dnd-kit/geometry/dist/index.js +0 -303
- package/esm/node_modules/@dnd-kit/geometry/dist/index.js.map +0 -1
- package/esm/node_modules/@dnd-kit/react/hooks.js +0 -126
- package/esm/node_modules/@dnd-kit/react/hooks.js.map +0 -1
- package/esm/node_modules/@dnd-kit/react/index.js +0 -392
- package/esm/node_modules/@dnd-kit/react/index.js.map +0 -1
- package/esm/node_modules/@dnd-kit/react/sortable.js +0 -175
- package/esm/node_modules/@dnd-kit/react/sortable.js.map +0 -1
- package/esm/node_modules/@dnd-kit/react/utilities.js +0 -17
- package/esm/node_modules/@dnd-kit/react/utilities.js.map +0 -1
- package/esm/node_modules/@dnd-kit/state/dist/index.js +0 -266
- package/esm/node_modules/@dnd-kit/state/dist/index.js.map +0 -1
- package/esm/node_modules/@preact/signals-core/dist/signals-core.js +0 -4
- package/esm/node_modules/@preact/signals-core/dist/signals-core.js.map +0 -1
- package/esm/packages/vuu-utils/src/Clock.js +0 -60
- package/esm/packages/vuu-utils/src/Clock.js.map +0 -1
- package/esm/packages/vuu-utils/src/PageVisibilityObserver.js +0 -78
- package/esm/packages/vuu-utils/src/PageVisibilityObserver.js.map +0 -1
- package/esm/packages/vuu-utils/src/ScaledDecimal.js +0 -37
- package/esm/packages/vuu-utils/src/ScaledDecimal.js.map +0 -1
- package/esm/packages/vuu-utils/src/ShellContext.js +0 -10
- package/esm/packages/vuu-utils/src/ShellContext.js.map +0 -1
- package/esm/packages/vuu-utils/src/ThemeProvider.js +0 -78
- package/esm/packages/vuu-utils/src/ThemeProvider.js.map +0 -1
- package/esm/packages/vuu-utils/src/array-utils.js +0 -93
- package/esm/packages/vuu-utils/src/array-utils.js.map +0 -1
- package/esm/packages/vuu-utils/src/box-utils.js +0 -47
- package/esm/packages/vuu-utils/src/box-utils.js.map +0 -1
- package/esm/packages/vuu-utils/src/column-utils.js +0 -968
- package/esm/packages/vuu-utils/src/column-utils.js.map +0 -1
- package/esm/packages/vuu-utils/src/common-types.js +0 -13
- package/esm/packages/vuu-utils/src/common-types.js.map +0 -1
- package/esm/packages/vuu-utils/src/component-registry.js +0 -128
- package/esm/packages/vuu-utils/src/component-registry.js.map +0 -1
- package/esm/packages/vuu-utils/src/context-definitions/DataContext.js +0 -18
- package/esm/packages/vuu-utils/src/context-definitions/DataContext.js.map +0 -1
- package/esm/packages/vuu-utils/src/context-definitions/DataProvider.js +0 -16
- package/esm/packages/vuu-utils/src/context-definitions/DataProvider.js.map +0 -1
- package/esm/packages/vuu-utils/src/context-definitions/DataSourceProvider.js +0 -29
- package/esm/packages/vuu-utils/src/context-definitions/DataSourceProvider.js.map +0 -1
- package/esm/packages/vuu-utils/src/context-definitions/WorkspaceContext.js +0 -17
- package/esm/packages/vuu-utils/src/context-definitions/WorkspaceContext.js.map +0 -1
- package/esm/packages/vuu-utils/src/cookie-utils.js +0 -19
- package/esm/packages/vuu-utils/src/cookie-utils.js.map +0 -1
- package/esm/packages/vuu-utils/src/css-utils.js +0 -7
- package/esm/packages/vuu-utils/src/css-utils.js.map +0 -1
- package/esm/packages/vuu-utils/src/data-utils.js +0 -95
- package/esm/packages/vuu-utils/src/data-utils.js.map +0 -1
- package/esm/packages/vuu-utils/src/datasource/BaseDataSource.js +0 -314
- package/esm/packages/vuu-utils/src/datasource/BaseDataSource.js.map +0 -1
- package/esm/packages/vuu-utils/src/datasource/datasource-action-utils.js +0 -8
- package/esm/packages/vuu-utils/src/datasource/datasource-action-utils.js.map +0 -1
- package/esm/packages/vuu-utils/src/datasource/datasource-filter-utils.js +0 -38
- package/esm/packages/vuu-utils/src/datasource/datasource-filter-utils.js.map +0 -1
- package/esm/packages/vuu-utils/src/datasource/datasource-utils.js +0 -193
- package/esm/packages/vuu-utils/src/datasource/datasource-utils.js.map +0 -1
- package/esm/packages/vuu-utils/src/date/date-utils.js +0 -121
- package/esm/packages/vuu-utils/src/date/date-utils.js.map +0 -1
- package/esm/packages/vuu-utils/src/date/dateTimePattern.js +0 -22
- package/esm/packages/vuu-utils/src/date/dateTimePattern.js.map +0 -1
- package/esm/packages/vuu-utils/src/date/formatter.js +0 -79
- package/esm/packages/vuu-utils/src/date/formatter.js.map +0 -1
- package/esm/packages/vuu-utils/src/date/types.js +0 -26
- package/esm/packages/vuu-utils/src/date/types.js.map +0 -1
- package/esm/packages/vuu-utils/src/debug-utils.js +0 -32
- package/esm/packages/vuu-utils/src/debug-utils.js.map +0 -1
- package/esm/packages/vuu-utils/src/edit-utils.js +0 -4
- package/esm/packages/vuu-utils/src/edit-utils.js.map +0 -1
- package/esm/packages/vuu-utils/src/errors.js.map +0 -1
- package/esm/packages/vuu-utils/src/event-emitter.js +0 -111
- package/esm/packages/vuu-utils/src/event-emitter.js.map +0 -1
- package/esm/packages/vuu-utils/src/feature-utils.js +0 -125
- package/esm/packages/vuu-utils/src/feature-utils.js.map +0 -1
- package/esm/packages/vuu-utils/src/filters/filter-utils.js +0 -159
- package/esm/packages/vuu-utils/src/filters/filter-utils.js.map +0 -1
- package/esm/packages/vuu-utils/src/filters/filterAsQuery.js +0 -65
- package/esm/packages/vuu-utils/src/filters/filterAsQuery.js.map +0 -1
- package/esm/packages/vuu-utils/src/form-utils.js +0 -116
- package/esm/packages/vuu-utils/src/form-utils.js.map +0 -1
- package/esm/packages/vuu-utils/src/formatting-utils.js +0 -109
- package/esm/packages/vuu-utils/src/formatting-utils.js.map +0 -1
- package/esm/packages/vuu-utils/src/getUniqueId.js +0 -4
- package/esm/packages/vuu-utils/src/getUniqueId.js.map +0 -1
- package/esm/packages/vuu-utils/src/group-utils.js +0 -23
- package/esm/packages/vuu-utils/src/group-utils.js.map +0 -1
- package/esm/packages/vuu-utils/src/html-utils.js +0 -145
- package/esm/packages/vuu-utils/src/html-utils.js.map +0 -1
- package/esm/packages/vuu-utils/src/index.js +0 -74
- package/esm/packages/vuu-utils/src/index.js.map +0 -1
- package/esm/packages/vuu-utils/src/input-utils.js +0 -7
- package/esm/packages/vuu-utils/src/input-utils.js.map +0 -1
- package/esm/packages/vuu-utils/src/invariant.js +0 -11
- package/esm/packages/vuu-utils/src/invariant.js.map +0 -1
- package/esm/packages/vuu-utils/src/itemToString.js +0 -21
- package/esm/packages/vuu-utils/src/itemToString.js.map +0 -1
- package/esm/packages/vuu-utils/src/json-utils.js +0 -103
- package/esm/packages/vuu-utils/src/json-utils.js.map +0 -1
- package/esm/packages/vuu-utils/src/keyboard-utils.js.map +0 -1
- package/esm/packages/vuu-utils/src/keyset.js +0 -70
- package/esm/packages/vuu-utils/src/keyset.js.map +0 -1
- package/esm/packages/vuu-utils/src/list-utils.js +0 -9
- package/esm/packages/vuu-utils/src/list-utils.js.map +0 -1
- package/esm/packages/vuu-utils/src/local-storage-utils.js +0 -30
- package/esm/packages/vuu-utils/src/local-storage-utils.js.map +0 -1
- package/esm/packages/vuu-utils/src/logging-utils.js +0 -61
- package/esm/packages/vuu-utils/src/logging-utils.js.map +0 -1
- package/esm/packages/vuu-utils/src/module-utils.js +0 -4
- package/esm/packages/vuu-utils/src/module-utils.js.map +0 -1
- package/esm/packages/vuu-utils/src/nanoid/index.js +0 -20
- package/esm/packages/vuu-utils/src/nanoid/index.js.map +0 -1
- package/esm/packages/vuu-utils/src/perf-utils.js +0 -32
- package/esm/packages/vuu-utils/src/perf-utils.js.map +0 -1
- package/esm/packages/vuu-utils/src/promise-utils.js +0 -40
- package/esm/packages/vuu-utils/src/promise-utils.js.map +0 -1
- package/esm/packages/vuu-utils/src/protocol-message-utils.js +0 -78
- package/esm/packages/vuu-utils/src/protocol-message-utils.js.map +0 -1
- package/esm/packages/vuu-utils/src/range-utils.js +0 -132
- package/esm/packages/vuu-utils/src/range-utils.js.map +0 -1
- package/esm/packages/vuu-utils/src/react-utils.js +0 -66
- package/esm/packages/vuu-utils/src/react-utils.js.map +0 -1
- package/esm/packages/vuu-utils/src/round-decimal.js +0 -127
- package/esm/packages/vuu-utils/src/round-decimal.js.map +0 -1
- package/esm/packages/vuu-utils/src/row-utils.js +0 -54
- package/esm/packages/vuu-utils/src/row-utils.js.map +0 -1
- package/esm/packages/vuu-utils/src/selection-utils.js +0 -61
- package/esm/packages/vuu-utils/src/selection-utils.js.map +0 -1
- package/esm/packages/vuu-utils/src/shell-layout-types.js +0 -11
- package/esm/packages/vuu-utils/src/shell-layout-types.js.map +0 -1
- package/esm/packages/vuu-utils/src/sort-utils.js +0 -73
- package/esm/packages/vuu-utils/src/sort-utils.js.map +0 -1
- package/esm/packages/vuu-utils/src/table-schema-utils.js +0 -20
- package/esm/packages/vuu-utils/src/table-schema-utils.js.map +0 -1
- package/esm/packages/vuu-utils/src/text-utils.js +0 -20
- package/esm/packages/vuu-utils/src/text-utils.js.map +0 -1
- package/esm/packages/vuu-utils/src/theme-utils.js +0 -34
- package/esm/packages/vuu-utils/src/theme-utils.js.map +0 -1
- package/esm/packages/vuu-utils/src/tree-utils.js +0 -108
- package/esm/packages/vuu-utils/src/tree-utils.js.map +0 -1
- package/esm/packages/vuu-utils/src/ts-utils.js +0 -8
- package/esm/packages/vuu-utils/src/ts-utils.js.map +0 -1
- package/esm/packages/vuu-utils/src/typeahead-utils.js +0 -4
- package/esm/packages/vuu-utils/src/typeahead-utils.js.map +0 -1
- package/esm/packages/vuu-utils/src/url-utils.js +0 -18
- package/esm/packages/vuu-utils/src/url-utils.js.map +0 -1
- package/esm/packages/vuu-utils/src/useId.js +0 -7
- package/esm/packages/vuu-utils/src/useId.js.map +0 -1
- package/esm/packages/vuu-utils/src/useLayoutEffectSkipFirst.js +0 -15
- package/esm/packages/vuu-utils/src/useLayoutEffectSkipFirst.js.map +0 -1
- package/esm/packages/vuu-utils/src/useResizeObserver.js +0 -130
- package/esm/packages/vuu-utils/src/useResizeObserver.js.map +0 -1
- package/esm/packages/vuu-utils/src/useStateRef.js +0 -21
- package/esm/packages/vuu-utils/src/useStateRef.js.map +0 -1
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { stringIsValidDecimal, stringIsValidInt, stringIsValidLong } from "./data-utils.js";
|
|
2
|
+
import { Time, isValidTimeString } from "./date/index.js";
|
|
3
|
+
import { queryClosest } from "./html-utils.js";
|
|
4
|
+
import { ScaledDecimal2, ScaledDecimal4, ScaledDecimal6, ScaledDecimal8 } from "./ScaledDecimal.js";
|
|
5
|
+
class DataValidationError extends Error {
|
|
6
|
+
actualType;
|
|
7
|
+
expectedType;
|
|
8
|
+
constructor(message, expectedType, actualType){
|
|
9
|
+
super(message);
|
|
10
|
+
this.actualType = actualType;
|
|
11
|
+
this.expectedType = expectedType;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
const getFieldName = (target)=>{
|
|
15
|
+
const saltFormField = queryClosest(target, "[data-field]");
|
|
16
|
+
const fieldName = saltFormField?.dataset.field;
|
|
17
|
+
if (fieldName) return fieldName;
|
|
18
|
+
throw Error("named form field not found");
|
|
19
|
+
};
|
|
20
|
+
const isNumber = (type, value)=>"number" === type;
|
|
21
|
+
const isValidRange = ([val1, val2])=>{
|
|
22
|
+
if (isValidTimeString(val1) && isValidTimeString(val2)) return val2 > val1;
|
|
23
|
+
return true;
|
|
24
|
+
};
|
|
25
|
+
function getTypedRange([value1, value2], dataType, options) {
|
|
26
|
+
return [
|
|
27
|
+
getTypedValue(value1, dataType, false, options),
|
|
28
|
+
getTypedValue(value2, dataType, false, options)
|
|
29
|
+
];
|
|
30
|
+
}
|
|
31
|
+
const getActualType = (value)=>{
|
|
32
|
+
if ("boolean" == typeof value) return "boolean";
|
|
33
|
+
if ("number" == typeof value) return "number";
|
|
34
|
+
return "string";
|
|
35
|
+
};
|
|
36
|
+
function getTypedValue(value, type, throwIfInvalid = false, options) {
|
|
37
|
+
switch(type){
|
|
38
|
+
case "int":
|
|
39
|
+
if (stringIsValidInt(value)) return parseInt(value, 10);
|
|
40
|
+
if (!throwIfInvalid) return;
|
|
41
|
+
throw Error(`value ${value} is not a valid ${type}`);
|
|
42
|
+
case "long":
|
|
43
|
+
if (stringIsValidLong(value)) return BigInt(value);
|
|
44
|
+
if (!throwIfInvalid) return;
|
|
45
|
+
throw Error(`value ${value} is not a valid ${type}`);
|
|
46
|
+
case "scaleddecimal2":
|
|
47
|
+
return ScaledDecimal2(value);
|
|
48
|
+
case "scaleddecimal4":
|
|
49
|
+
return ScaledDecimal4(value);
|
|
50
|
+
case "scaleddecimal6":
|
|
51
|
+
return ScaledDecimal6(value);
|
|
52
|
+
case "scaleddecimal8":
|
|
53
|
+
return ScaledDecimal8(value);
|
|
54
|
+
case "double":
|
|
55
|
+
case "number":
|
|
56
|
+
if (stringIsValidDecimal(value)) return parseFloat(value);
|
|
57
|
+
if (!throwIfInvalid) return;
|
|
58
|
+
throw new DataValidationError(`value ${value} is not a valid ${type}`, "decimal", getActualType(value));
|
|
59
|
+
case "boolean":
|
|
60
|
+
return "true" === value;
|
|
61
|
+
case "time":
|
|
62
|
+
if (isValidTimeString(value)) if (options?.type === "TimeString") return value;
|
|
63
|
+
else return +Time(value).asDate();
|
|
64
|
+
if (value.length > 0 && Time.isDateInMillis(value)) return Number(value);
|
|
65
|
+
if (!throwIfInvalid) return;
|
|
66
|
+
else throw Error(`value ${value} is not a valid ${type}`);
|
|
67
|
+
default:
|
|
68
|
+
return value;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
export { DataValidationError, getFieldName, getTypedRange, getTypedValue, isNumber, isValidRange };
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { isDateTimeDataValue, isMappedValueTypeRenderer, isNanoTimestampColumn, isTimeDataValue, isTypeDescriptor } from "./column-utils.js";
|
|
2
|
+
import { dateTimePattern, formatDate } from "./date/index.js";
|
|
3
|
+
import { roundDecimal, roundScaledDecimal } from "./round-decimal.js";
|
|
4
|
+
import { isNumericType } from "./protocol-message-utils.js";
|
|
5
|
+
const DEFAULT_NUMERIC_FORMAT = {};
|
|
6
|
+
const defaultValueFormatter = (value)=>null == value ? "" : "string" == typeof value ? value : value.toString();
|
|
7
|
+
const dateFormatter = (column)=>{
|
|
8
|
+
if (isNanoTimestampColumn(column)) {
|
|
9
|
+
const pattern = dateTimePattern(column.type);
|
|
10
|
+
const formatter = formatDate(pattern);
|
|
11
|
+
return (value)=>{
|
|
12
|
+
if ("string" != typeof value || "" === value) return "";
|
|
13
|
+
{
|
|
14
|
+
const bigIntValue = BigInt(value);
|
|
15
|
+
const dateTimeValue = Number(bigIntValue / 1000000n);
|
|
16
|
+
const nanoSeconds = (bigIntValue % 1000000n).toString().padStart(9, "0");
|
|
17
|
+
return `${formatter(new Date(dateTimeValue))}.${nanoSeconds}`;
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
{
|
|
22
|
+
const pattern = dateTimePattern(column.type);
|
|
23
|
+
const formatter = formatDate(pattern);
|
|
24
|
+
return (value)=>{
|
|
25
|
+
if ("number" == typeof value && 0 !== value) return formatter(new Date(value));
|
|
26
|
+
return "";
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
const numericFormatter = ({ align = "right", serverDataType, type })=>{
|
|
31
|
+
if (void 0 === type || "string" == typeof type) return defaultValueFormatter;
|
|
32
|
+
{
|
|
33
|
+
const { alignOnDecimals = false, decimals, roundingRule, useLocaleString, zeroPad = false } = type.formatting ?? DEFAULT_NUMERIC_FORMAT;
|
|
34
|
+
return (value)=>{
|
|
35
|
+
if (serverDataType?.startsWith("scaleddecimal")) if ("string" == typeof value) return roundScaledDecimal(value, align, decimals, zeroPad, alignOnDecimals, useLocaleString, roundingRule);
|
|
36
|
+
else throw Error(`[formatting-utils] numericFormatter, invalid data for ${serverDataType}: '${value}'`);
|
|
37
|
+
if ("string" == typeof value && (value.startsWith("Σ") || value.startsWith("["))) return value;
|
|
38
|
+
const number = "number" == typeof value ? value : "string" == typeof value ? parseFloat(value) : void 0;
|
|
39
|
+
return roundDecimal(number, align, decimals, zeroPad, alignOnDecimals, useLocaleString, roundingRule);
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
const mapFormatter = (map)=>(value)=>map[value] ?? "";
|
|
44
|
+
const NumericTypes = [
|
|
45
|
+
"decimal",
|
|
46
|
+
"number"
|
|
47
|
+
];
|
|
48
|
+
const getValueFormatter = (column)=>{
|
|
49
|
+
const { serverDataType = "string" } = column;
|
|
50
|
+
if (isDateTimeDataValue(column) || isTimeDataValue(column)) return dateFormatter(column);
|
|
51
|
+
const { type } = column;
|
|
52
|
+
if (isTypeDescriptor(type) && isMappedValueTypeRenderer(type?.renderer)) return mapFormatter(type.renderer.map);
|
|
53
|
+
if (isNumericType(serverDataType) || isTypeDescriptor(type) && NumericTypes.includes(type.name)) return numericFormatter(column);
|
|
54
|
+
if ("string" === serverDataType || "char" === serverDataType) return (value)=>value;
|
|
55
|
+
return defaultValueFormatter;
|
|
56
|
+
};
|
|
57
|
+
const lowerCase = (str)=>str.toLowerCase();
|
|
58
|
+
export { defaultValueFormatter, getValueFormatter, lowerCase, numericFormatter };
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
function addGroupColumn(groupBy, column) {
|
|
2
|
+
if (groupBy.length > 0) return groupBy.concat(column.name);
|
|
3
|
+
return [
|
|
4
|
+
column.name
|
|
5
|
+
];
|
|
6
|
+
}
|
|
7
|
+
const removeGroupColumn = (groupBy, column)=>groupBy.filter((colName)=>colName !== column.name);
|
|
8
|
+
const getGroupStatus = (columnName, groupBy)=>{
|
|
9
|
+
if (void 0 === groupBy || 0 === groupBy.length) return "no-groupby";
|
|
10
|
+
{
|
|
11
|
+
const indexPos = groupBy.indexOf(columnName);
|
|
12
|
+
if (-1 === indexPos) return 1 === groupBy.length ? "single-groupby-other-column" : "multi-groupby-other-columns";
|
|
13
|
+
return 1 === groupBy.length ? "single-groupby" : "single-groupby-other-column";
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
export { addGroupColumn, getGroupStatus, removeGroupColumn };
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
const createEl = (elementType, className, textContent)=>{
|
|
2
|
+
const el = document.createElement(elementType);
|
|
3
|
+
if (className) el.className = className;
|
|
4
|
+
if (textContent) el.textContent = textContent;
|
|
5
|
+
return el;
|
|
6
|
+
};
|
|
7
|
+
const getFocusableElement = (el, tabIndex)=>{
|
|
8
|
+
if (el) {
|
|
9
|
+
if (el.hasAttribute("tabindex")) {
|
|
10
|
+
const rootTabIndex = parseInt(el.getAttribute("tabindex"));
|
|
11
|
+
if (!isNaN(rootTabIndex) && (void 0 === tabIndex || rootTabIndex === tabIndex)) return el;
|
|
12
|
+
}
|
|
13
|
+
const focusableEl = "number" == typeof tabIndex ? el.querySelector(`[tabindex="${tabIndex}"]`) : el.querySelector("[tabindex]");
|
|
14
|
+
if (focusableEl) return focusableEl;
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
const getElementDataIndex = (el)=>{
|
|
18
|
+
if (el) {
|
|
19
|
+
const index = parseInt(el.dataset.index || "");
|
|
20
|
+
if (!isNaN(index)) return index;
|
|
21
|
+
}
|
|
22
|
+
return -1;
|
|
23
|
+
};
|
|
24
|
+
function queryClosest(el, cssQueryString, throwIfNotFound) {
|
|
25
|
+
if (el) {
|
|
26
|
+
const result = el.closest(cssQueryString);
|
|
27
|
+
if (result) return result;
|
|
28
|
+
}
|
|
29
|
+
if (!throwIfNotFound) return null;
|
|
30
|
+
throw Error(`no element found to match '${cssQueryString}'`);
|
|
31
|
+
}
|
|
32
|
+
const getClosest = (el, dataProperty)=>queryClosest(el, `[data-${dataProperty}]`);
|
|
33
|
+
const getClosestIndexItem = (el)=>getClosest(el, "index");
|
|
34
|
+
function getElementByDataIndex(container, index, throwIfNotFound = false) {
|
|
35
|
+
if (null == container && throwIfNotFound) throw Error("html-utils getElementByDataIndex, container is null");
|
|
36
|
+
const element = container?.querySelector(`[data-index="${index}"]`);
|
|
37
|
+
if (element) return element;
|
|
38
|
+
if (!throwIfNotFound) return;
|
|
39
|
+
throw Error("html-utils getElementByDataIndex, Item not found with data-index='${index}'");
|
|
40
|
+
}
|
|
41
|
+
const focusFirstFocusableElement = (el, tabIndex)=>{
|
|
42
|
+
requestAnimationFrame(()=>{
|
|
43
|
+
const focusableElement = getFocusableElement(el, tabIndex);
|
|
44
|
+
if (focusableElement) focusableElement.focus();
|
|
45
|
+
});
|
|
46
|
+
};
|
|
47
|
+
const isSelectableElement = (el)=>{
|
|
48
|
+
const item = el?.closest("[data-index]");
|
|
49
|
+
if (!item || item.ariaDisabled || "false" === item.dataset.selectable || item.querySelector('[data-selectable="false"],[aria-disabled="true"]')) return false;
|
|
50
|
+
return true;
|
|
51
|
+
};
|
|
52
|
+
const isInputElement = (el)=>{
|
|
53
|
+
if (null === el) return false;
|
|
54
|
+
return "INPUT" === el.tagName;
|
|
55
|
+
};
|
|
56
|
+
const isDateInput = (el)=>isInputElement(el) && el.classList.contains("saltDateInput-input");
|
|
57
|
+
const hasOpenOptionList = (el)=>{
|
|
58
|
+
if (null !== el) return "true" === el.ariaExpanded;
|
|
59
|
+
};
|
|
60
|
+
let size;
|
|
61
|
+
function getScrollbarSize() {
|
|
62
|
+
if (void 0 === size) {
|
|
63
|
+
let outer = document.createElement("div");
|
|
64
|
+
outer.className = "scrollable-content";
|
|
65
|
+
outer.style.width = "50px";
|
|
66
|
+
outer.style.height = "50px";
|
|
67
|
+
outer.style.overflowY = "scroll";
|
|
68
|
+
outer.style.position = "absolute";
|
|
69
|
+
outer.style.top = "-200px";
|
|
70
|
+
outer.style.left = "-200px";
|
|
71
|
+
const inner = document.createElement("div");
|
|
72
|
+
inner.style.height = "100px";
|
|
73
|
+
inner.style.width = "100%";
|
|
74
|
+
outer.appendChild(inner);
|
|
75
|
+
document.body.appendChild(outer);
|
|
76
|
+
const outerWidth = outer.offsetWidth;
|
|
77
|
+
const innerWidth = inner.offsetWidth;
|
|
78
|
+
document.body.removeChild(outer);
|
|
79
|
+
size = outerWidth - innerWidth;
|
|
80
|
+
outer = null;
|
|
81
|
+
}
|
|
82
|
+
return size;
|
|
83
|
+
}
|
|
84
|
+
const dispatchMouseEvent = (el, type)=>{
|
|
85
|
+
const evt = new MouseEvent(type, {
|
|
86
|
+
view: window,
|
|
87
|
+
bubbles: true,
|
|
88
|
+
cancelable: true
|
|
89
|
+
});
|
|
90
|
+
el.dispatchEvent(evt);
|
|
91
|
+
};
|
|
92
|
+
const dispatchKeyboardEvent = (el, type, key)=>{
|
|
93
|
+
const evt = new KeyboardEvent(type, {
|
|
94
|
+
key,
|
|
95
|
+
view: window,
|
|
96
|
+
bubbles: true,
|
|
97
|
+
cancelable: true
|
|
98
|
+
});
|
|
99
|
+
el.dispatchEvent(evt);
|
|
100
|
+
};
|
|
101
|
+
const dispatchCustomEvent = (el, type)=>{
|
|
102
|
+
const evt = new Event(type, {
|
|
103
|
+
bubbles: true,
|
|
104
|
+
cancelable: true
|
|
105
|
+
});
|
|
106
|
+
el.dispatchEvent(evt);
|
|
107
|
+
};
|
|
108
|
+
export { createEl, dispatchCustomEvent, dispatchKeyboardEvent, dispatchMouseEvent, focusFirstFocusableElement, getClosest, getClosestIndexItem, getElementByDataIndex, getElementDataIndex, getFocusableElement, getScrollbarSize, hasOpenOptionList, isDateInput, isInputElement, isSelectableElement, queryClosest };
|
package/src/index.js
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
export * from "./array-utils.js";
|
|
2
|
+
export * from "./box-utils.js";
|
|
3
|
+
export * from "./broadcast-channel.js";
|
|
4
|
+
export * from "./column-utils.js";
|
|
5
|
+
export * from "./common-types.js";
|
|
6
|
+
export * from "./component-registry.js";
|
|
7
|
+
export * from "./cookie-utils.js";
|
|
8
|
+
export * from "./css-utils.js";
|
|
9
|
+
export * from "./data-utils.js";
|
|
10
|
+
export * from "./datasource/BaseDataSource.js";
|
|
11
|
+
export * from "./datasource/datasource-action-utils.js";
|
|
12
|
+
export * from "./datasource/datasource-filter-utils.js";
|
|
13
|
+
export * from "./datasource/datasource-utils.js";
|
|
14
|
+
export * from "./date/index.js";
|
|
15
|
+
export * from "./debug-utils.js";
|
|
16
|
+
export * from "./event-emitter.js";
|
|
17
|
+
export * from "./feature-utils.js";
|
|
18
|
+
export * from "./filters/index.js";
|
|
19
|
+
export * from "./form-utils.js";
|
|
20
|
+
export * from "./formatting-utils.js";
|
|
21
|
+
export * from "./getUniqueId.js";
|
|
22
|
+
export * from "./group-utils.js";
|
|
23
|
+
export * from "./html-utils.js";
|
|
24
|
+
export * from "./input-utils.js";
|
|
25
|
+
export * from "./invariant.js";
|
|
26
|
+
export * from "./itemToString.js";
|
|
27
|
+
export * from "./json-types.js";
|
|
28
|
+
export * from "./json-utils.js";
|
|
29
|
+
export * from "./keyboard-utils.js";
|
|
30
|
+
export * from "./keyset.js";
|
|
31
|
+
export * from "./layout-types.js";
|
|
32
|
+
export * from "./list-utils.js";
|
|
33
|
+
export * from "./local-storage-utils.js";
|
|
34
|
+
export * from "./logging-utils.js";
|
|
35
|
+
export * from "./module-utils.js";
|
|
36
|
+
export * from "./nanoid/index.js";
|
|
37
|
+
export * from "./perf-utils.js";
|
|
38
|
+
export * from "./promise-utils.js";
|
|
39
|
+
export * from "./protocol-message-utils.js";
|
|
40
|
+
export * from "./range-utils.js";
|
|
41
|
+
export * from "./react-utils.js";
|
|
42
|
+
export * from "./round-decimal.js";
|
|
43
|
+
export * from "./row-utils.js";
|
|
44
|
+
export * from "./ScaledDecimal.js";
|
|
45
|
+
export * from "./selection-utils.js";
|
|
46
|
+
export * from "./shell-layout-types.js";
|
|
47
|
+
export * from "./sort-utils.js";
|
|
48
|
+
export * from "./table-schema-utils.js";
|
|
49
|
+
export * from "./text-utils.js";
|
|
50
|
+
export * from "./ThemeProvider.js";
|
|
51
|
+
export * from "./tree-types.js";
|
|
52
|
+
export * from "./tree-utils.js";
|
|
53
|
+
export * from "./ts-utils.js";
|
|
54
|
+
export * from "./typeahead-utils.js";
|
|
55
|
+
export * from "./url-utils.js";
|
|
56
|
+
export * from "./useId.js";
|
|
57
|
+
export * from "./useLayoutEffectSkipFirst.js";
|
|
58
|
+
export * from "./user-types.js";
|
|
59
|
+
export * from "./useStateRef.js";
|
|
60
|
+
export * from "./context-definitions/DataProvider.js";
|
|
61
|
+
export * from "./context-definitions/WorkspaceContext.js";
|
|
62
|
+
export * from "./ShellContext.js";
|
|
63
|
+
export { RestrictToHorizontalAxis } from "@dnd-kit/abstract/modifiers";
|
|
64
|
+
export { KeyboardSensor, PointerSensor } from "@dnd-kit/dom";
|
|
65
|
+
export { DragDropProvider, DragOverlay, useInstance } from "@dnd-kit/react";
|
|
66
|
+
export { useSortable } from "@dnd-kit/react/sortable";
|
|
67
|
+
export { Clock } from "./Clock.js";
|
|
68
|
+
export { isInlineEditingSession } from "./edit-utils.js";
|
|
69
|
+
export { StaleUpdateError } from "./errors.js";
|
|
70
|
+
export { WidthHeight, WidthOnly, useResizeObserver } from "./useResizeObserver.js";
|
|
71
|
+
export { DataContext } from "./context-definitions/DataContext.js";
|
|
72
|
+
export { DataSourceProvider, useDataSource } from "./context-definitions/DataSourceProvider.js";
|
|
73
|
+
export { PageVisibilityObserver } from "./PageVisibilityObserver.js";
|
|
74
|
+
export { ThemeLoadChecker } from "./theme-utils.js";
|
package/src/invariant.js
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
const isPlainObject = (obj)=>"[object Object]" === Object.prototype.toString.call(obj);
|
|
2
|
+
function itemToString(item) {
|
|
3
|
+
if ("string" == typeof item) return item;
|
|
4
|
+
if (!isPlainObject(item)) return String(item);
|
|
5
|
+
if (Object.prototype.hasOwnProperty.call(item, "label")) return String(item.label);
|
|
6
|
+
console.warn("itemToString: you've likely forgotten to set the label prop on the item object.\nYou can also provide your own `itemToString` implementation.");
|
|
7
|
+
return "";
|
|
8
|
+
}
|
|
9
|
+
export { itemToString };
|
|
File without changes
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { metadataKeys } from "./column-utils.js";
|
|
2
|
+
const { COUNT: COUNT } = metadataKeys;
|
|
3
|
+
const isJsonData = (value)=>"object" == typeof value && null !== value;
|
|
4
|
+
const vuuRowDataItemTypes = [
|
|
5
|
+
"boolean",
|
|
6
|
+
"number",
|
|
7
|
+
"string"
|
|
8
|
+
];
|
|
9
|
+
const isVuuRowDataItem = (value)=>vuuRowDataItemTypes.includes(typeof value);
|
|
10
|
+
const getCellValue = (attribute, attributeValue)=>{
|
|
11
|
+
if (Array.isArray(attributeValue)) return {
|
|
12
|
+
attribute: `${attribute}[`,
|
|
13
|
+
attributeValue: "",
|
|
14
|
+
isLeaf: false
|
|
15
|
+
};
|
|
16
|
+
if (isJsonData(attributeValue)) return {
|
|
17
|
+
attribute: `${attribute}{`,
|
|
18
|
+
attributeValue: "",
|
|
19
|
+
isLeaf: false
|
|
20
|
+
};
|
|
21
|
+
if (void 0 === attributeValue) return {
|
|
22
|
+
attribute,
|
|
23
|
+
attributeValue: "undefined",
|
|
24
|
+
isLeaf: true
|
|
25
|
+
};
|
|
26
|
+
if (isVuuRowDataItem(attributeValue)) return {
|
|
27
|
+
attribute,
|
|
28
|
+
attributeValue,
|
|
29
|
+
isLeaf: true
|
|
30
|
+
};
|
|
31
|
+
throw Error(`unsupported type ${typeof attributeValue} in JSON`);
|
|
32
|
+
};
|
|
33
|
+
const jsonColumnType = {
|
|
34
|
+
name: "json",
|
|
35
|
+
renderer: {
|
|
36
|
+
name: "json"
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
const jsonToDataSourceRows = (json)=>{
|
|
40
|
+
const cols = [];
|
|
41
|
+
cols.push({
|
|
42
|
+
className: "vuuJsonCell",
|
|
43
|
+
name: "Level 1",
|
|
44
|
+
type: jsonColumnType
|
|
45
|
+
}, {
|
|
46
|
+
className: "vuuJsonCell",
|
|
47
|
+
name: "Level 2",
|
|
48
|
+
type: jsonColumnType
|
|
49
|
+
});
|
|
50
|
+
const rows = [];
|
|
51
|
+
addChildValues(rows, json, cols);
|
|
52
|
+
return [
|
|
53
|
+
cols,
|
|
54
|
+
rows
|
|
55
|
+
];
|
|
56
|
+
};
|
|
57
|
+
const addChildValues = (rows, json, cols, index = {
|
|
58
|
+
value: 0
|
|
59
|
+
}, keyBase = "$root", depth = 0)=>{
|
|
60
|
+
let leafCount = 0;
|
|
61
|
+
let rowCount = 0;
|
|
62
|
+
if (depth === cols.length - 1) cols.push({
|
|
63
|
+
className: "vuuJsonCell",
|
|
64
|
+
name: `Level ${cols.length + 1}`,
|
|
65
|
+
hidden: true,
|
|
66
|
+
type: jsonColumnType
|
|
67
|
+
});
|
|
68
|
+
const columnEntries = Object.entries(json);
|
|
69
|
+
for(let i = 0; i < columnEntries.length; i++, index.value += 1){
|
|
70
|
+
const [key, value] = columnEntries[i];
|
|
71
|
+
const { attribute, attributeValue, isLeaf } = getCellValue(key, value);
|
|
72
|
+
const blanks = Array(depth).fill("");
|
|
73
|
+
const fullKey = `${keyBase}|${key}`;
|
|
74
|
+
const ts = 0;
|
|
75
|
+
const isNew = false;
|
|
76
|
+
const row = [
|
|
77
|
+
index.value,
|
|
78
|
+
index.value,
|
|
79
|
+
isLeaf,
|
|
80
|
+
false,
|
|
81
|
+
depth,
|
|
82
|
+
0,
|
|
83
|
+
fullKey,
|
|
84
|
+
0,
|
|
85
|
+
ts,
|
|
86
|
+
isNew,
|
|
87
|
+
...blanks,
|
|
88
|
+
attribute,
|
|
89
|
+
attributeValue
|
|
90
|
+
];
|
|
91
|
+
rows.push(row);
|
|
92
|
+
rowCount += 1;
|
|
93
|
+
if (isJsonData(value)) {
|
|
94
|
+
const [nestedLeafCount, nestedRowCount] = addChildValues(rows, value, cols, {
|
|
95
|
+
value: index.value + 1
|
|
96
|
+
}, fullKey, depth + 1);
|
|
97
|
+
row[COUNT] = nestedLeafCount;
|
|
98
|
+
leafCount += nestedLeafCount;
|
|
99
|
+
rowCount += nestedRowCount;
|
|
100
|
+
index.value += nestedRowCount;
|
|
101
|
+
} else leafCount += 1;
|
|
102
|
+
}
|
|
103
|
+
return [
|
|
104
|
+
leafCount,
|
|
105
|
+
rowCount
|
|
106
|
+
];
|
|
107
|
+
};
|
|
108
|
+
export { jsonToDataSourceRows };
|
|
@@ -10,7 +10,5 @@ const PageUp = "PageUp";
|
|
|
10
10
|
const PageDown = "PageDown";
|
|
11
11
|
const Space = " ";
|
|
12
12
|
const Tab = "Tab";
|
|
13
|
-
const isArrowKey = (key)
|
|
14
|
-
|
|
13
|
+
const isArrowKey = (key)=>"ArrowUp" === key || "ArrowDown" === key || "ArrowLeft" === key || "ArrowRight" === key;
|
|
15
14
|
export { ArrowDown, ArrowLeft, ArrowRight, ArrowUp, End, Enter, Escape, Home, PageDown, PageUp, Space, Tab, isArrowKey };
|
|
16
|
-
//# sourceMappingURL=keyboard-utils.js.map
|
package/src/keyset.js
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
const EMPTY = [];
|
|
2
|
+
class KeySet {
|
|
3
|
+
keys = new Map();
|
|
4
|
+
nextKeyValue = 0;
|
|
5
|
+
range;
|
|
6
|
+
constructor(range){
|
|
7
|
+
this.range = range;
|
|
8
|
+
this.init(range);
|
|
9
|
+
}
|
|
10
|
+
next(free = EMPTY) {
|
|
11
|
+
if (free.length > 0) return free.shift();
|
|
12
|
+
return this.nextKeyValue++;
|
|
13
|
+
}
|
|
14
|
+
init({ from, to }) {
|
|
15
|
+
this.keys.clear();
|
|
16
|
+
this.nextKeyValue = 0;
|
|
17
|
+
for(let rowIndex = from; rowIndex < to; rowIndex++){
|
|
18
|
+
const nextKeyValue = this.next();
|
|
19
|
+
this.keys.set(rowIndex, nextKeyValue);
|
|
20
|
+
}
|
|
21
|
+
return true;
|
|
22
|
+
}
|
|
23
|
+
reset(range) {
|
|
24
|
+
const { from, to } = range;
|
|
25
|
+
const newSize = to - from;
|
|
26
|
+
const currentSize = this.range.to - this.range.from;
|
|
27
|
+
this.range = range;
|
|
28
|
+
if (currentSize > newSize) return this.init(range);
|
|
29
|
+
const freeKeys = [];
|
|
30
|
+
this.keys.forEach((keyValue, rowIndex)=>{
|
|
31
|
+
if (rowIndex < from || rowIndex >= to) {
|
|
32
|
+
freeKeys.push(keyValue);
|
|
33
|
+
this.keys.delete(rowIndex);
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
for(let rowIndex = from; rowIndex < to; rowIndex++)if (!this.keys.has(rowIndex)) {
|
|
37
|
+
const nextKeyValue = this.next(freeKeys);
|
|
38
|
+
this.keys.set(rowIndex, nextKeyValue);
|
|
39
|
+
}
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
keyFor(rowIndex) {
|
|
43
|
+
const key = this.keys.get(rowIndex);
|
|
44
|
+
if (void 0 === key) {
|
|
45
|
+
console.log(`key not found
|
|
46
|
+
keys: ${this.toDebugString()}
|
|
47
|
+
`);
|
|
48
|
+
throw Error(`KeySet, no key found for rowIndex ${rowIndex}`);
|
|
49
|
+
}
|
|
50
|
+
return key;
|
|
51
|
+
}
|
|
52
|
+
toDebugString() {
|
|
53
|
+
return `${this.keys.size} keys
|
|
54
|
+
${Array.from(this.keys.entries()).sort(([key1], [key2])=>key1 - key2).map(([k, v])=>`${k}=>${v}`).join(",")}]\n`;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
export { KeySet };
|
|
File without changes
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
const getLocalEntity = (key, deleteOnRead = false)=>{
|
|
2
|
+
const data = localStorage.getItem(key);
|
|
3
|
+
if (data) {
|
|
4
|
+
if (deleteOnRead) localStorage.removeItem(key);
|
|
5
|
+
return JSON.parse(data);
|
|
6
|
+
}
|
|
7
|
+
};
|
|
8
|
+
const clearLocalEntity = (key)=>{
|
|
9
|
+
const doomedItem = localStorage.getItem(key);
|
|
10
|
+
if (!doomedItem) return false;
|
|
11
|
+
localStorage.removeItem(key);
|
|
12
|
+
return true;
|
|
13
|
+
};
|
|
14
|
+
const getAllLocalEntity = (url)=>Object.entries(localStorage).filter(([key])=>key.includes(url)).map(([, value])=>JSON.parse(value));
|
|
15
|
+
const saveLocalEntity = (key, data)=>{
|
|
16
|
+
try {
|
|
17
|
+
localStorage.setItem(key, JSON.stringify(data));
|
|
18
|
+
return data;
|
|
19
|
+
} catch {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
export { clearLocalEntity, getAllLocalEntity, getLocalEntity, saveLocalEntity };
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { getCookieValue } from "./cookie-utils.js";
|
|
2
|
+
const logLevels = [
|
|
3
|
+
"error",
|
|
4
|
+
"warn",
|
|
5
|
+
"info",
|
|
6
|
+
"debug"
|
|
7
|
+
];
|
|
8
|
+
const isValidLogLevel = (value)=>"string" == typeof value && logLevels.includes(value);
|
|
9
|
+
const DEFAULT_LOG_LEVEL = "error";
|
|
10
|
+
const NO_OP = ()=>void 0;
|
|
11
|
+
const DEFAULT_DEBUG_LEVEL = "production" === process.env.NODE_ENV ? "error" : "info";
|
|
12
|
+
const { loggingLevel: loggingLevel = DEFAULT_DEBUG_LEVEL } = getLoggingSettings();
|
|
13
|
+
const logger = (category)=>{
|
|
14
|
+
const debugEnabled = "debug" === loggingLevel;
|
|
15
|
+
const infoEnabled = debugEnabled || "info" === loggingLevel;
|
|
16
|
+
const warnEnabled = infoEnabled || "warn" === loggingLevel;
|
|
17
|
+
const errorEnabled = warnEnabled || "error" === loggingLevel;
|
|
18
|
+
const info = infoEnabled ? (message)=>console.info(`${Date.now()} [${category}] ${message}`) : NO_OP;
|
|
19
|
+
const warn = warnEnabled ? (message)=>console.warn(`[${category}] ${message}`) : NO_OP;
|
|
20
|
+
const debug = debugEnabled ? (message)=>console.debug(`${Date.now()} [${category}] ${message}`) : NO_OP;
|
|
21
|
+
const error = errorEnabled ? (message)=>console.error(`[${category}] ${message}`) : NO_OP;
|
|
22
|
+
if ("production" === process.env.NODE_ENV) return {
|
|
23
|
+
errorEnabled,
|
|
24
|
+
error
|
|
25
|
+
};
|
|
26
|
+
return {
|
|
27
|
+
debugEnabled,
|
|
28
|
+
infoEnabled,
|
|
29
|
+
warnEnabled,
|
|
30
|
+
errorEnabled,
|
|
31
|
+
info,
|
|
32
|
+
warn,
|
|
33
|
+
debug,
|
|
34
|
+
error
|
|
35
|
+
};
|
|
36
|
+
};
|
|
37
|
+
function getLoggingSettings() {
|
|
38
|
+
if ("u" > typeof loggingSettings) return loggingSettings;
|
|
39
|
+
return {
|
|
40
|
+
loggingLevel: getLoggingLevelFromCookie()
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
function getLoggingLevelFromCookie() {
|
|
44
|
+
const value = getCookieValue("vuu-logging-level");
|
|
45
|
+
if (isValidLogLevel(value)) return value;
|
|
46
|
+
return DEFAULT_LOG_LEVEL;
|
|
47
|
+
}
|
|
48
|
+
const getLoggingConfigForWorker = ()=>`const loggingSettings = { loggingLevel: "${getLoggingLevelFromCookie()}"};`;
|
|
49
|
+
const logUnhandledMessage = (message, context = "[logUnhandledStruct]")=>{
|
|
50
|
+
console.log(`${context} ${JSON.stringify(message)}`);
|
|
51
|
+
};
|
|
52
|
+
export { getLoggingConfigForWorker, logUnhandledMessage, logger };
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
const uuid = (size = 21)=>{
|
|
2
|
+
let id = '';
|
|
3
|
+
const bytes = crypto.getRandomValues(new Uint8Array(size));
|
|
4
|
+
while(size--){
|
|
5
|
+
const byte = 63 & bytes[size];
|
|
6
|
+
if (byte < 36) id += byte.toString(36);
|
|
7
|
+
else if (byte < 62) id += (byte - 26).toString(36).toUpperCase();
|
|
8
|
+
else if (byte < 63) id += '_';
|
|
9
|
+
else id += '-';
|
|
10
|
+
}
|
|
11
|
+
return id;
|
|
12
|
+
};
|
|
13
|
+
export { uuid };
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
function debounce(callback, timeInterval) {
|
|
2
|
+
let timeout;
|
|
3
|
+
return (...args)=>{
|
|
4
|
+
clearTimeout(timeout);
|
|
5
|
+
timeout = window.setTimeout(()=>callback(...args), timeInterval);
|
|
6
|
+
};
|
|
7
|
+
}
|
|
8
|
+
function throttle(callback, limit) {
|
|
9
|
+
let wait = false;
|
|
10
|
+
let lastArgs;
|
|
11
|
+
function checkLastArgs() {
|
|
12
|
+
if (void 0 == lastArgs) wait = false;
|
|
13
|
+
else {
|
|
14
|
+
callback(...lastArgs);
|
|
15
|
+
lastArgs = void 0;
|
|
16
|
+
setTimeout(checkLastArgs, limit);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
return (...args)=>{
|
|
20
|
+
if (wait) lastArgs = args;
|
|
21
|
+
else {
|
|
22
|
+
callback(...args);
|
|
23
|
+
wait = true;
|
|
24
|
+
setTimeout(checkLastArgs, limit);
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
export { debounce, throttle };
|