@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,26 @@
|
|
|
1
|
+
class DeferredPromise {
|
|
2
|
+
#promise;
|
|
3
|
+
#resolve = ()=>console.log("resolve was not set");
|
|
4
|
+
#reject = ()=>console.log("reject was not set");
|
|
5
|
+
#resolved = false;
|
|
6
|
+
constructor(){
|
|
7
|
+
this.#promise = new Promise((resolve, reject)=>{
|
|
8
|
+
this.#resolve = resolve;
|
|
9
|
+
this.#reject = reject;
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
get promise() {
|
|
13
|
+
return this.#promise;
|
|
14
|
+
}
|
|
15
|
+
get isResolved() {
|
|
16
|
+
return this.#resolved;
|
|
17
|
+
}
|
|
18
|
+
resolve(value) {
|
|
19
|
+
this.#resolved = true;
|
|
20
|
+
return this.#resolve(value);
|
|
21
|
+
}
|
|
22
|
+
get reject() {
|
|
23
|
+
return this.#reject;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
export { DeferredPromise };
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { isView } from "./component-registry.js";
|
|
2
|
+
const MENU_RPC_TYPES = [
|
|
3
|
+
"VIEW_PORT_MENUS_SELECT_RPC",
|
|
4
|
+
"VIEW_PORT_MENU_TABLE_RPC",
|
|
5
|
+
"VIEW_PORT_MENU_ROW_RPC",
|
|
6
|
+
"VIEW_PORT_MENU_CELL_RPC"
|
|
7
|
+
];
|
|
8
|
+
const INVALID_SESSION = "Invalid session";
|
|
9
|
+
const SESSION_LIMIT_EXCEEDED = "User session limit exceeded";
|
|
10
|
+
const INVALID_TOKEN = "Invalid token";
|
|
11
|
+
const TOKEN_EXPIRED = "Token has expired";
|
|
12
|
+
const InvalidLoginMessages = [
|
|
13
|
+
INVALID_SESSION,
|
|
14
|
+
SESSION_LIMIT_EXCEEDED,
|
|
15
|
+
INVALID_TOKEN,
|
|
16
|
+
TOKEN_EXPIRED
|
|
17
|
+
];
|
|
18
|
+
const isErrorMessage = (message)=>"object" == typeof message && message?.type === "ERROR";
|
|
19
|
+
const isLoginErrorMessage = (message)=>"string" == typeof message && InvalidLoginMessages.includes(message);
|
|
20
|
+
const isSelectRequest = (message)=>message && "object" == typeof message && "type" in message && ("SELECT_ROW" === message.type || "DESELECT_ROW" === message.type || "SELECT_ROW_RANGE" === message.type || "SELECT_ALL" === message.type || "DESELECT_ALL" === message.type);
|
|
21
|
+
const isSelectSuccessWithRowCount = (response)=>[
|
|
22
|
+
"SELECT_ROW_SUCCESS",
|
|
23
|
+
"DESELECT_ROW_SUCCESS",
|
|
24
|
+
"SELECT_ROW_RANGE_SUCCESS",
|
|
25
|
+
"SELECT_ALL_SUCCESS",
|
|
26
|
+
"DESELECT_ALL_SUCCESS"
|
|
27
|
+
].includes(response.type ?? "") && "number" == typeof response.selectedRowCount;
|
|
28
|
+
const isRpcServiceRequest = (message)=>"RPC_REQUEST" === message.type;
|
|
29
|
+
const hasViewPortContext = (message)=>"VIEWPORT_CONTEXT" === message.context.type;
|
|
30
|
+
const isVuuMenuRpcRequest = (message)=>MENU_RPC_TYPES.includes(message["type"]);
|
|
31
|
+
const isLoginResponse = (message)=>null !== message && "object" == typeof message && "type" in message && ("LOGIN_SUCCESS" === message.type || "LOGIN_FAIL" === message.type);
|
|
32
|
+
const isRpcSuccess = (rpcResult)=>rpcResult?.type === "SUCCESS_RESULT";
|
|
33
|
+
const isRpcError = (rpcResult)=>rpcResult?.type === "ERROR_RESULT";
|
|
34
|
+
const isRequestResponse = (message)=>"requestId" in message;
|
|
35
|
+
const isOpenSessionTableDialogMessage = (rpcResponse)=>"VIEW_PORT_MENU_RESP" === rpcResponse.type && isOpenDialogAction(rpcResponse.action) && "tableSchema" in rpcResponse.action;
|
|
36
|
+
const isOpenDialogAction = (action)=>void 0 !== action && "OPEN_DIALOG_ACTION" === action.type;
|
|
37
|
+
const isTypeaheadRequest = (request)=>isRpcServiceRequest(request) && ("getUniqueFieldValues" === request.rpcName || "getUniqueFieldValuesStartingWith" === request.rpcName);
|
|
38
|
+
const isCreateVpSuccess = (response)=>"CREATE_VP_SUCCESS" === response.type;
|
|
39
|
+
const isSessionTable = (table)=>{
|
|
40
|
+
if (null !== table && "object" == typeof table && "table" in table && "module" in table) return table.table.startsWith("session");
|
|
41
|
+
return false;
|
|
42
|
+
};
|
|
43
|
+
function isActionMessage(rpcResponse) {
|
|
44
|
+
return "VIEW_PORT_MENU_RESP" === rpcResponse.type;
|
|
45
|
+
}
|
|
46
|
+
function isSessionTableActionMessage(rpcResponse) {
|
|
47
|
+
return isActionMessage(rpcResponse) && isOpenDialogAction(rpcResponse.action) && isSessionTable(rpcResponse.action.table) && (rpcResponse.action?.renderComponent === "inline-form" || rpcResponse.action?.renderComponent === "grid");
|
|
48
|
+
}
|
|
49
|
+
function isCustomComponentActionMessage(rpcResponse) {
|
|
50
|
+
return isActionMessage(rpcResponse) && isOpenDialogAction(rpcResponse.action) && isSessionTable(rpcResponse.action.table) && "string" == typeof rpcResponse.action.renderComponent && isView(rpcResponse.action.renderComponent);
|
|
51
|
+
}
|
|
52
|
+
const numericTypes = [
|
|
53
|
+
"int",
|
|
54
|
+
"long",
|
|
55
|
+
"double",
|
|
56
|
+
"scaleddecimal2",
|
|
57
|
+
"scaleddecimal4",
|
|
58
|
+
"scaleddecimal6",
|
|
59
|
+
"scaleddecimal8"
|
|
60
|
+
];
|
|
61
|
+
function isNumericType(dataType) {
|
|
62
|
+
return numericTypes.includes(dataType);
|
|
63
|
+
}
|
|
64
|
+
const isAddRowRpcRequest = (rpcRequest)=>"addRow" === rpcRequest.rpcName;
|
|
65
|
+
const isEditCellRpcRequest = (rpcRequest)=>"editCell" === rpcRequest.rpcName;
|
|
66
|
+
const isBeginEditSessionRpcRequest = (rpcRequest)=>"beginEditSession" === rpcRequest.rpcName;
|
|
67
|
+
const isEndEditSessionRpcRequest = (rpcRequest)=>"endEditSession" === rpcRequest.rpcName;
|
|
68
|
+
const isUndoRowChangeRpcRequest = (rpcRequest)=>"undoRowChange" === rpcRequest.rpcName;
|
|
69
|
+
const isDeleteSelectedRowsRpcRequest = (rpcRequest)=>"deleteSelectedRows" === rpcRequest.rpcName;
|
|
70
|
+
const isCreateSessionTableRpcRequest = (rpcRequest)=>"createSessionTable" === rpcRequest.rpcName;
|
|
71
|
+
export { INVALID_SESSION, INVALID_TOKEN, SESSION_LIMIT_EXCEEDED, TOKEN_EXPIRED, hasViewPortContext, isActionMessage, isAddRowRpcRequest, isBeginEditSessionRpcRequest, isCreateSessionTableRpcRequest, isCreateVpSuccess, isCustomComponentActionMessage, isDeleteSelectedRowsRpcRequest, isEditCellRpcRequest, isEndEditSessionRpcRequest, isErrorMessage, isLoginErrorMessage, isLoginResponse, isNumericType, isOpenDialogAction, isOpenSessionTableDialogMessage, isRequestResponse, isRpcError, isRpcServiceRequest, isRpcSuccess, isSelectRequest, isSelectSuccessWithRowCount, isSessionTable, isSessionTableActionMessage, isTypeaheadRequest, isUndoRowChangeRpcRequest, isVuuMenuRpcRequest };
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
class RangeImpl {
|
|
2
|
+
from;
|
|
3
|
+
to;
|
|
4
|
+
#baseFrom;
|
|
5
|
+
#renderBufferSize = 0;
|
|
6
|
+
#baseTo;
|
|
7
|
+
constructor(from, to, renderBufferSize = 0){
|
|
8
|
+
this.from = from;
|
|
9
|
+
this.to = to;
|
|
10
|
+
this.#baseFrom = from;
|
|
11
|
+
this.#baseTo = to;
|
|
12
|
+
this.#renderBufferSize = renderBufferSize;
|
|
13
|
+
}
|
|
14
|
+
get reset() {
|
|
15
|
+
return new RangeImpl(0, this.#baseTo - this.#baseFrom, this.#renderBufferSize);
|
|
16
|
+
}
|
|
17
|
+
get withBuffer() {
|
|
18
|
+
return getFullRange(this, this.#renderBufferSize);
|
|
19
|
+
}
|
|
20
|
+
equals(range) {
|
|
21
|
+
return range.from === this.#baseFrom && range.to === this.#baseTo;
|
|
22
|
+
}
|
|
23
|
+
toJson() {
|
|
24
|
+
return {
|
|
25
|
+
from: this.from,
|
|
26
|
+
to: this.to,
|
|
27
|
+
baseFrom: this.#baseFrom,
|
|
28
|
+
baseTo: this.#baseTo,
|
|
29
|
+
renderBufferSize: this.#renderBufferSize
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
const Range = (from, to, renderBufferSize)=>new RangeImpl(from, to, renderBufferSize);
|
|
34
|
+
const NULL_RANGE = Range(0, 0);
|
|
35
|
+
function getFullRange({ from, to }, bufferSize = 0, maxRangeEnd = Number.MAX_SAFE_INTEGER) {
|
|
36
|
+
if (0 === from && 0 === to) return {
|
|
37
|
+
from,
|
|
38
|
+
to
|
|
39
|
+
};
|
|
40
|
+
if (0 === bufferSize) if (maxRangeEnd < from) return {
|
|
41
|
+
from: 0,
|
|
42
|
+
to: 0
|
|
43
|
+
};
|
|
44
|
+
else return {
|
|
45
|
+
from,
|
|
46
|
+
to: Math.min(to, maxRangeEnd)
|
|
47
|
+
};
|
|
48
|
+
{
|
|
49
|
+
if (0 === from) return {
|
|
50
|
+
from,
|
|
51
|
+
to: Math.min(to + bufferSize, maxRangeEnd)
|
|
52
|
+
};
|
|
53
|
+
const shortfallBefore = from - bufferSize < 0;
|
|
54
|
+
const shortfallAfter = maxRangeEnd - (to + bufferSize) < 0;
|
|
55
|
+
if (shortfallBefore && shortfallAfter) return {
|
|
56
|
+
from: 0,
|
|
57
|
+
to: maxRangeEnd
|
|
58
|
+
};
|
|
59
|
+
if (shortfallBefore) return {
|
|
60
|
+
from: 0,
|
|
61
|
+
to: to + bufferSize
|
|
62
|
+
};
|
|
63
|
+
if (shortfallAfter) return {
|
|
64
|
+
from: Math.max(0, from - bufferSize),
|
|
65
|
+
to: maxRangeEnd
|
|
66
|
+
};
|
|
67
|
+
else return {
|
|
68
|
+
from: from - bufferSize,
|
|
69
|
+
to: to + bufferSize
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
const withinRange = (value, { from, to })=>value >= from && value < to;
|
|
74
|
+
const rangeNewItems = ({ from: from1, to: to1 }, newRange)=>{
|
|
75
|
+
const { from: from2, to: to2 } = newRange;
|
|
76
|
+
const noOverlap = from2 >= to1 || to2 <= from1;
|
|
77
|
+
const newFullySubsumesOld = from2 < from1 && to2 > to1;
|
|
78
|
+
return noOverlap || newFullySubsumesOld ? newRange : to2 > to1 ? {
|
|
79
|
+
from: to1,
|
|
80
|
+
to: to2
|
|
81
|
+
} : {
|
|
82
|
+
from: from2,
|
|
83
|
+
to: from1
|
|
84
|
+
};
|
|
85
|
+
};
|
|
86
|
+
class WindowRange {
|
|
87
|
+
from;
|
|
88
|
+
to;
|
|
89
|
+
constructor(from, to){
|
|
90
|
+
this.from = from;
|
|
91
|
+
this.to = to;
|
|
92
|
+
}
|
|
93
|
+
isWithin(index) {
|
|
94
|
+
return withinRange(index, this);
|
|
95
|
+
}
|
|
96
|
+
overlap(from, to) {
|
|
97
|
+
return from >= this.to || to < this.from ? [
|
|
98
|
+
0,
|
|
99
|
+
0
|
|
100
|
+
] : [
|
|
101
|
+
Math.max(from, this.from),
|
|
102
|
+
Math.min(to, this.to)
|
|
103
|
+
];
|
|
104
|
+
}
|
|
105
|
+
copy() {
|
|
106
|
+
return new WindowRange(this.from, this.to);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
const constrainRangeWidth = (range, maxRangeWidth = Number.MAX_SAFE_INTEGER)=>{
|
|
110
|
+
if (range.to - range.from < maxRangeWidth) return range;
|
|
111
|
+
console.warn(`[range-utils] range ${range.from} - ${range.to} exceeds maxRangeWidth ${maxRangeWidth} for this table `);
|
|
112
|
+
return {
|
|
113
|
+
from: range.from,
|
|
114
|
+
to: range.from + maxRangeWidth
|
|
115
|
+
};
|
|
116
|
+
};
|
|
117
|
+
const constrainRange = (range, maxRangeEnd, maxRangeWidth)=>{
|
|
118
|
+
if (!(maxRangeEnd > 0) || !(maxRangeEnd < range.to)) return constrainRangeWidth(range, maxRangeWidth);
|
|
119
|
+
if (maxRangeEnd > range.from) return constrainRangeWidth({
|
|
120
|
+
from: range.from,
|
|
121
|
+
to: maxRangeEnd
|
|
122
|
+
}, maxRangeWidth);
|
|
123
|
+
throw Error(`constrainRange: cannot apply the maxRangeEnd ${maxRangeEnd} to range ${range.from} - ${range.to}`);
|
|
124
|
+
};
|
|
125
|
+
export { NULL_RANGE, Range, WindowRange, constrainRange, getFullRange, rangeNewItems, withinRange };
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { Children, isValidElement, useEffect, useMemo, useRef } from "react";
|
|
2
|
+
const EMPTY_ARRAY = [];
|
|
3
|
+
const asReactElements = (children)=>{
|
|
4
|
+
const isArray = Array.isArray(children);
|
|
5
|
+
const count = isArray ? children.length : Children.count(children);
|
|
6
|
+
if (isArray && children.every(isValidElement)) return children;
|
|
7
|
+
if (1 === count && !isArray && isValidElement(children)) return [
|
|
8
|
+
children
|
|
9
|
+
];
|
|
10
|
+
if (count > 1) return children;
|
|
11
|
+
return EMPTY_ARRAY;
|
|
12
|
+
};
|
|
13
|
+
const useIsMounted = (id = "")=>{
|
|
14
|
+
const isMountedRef = useRef(false);
|
|
15
|
+
useEffect(()=>{
|
|
16
|
+
console.log(`is MOUNTED ${id}`);
|
|
17
|
+
isMountedRef.current = true;
|
|
18
|
+
return ()=>{
|
|
19
|
+
console.log(`is UNMOUNTED ${id}`);
|
|
20
|
+
isMountedRef.current = false;
|
|
21
|
+
};
|
|
22
|
+
}, [
|
|
23
|
+
id
|
|
24
|
+
]);
|
|
25
|
+
return isMountedRef;
|
|
26
|
+
};
|
|
27
|
+
const isSimpleStateValue = (arg)=>"function" != typeof arg;
|
|
28
|
+
const createSyntheticEvent = (event)=>{
|
|
29
|
+
let isDefaultPrevented = false;
|
|
30
|
+
let isPropagationStopped = false;
|
|
31
|
+
const preventDefault = ()=>{
|
|
32
|
+
isDefaultPrevented = true;
|
|
33
|
+
event.preventDefault();
|
|
34
|
+
};
|
|
35
|
+
const stopPropagation = ()=>{
|
|
36
|
+
isPropagationStopped = true;
|
|
37
|
+
event.stopPropagation();
|
|
38
|
+
};
|
|
39
|
+
return {
|
|
40
|
+
nativeEvent: event,
|
|
41
|
+
currentTarget: event.currentTarget,
|
|
42
|
+
target: event.target,
|
|
43
|
+
bubbles: event.bubbles,
|
|
44
|
+
cancelable: event.cancelable,
|
|
45
|
+
defaultPrevented: event.defaultPrevented,
|
|
46
|
+
eventPhase: event.eventPhase,
|
|
47
|
+
isTrusted: event.isTrusted,
|
|
48
|
+
preventDefault,
|
|
49
|
+
isDefaultPrevented: ()=>isDefaultPrevented,
|
|
50
|
+
stopPropagation,
|
|
51
|
+
isPropagationStopped: ()=>isPropagationStopped,
|
|
52
|
+
persist: ()=>void 0,
|
|
53
|
+
timeStamp: event.timeStamp,
|
|
54
|
+
type: event.type
|
|
55
|
+
};
|
|
56
|
+
};
|
|
57
|
+
const useStableReference = (value)=>{
|
|
58
|
+
const referenceToProp = useRef(value);
|
|
59
|
+
useMemo(()=>referenceToProp.current = value, [
|
|
60
|
+
value
|
|
61
|
+
]);
|
|
62
|
+
return referenceToProp;
|
|
63
|
+
};
|
|
64
|
+
export { asReactElements, createSyntheticEvent, isSimpleStateValue, useIsMounted, useStableReference };
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
const PUNCTUATION_STR = String.fromCharCode(8200);
|
|
2
|
+
const DIGIT_STR = String.fromCharCode(8199);
|
|
3
|
+
const DECIMALS_AUTO = -1;
|
|
4
|
+
const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER.toString();
|
|
5
|
+
const MAX_INTEGER_DIGITS = MAX_SAFE_INTEGER.length;
|
|
6
|
+
const exceedsMaxSafeInteger = (value)=>value.length > MAX_INTEGER_DIGITS || value.length === MAX_INTEGER_DIGITS && value > MAX_SAFE_INTEGER;
|
|
7
|
+
const Space = {
|
|
8
|
+
DIGIT: DIGIT_STR,
|
|
9
|
+
TWO_DIGITS: DIGIT_STR + DIGIT_STR,
|
|
10
|
+
THREE_DIGITS: DIGIT_STR + DIGIT_STR + DIGIT_STR,
|
|
11
|
+
FULL_PADDING: [
|
|
12
|
+
null,
|
|
13
|
+
PUNCTUATION_STR + DIGIT_STR,
|
|
14
|
+
PUNCTUATION_STR + DIGIT_STR + DIGIT_STR,
|
|
15
|
+
PUNCTUATION_STR + DIGIT_STR + DIGIT_STR + DIGIT_STR,
|
|
16
|
+
PUNCTUATION_STR + DIGIT_STR + DIGIT_STR + DIGIT_STR + DIGIT_STR
|
|
17
|
+
]
|
|
18
|
+
};
|
|
19
|
+
const Zero = {
|
|
20
|
+
DIGIT: "0",
|
|
21
|
+
TWO_DIGITS: "00",
|
|
22
|
+
THREE_DIGITS: "000",
|
|
23
|
+
FULL_PADDING: [
|
|
24
|
+
null,
|
|
25
|
+
"0",
|
|
26
|
+
"00",
|
|
27
|
+
"000",
|
|
28
|
+
"0000"
|
|
29
|
+
]
|
|
30
|
+
};
|
|
31
|
+
function padLeft(value, maxLength = 6) {
|
|
32
|
+
return (LEADING_FILL + value).slice(-maxLength);
|
|
33
|
+
}
|
|
34
|
+
const LEADING_FILL = DIGIT_STR + DIGIT_STR + DIGIT_STR + DIGIT_STR + DIGIT_STR + DIGIT_STR + DIGIT_STR + DIGIT_STR + DIGIT_STR;
|
|
35
|
+
const Align = {
|
|
36
|
+
Right: "right",
|
|
37
|
+
Center: "center",
|
|
38
|
+
Left: "left"
|
|
39
|
+
};
|
|
40
|
+
function pad(n, dp, Pad) {
|
|
41
|
+
let len = n.length;
|
|
42
|
+
const diff = dp - len;
|
|
43
|
+
if (diff > 0) {
|
|
44
|
+
if (1 === diff) n += Pad.DIGIT;
|
|
45
|
+
else if (2 === diff) n += Pad.TWO_DIGITS;
|
|
46
|
+
else if (3 === diff) n += Pad.THREE_DIGITS;
|
|
47
|
+
} else {
|
|
48
|
+
if (diff < 0) {
|
|
49
|
+
n = n.slice(0, dp);
|
|
50
|
+
len = dp;
|
|
51
|
+
}
|
|
52
|
+
if (Pad === Space && "0" === n.charAt(len - 1)) {
|
|
53
|
+
n = n.replace(/0+$/, "");
|
|
54
|
+
return pad(n, dp, Pad);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return n;
|
|
58
|
+
}
|
|
59
|
+
function roundDecimal(value, align = Align.Right, decimals = 4, zeroPad, alignOnDecimals, useLocaleString = true, roundingRule = "round") {
|
|
60
|
+
if (void 0 === value || "number" != typeof value || isNaN(value)) return "";
|
|
61
|
+
let integral;
|
|
62
|
+
let fraction;
|
|
63
|
+
let Pad;
|
|
64
|
+
const [part1, part2 = ""] = value.toString().split(".");
|
|
65
|
+
const actualDecimals = part2.length;
|
|
66
|
+
integral = "-0" === part1 ? "-0" : useLocaleString ? parseFloat(part1).toLocaleString() : parseFloat(part1).toString();
|
|
67
|
+
if (align === Align.Left && alignOnDecimals) integral = padLeft(integral);
|
|
68
|
+
fraction = decimals === DECIMALS_AUTO || actualDecimals === decimals ? part2 : actualDecimals > decimals ? "round" === roundingRule ? parseFloat("0." + part2).toFixed(decimals).slice(2) : part2.slice(0, decimals) : (Pad = zeroPad ? Zero : alignOnDecimals && align !== Align.Left ? Space : null) ? 0 === actualDecimals ? Pad.FULL_PADDING[decimals] ?? "" : pad(part2, decimals, Pad) : part2;
|
|
69
|
+
return integral + (fraction ? "." + fraction : "");
|
|
70
|
+
}
|
|
71
|
+
function roundScaledDecimal(value, align = Align.Right, decimals = 4, zeroPad, alignOnDecimals, useLocaleString = true, roundingRule = "round") {
|
|
72
|
+
let integral;
|
|
73
|
+
let fraction;
|
|
74
|
+
let Pad;
|
|
75
|
+
if ("" === value) return "";
|
|
76
|
+
const [part1, part2 = ""] = value.split(".");
|
|
77
|
+
const actualDecimals = part2.length;
|
|
78
|
+
integral = "" === part1 ? "0" : "-0" === part1 ? "-0" : useLocaleString ? exceedsMaxSafeInteger(value) ? BigInt(part1).toLocaleString() : parseFloat(part1).toLocaleString() : part1;
|
|
79
|
+
if (align === Align.Left && alignOnDecimals) integral = padLeft(integral);
|
|
80
|
+
fraction = decimals === DECIMALS_AUTO || actualDecimals === decimals ? part2 : actualDecimals > decimals ? "round" === roundingRule ? parseFloat("0." + part2).toFixed(decimals).slice(2) : part2.slice(0, decimals) : (Pad = zeroPad ? Zero : alignOnDecimals && align !== Align.Left ? Space : null) ? 0 === actualDecimals ? Pad.FULL_PADDING[decimals] ?? "" : pad(part2, decimals, Pad) : part2;
|
|
81
|
+
return integral + (fraction ? "." + fraction : "");
|
|
82
|
+
}
|
|
83
|
+
export { exceedsMaxSafeInteger, roundDecimal, roundScaledDecimal };
|
package/src/row-utils.js
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { metadataKeys } from "./column-utils.js";
|
|
2
|
+
const { IS_LEAF: IS_LEAF, KEY: KEY, IDX: IDX, SELECTED: SELECTED } = metadataKeys;
|
|
3
|
+
const actualRowPositioning = (rowHeight)=>[
|
|
4
|
+
(dataRow)=>dataRow.index * rowHeight,
|
|
5
|
+
(position)=>Math.floor(position / rowHeight),
|
|
6
|
+
false
|
|
7
|
+
];
|
|
8
|
+
const virtualRowPositioning = (rowHeight, virtualisedExtent, pctScrollTop)=>[
|
|
9
|
+
(dataRow, offset = 0)=>{
|
|
10
|
+
const rowOffset = pctScrollTop.current * virtualisedExtent;
|
|
11
|
+
return (dataRow.index - offset) * rowHeight - rowOffset;
|
|
12
|
+
},
|
|
13
|
+
(position)=>{
|
|
14
|
+
const rowOffset = pctScrollTop.current * virtualisedExtent;
|
|
15
|
+
return Math.round((position + rowOffset) / rowHeight);
|
|
16
|
+
},
|
|
17
|
+
true
|
|
18
|
+
];
|
|
19
|
+
const asDataSourceRowObject = (row, columnMap)=>{
|
|
20
|
+
const { [IS_LEAF]: isLeaf, [KEY]: key, [IDX]: index } = row;
|
|
21
|
+
const rowObject = {
|
|
22
|
+
key,
|
|
23
|
+
index,
|
|
24
|
+
isGroupRow: !isLeaf,
|
|
25
|
+
isSelected: 0 !== row[SELECTED],
|
|
26
|
+
data: {}
|
|
27
|
+
};
|
|
28
|
+
for (const [colName, colIdx] of Object.entries(columnMap))rowObject.data[colName] = row[colIdx];
|
|
29
|
+
return rowObject;
|
|
30
|
+
};
|
|
31
|
+
const vuuRowToDataSourceRow = ({ rowIndex, rowKey, sel: isSelected = 0, ts, data }, keys)=>[
|
|
32
|
+
rowIndex,
|
|
33
|
+
keys.keyFor(rowIndex),
|
|
34
|
+
true,
|
|
35
|
+
false,
|
|
36
|
+
0,
|
|
37
|
+
0,
|
|
38
|
+
rowKey,
|
|
39
|
+
isSelected,
|
|
40
|
+
ts,
|
|
41
|
+
false
|
|
42
|
+
].concat(data);
|
|
43
|
+
export { actualRowPositioning, asDataSourceRowObject, virtualRowPositioning, vuuRowToDataSourceRow };
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
const deselectItem = (selectionModel, rowKey, rangeSelect, preserveExistingSelection = false)=>({
|
|
2
|
+
preserveExistingSelection,
|
|
3
|
+
rowKey,
|
|
4
|
+
type: "DESELECT_ROW"
|
|
5
|
+
});
|
|
6
|
+
const selectItem = (selectionModel, rowKey, rangeSelect, preserveExistingSelection = false, activeRowKey)=>{
|
|
7
|
+
const singleSelect = "single" === selectionModel || "single-no-deselect" === selectionModel;
|
|
8
|
+
const actsLikeSingleSelect = singleSelect || void 0 === activeRowKey;
|
|
9
|
+
if ("none" === selectionModel) return;
|
|
10
|
+
if (actsLikeSingleSelect) {
|
|
11
|
+
const preserveSelection = singleSelect ? false : preserveExistingSelection;
|
|
12
|
+
return {
|
|
13
|
+
preserveExistingSelection: preserveSelection,
|
|
14
|
+
rowKey,
|
|
15
|
+
type: "SELECT_ROW"
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
if (rangeSelect) return {
|
|
19
|
+
preserveExistingSelection,
|
|
20
|
+
fromRowKey: rowKey,
|
|
21
|
+
toRowKey: activeRowKey,
|
|
22
|
+
type: "SELECT_ROW_RANGE"
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
const splitSelectableRanges = (rows, isRowSelectable, preserveExistingSelection)=>{
|
|
26
|
+
const requests = [];
|
|
27
|
+
let fromKey;
|
|
28
|
+
let toKey;
|
|
29
|
+
for (const row of rows)if (isRowSelectable(row)) {
|
|
30
|
+
if (!fromKey) fromKey = row.key;
|
|
31
|
+
toKey = row.key;
|
|
32
|
+
} else if (fromKey && toKey) {
|
|
33
|
+
requests.push({
|
|
34
|
+
type: "SELECT_ROW_RANGE",
|
|
35
|
+
fromRowKey: fromKey,
|
|
36
|
+
toRowKey: toKey,
|
|
37
|
+
preserveExistingSelection: requests.length > 0 ? true : preserveExistingSelection
|
|
38
|
+
});
|
|
39
|
+
fromKey = void 0;
|
|
40
|
+
toKey = void 0;
|
|
41
|
+
}
|
|
42
|
+
if (fromKey && toKey) requests.push({
|
|
43
|
+
type: "SELECT_ROW_RANGE",
|
|
44
|
+
fromRowKey: fromKey,
|
|
45
|
+
toRowKey: toKey,
|
|
46
|
+
preserveExistingSelection: requests.length > 0 ? true : preserveExistingSelection
|
|
47
|
+
});
|
|
48
|
+
return requests;
|
|
49
|
+
};
|
|
50
|
+
export { deselectItem, selectItem, splitSelectableRanges };
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
const VuuShellLocation = {
|
|
2
|
+
ContextPanel: "context-panel",
|
|
3
|
+
MultiWorkspaceContainer: "vuu-multi-workspace-container",
|
|
4
|
+
SidePanel: "vuu-side-panel",
|
|
5
|
+
SideToolbar: "vuu-side-toolbar",
|
|
6
|
+
Workspace: "vuu-workspace",
|
|
7
|
+
WorkspaceContainer: "vuu-workspace-container"
|
|
8
|
+
};
|
|
9
|
+
export { VuuShellLocation };
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
const cycleSortType = (sortType)=>"A" === sortType ? "D" : "D" === sortType ? void 0 : "A";
|
|
2
|
+
const NO_SORT = {
|
|
3
|
+
sortDefs: []
|
|
4
|
+
};
|
|
5
|
+
const toggleOrApplySort = ({ sortDefs }, { name: column }, extendSort = false, sortType)=>{
|
|
6
|
+
if (extendSort) {
|
|
7
|
+
const existingDef = sortDefs.find((sortDef)=>sortDef.column === column);
|
|
8
|
+
if (existingDef) return {
|
|
9
|
+
sortDefs: sortDefs.map((sortDef)=>sortDef.column === column ? {
|
|
10
|
+
column,
|
|
11
|
+
sortType: "A" === sortDef.sortType ? "D" : "A"
|
|
12
|
+
} : sortDef)
|
|
13
|
+
};
|
|
14
|
+
return {
|
|
15
|
+
sortDefs: sortDefs.concat({
|
|
16
|
+
column,
|
|
17
|
+
sortType: sortType ?? "A"
|
|
18
|
+
})
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
const newSortType = "string" == typeof sortType ? sortType : 1 === sortDefs.length && sortDefs[0].column === column ? cycleSortType(sortDefs[0].sortType) : "A";
|
|
22
|
+
return newSortType ? {
|
|
23
|
+
sortDefs: [
|
|
24
|
+
{
|
|
25
|
+
column,
|
|
26
|
+
sortType: newSortType
|
|
27
|
+
}
|
|
28
|
+
]
|
|
29
|
+
} : NO_SORT;
|
|
30
|
+
};
|
|
31
|
+
const setSortColumn = ({ sortDefs }, column, sortType)=>{
|
|
32
|
+
if (void 0 === sortType) {
|
|
33
|
+
const columnSort = sortDefs.find((item)=>item.column === column.name);
|
|
34
|
+
if (columnSort) return {
|
|
35
|
+
sortDefs: [
|
|
36
|
+
{
|
|
37
|
+
column: column.name,
|
|
38
|
+
sortType: "A" === columnSort.sortType ? "D" : "A"
|
|
39
|
+
}
|
|
40
|
+
]
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
return {
|
|
44
|
+
sortDefs: [
|
|
45
|
+
{
|
|
46
|
+
column: column.name,
|
|
47
|
+
sortType: sortType ?? "A"
|
|
48
|
+
}
|
|
49
|
+
]
|
|
50
|
+
};
|
|
51
|
+
};
|
|
52
|
+
const addSortColumn = ({ sortDefs }, column, sortType = "A")=>{
|
|
53
|
+
const sortEntry = {
|
|
54
|
+
column: column.name,
|
|
55
|
+
sortType
|
|
56
|
+
};
|
|
57
|
+
if (sortDefs.length > 0) return {
|
|
58
|
+
sortDefs: sortDefs.concat(sortEntry)
|
|
59
|
+
};
|
|
60
|
+
return {
|
|
61
|
+
sortDefs: [
|
|
62
|
+
sortEntry
|
|
63
|
+
]
|
|
64
|
+
};
|
|
65
|
+
};
|
|
66
|
+
const getSortStatus = (columnName, vuuSort)=>{
|
|
67
|
+
if (void 0 === vuuSort || 0 === vuuSort.sortDefs.length) return "no-sort";
|
|
68
|
+
{
|
|
69
|
+
const sortDef = vuuSort.sortDefs.find((sd)=>sd.column === columnName);
|
|
70
|
+
if (!sortDef) return "sort-other-column";
|
|
71
|
+
if (1 === vuuSort.sortDefs.length) return "A" === sortDef.sortType ? "single-sort-asc" : "single-sort-desc";
|
|
72
|
+
return "A" === sortDef.sortType ? "multi-sort-includes-column-asc" : "multi-sort-includes-column-desc";
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
export { addSortColumn, getSortStatus, setSortColumn, toggleOrApplySort };
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
const toSchemaColumn = ({ editable, name, serverDataType = "string" })=>({
|
|
2
|
+
editable: "boolean" == typeof editable ? editable : void 0,
|
|
3
|
+
name,
|
|
4
|
+
serverDataType
|
|
5
|
+
});
|
|
6
|
+
const getVuuTable = (schemaTable)=>{
|
|
7
|
+
if (!schemaTable.session) return schemaTable;
|
|
8
|
+
{
|
|
9
|
+
const { module, session } = schemaTable;
|
|
10
|
+
return {
|
|
11
|
+
module,
|
|
12
|
+
table: session
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
export { getVuuTable, toSchemaColumn };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
const lastWord = (text)=>{
|
|
2
|
+
const trimmedText = text.trim();
|
|
3
|
+
const pos = trimmedText.lastIndexOf(" ");
|
|
4
|
+
if (-1 === pos) return trimmedText;
|
|
5
|
+
return trimmedText.slice(pos + 1);
|
|
6
|
+
};
|
|
7
|
+
const capitalize = (text)=>0 === text.length ? "" : text[0].toUpperCase() + text.slice(1);
|
|
8
|
+
const singularForm = (typeName)=>"string" == typeof typeName ? typeName : typeName.singular;
|
|
9
|
+
const pluralForm = (typeName)=>"string" == typeof typeName ? `${typeName}s` : typeName.plural;
|
|
10
|
+
const regexp_worfify = /(?<!(^|[A-Z]))(?=[A-Z])|(?<!^)(?=[A-Z][a-z])/;
|
|
11
|
+
const wordify = (text)=>{
|
|
12
|
+
const [firstWord, ...rest] = text.split(regexp_worfify);
|
|
13
|
+
return `${capitalize(firstWord)} ${rest.join(" ")}`;
|
|
14
|
+
};
|
|
15
|
+
export { capitalize, lastWord, pluralForm, singularForm, wordify };
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { useMemo, useState } from "react";
|
|
2
|
+
const checkCssToken = (tokenName)=>new Promise((resolve)=>{
|
|
3
|
+
requestAnimationFrame(()=>{
|
|
4
|
+
const saltSpacing100 = getComputedStyle(document.documentElement).getPropertyValue(tokenName);
|
|
5
|
+
resolve("" !== saltSpacing100);
|
|
6
|
+
});
|
|
7
|
+
});
|
|
8
|
+
const ThemeLoadChecker = ({ children, cssToken = "--salt-spacing-100", theme })=>{
|
|
9
|
+
const [ready, setReady] = useState(false);
|
|
10
|
+
useMemo(async ()=>{
|
|
11
|
+
let ready = await checkCssToken(cssToken);
|
|
12
|
+
while(!ready)ready = await checkCssToken(cssToken);
|
|
13
|
+
setReady(true);
|
|
14
|
+
}, [
|
|
15
|
+
cssToken
|
|
16
|
+
]);
|
|
17
|
+
if ("no-theme" === theme) return children;
|
|
18
|
+
if (false === ready) return null;
|
|
19
|
+
return children;
|
|
20
|
+
};
|
|
21
|
+
export { ThemeLoadChecker };
|
|
File without changes
|