@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,83 @@
|
|
|
1
|
+
import { hasCustomRenderer, isColumnTypeRenderer, isTypeDescriptor } from "./column-utils.js";
|
|
2
|
+
const containersSet = new Set();
|
|
3
|
+
const viewsSet = new Set();
|
|
4
|
+
const layoutComponentsMap = new Map();
|
|
5
|
+
const cellRenderersMap = new Map();
|
|
6
|
+
const columnHeaderRenderersMap = new Map();
|
|
7
|
+
const configEditorsMap = new Map();
|
|
8
|
+
const cellConfigPanelsMap = new Map();
|
|
9
|
+
const editRuleValidatorsMap = new Map();
|
|
10
|
+
const optionsMap = new Map();
|
|
11
|
+
const rowClassGeneratorsMap = new Map();
|
|
12
|
+
const isTypeCompatible = (rendererType, serverDataType)=>{
|
|
13
|
+
if (void 0 === rendererType || "private" === rendererType) return true;
|
|
14
|
+
if (!Array.isArray(rendererType)) return rendererType === serverDataType;
|
|
15
|
+
if ("json" === serverDataType) return false;
|
|
16
|
+
return rendererType.includes(serverDataType);
|
|
17
|
+
};
|
|
18
|
+
const isContainer = (componentType)=>containersSet.has(componentType);
|
|
19
|
+
const isView = (componentType)=>viewsSet.has(componentType);
|
|
20
|
+
const isLayoutComponent = (componentType)=>isContainer(componentType) || isView(componentType);
|
|
21
|
+
const isCellRenderer = (type, component)=>void 0 !== component && "cell-renderer" === type;
|
|
22
|
+
const isColumnHeaderContentRenderer = (type, component)=>"column-header-content-renderer" === type;
|
|
23
|
+
const isColumnHeaderLabelRenderer = (type, component)=>"column-header-label-renderer" === type;
|
|
24
|
+
const isCellConfigPanel = (type, component)=>"cell-config-panel" === type;
|
|
25
|
+
const isEditRuleValidator = (type, component)=>"data-edit-validator" === type;
|
|
26
|
+
const isRowClassGenerator = (type, component)=>"row-class-generator" === type;
|
|
27
|
+
function registerComponent(componentName, component, componentType, options) {
|
|
28
|
+
if ("container" === componentType || "view" === componentType || "component" === componentType) {
|
|
29
|
+
layoutComponentsMap.set(componentName, component);
|
|
30
|
+
if ("container" === componentType) containersSet.add(componentName);
|
|
31
|
+
else if ("view" === componentType) viewsSet.add(componentName);
|
|
32
|
+
} else if (isCellRenderer(componentType, component)) cellRenderersMap.set(componentName, component);
|
|
33
|
+
else if (isColumnHeaderContentRenderer(componentType, component)) columnHeaderRenderersMap.set(componentName, component);
|
|
34
|
+
else if (isColumnHeaderLabelRenderer(componentType, component)) columnHeaderRenderersMap.set(componentName, component);
|
|
35
|
+
else if (isCellConfigPanel(componentType, component)) cellConfigPanelsMap.set(componentName, component);
|
|
36
|
+
else if (isEditRuleValidator(componentType, component)) editRuleValidatorsMap.set(componentName, component);
|
|
37
|
+
else if (isRowClassGenerator(componentType, component)) rowClassGeneratorsMap.set(componentName, component);
|
|
38
|
+
if (options) optionsMap.set(componentName, options);
|
|
39
|
+
}
|
|
40
|
+
const registerConfigurationEditor = (componentName, configurationEditor)=>{
|
|
41
|
+
configEditorsMap.set(componentName, configurationEditor);
|
|
42
|
+
};
|
|
43
|
+
const getRegisteredCellRenderers = (cellRendererDataType)=>{
|
|
44
|
+
const rendererNames = Array.from(cellRenderersMap.keys());
|
|
45
|
+
const allRenderers = rendererNames.map((name)=>({
|
|
46
|
+
name,
|
|
47
|
+
...optionsMap.get(name)
|
|
48
|
+
})).filter(({ userCanAssign })=>false !== userCanAssign);
|
|
49
|
+
if (cellRendererDataType) return allRenderers.filter((renderer)=>isTypeCompatible(renderer.serverDataType, cellRendererDataType));
|
|
50
|
+
return allRenderers;
|
|
51
|
+
};
|
|
52
|
+
const getLayoutComponent = (componentName)=>{
|
|
53
|
+
const layoutComponent = layoutComponentsMap.get(componentName);
|
|
54
|
+
if (layoutComponent) return layoutComponent;
|
|
55
|
+
throw Error(`layout component ${componentName} not found in ComponentRegistry`);
|
|
56
|
+
};
|
|
57
|
+
const getCellRendererOptions = (renderName)=>optionsMap.get(renderName);
|
|
58
|
+
function getCellRenderer(column) {
|
|
59
|
+
return dataCellRenderer(column);
|
|
60
|
+
}
|
|
61
|
+
function getColumnHeaderContentRenderer(column) {
|
|
62
|
+
if (column.colHeaderContentRenderer) return columnHeaderRenderersMap.get(column.colHeaderContentRenderer);
|
|
63
|
+
}
|
|
64
|
+
function getColumnHeaderLabelRenderer(column) {
|
|
65
|
+
if (column.colHeaderLabelRenderer) return columnHeaderRenderersMap.get(column.colHeaderLabelRenderer);
|
|
66
|
+
}
|
|
67
|
+
const getRowClassNameGenerator = (generatorId)=>rowClassGeneratorsMap.get(generatorId);
|
|
68
|
+
function getConfigurationEditor(configEditor = "") {
|
|
69
|
+
return configEditorsMap.get(configEditor);
|
|
70
|
+
}
|
|
71
|
+
function getCellConfigPanelRenderer(name) {
|
|
72
|
+
return cellConfigPanelsMap.get(name);
|
|
73
|
+
}
|
|
74
|
+
function getEditRuleValidator(name) {
|
|
75
|
+
return editRuleValidatorsMap.get(name);
|
|
76
|
+
}
|
|
77
|
+
function dataCellRenderer(column) {
|
|
78
|
+
if ("boolean" === column.serverDataType && !hasCustomRenderer(column.type)) return cellRenderersMap.get("checkbox-cell");
|
|
79
|
+
if (column.editable && !hasCustomRenderer(column.type)) return cellRenderersMap.get("input-cell");
|
|
80
|
+
if (isTypeDescriptor(column.type) && isColumnTypeRenderer(column.type.renderer)) return cellRenderersMap.get(column.type.renderer?.name);
|
|
81
|
+
if ("boolean" === column.serverDataType) return cellRenderersMap.get("checkbox-cell");
|
|
82
|
+
}
|
|
83
|
+
export { getCellConfigPanelRenderer, getCellRenderer, getCellRendererOptions, getColumnHeaderContentRenderer, getColumnHeaderLabelRenderer, getConfigurationEditor, getEditRuleValidator, getLayoutComponent, getRegisteredCellRenderers, getRowClassNameGenerator, isContainer, isLayoutComponent, isView, registerComponent, registerConfigurationEditor };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { createContext } from "react";
|
|
2
|
+
const getServerAPI = ()=>{
|
|
3
|
+
throw Error("no DataProvider has been installed");
|
|
4
|
+
};
|
|
5
|
+
class NullDataSourceConstructor {
|
|
6
|
+
constructor(_){
|
|
7
|
+
throw Error("no DataProvider has been installed");
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
const DataContext = /*#__PURE__*/ createContext({
|
|
11
|
+
isLocalData: false,
|
|
12
|
+
getServerAPI: getServerAPI,
|
|
13
|
+
VuuDataSource: NullDataSourceConstructor
|
|
14
|
+
});
|
|
15
|
+
export { DataContext, NullDataSourceConstructor };
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useContext } from "react";
|
|
3
|
+
import { DataContext } from "./DataContext.js";
|
|
4
|
+
const DataProvider = ({ children, getServerAPI, isLocalData = true, VuuDataSource })=>/*#__PURE__*/ jsx(DataContext.Provider, {
|
|
5
|
+
value: {
|
|
6
|
+
isLocalData,
|
|
7
|
+
VuuDataSource,
|
|
8
|
+
getServerAPI
|
|
9
|
+
},
|
|
10
|
+
children: children
|
|
11
|
+
});
|
|
12
|
+
const useData = ()=>useContext(DataContext);
|
|
13
|
+
export { DataProvider, useData };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import { createContext, useContext } from "react";
|
|
3
|
+
const DataSourceContext = /*#__PURE__*/ createContext({
|
|
4
|
+
dataSource: void 0
|
|
5
|
+
});
|
|
6
|
+
const DataSourceProvider = ({ children, dataSource })=>/*#__PURE__*/ jsx(DataSourceContext.Provider, {
|
|
7
|
+
value: {
|
|
8
|
+
dataSource
|
|
9
|
+
},
|
|
10
|
+
children: children
|
|
11
|
+
});
|
|
12
|
+
function useDataSource(throwIfNoDataSource = false) {
|
|
13
|
+
const { dataSource } = useContext(DataSourceContext);
|
|
14
|
+
if (dataSource) return dataSource;
|
|
15
|
+
if (throwIfNoDataSource) throw Error("[DataSOurceProvider] useDataSource,no DataSourceProvider has been declared ");
|
|
16
|
+
console.warn("[DataSourceProvider] useDataSource: no DataSourceProvider has been declared");
|
|
17
|
+
}
|
|
18
|
+
export { DataSourceContext, DataSourceProvider, useDataSource };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import react, { useContext } from "react";
|
|
2
|
+
const WorkspaceContext = /*#__PURE__*/ react.createContext({
|
|
3
|
+
getApplicationSettings: ()=>void 0,
|
|
4
|
+
layoutMetadata: [],
|
|
5
|
+
saveLayout: ()=>void 0,
|
|
6
|
+
saveApplicationLayout: ()=>void 0,
|
|
7
|
+
saveApplicationSettings: ()=>void 0,
|
|
8
|
+
loadLayoutById: ()=>void 0
|
|
9
|
+
});
|
|
10
|
+
const usePlaceholderJSON = ()=>{
|
|
11
|
+
const { layoutPlaceholderJSON } = useContext(WorkspaceContext);
|
|
12
|
+
return layoutPlaceholderJSON;
|
|
13
|
+
};
|
|
14
|
+
export { WorkspaceContext, usePlaceholderJSON };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
const getCookieValue = (name)=>{
|
|
2
|
+
if (globalThis.document?.cookie !== void 0) return globalThis.document.cookie.split("; ").find((row)=>row.startsWith(`${name}=`))?.split("=")[1];
|
|
3
|
+
};
|
|
4
|
+
function setCookieValue(name, value, days) {
|
|
5
|
+
let expires = "";
|
|
6
|
+
if ("number" == typeof days) {
|
|
7
|
+
const date = new Date();
|
|
8
|
+
date.setTime(date.getTime() + 24 * days * 3600000);
|
|
9
|
+
expires = "; expires=" + date.toUTCString();
|
|
10
|
+
}
|
|
11
|
+
const encodedName = encodeURIComponent(name);
|
|
12
|
+
const encodedValue = encodeURIComponent(value);
|
|
13
|
+
document.cookie = `${encodedName}=${encodedValue}${expires};`;
|
|
14
|
+
}
|
|
15
|
+
export { getCookieValue, setCookieValue };
|
package/src/css-utils.js
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
const UP1 = "up1";
|
|
2
|
+
const UP2 = "up2";
|
|
3
|
+
const DOWN1 = "down1";
|
|
4
|
+
const DOWN2 = "down2";
|
|
5
|
+
const decimalPattern = /^-?[0-9]*\.[0-9]*$/;
|
|
6
|
+
const JAVA_LONG_MIN = BigInt("-9223372036854775808");
|
|
7
|
+
const JAVA_LONG_MAX = BigInt("9223372036854775807");
|
|
8
|
+
const stringIsValidInt = (val)=>parseInt(val, 10).toString() === val;
|
|
9
|
+
const stringIsValidLong = (val)=>{
|
|
10
|
+
if ("" === val) return false;
|
|
11
|
+
try {
|
|
12
|
+
const n = BigInt(val);
|
|
13
|
+
return n <= JAVA_LONG_MAX && n >= JAVA_LONG_MIN;
|
|
14
|
+
} catch (e) {
|
|
15
|
+
return false;
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
const stringIsValidDecimal = (val)=>stringIsValidInt(val) || decimalPattern.test(val);
|
|
19
|
+
const stringIsValidNumber = (val)=>stringIsValidInt(val) || stringIsValidDecimal(val);
|
|
20
|
+
const numericTypeOfStringValue = (val)=>stringIsValidInt(val) ? "int" : stringIsValidDecimal(val) ? "double" : "NaN";
|
|
21
|
+
const isValidNumber = (n)=>"number" == typeof n && isFinite(n);
|
|
22
|
+
const EMPTY = {};
|
|
23
|
+
const shallowEquals = (o1 = EMPTY, o2 = EMPTY)=>{
|
|
24
|
+
const props1 = Object.keys(o1);
|
|
25
|
+
const props2 = Object.keys(o2);
|
|
26
|
+
return props1.length === props2.length && props1.every((key)=>o1[key] === o2[key]);
|
|
27
|
+
};
|
|
28
|
+
function getMovingValueDirection(newValue, direction, prevValue, decimalPlaces) {
|
|
29
|
+
if (void 0 === newValue) return "";
|
|
30
|
+
if (!isFinite(newValue) || void 0 === prevValue || void 0 === direction) return "";
|
|
31
|
+
{
|
|
32
|
+
let diff = newValue - prevValue;
|
|
33
|
+
if (diff) {
|
|
34
|
+
if ("number" == typeof decimalPlaces) diff = newValue.toFixed(decimalPlaces) - prevValue.toFixed(decimalPlaces);
|
|
35
|
+
}
|
|
36
|
+
if (!diff) return "";
|
|
37
|
+
if ("" === direction) if (diff < 0) return DOWN1;
|
|
38
|
+
else return UP1;
|
|
39
|
+
if (diff > 0) if (direction === DOWN1 || direction === DOWN2 || direction === UP2) return UP1;
|
|
40
|
+
else return UP2;
|
|
41
|
+
else if (direction === UP1 || direction === UP2 || direction === DOWN2) return DOWN1;
|
|
42
|
+
else return DOWN2;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
function asInteger(value, defaultValue) {
|
|
46
|
+
if ("number" == typeof value) return Number.isInteger(value) ? value : value < 0 ? Math.ceil(value) : Math.floor(value);
|
|
47
|
+
{
|
|
48
|
+
const integerValue = parseInt(value ?? "");
|
|
49
|
+
if (!isNaN(integerValue)) return integerValue;
|
|
50
|
+
if ("number" == typeof defaultValue) return defaultValue;
|
|
51
|
+
throw Error(`parseIndex invalid value ${value}`);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
const dataDescriptorTypeToVuuRowDataItemType = ({ serverDataType = "string" })=>{
|
|
55
|
+
switch(serverDataType){
|
|
56
|
+
case "double":
|
|
57
|
+
case "int":
|
|
58
|
+
case "long":
|
|
59
|
+
return "number";
|
|
60
|
+
case "boolean":
|
|
61
|
+
return "boolean";
|
|
62
|
+
default:
|
|
63
|
+
return "string";
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
export { DOWN1, DOWN2, UP1, UP2, asInteger, dataDescriptorTypeToVuuRowDataItemType, getMovingValueDirection, isValidNumber, numericTypeOfStringValue, shallowEquals, stringIsValidDecimal, stringIsValidInt, stringIsValidLong, stringIsValidNumber };
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
import { parseFilter } from "@vuu-ui/vuu-filter-parser";
|
|
2
|
+
import { EventEmitter } from "../event-emitter.js";
|
|
3
|
+
import { uuid } from "../nanoid/index.js";
|
|
4
|
+
import { isConfigChanged, stripVisualLink, vanillaConfig, withConfigDefaults } from "./datasource-utils.js";
|
|
5
|
+
import { Range } from "../range-utils.js";
|
|
6
|
+
import { filterAsQuery } from "../filters/index.js";
|
|
7
|
+
const defaultSuspenseProps = {
|
|
8
|
+
escalateToDisable: true
|
|
9
|
+
};
|
|
10
|
+
class BaseDataSource extends EventEmitter {
|
|
11
|
+
viewport;
|
|
12
|
+
_clientCallback;
|
|
13
|
+
_configWithVisualLink = vanillaConfig;
|
|
14
|
+
_impendingConfigWithVisualLink = void 0;
|
|
15
|
+
_range = Range(0, 0);
|
|
16
|
+
_size = 0;
|
|
17
|
+
_title;
|
|
18
|
+
_defaultSuspenseProps;
|
|
19
|
+
#freezeTimestamp = void 0;
|
|
20
|
+
#pageCount = 0;
|
|
21
|
+
awaitingConfirmationOfConfigChanges = false;
|
|
22
|
+
constructor({ aggregations, baseFilterSpec, columns, filterSpec, groupBy, sort, suspenseProps = defaultSuspenseProps, title, viewport }){
|
|
23
|
+
super();
|
|
24
|
+
this._configWithVisualLink = {
|
|
25
|
+
...this._configWithVisualLink,
|
|
26
|
+
aggregations: aggregations || this._configWithVisualLink.aggregations,
|
|
27
|
+
baseFilterSpec: baseFilterSpec || this._configWithVisualLink.baseFilterSpec,
|
|
28
|
+
columns: columns || this._configWithVisualLink.columns,
|
|
29
|
+
filterSpec: filterSpec || this._configWithVisualLink.filterSpec,
|
|
30
|
+
groupBy: groupBy || this._configWithVisualLink.groupBy,
|
|
31
|
+
sort: sort || this._configWithVisualLink.sort
|
|
32
|
+
};
|
|
33
|
+
this._defaultSuspenseProps = suspenseProps;
|
|
34
|
+
this._title = title;
|
|
35
|
+
this.viewport = viewport ?? "";
|
|
36
|
+
}
|
|
37
|
+
subscribe({ baseFilterSpec, columns, aggregations, range, sort, groupBy, filterSpec, viewport = this.viewport || (this.viewport = uuid()) }, callback) {
|
|
38
|
+
this._clientCallback = callback;
|
|
39
|
+
this.viewport = viewport;
|
|
40
|
+
if (aggregations || baseFilterSpec || columns || filterSpec || groupBy || sort) this._configWithVisualLink = {
|
|
41
|
+
...this._configWithVisualLink,
|
|
42
|
+
aggregations: aggregations || this._configWithVisualLink.aggregations,
|
|
43
|
+
baseFilterSpec: baseFilterSpec || this._configWithVisualLink.baseFilterSpec,
|
|
44
|
+
columns: columns || this._configWithVisualLink.columns,
|
|
45
|
+
filterSpec: filterSpec || this._configWithVisualLink.filterSpec,
|
|
46
|
+
groupBy: groupBy || this._configWithVisualLink.groupBy,
|
|
47
|
+
sort: sort || this._configWithVisualLink.sort
|
|
48
|
+
};
|
|
49
|
+
if (range) {
|
|
50
|
+
this._range = range;
|
|
51
|
+
this.emit("range", range);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
get aggregations() {
|
|
55
|
+
return this._configWithVisualLink.aggregations;
|
|
56
|
+
}
|
|
57
|
+
set aggregations(aggregations) {
|
|
58
|
+
this.config = {
|
|
59
|
+
...this._configWithVisualLink,
|
|
60
|
+
aggregations
|
|
61
|
+
};
|
|
62
|
+
this.emit("config", this._configWithVisualLink, this.range);
|
|
63
|
+
}
|
|
64
|
+
get baseFilter() {
|
|
65
|
+
return this._configWithVisualLink.baseFilterSpec;
|
|
66
|
+
}
|
|
67
|
+
set baseFilter(baseFilter) {
|
|
68
|
+
this.config = {
|
|
69
|
+
...this._configWithVisualLink,
|
|
70
|
+
baseFilterSpec: baseFilter
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
get columns() {
|
|
74
|
+
return this._configWithVisualLink.columns;
|
|
75
|
+
}
|
|
76
|
+
set columns(columns) {
|
|
77
|
+
this.config = {
|
|
78
|
+
...this._configWithVisualLink,
|
|
79
|
+
columns
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
get filter() {
|
|
83
|
+
return this._configWithVisualLink.filterSpec;
|
|
84
|
+
}
|
|
85
|
+
set filter(filter) {
|
|
86
|
+
this.config = {
|
|
87
|
+
...this._configWithVisualLink,
|
|
88
|
+
filterSpec: filter
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
setFilter(filter) {
|
|
92
|
+
const dataSourceFilter = {
|
|
93
|
+
filter: filterAsQuery(filter),
|
|
94
|
+
filterStruct: filter
|
|
95
|
+
};
|
|
96
|
+
this.filter = dataSourceFilter;
|
|
97
|
+
}
|
|
98
|
+
clearFilter() {
|
|
99
|
+
this.filter = {
|
|
100
|
+
filter: ""
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
get isAwaitingConfirmationOfConfigChange() {
|
|
104
|
+
return void 0 !== this._impendingConfigWithVisualLink;
|
|
105
|
+
}
|
|
106
|
+
confirmConfigChange() {
|
|
107
|
+
if (this._impendingConfigWithVisualLink) {
|
|
108
|
+
this._configWithVisualLink = this._impendingConfigWithVisualLink;
|
|
109
|
+
this._impendingConfigWithVisualLink = void 0;
|
|
110
|
+
this.emit("config", this._configWithVisualLink, this.range, true);
|
|
111
|
+
} else throw Error("[BaseDataSource], unexpected call to confirmConfigChange, no changes pending");
|
|
112
|
+
}
|
|
113
|
+
get config() {
|
|
114
|
+
return stripVisualLink(this._impendingConfigWithVisualLink ?? this._configWithVisualLink);
|
|
115
|
+
}
|
|
116
|
+
set config(config) {
|
|
117
|
+
const confirmed = this.awaitingConfirmationOfConfigChanges ? true : void 0;
|
|
118
|
+
this.awaitingConfirmationOfConfigChanges = false;
|
|
119
|
+
const configChanges = this.applyConfig(config);
|
|
120
|
+
if (configChanges) requestAnimationFrame(()=>{
|
|
121
|
+
this.emit("config", this._configWithVisualLink, this.range, confirmed, configChanges);
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
get impendingConfig() {
|
|
125
|
+
return this._impendingConfigWithVisualLink;
|
|
126
|
+
}
|
|
127
|
+
set impendingConfig(config) {
|
|
128
|
+
if (config) {
|
|
129
|
+
this.awaitingConfirmationOfConfigChanges = true;
|
|
130
|
+
const configChanges = this.applyConfig(config);
|
|
131
|
+
if (configChanges) this.emit("config", this.config, this.range, false, configChanges);
|
|
132
|
+
} else throw Error("[BaseDataSource] ''unsetting impendingConfig is not currently supported");
|
|
133
|
+
}
|
|
134
|
+
get pageCount() {
|
|
135
|
+
return this.#pageCount;
|
|
136
|
+
}
|
|
137
|
+
set pageCount(pageCount) {
|
|
138
|
+
if (pageCount !== this.#pageCount) {
|
|
139
|
+
this.#pageCount = pageCount;
|
|
140
|
+
this.emit("page-count", pageCount);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
get range() {
|
|
144
|
+
return this._range;
|
|
145
|
+
}
|
|
146
|
+
set range(range) {
|
|
147
|
+
if (range.from !== this._range.from || range.to !== this._range.to) {
|
|
148
|
+
this._range = range;
|
|
149
|
+
this.pageCount = Math.ceil(this._size / (range.to - range.from));
|
|
150
|
+
this.rangeRequest(range.withBuffer);
|
|
151
|
+
requestAnimationFrame(()=>{
|
|
152
|
+
this.emit("range", range);
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
get size() {
|
|
157
|
+
return this._size;
|
|
158
|
+
}
|
|
159
|
+
set size(size) {
|
|
160
|
+
this._size = size;
|
|
161
|
+
if (0 !== this.range.to) {
|
|
162
|
+
const pageCount = Math.ceil(size / (this.range.to - this.range.from));
|
|
163
|
+
this.pageCount = pageCount;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
get sort() {
|
|
167
|
+
return this._configWithVisualLink.sort;
|
|
168
|
+
}
|
|
169
|
+
set sort(sort) {
|
|
170
|
+
this.config = {
|
|
171
|
+
...this._configWithVisualLink,
|
|
172
|
+
sort
|
|
173
|
+
};
|
|
174
|
+
this.emit("config", this._configWithVisualLink, this.range);
|
|
175
|
+
}
|
|
176
|
+
get title() {
|
|
177
|
+
return this._title ?? "";
|
|
178
|
+
}
|
|
179
|
+
set title(title) {
|
|
180
|
+
this._title = title;
|
|
181
|
+
this.emit("title-changed", this.viewport ?? "", title);
|
|
182
|
+
}
|
|
183
|
+
applyConfig(config, preserveExistingConfigAttributes = false) {
|
|
184
|
+
const { noChanges, ...otherChanges } = isConfigChanged(this._configWithVisualLink, config);
|
|
185
|
+
if (true !== noChanges) {
|
|
186
|
+
if (config) {
|
|
187
|
+
const newConfig = config?.filterSpec?.filter && config?.filterSpec.filterStruct === void 0 ? {
|
|
188
|
+
...config,
|
|
189
|
+
filterSpec: {
|
|
190
|
+
filter: config.filterSpec.filter,
|
|
191
|
+
filterStruct: parseFilter(config.filterSpec.filter)
|
|
192
|
+
}
|
|
193
|
+
} : config;
|
|
194
|
+
if (preserveExistingConfigAttributes) if (this.awaitingConfirmationOfConfigChanges) this._impendingConfigWithVisualLink = {
|
|
195
|
+
...this._configWithVisualLink,
|
|
196
|
+
...config
|
|
197
|
+
};
|
|
198
|
+
else {
|
|
199
|
+
this._impendingConfigWithVisualLink = void 0;
|
|
200
|
+
this._configWithVisualLink = {
|
|
201
|
+
...this._configWithVisualLink,
|
|
202
|
+
...config
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
else if (this.awaitingConfirmationOfConfigChanges) this._impendingConfigWithVisualLink = withConfigDefaults(newConfig);
|
|
206
|
+
else {
|
|
207
|
+
this._impendingConfigWithVisualLink = void 0;
|
|
208
|
+
this._configWithVisualLink = withConfigDefaults(newConfig);
|
|
209
|
+
}
|
|
210
|
+
return otherChanges;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
freeze() {
|
|
215
|
+
if (this.isFrozen) throw Error("[BaseDataSource] cannot freeze, dataSource is already frozen");
|
|
216
|
+
this.#freezeTimestamp = new Date().getTime();
|
|
217
|
+
this.emit("freeze", true, this.#freezeTimestamp);
|
|
218
|
+
}
|
|
219
|
+
unfreeze() {
|
|
220
|
+
if (this.isFrozen) {
|
|
221
|
+
const freezeTimestamp = this.#freezeTimestamp;
|
|
222
|
+
this.#freezeTimestamp = void 0;
|
|
223
|
+
this.emit("freeze", false, freezeTimestamp);
|
|
224
|
+
} else throw Error("[BaseDataSource] cannot freeze, dataSource is already frozen");
|
|
225
|
+
}
|
|
226
|
+
get freezeTimestamp() {
|
|
227
|
+
return this.#freezeTimestamp;
|
|
228
|
+
}
|
|
229
|
+
get isFrozen() {
|
|
230
|
+
return "number" == typeof this.#freezeTimestamp;
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
export { BaseDataSource, defaultSuspenseProps };
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
const isVisualLinksAction = (action)=>"vuu-links" === action.type;
|
|
2
|
+
const isVisualLinkCreatedAction = (action)=>"vuu-link-created" === action.type;
|
|
3
|
+
const isVisualLinkRemovedAction = (action)=>"vuu-link-removed" === action.type;
|
|
4
|
+
const isViewportMenusAction = (action)=>"vuu-menu" === action.type;
|
|
5
|
+
const isVuuFeatureAction = (action)=>isViewportMenusAction(action) || isVisualLinksAction(action);
|
|
6
|
+
export { isViewportMenusAction, isVisualLinkCreatedAction, isVisualLinkRemovedAction, isVisualLinksAction, isVuuFeatureAction };
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { parseFilter } from "@vuu-ui/vuu-filter-parser";
|
|
2
|
+
const combineFilters = ({ baseFilterSpec, filterSpec, ...config })=>{
|
|
3
|
+
if (void 0 === baseFilterSpec || "" === baseFilterSpec.filter) if (filterSpec.filterStruct || "" === filterSpec.filter) return {
|
|
4
|
+
...config,
|
|
5
|
+
filterSpec
|
|
6
|
+
};
|
|
7
|
+
else return {
|
|
8
|
+
...config,
|
|
9
|
+
filterSpec: {
|
|
10
|
+
filter: filterSpec.filter,
|
|
11
|
+
filterStruct: parseFilter(filterSpec.filter)
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
{
|
|
15
|
+
const baseFilterQuery = baseFilterSpec.filter;
|
|
16
|
+
const combinedFilter = filterSpec.filter.length > 0 && baseFilterQuery.length > 0 ? `${filterSpec.filter} and ${baseFilterQuery}` : filterSpec.filter || baseFilterQuery;
|
|
17
|
+
const newConfig = {
|
|
18
|
+
...config,
|
|
19
|
+
filterSpec: {
|
|
20
|
+
filter: combinedFilter,
|
|
21
|
+
filterStruct: combinedFilter.length > 0 ? parseFilter(combinedFilter) : void 0
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
return newConfig;
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
export { combineFilters };
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
const NoFilter = {
|
|
2
|
+
filter: ""
|
|
3
|
+
};
|
|
4
|
+
const NoSort = {
|
|
5
|
+
sortDefs: []
|
|
6
|
+
};
|
|
7
|
+
const vanillaConfig = {
|
|
8
|
+
aggregations: [],
|
|
9
|
+
columns: [],
|
|
10
|
+
filterSpec: NoFilter,
|
|
11
|
+
groupBy: [],
|
|
12
|
+
sort: NoSort
|
|
13
|
+
};
|
|
14
|
+
const stripVisualLink = (configWithVisualLink)=>{
|
|
15
|
+
if (!configWithVisualLink.visualLink) return configWithVisualLink;
|
|
16
|
+
{
|
|
17
|
+
const { visualLink, ...config } = configWithVisualLink;
|
|
18
|
+
return config;
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
const equivalentAggregations = ({ aggregations: agg1 }, { aggregations: agg2 })=>void 0 === agg1 && agg2?.length === 0 || void 0 === agg2 && agg1?.length === 0;
|
|
22
|
+
const equivalentColumns = ({ columns: cols1 }, { columns: cols2 })=>void 0 === cols1 && cols2?.length === 0 || void 0 === cols2 && cols1?.length === 0;
|
|
23
|
+
const equivalentFilter = ({ filterSpec: f1 }, { filterSpec: f2 })=>void 0 === f1 && f2?.filter === "" || void 0 === f2 && f1?.filter === "";
|
|
24
|
+
const equivalentGroupBy = ({ groupBy: val1 }, { groupBy: val2 })=>void 0 === val1 && val2?.length === 0 || void 0 === val2 && val1?.length === 0;
|
|
25
|
+
const equivalentSort = ({ sort: s1 }, { sort: s2 })=>void 0 === s1 && s2?.sortDefs.length === 0 || void 0 === s2 && s1?.sortDefs.length === 0;
|
|
26
|
+
const exactlyTheSame = (a, b)=>{
|
|
27
|
+
if (a === b) return true;
|
|
28
|
+
if (void 0 === a && void 0 === b) return true;
|
|
29
|
+
return false;
|
|
30
|
+
};
|
|
31
|
+
const isAggregationsChanged = (config, newConfig)=>{
|
|
32
|
+
const { aggregations: agg1 } = config;
|
|
33
|
+
const { aggregations: agg2 } = newConfig;
|
|
34
|
+
if (exactlyTheSame(agg1, agg2) || equivalentAggregations(config, newConfig)) return false;
|
|
35
|
+
if (void 0 === agg1 || void 0 === agg2) return true;
|
|
36
|
+
if (agg1.length !== agg2.length) return true;
|
|
37
|
+
return agg1.some(({ column, aggType }, i)=>column !== agg2[i].column || aggType !== agg2[i].aggType);
|
|
38
|
+
};
|
|
39
|
+
const isColumnsChanged = (config, newConfig)=>{
|
|
40
|
+
const { columns: cols1 } = config;
|
|
41
|
+
const { columns: cols2 } = newConfig;
|
|
42
|
+
if (exactlyTheSame(cols1, cols2) || equivalentColumns(config, newConfig)) return false;
|
|
43
|
+
if (void 0 === cols1 || void 0 === cols2) return true;
|
|
44
|
+
if (cols1?.length !== cols2?.length) return true;
|
|
45
|
+
return cols1.some((column, i)=>column !== cols2?.[i]);
|
|
46
|
+
};
|
|
47
|
+
const isBaseFilterChanged = (c1, c2)=>{
|
|
48
|
+
if (equivalentFilter(c1, c2)) return false;
|
|
49
|
+
return c1.baseFilterSpec?.filter !== c2.baseFilterSpec?.filter;
|
|
50
|
+
};
|
|
51
|
+
const isFilterChanged = (c1, c2)=>{
|
|
52
|
+
if (equivalentFilter(c1, c2)) return false;
|
|
53
|
+
return c1.filterSpec?.filter !== c2.filterSpec?.filter;
|
|
54
|
+
};
|
|
55
|
+
const isGroupByChanged = (config, newConfig)=>{
|
|
56
|
+
const { groupBy: g1 } = config;
|
|
57
|
+
const { groupBy: g2 } = newConfig;
|
|
58
|
+
if (exactlyTheSame(g1, g2) || equivalentGroupBy(config, newConfig)) return false;
|
|
59
|
+
if (void 0 === g1 || void 0 === g2) return true;
|
|
60
|
+
if (g1?.length !== g2?.length) return true;
|
|
61
|
+
return g1.some((column, i)=>column !== g2?.[i]);
|
|
62
|
+
};
|
|
63
|
+
const isSortChanged = (config, newConfig)=>{
|
|
64
|
+
const { sort: s1 } = config;
|
|
65
|
+
const { sort: s2 } = newConfig;
|
|
66
|
+
if (exactlyTheSame(s1, s2) || equivalentSort(config, newConfig)) return false;
|
|
67
|
+
if (void 0 === s1 || void 0 === s2) return true;
|
|
68
|
+
if (s1?.sortDefs.length !== s2?.sortDefs.length) return true;
|
|
69
|
+
return s1.sortDefs.some(({ column, sortType }, i)=>column !== s2.sortDefs[i].column || sortType !== s2.sortDefs[i].sortType);
|
|
70
|
+
};
|
|
71
|
+
const isVisualLinkChanged = ({ visualLink: v1 }, { visualLink: v2 })=>{
|
|
72
|
+
if (exactlyTheSame(v1, v2)) return false;
|
|
73
|
+
if (void 0 === v1 || void 0 === v2) return true;
|
|
74
|
+
return v1.label !== v2.label || v2.parentVpId !== v2.parentVpId;
|
|
75
|
+
};
|
|
76
|
+
const NO_CONFIG_CHANGES = {
|
|
77
|
+
aggregationsChanged: false,
|
|
78
|
+
baseFilterChanged: false,
|
|
79
|
+
columnsChanged: false,
|
|
80
|
+
filterChanged: false,
|
|
81
|
+
groupByChanged: false,
|
|
82
|
+
noChanges: true,
|
|
83
|
+
sortChanged: false,
|
|
84
|
+
visualLinkChanged: false
|
|
85
|
+
};
|
|
86
|
+
const isConfigChanged = (config, newConfig)=>{
|
|
87
|
+
if (exactlyTheSame(config, newConfig)) return NO_CONFIG_CHANGES;
|
|
88
|
+
if (void 0 === config && void 0 == newConfig) return NO_CONFIG_CHANGES;
|
|
89
|
+
if (void 0 === config) return isConfigChanged({}, newConfig);
|
|
90
|
+
if (void 0 === newConfig) return isConfigChanged(config, {});
|
|
91
|
+
const aggregationsChanged = isAggregationsChanged(config, newConfig);
|
|
92
|
+
const baseFilterChanged = isBaseFilterChanged(config, newConfig);
|
|
93
|
+
const columnsChanged = isColumnsChanged(config, newConfig);
|
|
94
|
+
const filterChanged = isFilterChanged(config, newConfig);
|
|
95
|
+
const groupByChanged = isGroupByChanged(config, newConfig);
|
|
96
|
+
const sortChanged = isSortChanged(config, newConfig);
|
|
97
|
+
const visualLinkChanged = isVisualLinkChanged(config, newConfig);
|
|
98
|
+
const noChanges = !(aggregationsChanged || baseFilterChanged || columnsChanged || filterChanged || groupByChanged || sortChanged || visualLinkChanged);
|
|
99
|
+
return {
|
|
100
|
+
aggregationsChanged,
|
|
101
|
+
baseFilterChanged,
|
|
102
|
+
columnsChanged,
|
|
103
|
+
filterChanged,
|
|
104
|
+
groupByChanged,
|
|
105
|
+
noChanges,
|
|
106
|
+
sortChanged,
|
|
107
|
+
visualLinkChanged
|
|
108
|
+
};
|
|
109
|
+
};
|
|
110
|
+
const hasGroupBy = (config)=>void 0 !== config && void 0 !== config.groupBy && config.groupBy.length > 0;
|
|
111
|
+
const hasBaseFilter = (config)=>config?.baseFilterSpec !== void 0 && config.baseFilterSpec.filter.length > 0;
|
|
112
|
+
const hasFilter = (config)=>config?.filterSpec !== void 0 && config.filterSpec.filter.length > 0;
|
|
113
|
+
const hasSort = (config)=>config?.sort !== void 0 && Array.isArray(config.sort?.sortDefs) && config.sort.sortDefs.length > 0;
|
|
114
|
+
const isTypeaheadSuggestionProvider = (source)=>"function" == typeof source["getTypeaheadSuggestions"];
|
|
115
|
+
const isTableSchemaMessage = (message)=>"TABLE_META_RESP" === message.type;
|
|
116
|
+
const isConnectionQualityMetrics = (msg)=>"connection-metrics" === msg.type;
|
|
117
|
+
const messageHasResult = (msg)=>void 0 !== msg.result;
|
|
118
|
+
const isVisualLinkMessage = (msg)=>msg.type.endsWith("_VISUAL_LINK");
|
|
119
|
+
const isVisualLinksMessage = (msg)=>"vuu-links" === msg.type;
|
|
120
|
+
const isViewportMessage = (msg)=>"viewport" in msg;
|
|
121
|
+
const messageHasDataRows = (message)=>"viewport-update" === message.type && Array.isArray(message.rows);
|
|
122
|
+
const messageHasSize = (message)=>"viewport-update" === message.type && "number" == typeof message.size;
|
|
123
|
+
const withConfigDefaults = (config)=>{
|
|
124
|
+
if (config.aggregations && config.baseFilterSpec && config.columns && config.filterSpec && config.groupBy && config.sort) return config;
|
|
125
|
+
{
|
|
126
|
+
const { aggregations = [], baseFilterSpec: baseFilter = {
|
|
127
|
+
filter: ""
|
|
128
|
+
}, columns = [], filterSpec: filter = {
|
|
129
|
+
filter: ""
|
|
130
|
+
}, groupBy = [], sort = {
|
|
131
|
+
sortDefs: []
|
|
132
|
+
}, visualLink } = config;
|
|
133
|
+
return {
|
|
134
|
+
aggregations,
|
|
135
|
+
baseFilterSpec: baseFilter,
|
|
136
|
+
columns,
|
|
137
|
+
filterSpec: filter,
|
|
138
|
+
groupBy,
|
|
139
|
+
sort,
|
|
140
|
+
visualLink
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
};
|
|
144
|
+
const dataSourceRowToEntity = (row, columnMap)=>Object.entries(columnMap).reduce((entity, [name, index])=>({
|
|
145
|
+
...entity,
|
|
146
|
+
[name]: row[index]
|
|
147
|
+
}), {});
|
|
148
|
+
export { NO_CONFIG_CHANGES, NoFilter, NoSort, dataSourceRowToEntity, hasBaseFilter, hasFilter, hasGroupBy, hasSort, isBaseFilterChanged, isConfigChanged, isConnectionQualityMetrics, isFilterChanged, isGroupByChanged, isTableSchemaMessage, isTypeaheadSuggestionProvider, isViewportMessage, isVisualLinkMessage, isVisualLinksMessage, messageHasDataRows, messageHasResult, messageHasSize, stripVisualLink, vanillaConfig, withConfigDefaults };
|