@vuu-ui/vuu-utils 0.13.6 → 0.13.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cjs/index.js +9619 -395
- package/cjs/index.js.map +1 -1
- package/esm/index.js +9282 -65
- package/esm/index.js.map +1 -1
- package/package.json +9 -6
- package/types/component-registry.d.ts +2 -2
- package/types/filters/filter-utils.d.ts +2 -2
- package/types/index.d.ts +5 -0
- package/cjs/DataWindow.js +0 -76
- package/cjs/DataWindow.js.map +0 -1
- package/cjs/ShellContext.js +0 -13
- package/cjs/ShellContext.js.map +0 -1
- package/cjs/ThemeProvider.js +0 -85
- package/cjs/ThemeProvider.js.map +0 -1
- package/cjs/array-utils.js +0 -87
- package/cjs/array-utils.js.map +0 -1
- package/cjs/box-utils.js +0 -53
- package/cjs/box-utils.js.map +0 -1
- package/cjs/column-utils.js +0 -891
- package/cjs/column-utils.js.map +0 -1
- package/cjs/common-types.js +0 -15
- package/cjs/common-types.js.map +0 -1
- package/cjs/component-registry.js +0 -140
- package/cjs/component-registry.js.map +0 -1
- package/cjs/context-definitions/DataContext.js +0 -20
- package/cjs/context-definitions/DataContext.js.map +0 -1
- package/cjs/context-definitions/DataProvider.js +0 -24
- package/cjs/context-definitions/DataProvider.js.map +0 -1
- package/cjs/context-definitions/DataSourceProvider.js +0 -33
- package/cjs/context-definitions/DataSourceProvider.js.map +0 -1
- package/cjs/context-definitions/WorkspaceContext.js +0 -20
- package/cjs/context-definitions/WorkspaceContext.js.map +0 -1
- package/cjs/cookie-utils.js +0 -10
- package/cjs/cookie-utils.js.map +0 -1
- package/cjs/css-utils.js +0 -9
- package/cjs/css-utils.js.map +0 -1
- package/cjs/data-utils.js +0 -81
- package/cjs/data-utils.js.map +0 -1
- package/cjs/datasource/BaseDataSource.js +0 -248
- package/cjs/datasource/BaseDataSource.js.map +0 -1
- package/cjs/datasource/datasource-action-utils.js +0 -14
- package/cjs/datasource/datasource-action-utils.js.map +0 -1
- package/cjs/datasource/datasource-filter-utils.js +0 -23
- package/cjs/datasource/datasource-filter-utils.js.map +0 -1
- package/cjs/datasource/datasource-utils.js +0 -207
- package/cjs/datasource/datasource-utils.js.map +0 -1
- package/cjs/date/date-utils.js +0 -10
- package/cjs/date/date-utils.js.map +0 -1
- package/cjs/date/dateTimePattern.js +0 -25
- package/cjs/date/dateTimePattern.js.map +0 -1
- package/cjs/date/formatter.js +0 -66
- package/cjs/date/formatter.js.map +0 -1
- package/cjs/date/types.js +0 -27
- package/cjs/date/types.js.map +0 -1
- package/cjs/debug-utils.js +0 -34
- package/cjs/debug-utils.js.map +0 -1
- package/cjs/event-emitter.js +0 -113
- package/cjs/event-emitter.js.map +0 -1
- package/cjs/feature-utils.js +0 -139
- package/cjs/feature-utils.js.map +0 -1
- package/cjs/filters/filter-utils.js +0 -136
- package/cjs/filters/filter-utils.js.map +0 -1
- package/cjs/filters/filterAsQuery.js +0 -76
- package/cjs/filters/filterAsQuery.js.map +0 -1
- package/cjs/form-utils.js +0 -48
- package/cjs/form-utils.js.map +0 -1
- package/cjs/formatting-utils.js +0 -68
- package/cjs/formatting-utils.js.map +0 -1
- package/cjs/getUniqueId.js +0 -6
- package/cjs/getUniqueId.js.map +0 -1
- package/cjs/group-utils.js +0 -27
- package/cjs/group-utils.js.map +0 -1
- package/cjs/html-utils.js +0 -162
- package/cjs/html-utils.js.map +0 -1
- package/cjs/input-utils.js +0 -10
- package/cjs/input-utils.js.map +0 -1
- package/cjs/invariant.js +0 -13
- package/cjs/invariant.js.map +0 -1
- package/cjs/itemToString.js +0 -23
- package/cjs/itemToString.js.map +0 -1
- package/cjs/json-utils.js +0 -103
- package/cjs/json-utils.js.map +0 -1
- package/cjs/keyboard-utils.js +0 -30
- package/cjs/keyboard-utils.js.map +0 -1
- package/cjs/keyset.js +0 -72
- package/cjs/keyset.js.map +0 -1
- package/cjs/list-utils.js +0 -11
- package/cjs/list-utils.js.map +0 -1
- package/cjs/local-storage-utils.js +0 -20
- package/cjs/local-storage-utils.js.map +0 -1
- package/cjs/logging-utils.js +0 -65
- package/cjs/logging-utils.js.map +0 -1
- package/cjs/menu-utils.js +0 -10
- package/cjs/menu-utils.js.map +0 -1
- package/cjs/module-utils.js +0 -6
- package/cjs/module-utils.js.map +0 -1
- package/cjs/moving-window.js +0 -103
- package/cjs/moving-window.js.map +0 -1
- package/cjs/nanoid/index.js +0 -22
- package/cjs/nanoid/index.js.map +0 -1
- package/cjs/perf-utils.js +0 -35
- package/cjs/perf-utils.js.map +0 -1
- package/cjs/promise-utils.js +0 -42
- package/cjs/promise-utils.js.map +0 -1
- package/cjs/protocol-message-utils.js +0 -86
- package/cjs/protocol-message-utils.js.map +0 -1
- package/cjs/range-utils.js +0 -152
- package/cjs/range-utils.js.map +0 -1
- package/cjs/react-utils.js +0 -36
- package/cjs/react-utils.js.map +0 -1
- package/cjs/round-decimal.js +0 -86
- package/cjs/round-decimal.js.map +0 -1
- package/cjs/row-utils.js +0 -44
- package/cjs/row-utils.js.map +0 -1
- package/cjs/selection-utils.js +0 -246
- package/cjs/selection-utils.js.map +0 -1
- package/cjs/shell-layout-types.js +0 -13
- package/cjs/shell-layout-types.js.map +0 -1
- package/cjs/sort-utils.js +0 -78
- package/cjs/sort-utils.js.map +0 -1
- package/cjs/table-schema-utils.js +0 -13
- package/cjs/table-schema-utils.js.map +0 -1
- package/cjs/text-utils.js +0 -21
- package/cjs/text-utils.js.map +0 -1
- package/cjs/tree-utils.js +0 -106
- package/cjs/tree-utils.js.map +0 -1
- package/cjs/ts-utils.js +0 -12
- package/cjs/ts-utils.js.map +0 -1
- package/cjs/typeahead-utils.js +0 -6
- package/cjs/typeahead-utils.js.map +0 -1
- package/cjs/url-utils.js +0 -21
- package/cjs/url-utils.js.map +0 -1
- package/cjs/useId.js +0 -9
- package/cjs/useId.js.map +0 -1
- package/cjs/useLayoutEffectSkipFirst.js +0 -17
- package/cjs/useLayoutEffectSkipFirst.js.map +0 -1
- package/cjs/useStateRef.js +0 -23
- package/cjs/useStateRef.js.map +0 -1
- package/esm/DataWindow.js +0 -74
- package/esm/DataWindow.js.map +0 -1
- package/esm/ShellContext.js +0 -10
- package/esm/ShellContext.js.map +0 -1
- package/esm/ThemeProvider.js +0 -78
- package/esm/ThemeProvider.js.map +0 -1
- package/esm/array-utils.js +0 -79
- package/esm/array-utils.js.map +0 -1
- package/esm/box-utils.js +0 -47
- package/esm/box-utils.js.map +0 -1
- package/esm/column-utils.js +0 -815
- package/esm/column-utils.js.map +0 -1
- package/esm/common-types.js +0 -13
- package/esm/common-types.js.map +0 -1
- package/esm/component-registry.js +0 -124
- package/esm/component-registry.js.map +0 -1
- package/esm/context-definitions/DataContext.js +0 -18
- package/esm/context-definitions/DataContext.js.map +0 -1
- package/esm/context-definitions/DataProvider.js +0 -20
- package/esm/context-definitions/DataProvider.js.map +0 -1
- package/esm/context-definitions/DataSourceProvider.js +0 -29
- package/esm/context-definitions/DataSourceProvider.js.map +0 -1
- package/esm/context-definitions/WorkspaceContext.js +0 -17
- package/esm/context-definitions/WorkspaceContext.js.map +0 -1
- package/esm/cookie-utils.js +0 -8
- package/esm/cookie-utils.js.map +0 -1
- package/esm/css-utils.js +0 -7
- package/esm/css-utils.js.map +0 -1
- package/esm/data-utils.js +0 -68
- package/esm/data-utils.js.map +0 -1
- package/esm/datasource/BaseDataSource.js +0 -246
- package/esm/datasource/BaseDataSource.js.map +0 -1
- package/esm/datasource/datasource-action-utils.js +0 -8
- package/esm/datasource/datasource-action-utils.js.map +0 -1
- package/esm/datasource/datasource-filter-utils.js +0 -21
- package/esm/datasource/datasource-filter-utils.js.map +0 -1
- package/esm/datasource/datasource-utils.js +0 -184
- package/esm/datasource/datasource-utils.js.map +0 -1
- package/esm/date/date-utils.js +0 -8
- package/esm/date/date-utils.js.map +0 -1
- package/esm/date/dateTimePattern.js +0 -21
- package/esm/date/dateTimePattern.js.map +0 -1
- package/esm/date/formatter.js +0 -63
- package/esm/date/formatter.js.map +0 -1
- package/esm/date/types.js +0 -21
- package/esm/date/types.js.map +0 -1
- package/esm/debug-utils.js +0 -32
- package/esm/debug-utils.js.map +0 -1
- package/esm/event-emitter.js +0 -111
- package/esm/event-emitter.js.map +0 -1
- package/esm/feature-utils.js +0 -125
- package/esm/feature-utils.js.map +0 -1
- package/esm/filters/filter-utils.js +0 -120
- package/esm/filters/filter-utils.js.map +0 -1
- package/esm/filters/filterAsQuery.js +0 -72
- package/esm/filters/filterAsQuery.js.map +0 -1
- package/esm/form-utils.js +0 -44
- package/esm/form-utils.js.map +0 -1
- package/esm/formatting-utils.js +0 -63
- package/esm/formatting-utils.js.map +0 -1
- package/esm/getUniqueId.js +0 -4
- package/esm/getUniqueId.js.map +0 -1
- package/esm/group-utils.js +0 -23
- package/esm/group-utils.js.map +0 -1
- package/esm/html-utils.js +0 -145
- package/esm/html-utils.js.map +0 -1
- package/esm/input-utils.js +0 -7
- package/esm/input-utils.js.map +0 -1
- package/esm/invariant.js +0 -11
- package/esm/invariant.js.map +0 -1
- package/esm/itemToString.js +0 -21
- package/esm/itemToString.js.map +0 -1
- package/esm/json-utils.js +0 -101
- package/esm/json-utils.js.map +0 -1
- package/esm/keyboard-utils.js +0 -16
- package/esm/keyboard-utils.js.map +0 -1
- package/esm/keyset.js +0 -70
- package/esm/keyset.js.map +0 -1
- package/esm/list-utils.js +0 -9
- package/esm/list-utils.js.map +0 -1
- package/esm/local-storage-utils.js +0 -16
- package/esm/local-storage-utils.js.map +0 -1
- package/esm/logging-utils.js +0 -61
- package/esm/logging-utils.js.map +0 -1
- package/esm/menu-utils.js +0 -6
- package/esm/menu-utils.js.map +0 -1
- package/esm/module-utils.js +0 -4
- package/esm/module-utils.js.map +0 -1
- package/esm/moving-window.js +0 -101
- package/esm/moving-window.js.map +0 -1
- package/esm/nanoid/index.js +0 -20
- package/esm/nanoid/index.js.map +0 -1
- package/esm/perf-utils.js +0 -32
- package/esm/perf-utils.js.map +0 -1
- package/esm/promise-utils.js +0 -40
- package/esm/promise-utils.js.map +0 -1
- package/esm/protocol-message-utils.js +0 -71
- package/esm/protocol-message-utils.js.map +0 -1
- package/esm/range-utils.js +0 -145
- package/esm/range-utils.js.map +0 -1
- package/esm/react-utils.js +0 -32
- package/esm/react-utils.js.map +0 -1
- package/esm/round-decimal.js +0 -84
- package/esm/round-decimal.js.map +0 -1
- package/esm/row-utils.js +0 -40
- package/esm/row-utils.js.map +0 -1
- package/esm/selection-utils.js +0 -236
- package/esm/selection-utils.js.map +0 -1
- package/esm/shell-layout-types.js +0 -11
- package/esm/shell-layout-types.js.map +0 -1
- package/esm/sort-utils.js +0 -73
- package/esm/sort-utils.js.map +0 -1
- package/esm/table-schema-utils.js +0 -11
- package/esm/table-schema-utils.js.map +0 -1
- package/esm/text-utils.js +0 -18
- package/esm/text-utils.js.map +0 -1
- package/esm/tree-utils.js +0 -100
- package/esm/tree-utils.js.map +0 -1
- package/esm/ts-utils.js +0 -8
- package/esm/ts-utils.js.map +0 -1
- package/esm/typeahead-utils.js +0 -4
- package/esm/typeahead-utils.js.map +0 -1
- package/esm/url-utils.js +0 -18
- package/esm/url-utils.js.map +0 -1
- package/esm/useId.js +0 -7
- package/esm/useId.js.map +0 -1
- package/esm/useLayoutEffectSkipFirst.js +0 -15
- package/esm/useLayoutEffectSkipFirst.js.map +0 -1
- package/esm/useStateRef.js +0 -21
- package/esm/useStateRef.js.map +0 -1
|
@@ -1,246 +0,0 @@
|
|
|
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, withConfigDefaults, vanillaConfig } from './datasource-utils.js';
|
|
5
|
-
import { Range } from '../range-utils.js';
|
|
6
|
-
|
|
7
|
-
var __defProp = Object.defineProperty;
|
|
8
|
-
var __typeError = (msg) => {
|
|
9
|
-
throw TypeError(msg);
|
|
10
|
-
};
|
|
11
|
-
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
12
|
-
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
13
|
-
var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
|
|
14
|
-
var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
|
|
15
|
-
var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
|
16
|
-
var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), member.set(obj, value), value);
|
|
17
|
-
var _pageCount;
|
|
18
|
-
class BaseDataSource extends EventEmitter {
|
|
19
|
-
constructor({
|
|
20
|
-
aggregations,
|
|
21
|
-
baseFilterSpec,
|
|
22
|
-
columns,
|
|
23
|
-
filterSpec,
|
|
24
|
-
groupBy,
|
|
25
|
-
sort,
|
|
26
|
-
title,
|
|
27
|
-
viewport
|
|
28
|
-
}) {
|
|
29
|
-
super();
|
|
30
|
-
// This should simply be id
|
|
31
|
-
__publicField(this, "viewport");
|
|
32
|
-
__publicField(this, "_clientCallback");
|
|
33
|
-
__publicField(this, "_config", vanillaConfig);
|
|
34
|
-
__publicField(this, "_impendingConfig");
|
|
35
|
-
__publicField(this, "_range", Range(0, 0));
|
|
36
|
-
__publicField(this, "_size", 0);
|
|
37
|
-
__publicField(this, "_title");
|
|
38
|
-
__privateAdd(this, _pageCount, 0);
|
|
39
|
-
__publicField(this, "awaitingConfirmationOfConfigChanges", false);
|
|
40
|
-
this._config = {
|
|
41
|
-
...this._config,
|
|
42
|
-
aggregations: aggregations || this._config.aggregations,
|
|
43
|
-
baseFilterSpec: baseFilterSpec || this._config.baseFilterSpec,
|
|
44
|
-
columns: columns || this._config.columns,
|
|
45
|
-
filterSpec: filterSpec || this._config.filterSpec,
|
|
46
|
-
groupBy: groupBy || this._config.groupBy,
|
|
47
|
-
sort: sort || this._config.sort
|
|
48
|
-
};
|
|
49
|
-
this._title = title;
|
|
50
|
-
this.viewport = viewport ?? "";
|
|
51
|
-
}
|
|
52
|
-
subscribe({
|
|
53
|
-
baseFilterSpec,
|
|
54
|
-
columns,
|
|
55
|
-
aggregations,
|
|
56
|
-
range,
|
|
57
|
-
sort,
|
|
58
|
-
groupBy,
|
|
59
|
-
filterSpec,
|
|
60
|
-
viewport = this.viewport || (this.viewport = uuid())
|
|
61
|
-
}, callback) {
|
|
62
|
-
this._clientCallback = callback;
|
|
63
|
-
this.viewport = viewport;
|
|
64
|
-
if (aggregations || baseFilterSpec || columns || filterSpec || groupBy || sort) {
|
|
65
|
-
this._config = {
|
|
66
|
-
...this._config,
|
|
67
|
-
aggregations: aggregations || this._config.aggregations,
|
|
68
|
-
baseFilterSpec: baseFilterSpec || this._config.baseFilterSpec,
|
|
69
|
-
columns: columns || this._config.columns,
|
|
70
|
-
filterSpec: filterSpec || this._config.filterSpec,
|
|
71
|
-
groupBy: groupBy || this._config.groupBy,
|
|
72
|
-
sort: sort || this._config.sort
|
|
73
|
-
};
|
|
74
|
-
}
|
|
75
|
-
if (range) {
|
|
76
|
-
this._range = range;
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
get aggregations() {
|
|
80
|
-
return this._config.aggregations;
|
|
81
|
-
}
|
|
82
|
-
set aggregations(aggregations) {
|
|
83
|
-
this.config = {
|
|
84
|
-
...this._config,
|
|
85
|
-
aggregations
|
|
86
|
-
};
|
|
87
|
-
this.emit("config", this._config, this.range);
|
|
88
|
-
}
|
|
89
|
-
get baseFilter() {
|
|
90
|
-
return this._config.baseFilterSpec;
|
|
91
|
-
}
|
|
92
|
-
set baseFilter(baseFilter) {
|
|
93
|
-
this.config = {
|
|
94
|
-
...this._config,
|
|
95
|
-
baseFilterSpec: baseFilter
|
|
96
|
-
};
|
|
97
|
-
}
|
|
98
|
-
get columns() {
|
|
99
|
-
return this._config.columns;
|
|
100
|
-
}
|
|
101
|
-
set columns(columns) {
|
|
102
|
-
this.config = {
|
|
103
|
-
...this._config,
|
|
104
|
-
columns
|
|
105
|
-
};
|
|
106
|
-
this.emit("config", this._config, this.range);
|
|
107
|
-
}
|
|
108
|
-
get filter() {
|
|
109
|
-
return this._config.filterSpec;
|
|
110
|
-
}
|
|
111
|
-
set filter(filter) {
|
|
112
|
-
this.config = {
|
|
113
|
-
...this._config,
|
|
114
|
-
filterSpec: filter
|
|
115
|
-
};
|
|
116
|
-
}
|
|
117
|
-
get isAwaitingConfirmationOfConfigChange() {
|
|
118
|
-
return this._impendingConfig !== void 0;
|
|
119
|
-
}
|
|
120
|
-
confirmConfigChange() {
|
|
121
|
-
if (this._impendingConfig) {
|
|
122
|
-
this._config = this._impendingConfig;
|
|
123
|
-
console.log(
|
|
124
|
-
"%cclear impending config and emit config change",
|
|
125
|
-
"color:red"
|
|
126
|
-
);
|
|
127
|
-
this._impendingConfig = void 0;
|
|
128
|
-
this.emit("config", this._config, this.range, true);
|
|
129
|
-
} else {
|
|
130
|
-
throw Error(
|
|
131
|
-
`[BaseDataSource], unexpected call to confirmConfigChange, no changes pending`
|
|
132
|
-
);
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
get config() {
|
|
136
|
-
return this._impendingConfig ?? this._config;
|
|
137
|
-
}
|
|
138
|
-
set config(config) {
|
|
139
|
-
const confirmed = this.awaitingConfirmationOfConfigChanges ? true : void 0;
|
|
140
|
-
this.awaitingConfirmationOfConfigChanges = false;
|
|
141
|
-
const configChanges = this.applyConfig(config);
|
|
142
|
-
if (configChanges) {
|
|
143
|
-
this.emit("config", this.config, this.range, confirmed, configChanges);
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
set impendingConfig(config) {
|
|
147
|
-
this.awaitingConfirmationOfConfigChanges = true;
|
|
148
|
-
const configChanges = this.applyConfig(config);
|
|
149
|
-
if (configChanges) {
|
|
150
|
-
this.emit("config", this.config, this.range, false, configChanges);
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
get pageCount() {
|
|
154
|
-
return __privateGet(this, _pageCount);
|
|
155
|
-
}
|
|
156
|
-
set pageCount(pageCount) {
|
|
157
|
-
if (pageCount !== __privateGet(this, _pageCount)) {
|
|
158
|
-
__privateSet(this, _pageCount, pageCount);
|
|
159
|
-
this.emit("page-count", pageCount);
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
get range() {
|
|
163
|
-
return this._range;
|
|
164
|
-
}
|
|
165
|
-
set range(range) {
|
|
166
|
-
if (range.from !== this._range.from || range.to !== this._range.to) {
|
|
167
|
-
this._range = range;
|
|
168
|
-
this.pageCount = Math.ceil(this._size / (range.to - range.from));
|
|
169
|
-
this.rangeRequest(range);
|
|
170
|
-
requestAnimationFrame(() => {
|
|
171
|
-
this.emit("range", range);
|
|
172
|
-
});
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
get size() {
|
|
176
|
-
return this._size;
|
|
177
|
-
}
|
|
178
|
-
set size(size) {
|
|
179
|
-
this._size = size;
|
|
180
|
-
if (this.range.to !== 0) {
|
|
181
|
-
const pageCount = Math.ceil(size / (this.range.to - this.range.from));
|
|
182
|
-
this.pageCount = pageCount;
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
get sort() {
|
|
186
|
-
return this._config.sort;
|
|
187
|
-
}
|
|
188
|
-
set sort(sort) {
|
|
189
|
-
this.config = {
|
|
190
|
-
...this._config,
|
|
191
|
-
sort
|
|
192
|
-
};
|
|
193
|
-
this.emit("config", this._config, this.range);
|
|
194
|
-
}
|
|
195
|
-
get title() {
|
|
196
|
-
return this._title ?? "";
|
|
197
|
-
}
|
|
198
|
-
set title(title) {
|
|
199
|
-
this._title = title;
|
|
200
|
-
this.emit("title-changed", this.viewport ?? "", title);
|
|
201
|
-
}
|
|
202
|
-
// Public while we use this from useSessionDataSource
|
|
203
|
-
applyConfig(config, preserveExistingConfigAttributes = false) {
|
|
204
|
-
const { noChanges, ...otherChanges } = isConfigChanged(
|
|
205
|
-
this._config,
|
|
206
|
-
config
|
|
207
|
-
);
|
|
208
|
-
if (noChanges !== true) {
|
|
209
|
-
if (config) {
|
|
210
|
-
const newConfig = config?.filterSpec?.filter && config?.filterSpec.filterStruct === void 0 ? {
|
|
211
|
-
...config,
|
|
212
|
-
filterSpec: {
|
|
213
|
-
filter: config.filterSpec.filter,
|
|
214
|
-
filterStruct: parseFilter(config.filterSpec.filter)
|
|
215
|
-
}
|
|
216
|
-
} : config;
|
|
217
|
-
if (preserveExistingConfigAttributes) {
|
|
218
|
-
if (this.awaitingConfirmationOfConfigChanges) {
|
|
219
|
-
this._impendingConfig = {
|
|
220
|
-
...this._config,
|
|
221
|
-
...config
|
|
222
|
-
};
|
|
223
|
-
} else {
|
|
224
|
-
this._impendingConfig = void 0;
|
|
225
|
-
this._config = {
|
|
226
|
-
...this._config,
|
|
227
|
-
...config
|
|
228
|
-
};
|
|
229
|
-
}
|
|
230
|
-
} else {
|
|
231
|
-
if (this.awaitingConfirmationOfConfigChanges) {
|
|
232
|
-
this._impendingConfig = withConfigDefaults(newConfig);
|
|
233
|
-
} else {
|
|
234
|
-
this._impendingConfig = void 0;
|
|
235
|
-
this._config = withConfigDefaults(newConfig);
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
return otherChanges;
|
|
239
|
-
}
|
|
240
|
-
}
|
|
241
|
-
}
|
|
242
|
-
}
|
|
243
|
-
_pageCount = new WeakMap();
|
|
244
|
-
|
|
245
|
-
export { BaseDataSource };
|
|
246
|
-
//# sourceMappingURL=BaseDataSource.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BaseDataSource.js","sources":["../../src/datasource/BaseDataSource.ts"],"sourcesContent":["import type {\n DataSource,\n DataSourceConfig,\n DataSourceConstructorProps,\n DataSourceEvents,\n DataSourceFilter,\n DataSourceSubscribeCallback,\n DataSourceSubscribeProps,\n WithBaseFilter,\n WithFullConfig,\n} from \"@vuu-ui/vuu-data-types\";\nimport { parseFilter } from \"@vuu-ui/vuu-filter-parser\";\nimport {\n LinkDescriptorWithLabel,\n VuuAggregation,\n VuuRange,\n VuuSort,\n} from \"@vuu-ui/vuu-protocol-types\";\nimport { EventEmitter } from \"../event-emitter\";\nimport { uuid } from \"../nanoid\";\nimport {\n DataSourceConfigChanges,\n isConfigChanged,\n vanillaConfig,\n withConfigDefaults,\n} from \"./datasource-utils\";\nimport { Range } from \"../range-utils\";\n\nexport type RuntimeConfig = WithBaseFilter<WithFullConfig> & {\n visualLink?: LinkDescriptorWithLabel;\n};\n\nexport abstract class BaseDataSource\n extends EventEmitter<DataSourceEvents>\n implements Pick<DataSource, \"config\">\n{\n // This should simply be id\n public viewport: string;\n\n protected _clientCallback: DataSourceSubscribeCallback | undefined;\n protected _config: RuntimeConfig = vanillaConfig;\n protected _impendingConfig: RuntimeConfig | undefined = undefined;\n protected _range = Range(0, 0);\n protected _size = 0;\n protected _title: string | undefined;\n\n #pageCount = 0;\n\n private awaitingConfirmationOfConfigChanges = false;\n\n constructor({\n aggregations,\n baseFilterSpec,\n columns,\n filterSpec,\n groupBy,\n sort,\n title,\n viewport,\n }: Omit<DataSourceConstructorProps, \"table\">) {\n super();\n this._config = {\n ...this._config,\n aggregations: aggregations || this._config.aggregations,\n baseFilterSpec: baseFilterSpec || this._config.baseFilterSpec,\n columns: columns || this._config.columns,\n filterSpec: filterSpec || this._config.filterSpec,\n groupBy: groupBy || this._config.groupBy,\n sort: sort || this._config.sort,\n };\n\n this._title = title;\n this.viewport = viewport ?? \"\";\n }\n\n subscribe(\n {\n baseFilterSpec,\n columns,\n aggregations,\n range,\n sort,\n groupBy,\n filterSpec,\n viewport = this.viewport || (this.viewport = uuid()),\n }: DataSourceSubscribeProps,\n callback: DataSourceSubscribeCallback,\n ) {\n this._clientCallback = callback;\n this.viewport = viewport;\n\n if (\n aggregations ||\n baseFilterSpec ||\n columns ||\n filterSpec ||\n groupBy ||\n sort\n ) {\n this._config = {\n ...this._config,\n aggregations: aggregations || this._config.aggregations,\n baseFilterSpec: baseFilterSpec || this._config.baseFilterSpec,\n columns: columns || this._config.columns,\n filterSpec: filterSpec || this._config.filterSpec,\n groupBy: groupBy || this._config.groupBy,\n sort: sort || this._config.sort,\n };\n }\n\n // store the range before we await the server. It's is possible the\n // range will be updated from the client before we have been able to\n // subscribe. This ensures we will subscribe with latest value.\n if (range) {\n this._range = range;\n }\n }\n\n get aggregations() {\n return this._config.aggregations;\n }\n\n set aggregations(aggregations: VuuAggregation[]) {\n this.config = {\n ...this._config,\n aggregations,\n };\n this.emit(\"config\", this._config, this.range);\n }\n\n get baseFilter() {\n return this._config.baseFilterSpec;\n }\n\n set baseFilter(baseFilter: DataSourceFilter | undefined) {\n this.config = {\n ...this._config,\n baseFilterSpec: baseFilter,\n };\n }\n\n get columns() {\n return this._config.columns;\n }\n\n set columns(columns: string[]) {\n this.config = {\n ...this._config,\n columns,\n };\n this.emit(\"config\", this._config, this.range);\n }\n\n get filter() {\n return this._config.filterSpec;\n }\n\n set filter(filter: DataSourceFilter) {\n this.config = {\n ...this._config,\n filterSpec: filter,\n };\n }\n\n get isAwaitingConfirmationOfConfigChange() {\n return this._impendingConfig !== undefined;\n }\n\n protected confirmConfigChange() {\n if (this._impendingConfig) {\n this._config = this._impendingConfig;\n console.log(\n \"%cclear impending config and emit config change\",\n \"color:red\",\n );\n this._impendingConfig = undefined;\n this.emit(\"config\", this._config, this.range, true);\n } else {\n throw Error(\n `[BaseDataSource], unexpected call to confirmConfigChange, no changes pending`,\n );\n }\n }\n\n get config() {\n return this._impendingConfig ?? this._config;\n }\n\n set config(config: WithBaseFilter<WithFullConfig>) {\n const confirmed = this.awaitingConfirmationOfConfigChanges\n ? true\n : undefined;\n // TODO what happens if config is set and we still have an unconfirmed change ?\n this.awaitingConfirmationOfConfigChanges = false;\n const configChanges = this.applyConfig(config);\n if (configChanges) {\n this.emit(\"config\", this.config, this.range, confirmed, configChanges);\n }\n }\n\n set impendingConfig(config: WithBaseFilter<WithFullConfig>) {\n this.awaitingConfirmationOfConfigChanges = true;\n const configChanges = this.applyConfig(config);\n if (configChanges) {\n this.emit(\"config\", this.config, this.range, false, configChanges);\n }\n }\n\n get pageCount() {\n return this.#pageCount;\n }\n\n set pageCount(pageCount: number) {\n if (pageCount !== this.#pageCount) {\n this.#pageCount = pageCount;\n this.emit(\"page-count\", pageCount);\n }\n }\n\n get range() {\n return this._range;\n }\n\n set range(range: Range) {\n if (range.from !== this._range.from || range.to !== this._range.to) {\n this._range = range;\n this.pageCount = Math.ceil(this._size / (range.to - range.from));\n this.rangeRequest(range);\n requestAnimationFrame(() => {\n this.emit(\"range\", range);\n });\n }\n }\n\n get size() {\n return this._size;\n }\n\n set size(size: number) {\n this._size = size;\n if (this.range.to !== 0) {\n const pageCount = Math.ceil(size / (this.range.to - this.range.from));\n this.pageCount = pageCount;\n }\n }\n\n get sort() {\n return this._config.sort;\n }\n\n set sort(sort: VuuSort) {\n this.config = {\n ...this._config,\n sort,\n };\n this.emit(\"config\", this._config, this.range);\n }\n\n get title() {\n return this._title ?? \"\";\n }\n\n set title(title: string) {\n this._title = title;\n this.emit(\"title-changed\", this.viewport ?? \"\", title);\n }\n\n // Public while we use this from useSessionDataSource\n public applyConfig(\n config: WithBaseFilter<DataSourceConfig>,\n preserveExistingConfigAttributes = false,\n ): DataSourceConfigChanges | undefined {\n const { noChanges, ...otherChanges } = isConfigChanged(\n this._config,\n config,\n );\n if (noChanges !== true) {\n if (config) {\n const newConfig: DataSourceConfig =\n config?.filterSpec?.filter &&\n config?.filterSpec.filterStruct === undefined\n ? {\n ...config,\n filterSpec: {\n filter: config.filterSpec.filter,\n filterStruct: parseFilter(config.filterSpec.filter),\n },\n }\n : config;\n if (preserveExistingConfigAttributes) {\n if (this.awaitingConfirmationOfConfigChanges) {\n this._impendingConfig = {\n ...this._config,\n ...config,\n };\n } else {\n this._impendingConfig = undefined;\n this._config = {\n ...this._config,\n ...config,\n };\n }\n } else {\n if (this.awaitingConfirmationOfConfigChanges) {\n this._impendingConfig = withConfigDefaults(newConfig);\n } else {\n this._impendingConfig = undefined;\n this._config = withConfigDefaults(newConfig);\n }\n }\n return otherChanges;\n }\n }\n }\n\n abstract rangeRequest(range: VuuRange): void;\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
const isVisualLinksAction = (action) => action.type === "vuu-links";
|
|
2
|
-
const isVisualLinkCreatedAction = (action) => action.type === "vuu-link-created";
|
|
3
|
-
const isVisualLinkRemovedAction = (action) => action.type === "vuu-link-removed";
|
|
4
|
-
const isViewportMenusAction = (action) => action.type === "vuu-menu";
|
|
5
|
-
const isVuuFeatureAction = (action) => isViewportMenusAction(action) || isVisualLinksAction(action);
|
|
6
|
-
|
|
7
|
-
export { isViewportMenusAction, isVisualLinkCreatedAction, isVisualLinkRemovedAction, isVisualLinksAction, isVuuFeatureAction };
|
|
8
|
-
//# sourceMappingURL=datasource-action-utils.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"datasource-action-utils.js","sources":["../../src/datasource/datasource-action-utils.ts"],"sourcesContent":["import {\n DataSourceMenusMessage,\n DataSourceVisualLinkCreatedMessage,\n DataSourceVisualLinkRemovedMessage,\n DataSourceVisualLinksMessage,\n VuuFeatureMessage,\n} from \"@vuu-ui/vuu-data-types\";\nimport { GridAction } from \"@vuu-ui/vuu-table-types\";\n\nexport const isVisualLinksAction = (\n action: GridAction,\n): action is DataSourceVisualLinksMessage => action.type === \"vuu-links\";\n\nexport const isVisualLinkCreatedAction = (\n action: GridAction,\n): action is DataSourceVisualLinkCreatedMessage =>\n action.type === \"vuu-link-created\";\n\nexport const isVisualLinkRemovedAction = (\n action: GridAction,\n): action is DataSourceVisualLinkRemovedMessage =>\n action.type === \"vuu-link-removed\";\n\nexport const isViewportMenusAction = (\n action: GridAction,\n): action is DataSourceMenusMessage => action.type === \"vuu-menu\";\n\nexport const isVuuFeatureAction = (\n action: GridAction,\n): action is VuuFeatureMessage =>\n isViewportMenusAction(action) || isVisualLinksAction(action);\n"],"names":[],"mappings":"AASO,MAAM,mBAAsB,GAAA,CACjC,MAC2C,KAAA,MAAA,CAAO,IAAS,KAAA;AAEtD,MAAM,yBAA4B,GAAA,CACvC,MAEA,KAAA,MAAA,CAAO,IAAS,KAAA;AAEX,MAAM,yBAA4B,GAAA,CACvC,MAEA,KAAA,MAAA,CAAO,IAAS,KAAA;AAEX,MAAM,qBAAwB,GAAA,CACnC,MACqC,KAAA,MAAA,CAAO,IAAS,KAAA;AAEhD,MAAM,qBAAqB,CAChC,MAAA,KAEA,sBAAsB,MAAM,CAAA,IAAK,oBAAoB,MAAM;;;;"}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { parseFilter } from '@vuu-ui/vuu-filter-parser';
|
|
2
|
-
|
|
3
|
-
const combineFilters = ({
|
|
4
|
-
baseFilterSpec,
|
|
5
|
-
filterSpec,
|
|
6
|
-
...config
|
|
7
|
-
}) => {
|
|
8
|
-
const baseFilterQuery = baseFilterSpec?.filter ?? "";
|
|
9
|
-
const combinedFilter = filterSpec.filter.length > 0 && baseFilterQuery.length > 0 ? `${filterSpec.filter} and ${baseFilterQuery}` : filterSpec.filter || baseFilterQuery;
|
|
10
|
-
const newConfig = {
|
|
11
|
-
...config,
|
|
12
|
-
filterSpec: {
|
|
13
|
-
filter: combinedFilter,
|
|
14
|
-
filterStruct: combinedFilter.length > 0 ? parseFilter(combinedFilter) : void 0
|
|
15
|
-
}
|
|
16
|
-
};
|
|
17
|
-
return newConfig;
|
|
18
|
-
};
|
|
19
|
-
|
|
20
|
-
export { combineFilters };
|
|
21
|
-
//# sourceMappingURL=datasource-filter-utils.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"datasource-filter-utils.js","sources":["../../src/datasource/datasource-filter-utils.ts"],"sourcesContent":["import { WithBaseFilter, WithFullConfig } from \"@vuu-ui/vuu-data-types\";\nimport { parseFilter } from \"@vuu-ui/vuu-filter-parser\";\n\nexport const combineFilters = ({\n baseFilterSpec,\n filterSpec,\n ...config\n}: WithBaseFilter<WithFullConfig>) => {\n const baseFilterQuery = baseFilterSpec?.filter ?? \"\";\n const combinedFilter =\n filterSpec.filter.length > 0 && baseFilterQuery.length > 0\n ? `${filterSpec.filter} and ${baseFilterQuery}`\n : filterSpec.filter || baseFilterQuery;\n\n const newConfig: WithFullConfig = {\n ...config,\n filterSpec: {\n filter: combinedFilter,\n filterStruct:\n combinedFilter.length > 0 ? parseFilter(combinedFilter) : undefined,\n },\n };\n\n return newConfig;\n};\n"],"names":[],"mappings":";;AAGO,MAAM,iBAAiB,CAAC;AAAA,EAC7B,cAAA;AAAA,EACA,UAAA;AAAA,EACA,GAAG;AACL,CAAsC,KAAA;AACpC,EAAM,MAAA,eAAA,GAAkB,gBAAgB,MAAU,IAAA,EAAA;AAClD,EAAA,MAAM,cACJ,GAAA,UAAA,CAAW,MAAO,CAAA,MAAA,GAAS,KAAK,eAAgB,CAAA,MAAA,GAAS,CACrD,GAAA,CAAA,EAAG,WAAW,MAAM,CAAA,KAAA,EAAQ,eAAe,CAAA,CAAA,GAC3C,WAAW,MAAU,IAAA,eAAA;AAE3B,EAAA,MAAM,SAA4B,GAAA;AAAA,IAChC,GAAG,MAAA;AAAA,IACH,UAAY,EAAA;AAAA,MACV,MAAQ,EAAA,cAAA;AAAA,MACR,cACE,cAAe,CAAA,MAAA,GAAS,CAAI,GAAA,WAAA,CAAY,cAAc,CAAI,GAAA,KAAA;AAAA;AAC9D,GACF;AAEA,EAAO,OAAA,SAAA;AACT;;;;"}
|
|
@@ -1,184 +0,0 @@
|
|
|
1
|
-
const NoFilter = { filter: "" };
|
|
2
|
-
const NoSort = { sortDefs: [] };
|
|
3
|
-
const vanillaConfig = {
|
|
4
|
-
aggregations: [],
|
|
5
|
-
columns: [],
|
|
6
|
-
filterSpec: NoFilter,
|
|
7
|
-
groupBy: [],
|
|
8
|
-
sort: NoSort
|
|
9
|
-
};
|
|
10
|
-
const equivalentAggregations = ({ aggregations: agg1 }, { aggregations: agg2 }) => agg1 === void 0 && agg2?.length === 0 || agg2 === void 0 && agg1?.length === 0;
|
|
11
|
-
const equivalentColumns = ({ columns: cols1 }, { columns: cols2 }) => cols1 === void 0 && cols2?.length === 0 || cols2 === void 0 && cols1?.length === 0;
|
|
12
|
-
const equivalentFilter = ({ filterSpec: f1 }, { filterSpec: f2 }) => f1 === void 0 && f2?.filter === "" || f2 === void 0 && f1?.filter === "";
|
|
13
|
-
const equivalentGroupBy = ({ groupBy: val1 }, { groupBy: val2 }) => val1 === void 0 && val2?.length === 0 || val2 === void 0 && val1?.length === 0;
|
|
14
|
-
const equivalentSort = ({ sort: s1 }, { sort: s2 }) => s1 === void 0 && s2?.sortDefs.length === 0 || s2 === void 0 && s1?.sortDefs.length === 0;
|
|
15
|
-
const exactlyTheSame = (a, b) => {
|
|
16
|
-
if (a === b) {
|
|
17
|
-
return true;
|
|
18
|
-
} else if (a === void 0 && b === void 0) {
|
|
19
|
-
return true;
|
|
20
|
-
} else {
|
|
21
|
-
return false;
|
|
22
|
-
}
|
|
23
|
-
};
|
|
24
|
-
const isAggregationsChanged = (config, newConfig) => {
|
|
25
|
-
const { aggregations: agg1 } = config;
|
|
26
|
-
const { aggregations: agg2 } = newConfig;
|
|
27
|
-
if (exactlyTheSame(agg1, agg2) || equivalentAggregations(config, newConfig)) {
|
|
28
|
-
return false;
|
|
29
|
-
} else if (agg1 === void 0 || agg2 === void 0) {
|
|
30
|
-
return true;
|
|
31
|
-
} else if (agg1.length !== agg2.length) {
|
|
32
|
-
return true;
|
|
33
|
-
}
|
|
34
|
-
return agg1.some(
|
|
35
|
-
({ column, aggType }, i) => column !== agg2[i].column || aggType !== agg2[i].aggType
|
|
36
|
-
);
|
|
37
|
-
};
|
|
38
|
-
const isColumnsChanged = (config, newConfig) => {
|
|
39
|
-
const { columns: cols1 } = config;
|
|
40
|
-
const { columns: cols2 } = newConfig;
|
|
41
|
-
if (exactlyTheSame(cols1, cols2) || equivalentColumns(config, newConfig)) {
|
|
42
|
-
return false;
|
|
43
|
-
} else if (cols1 === void 0 || cols2 === void 0) {
|
|
44
|
-
return true;
|
|
45
|
-
} else if (cols1?.length !== cols2?.length) {
|
|
46
|
-
return true;
|
|
47
|
-
}
|
|
48
|
-
return cols1.some((column, i) => column !== cols2?.[i]);
|
|
49
|
-
};
|
|
50
|
-
const isBaseFilterChanged = (c1, c2) => {
|
|
51
|
-
if (equivalentFilter(c1, c2)) {
|
|
52
|
-
return false;
|
|
53
|
-
} else {
|
|
54
|
-
return c1.baseFilterSpec?.filter !== c2.baseFilterSpec?.filter;
|
|
55
|
-
}
|
|
56
|
-
};
|
|
57
|
-
const isFilterChanged = (c1, c2) => {
|
|
58
|
-
if (equivalentFilter(c1, c2)) {
|
|
59
|
-
return false;
|
|
60
|
-
} else {
|
|
61
|
-
return c1.filterSpec?.filter !== c2.filterSpec?.filter;
|
|
62
|
-
}
|
|
63
|
-
};
|
|
64
|
-
const isGroupByChanged = (config, newConfig) => {
|
|
65
|
-
const { groupBy: g1 } = config;
|
|
66
|
-
const { groupBy: g2 } = newConfig;
|
|
67
|
-
if (exactlyTheSame(g1, g2) || equivalentGroupBy(config, newConfig)) {
|
|
68
|
-
return false;
|
|
69
|
-
} else if (g1 === void 0 || g2 === void 0) {
|
|
70
|
-
return true;
|
|
71
|
-
} else if (g1?.length !== g2?.length) {
|
|
72
|
-
return true;
|
|
73
|
-
}
|
|
74
|
-
return g1.some((column, i) => column !== g2?.[i]);
|
|
75
|
-
};
|
|
76
|
-
const isSortChanged = (config, newConfig) => {
|
|
77
|
-
const { sort: s1 } = config;
|
|
78
|
-
const { sort: s2 } = newConfig;
|
|
79
|
-
if (exactlyTheSame(s1, s2) || equivalentSort(config, newConfig)) {
|
|
80
|
-
return false;
|
|
81
|
-
} else if (s1 === void 0 || s2 === void 0) {
|
|
82
|
-
return true;
|
|
83
|
-
} else if (s1?.sortDefs.length !== s2?.sortDefs.length) {
|
|
84
|
-
return true;
|
|
85
|
-
}
|
|
86
|
-
return s1.sortDefs.some(
|
|
87
|
-
({ column, sortType }, i) => column !== s2.sortDefs[i].column || sortType !== s2.sortDefs[i].sortType
|
|
88
|
-
);
|
|
89
|
-
};
|
|
90
|
-
const isVisualLinkChanged = ({ visualLink: v1 }, { visualLink: v2 }) => {
|
|
91
|
-
if (exactlyTheSame(v1, v2)) {
|
|
92
|
-
return false;
|
|
93
|
-
}
|
|
94
|
-
if (v1 === void 0 || v2 === void 0) {
|
|
95
|
-
return true;
|
|
96
|
-
}
|
|
97
|
-
return v1.label !== v2.label || v2.parentVpId !== v2.parentVpId;
|
|
98
|
-
};
|
|
99
|
-
const NO_CONFIG_CHANGES = {
|
|
100
|
-
aggregationsChanged: false,
|
|
101
|
-
baseFilterChanged: false,
|
|
102
|
-
columnsChanged: false,
|
|
103
|
-
filterChanged: false,
|
|
104
|
-
groupByChanged: false,
|
|
105
|
-
noChanges: true,
|
|
106
|
-
sortChanged: false,
|
|
107
|
-
visualLinkChanged: false
|
|
108
|
-
};
|
|
109
|
-
const isConfigChanged = (config, newConfig) => {
|
|
110
|
-
if (exactlyTheSame(config, newConfig)) {
|
|
111
|
-
return NO_CONFIG_CHANGES;
|
|
112
|
-
}
|
|
113
|
-
if (config === void 0 && newConfig == void 0) {
|
|
114
|
-
return NO_CONFIG_CHANGES;
|
|
115
|
-
} else if (config === void 0) {
|
|
116
|
-
return isConfigChanged({}, newConfig);
|
|
117
|
-
} else if (newConfig === void 0) {
|
|
118
|
-
return isConfigChanged(config, {});
|
|
119
|
-
}
|
|
120
|
-
const aggregationsChanged = isAggregationsChanged(config, newConfig);
|
|
121
|
-
const baseFilterChanged = isBaseFilterChanged(config, newConfig);
|
|
122
|
-
const columnsChanged = isColumnsChanged(config, newConfig);
|
|
123
|
-
const filterChanged = isFilterChanged(config, newConfig);
|
|
124
|
-
const groupByChanged = isGroupByChanged(config, newConfig);
|
|
125
|
-
const sortChanged = isSortChanged(config, newConfig);
|
|
126
|
-
const visualLinkChanged = isVisualLinkChanged(config, newConfig);
|
|
127
|
-
const noChanges = !(aggregationsChanged || baseFilterChanged || columnsChanged || filterChanged || groupByChanged || sortChanged || visualLinkChanged);
|
|
128
|
-
return {
|
|
129
|
-
aggregationsChanged,
|
|
130
|
-
baseFilterChanged,
|
|
131
|
-
columnsChanged,
|
|
132
|
-
filterChanged,
|
|
133
|
-
groupByChanged,
|
|
134
|
-
noChanges,
|
|
135
|
-
sortChanged,
|
|
136
|
-
visualLinkChanged
|
|
137
|
-
};
|
|
138
|
-
};
|
|
139
|
-
const hasGroupBy = (config) => config !== void 0 && config.groupBy !== void 0 && config.groupBy.length > 0;
|
|
140
|
-
const hasBaseFilter = (config) => config?.baseFilterSpec !== void 0 && config.baseFilterSpec.filter.length > 0;
|
|
141
|
-
const hasFilter = (config) => config?.filterSpec !== void 0 && config.filterSpec.filter.length > 0;
|
|
142
|
-
const hasSort = (config) => config?.sort !== void 0 && Array.isArray(config.sort?.sortDefs) && config.sort.sortDefs.length > 0;
|
|
143
|
-
const isTypeaheadSuggestionProvider = (source) => typeof source["getTypeaheadSuggestions"] === "function";
|
|
144
|
-
const isTableSchemaMessage = (message) => message.type === "TABLE_META_RESP";
|
|
145
|
-
const isConnectionQualityMetrics = (msg) => msg.type === "connection-metrics";
|
|
146
|
-
const messageHasResult = (msg) => typeof msg.result !== "undefined";
|
|
147
|
-
const isErrorResponse = (response) => response?.type === "VP_EDIT_RPC_REJECT";
|
|
148
|
-
const isVisualLinkMessage = (msg) => msg.type.endsWith("_VISUAL_LINK");
|
|
149
|
-
const isViewportMessage = (msg) => "viewport" in msg;
|
|
150
|
-
const messageHasDataRows = (message) => message.type === "viewport-update" && Array.isArray(message.rows);
|
|
151
|
-
const withConfigDefaults = (config) => {
|
|
152
|
-
if (config.aggregations && config.baseFilterSpec && config.columns && config.filterSpec && config.groupBy && config.sort) {
|
|
153
|
-
return config;
|
|
154
|
-
} else {
|
|
155
|
-
const {
|
|
156
|
-
aggregations = [],
|
|
157
|
-
baseFilterSpec: baseFilter = { filter: "" },
|
|
158
|
-
columns = [],
|
|
159
|
-
filterSpec: filter = { filter: "" },
|
|
160
|
-
groupBy = [],
|
|
161
|
-
sort = { sortDefs: [] },
|
|
162
|
-
visualLink
|
|
163
|
-
} = config;
|
|
164
|
-
return {
|
|
165
|
-
aggregations,
|
|
166
|
-
baseFilterSpec: baseFilter,
|
|
167
|
-
columns,
|
|
168
|
-
filterSpec: filter,
|
|
169
|
-
groupBy,
|
|
170
|
-
sort,
|
|
171
|
-
visualLink
|
|
172
|
-
};
|
|
173
|
-
}
|
|
174
|
-
};
|
|
175
|
-
const dataSourceRowToEntity = (row, columnMap) => Object.entries(columnMap).reduce(
|
|
176
|
-
(entity, [name, index]) => ({
|
|
177
|
-
...entity,
|
|
178
|
-
[name]: row[index]
|
|
179
|
-
}),
|
|
180
|
-
{}
|
|
181
|
-
);
|
|
182
|
-
|
|
183
|
-
export { NO_CONFIG_CHANGES, NoFilter, NoSort, dataSourceRowToEntity, hasBaseFilter, hasFilter, hasGroupBy, hasSort, isBaseFilterChanged, isConfigChanged, isConnectionQualityMetrics, isErrorResponse, isFilterChanged, isGroupByChanged, isTableSchemaMessage, isTypeaheadSuggestionProvider, isViewportMessage, isVisualLinkMessage, messageHasDataRows, messageHasResult, vanillaConfig, withConfigDefaults };
|
|
184
|
-
//# sourceMappingURL=datasource-utils.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"datasource-utils.js","sources":["../../src/datasource/datasource-utils.ts"],"sourcesContent":["import {\n ConnectionQualityMetrics,\n DataSourceCallbackMessage,\n DataSourceConfig,\n DataSourceDataMessage,\n DataSourceRow,\n RpcResponse,\n TypeaheadSuggestionProvider,\n VuuUIMessageIn,\n VuuUIMessageInRPC,\n VuuUIMessageInRPCEditReject,\n VuuUIMessageInTableMeta,\n VuuUIMessageOutViewport,\n WithBaseFilter,\n WithFilter,\n WithFullConfig,\n WithGroupBy,\n WithSort,\n} from \"@vuu-ui/vuu-data-types\";\nimport {\n LinkDescriptorWithLabel,\n VuuCreateVisualLink,\n VuuFilter,\n VuuRemoveVisualLink,\n VuuRowDataItemType,\n VuuSort,\n} from \"@vuu-ui/vuu-protocol-types\";\nimport { ColumnMap } from \"../column-utils\";\n\nexport const NoFilter: VuuFilter = { filter: \"\" };\nexport const NoSort: VuuSort = { sortDefs: [] };\n\nexport const vanillaConfig: WithFullConfig = {\n aggregations: [],\n columns: [],\n filterSpec: NoFilter,\n groupBy: [],\n sort: NoSort,\n};\n\nexport type DataSourceConfigChanges = {\n aggregationsChanged: boolean;\n baseFilterChanged: boolean;\n columnsChanged: boolean;\n filterChanged: boolean;\n groupByChanged: boolean;\n sortChanged: boolean;\n visualLinkChanged: boolean;\n};\n\nexport type MaybeDataSourceConfigChanges = DataSourceConfigChanges & {\n noChanges: boolean;\n};\n\ntype DataConfigPredicate = (\n config: WithBaseFilter<DataSourceConfig>,\n newConfig: WithBaseFilter<DataSourceConfig>,\n) => boolean;\n\nconst equivalentAggregations: DataConfigPredicate = (\n { aggregations: agg1 },\n { aggregations: agg2 },\n) =>\n (agg1 === undefined && agg2?.length === 0) ||\n (agg2 === undefined && agg1?.length === 0);\n\nconst equivalentColumns: DataConfigPredicate = (\n { columns: cols1 },\n { columns: cols2 },\n) =>\n (cols1 === undefined && cols2?.length === 0) ||\n (cols2 === undefined && cols1?.length === 0);\n\nconst equivalentFilter: DataConfigPredicate = (\n { filterSpec: f1 },\n { filterSpec: f2 },\n) =>\n (f1 === undefined && f2?.filter === \"\") ||\n (f2 === undefined && f1?.filter === \"\");\n\nconst equivalentGroupBy: DataConfigPredicate = (\n { groupBy: val1 },\n { groupBy: val2 },\n) =>\n (val1 === undefined && val2?.length === 0) ||\n (val2 === undefined && val1?.length === 0);\n\nconst equivalentSort: DataConfigPredicate = ({ sort: s1 }, { sort: s2 }) =>\n (s1 === undefined && s2?.sortDefs.length === 0) ||\n (s2 === undefined && s1?.sortDefs.length === 0);\n\nconst exactlyTheSame = (a: unknown, b: unknown) => {\n if (a === b) {\n return true;\n } else if (a === undefined && b === undefined) {\n return true;\n } else {\n return false;\n }\n};\n\nconst isAggregationsChanged: DataConfigPredicate = (config, newConfig) => {\n const { aggregations: agg1 } = config;\n const { aggregations: agg2 } = newConfig;\n if (exactlyTheSame(agg1, agg2) || equivalentAggregations(config, newConfig)) {\n return false;\n } else if (agg1 === undefined || agg2 === undefined) {\n return true;\n } else if (agg1.length !== agg2.length) {\n return true;\n }\n return agg1.some(\n ({ column, aggType }, i) =>\n column !== agg2[i].column || aggType !== agg2[i].aggType,\n );\n};\n\nconst isColumnsChanged: DataConfigPredicate = (config, newConfig) => {\n const { columns: cols1 } = config;\n const { columns: cols2 } = newConfig;\n\n if (exactlyTheSame(cols1, cols2) || equivalentColumns(config, newConfig)) {\n return false;\n } else if (cols1 === undefined || cols2 === undefined) {\n return true;\n } else if (cols1?.length !== cols2?.length) {\n return true;\n }\n return cols1.some((column, i) => column !== cols2?.[i]);\n};\n\nexport const isBaseFilterChanged: DataConfigPredicate = (c1, c2) => {\n if (equivalentFilter(c1, c2)) {\n return false;\n } else {\n return c1.baseFilterSpec?.filter !== c2.baseFilterSpec?.filter;\n }\n};\n\nexport const isFilterChanged: DataConfigPredicate = (c1, c2) => {\n if (equivalentFilter(c1, c2)) {\n return false;\n } else {\n return c1.filterSpec?.filter !== c2.filterSpec?.filter;\n }\n};\n\nexport const isGroupByChanged: DataConfigPredicate = (config, newConfig) => {\n const { groupBy: g1 } = config;\n const { groupBy: g2 } = newConfig;\n if (exactlyTheSame(g1, g2) || equivalentGroupBy(config, newConfig)) {\n return false;\n } else if (g1 === undefined || g2 === undefined) {\n return true;\n } else if (g1?.length !== g2?.length) {\n return true;\n }\n return g1.some((column, i) => column !== g2?.[i]);\n};\n\nconst isSortChanged: DataConfigPredicate = (config, newConfig) => {\n const { sort: s1 } = config;\n const { sort: s2 } = newConfig;\n if (exactlyTheSame(s1, s2) || equivalentSort(config, newConfig)) {\n return false;\n } else if (s1 === undefined || s2 === undefined) {\n return true;\n } else if (s1?.sortDefs.length !== s2?.sortDefs.length) {\n return true;\n }\n return s1.sortDefs.some(\n ({ column, sortType }, i) =>\n column !== s2.sortDefs[i].column || sortType !== s2.sortDefs[i].sortType,\n );\n};\n\nconst isVisualLinkChanged: DataConfigPredicate = (\n { visualLink: v1 },\n { visualLink: v2 },\n) => {\n if (exactlyTheSame(v1, v2)) {\n return false;\n }\n if (v1 === undefined || v2 === undefined) {\n return true;\n }\n return v1.label !== v2.label || v2.parentVpId !== v2.parentVpId;\n};\n\nexport const NO_CONFIG_CHANGES: MaybeDataSourceConfigChanges = {\n aggregationsChanged: false,\n baseFilterChanged: false,\n columnsChanged: false,\n filterChanged: false,\n groupByChanged: false,\n noChanges: true,\n sortChanged: false,\n visualLinkChanged: false,\n};\n\nexport const isConfigChanged = (\n config: DataSourceConfig | undefined,\n newConfig: DataSourceConfig | undefined,\n): MaybeDataSourceConfigChanges => {\n if (exactlyTheSame(config, newConfig)) {\n return NO_CONFIG_CHANGES;\n }\n\n if (config === undefined && newConfig == undefined) {\n return NO_CONFIG_CHANGES;\n } else if (config === undefined) {\n return isConfigChanged({}, newConfig);\n } else if (newConfig === undefined) {\n return isConfigChanged(config, {});\n }\n\n const aggregationsChanged = isAggregationsChanged(config, newConfig);\n const baseFilterChanged = isBaseFilterChanged(config, newConfig);\n const columnsChanged = isColumnsChanged(config, newConfig);\n const filterChanged = isFilterChanged(config, newConfig);\n const groupByChanged = isGroupByChanged(config, newConfig);\n const sortChanged = isSortChanged(config, newConfig);\n const visualLinkChanged = isVisualLinkChanged(config, newConfig);\n\n const noChanges = !(\n aggregationsChanged ||\n baseFilterChanged ||\n columnsChanged ||\n filterChanged ||\n groupByChanged ||\n sortChanged ||\n visualLinkChanged\n );\n\n return {\n aggregationsChanged,\n baseFilterChanged,\n columnsChanged,\n filterChanged,\n groupByChanged,\n noChanges,\n sortChanged,\n visualLinkChanged,\n };\n};\n\nexport const hasGroupBy = (\n config?: WithBaseFilter<DataSourceConfig>,\n): config is WithGroupBy =>\n config !== undefined &&\n config.groupBy !== undefined &&\n config.groupBy.length > 0;\n\nexport const hasBaseFilter = (\n config?: WithBaseFilter<DataSourceConfig>,\n): config is WithFilter =>\n config?.baseFilterSpec !== undefined &&\n config.baseFilterSpec.filter.length > 0;\n\nexport const hasFilter = (config?: DataSourceConfig): config is WithFilter =>\n config?.filterSpec !== undefined && config.filterSpec.filter.length > 0;\n\nexport const hasSort = (config?: DataSourceConfig): config is WithSort =>\n config?.sort !== undefined &&\n Array.isArray(config.sort?.sortDefs) &&\n config.sort.sortDefs.length > 0;\n\nexport const isTypeaheadSuggestionProvider = (\n source: unknown,\n): source is TypeaheadSuggestionProvider =>\n typeof (source as TypeaheadSuggestionProvider)[\"getTypeaheadSuggestions\"] ===\n \"function\";\n\nexport const isTableSchemaMessage = (\n message: VuuUIMessageIn,\n): message is VuuUIMessageInTableMeta => message.type === \"TABLE_META_RESP\";\n\nexport const isConnectionQualityMetrics = (\n msg: object,\n): msg is ConnectionQualityMetrics =>\n (msg as ConnectionQualityMetrics).type === \"connection-metrics\";\n\nexport const messageHasResult = (msg: object): msg is VuuUIMessageInRPC =>\n typeof (msg as VuuUIMessageInRPC).result !== \"undefined\";\n\nexport const isErrorResponse = (\n response?: Partial<RpcResponse>,\n): response is VuuUIMessageInRPCEditReject =>\n response?.type === \"VP_EDIT_RPC_REJECT\";\n\nexport const isVisualLinkMessage = (\n msg: unknown,\n): msg is VuuCreateVisualLink | VuuRemoveVisualLink =>\n (msg as VuuCreateVisualLink).type.endsWith(\"_VISUAL_LINK\");\n\nexport const isViewportMessage = (\n msg: object,\n): msg is VuuUIMessageOutViewport => \"viewport\" in msg;\n\nexport type DataSourceDataMessageWithRows = Omit<\n DataSourceDataMessage,\n \"rows\"\n> & {\n rows: DataSourceRow[];\n};\nexport const messageHasDataRows = (\n message: DataSourceCallbackMessage,\n): message is DataSourceDataMessageWithRows =>\n message.type === \"viewport-update\" && Array.isArray(message.rows);\n\nexport const withConfigDefaults = (\n config: WithBaseFilter<DataSourceConfig>,\n): WithBaseFilter<WithFullConfig> & {\n visualLink?: LinkDescriptorWithLabel;\n} => {\n if (\n config.aggregations &&\n config.baseFilterSpec &&\n config.columns &&\n config.filterSpec &&\n config.groupBy &&\n config.sort\n ) {\n return config as WithFullConfig;\n } else {\n const {\n aggregations = [],\n baseFilterSpec: baseFilter = { filter: \"\" },\n columns = [],\n filterSpec: filter = { filter: \"\" },\n groupBy = [],\n sort = { sortDefs: [] },\n visualLink,\n } = config;\n\n return {\n aggregations,\n baseFilterSpec: baseFilter,\n columns,\n filterSpec: filter,\n groupBy,\n sort,\n visualLink,\n };\n }\n};\n\nexport type Entity = Record<string, VuuRowDataItemType>;\n// export type EntityKey<T extends Entity = Entity> = Extract<keyof T, \"string\">;\n\nexport const dataSourceRowToEntity = <T extends Entity = Entity>(\n row: DataSourceRow,\n columnMap: ColumnMap,\n) =>\n Object.entries(columnMap).reduce(\n (entity, [name, index]) => ({\n ...entity,\n [name]: row[index],\n }),\n {} as T,\n );\n"],"names":[],"mappings":"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"}
|
package/esm/date/date-utils.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"date-utils.js","sources":["../../src/date/date-utils.ts"],"sourcesContent":["import { CalendarDate } from \"@internationalized/date\";\n\nexport function toCalendarDate(d: Date) {\n return new CalendarDate(d.getFullYear(), d.getMonth() + 1, d.getDate());\n}\n"],"names":[],"mappings":";;AAEO,SAAS,eAAe,CAAS,EAAA;AACtC,EAAO,OAAA,IAAI,YAAa,CAAA,CAAA,CAAE,WAAY,EAAA,EAAG,CAAE,CAAA,QAAA,EAAa,GAAA,CAAA,EAAG,CAAE,CAAA,OAAA,EAAS,CAAA;AACxE;;;;"}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { isTypeDescriptor } from '../column-utils.js';
|
|
2
|
-
import { isDateTimePattern } from './types.js';
|
|
3
|
-
|
|
4
|
-
const defaultPatternsByType = {
|
|
5
|
-
time: "hh:mm:ss",
|
|
6
|
-
date: "dd.mm.yyyy"
|
|
7
|
-
};
|
|
8
|
-
const fallbackDateTimePattern = {
|
|
9
|
-
date: defaultPatternsByType["date"]
|
|
10
|
-
};
|
|
11
|
-
function dateTimePattern(type) {
|
|
12
|
-
if (isTypeDescriptor(type)) {
|
|
13
|
-
if (type.formatting && isDateTimePattern(type.formatting.pattern)) {
|
|
14
|
-
return type.formatting.pattern;
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
return fallbackDateTimePattern;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
export { dateTimePattern, defaultPatternsByType, fallbackDateTimePattern };
|
|
21
|
-
//# sourceMappingURL=dateTimePattern.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dateTimePattern.js","sources":["../../src/date/dateTimePattern.ts"],"sourcesContent":["import { DateTimeDataValueDescriptor } from \"@vuu-ui/vuu-data-types\";\nimport { isTypeDescriptor } from \"../column-utils\";\nimport { DateTimePattern, isDateTimePattern } from \"./types\";\n\nexport const defaultPatternsByType = {\n time: \"hh:mm:ss\",\n date: \"dd.mm.yyyy\",\n} as const;\n\nexport const fallbackDateTimePattern: DateTimePattern = {\n date: defaultPatternsByType[\"date\"],\n};\n\nexport function dateTimePattern(\n type: DateTimeDataValueDescriptor[\"type\"],\n): DateTimePattern {\n if (isTypeDescriptor(type)) {\n if (type.formatting && isDateTimePattern(type.formatting.pattern)) {\n return type.formatting.pattern;\n }\n }\n\n return fallbackDateTimePattern;\n}\n"],"names":[],"mappings":";;;AAIO,MAAM,qBAAwB,GAAA;AAAA,EACnC,IAAM,EAAA,UAAA;AAAA,EACN,IAAM,EAAA;AACR;AAEO,MAAM,uBAA2C,GAAA;AAAA,EACtD,IAAA,EAAM,sBAAsB,MAAM;AACpC;AAEO,SAAS,gBACd,IACiB,EAAA;AACjB,EAAI,IAAA,gBAAA,CAAiB,IAAI,CAAG,EAAA;AAC1B,IAAA,IAAI,KAAK,UAAc,IAAA,iBAAA,CAAkB,IAAK,CAAA,UAAA,CAAW,OAAO,CAAG,EAAA;AACjE,MAAA,OAAO,KAAK,UAAW,CAAA,OAAA;AAAA;AACzB;AAGF,EAAO,OAAA,uBAAA;AACT;;;;"}
|
package/esm/date/formatter.js
DELETED
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
import { DateFormatter } from '@internationalized/date';
|
|
2
|
-
import { isNotNullOrUndefined } from '../ts-utils.js';
|
|
3
|
-
|
|
4
|
-
const baseTimeFormatOptions = {
|
|
5
|
-
hour: "2-digit",
|
|
6
|
-
minute: "2-digit",
|
|
7
|
-
second: "2-digit"
|
|
8
|
-
};
|
|
9
|
-
const formatConfigByTimePatterns = {
|
|
10
|
-
"hh:mm:ss": {
|
|
11
|
-
locale: "en-GB",
|
|
12
|
-
options: { ...baseTimeFormatOptions, hour12: false }
|
|
13
|
-
},
|
|
14
|
-
"hh:mm:ss a": {
|
|
15
|
-
locale: "en-GB",
|
|
16
|
-
options: { ...baseTimeFormatOptions, hour12: true }
|
|
17
|
-
}
|
|
18
|
-
};
|
|
19
|
-
const baseDateFormatOptions = {
|
|
20
|
-
day: "2-digit",
|
|
21
|
-
month: "2-digit",
|
|
22
|
-
year: "numeric"
|
|
23
|
-
};
|
|
24
|
-
const formatConfigByDatePatterns = {
|
|
25
|
-
"dd.mm.yyyy": {
|
|
26
|
-
locale: "de-De",
|
|
27
|
-
options: { ...baseDateFormatOptions }
|
|
28
|
-
},
|
|
29
|
-
"dd/mm/yyyy": { locale: "en-GB", options: { ...baseDateFormatOptions } },
|
|
30
|
-
"dd MMM yyyy": {
|
|
31
|
-
locale: "en-GB",
|
|
32
|
-
options: { ...baseDateFormatOptions, month: "short" }
|
|
33
|
-
},
|
|
34
|
-
"dd MMMM yyyy": {
|
|
35
|
-
locale: "en-GB",
|
|
36
|
-
options: { ...baseDateFormatOptions, month: "long" }
|
|
37
|
-
},
|
|
38
|
-
"mm/dd/yyyy": { locale: "en-US", options: { ...baseDateFormatOptions } },
|
|
39
|
-
"MMM dd, yyyy": {
|
|
40
|
-
locale: "en-US",
|
|
41
|
-
options: { ...baseDateFormatOptions, month: "short" }
|
|
42
|
-
},
|
|
43
|
-
"MMMM dd, yyyy": {
|
|
44
|
-
locale: "en-US",
|
|
45
|
-
options: { ...baseDateFormatOptions, month: "long" }
|
|
46
|
-
}
|
|
47
|
-
};
|
|
48
|
-
function getFormatConfigs(pattern) {
|
|
49
|
-
return [
|
|
50
|
-
pattern.date ? formatConfigByDatePatterns[pattern.date] : null,
|
|
51
|
-
pattern.time ? formatConfigByTimePatterns[pattern.time] : null
|
|
52
|
-
];
|
|
53
|
-
}
|
|
54
|
-
function formatDate(pattern) {
|
|
55
|
-
const formatters = getFormatConfigs(pattern).filter(isNotNullOrUndefined).map((c) => getDateFormatter(c.locale, c.options));
|
|
56
|
-
return (d) => formatters.map((f) => f.format(d)).join(" ");
|
|
57
|
-
}
|
|
58
|
-
function getDateFormatter(locale, options) {
|
|
59
|
-
return new DateFormatter(locale, options);
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
export { formatDate, getDateFormatter };
|
|
63
|
-
//# sourceMappingURL=formatter.js.map
|