@vuu-ui/vuu-utils 0.8.95 → 0.8.97
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/context-definitions/DataSourceContext.js +1 -1
- package/cjs/context-definitions/DataSourceContext.js.map +1 -1
- package/cjs/context-definitions/DataSourceProvider.js.map +1 -1
- package/cjs/datasource/BaseDataSource.js +168 -0
- package/cjs/datasource/BaseDataSource.js.map +1 -0
- package/cjs/datasource/datasource-action-utils.js.map +1 -0
- package/cjs/datasource/datasource-filter-utils.js +23 -0
- package/cjs/datasource/datasource-filter-utils.js.map +1 -0
- package/cjs/{datasource-utils.js → datasource/datasource-utils.js} +0 -1
- package/cjs/datasource/datasource-utils.js.map +1 -0
- package/cjs/index.js +6 -5
- package/cjs/index.js.map +1 -1
- package/cjs/keyboard-utils.js +2 -0
- package/cjs/keyboard-utils.js.map +1 -1
- package/cjs/row-utils.js +0 -18
- package/cjs/row-utils.js.map +1 -1
- package/esm/context-definitions/DataSourceContext.js +1 -1
- package/esm/context-definitions/DataSourceContext.js.map +1 -1
- package/esm/context-definitions/DataSourceProvider.js.map +1 -1
- package/esm/datasource/BaseDataSource.js +166 -0
- package/esm/datasource/BaseDataSource.js.map +1 -0
- package/esm/datasource/datasource-action-utils.js.map +1 -0
- package/esm/datasource/datasource-filter-utils.js +21 -0
- package/esm/datasource/datasource-filter-utils.js.map +1 -0
- package/esm/{datasource-utils.js → datasource/datasource-utils.js} +0 -1
- package/esm/datasource/datasource-utils.js.map +1 -0
- package/esm/index.js +6 -5
- package/esm/index.js.map +1 -1
- package/esm/keyboard-utils.js +2 -1
- package/esm/keyboard-utils.js.map +1 -1
- package/esm/row-utils.js +1 -18
- package/esm/row-utils.js.map +1 -1
- package/package.json +6 -6
- package/types/context-definitions/DataSourceProvider.d.ts +1 -1
- package/types/datasource/BaseDataSource.d.ts +33 -0
- package/types/datasource/datasource-filter-utils.d.ts +2 -0
- package/types/{datasource-utils.d.ts → datasource/datasource-utils.d.ts} +6 -6
- package/types/index.d.ts +4 -3
- package/types/keyboard-utils.d.ts +3 -0
- package/types/row-utils.d.ts +0 -1
- package/cjs/datasource-action-utils.js.map +0 -1
- package/cjs/datasource-filter-utils.js +0 -25
- package/cjs/datasource-filter-utils.js.map +0 -1
- package/cjs/datasource-utils.js.map +0 -1
- package/esm/datasource-action-utils.js.map +0 -1
- package/esm/datasource-filter-utils.js +0 -22
- package/esm/datasource-filter-utils.js.map +0 -1
- package/esm/datasource-utils.js.map +0 -1
- package/types/datasource-filter-utils.d.ts +0 -4
- /package/cjs/{datasource-action-utils.js → datasource/datasource-action-utils.js} +0 -0
- /package/esm/{datasource-action-utils.js → datasource/datasource-action-utils.js} +0 -0
- /package/types/{datasource-action-utils.d.ts → datasource/datasource-action-utils.d.ts} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataSourceContext.js","sources":["../../src/context-definitions/DataSourceContext.tsx"],"sourcesContent":["import type {\n DataSource,\n DataSourceConstructorProps,\n ServerAPI,\n} from \"@vuu-ui/vuu-data-types\";\nimport { createContext } from \"react\";\n\nexport type DataSourceConstructor = {\n new (props: DataSourceConstructorProps): DataSource;\n};\n\nexport interface DataSourceContextProps {\n isLocalData: boolean;\n VuuDataSource: DataSourceConstructor;\n vuuModuleNames?: string[];\n getServerAPI: () => Promise<\n Pick<ServerAPI, \"getTableList\" | \"getTableSchema\" | \"rpcCall\">\n >;\n}\n\nconst getServerAPI = () => {\n throw Error(\"no DataSourceProvider has been installed\");\n};\n\nclass NullDataSource {\n constructor() {\n throw Error(\"no DataSourceProvider has been installed\");\n }\n}\n\nexport const DataSourceContext = createContext<DataSourceContextProps>({\n isLocalData: false,\n getServerAPI,\n VuuDataSource: NullDataSource as
|
|
1
|
+
{"version":3,"file":"DataSourceContext.js","sources":["../../src/context-definitions/DataSourceContext.tsx"],"sourcesContent":["import type {\n DataSource,\n DataSourceConstructorProps,\n ServerAPI,\n} from \"@vuu-ui/vuu-data-types\";\nimport { createContext } from \"react\";\n\nexport type DataSourceConstructor = {\n new (props: DataSourceConstructorProps): DataSource;\n};\n\nexport interface DataSourceContextProps {\n isLocalData: boolean;\n VuuDataSource: DataSourceConstructor;\n vuuModuleNames?: string[];\n getServerAPI: () => Promise<\n Pick<ServerAPI, \"getTableList\" | \"getTableSchema\" | \"rpcCall\">\n >;\n}\n\nconst getServerAPI = () => {\n throw Error(\"no DataSourceProvider has been installed\");\n};\n\nclass NullDataSource {\n constructor(_: DataSourceConstructorProps) {\n throw Error(\"no DataSourceProvider has been installed\");\n }\n}\n\nexport const DataSourceContext = createContext<DataSourceContextProps>({\n isLocalData: false,\n getServerAPI,\n VuuDataSource: NullDataSource as DataSourceConstructor,\n});\n"],"names":["createContext"],"mappings":";;;;AAoBA,MAAM,eAAe,MAAM;AACzB,EAAA,MAAM,MAAM,0CAA0C,CAAA,CAAA;AACxD,CAAA,CAAA;AAEA,MAAM,cAAe,CAAA;AAAA,EACnB,YAAY,CAA+B,EAAA;AACzC,IAAA,MAAM,MAAM,0CAA0C,CAAA,CAAA;AAAA,GACxD;AACF,CAAA;AAEO,MAAM,oBAAoBA,mBAAsC,CAAA;AAAA,EACrE,WAAa,EAAA,KAAA;AAAA,EACb,YAAA;AAAA,EACA,aAAe,EAAA,cAAA;AACjB,CAAC;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataSourceProvider.js","sources":["../../src/context-definitions/DataSourceProvider.tsx"],"sourcesContent":["import { ReactNode, useContext } from \"react\";\nimport { DataSourceContext, DataSourceContextProps } from \"./DataSourceContext\";\n\nexport const DataSourceProvider = ({\n children,\n getServerAPI,\n isLocalData = true,\n VuuDataSource,\n vuuModuleNames
|
|
1
|
+
{"version":3,"file":"DataSourceProvider.js","sources":["../../src/context-definitions/DataSourceProvider.tsx"],"sourcesContent":["import { ReactNode, useContext } from \"react\";\nimport { DataSourceContext, DataSourceContextProps } from \"./DataSourceContext\";\n\nexport const DataSourceProvider = ({\n children,\n getServerAPI,\n isLocalData = true,\n VuuDataSource,\n vuuModuleNames,\n}: Omit<DataSourceContextProps, \"isLocalData\"> & {\n children: ReactNode;\n isLocalData?: boolean;\n}) => {\n return (\n <DataSourceContext.Provider\n value={{ isLocalData, vuuModuleNames, VuuDataSource, getServerAPI }}\n >\n {children}\n </DataSourceContext.Provider>\n );\n};\n\nexport const useDataSource = () => useContext(DataSourceContext);\n"],"names":["jsx","DataSourceContext","useContext"],"mappings":";;;;;;AAGO,MAAM,qBAAqB,CAAC;AAAA,EACjC,QAAA;AAAA,EACA,YAAA;AAAA,EACA,WAAc,GAAA,IAAA;AAAA,EACd,aAAA;AAAA,EACA,cAAA;AACF,CAGM,KAAA;AACJ,EACE,uBAAAA,cAAA;AAAA,IAACC,mCAAkB,CAAA,QAAA;AAAA,IAAlB;AAAA,MACC,KAAO,EAAA,EAAE,WAAa,EAAA,cAAA,EAAgB,eAAe,YAAa,EAAA;AAAA,MAEjE,QAAA;AAAA,KAAA;AAAA,GACH,CAAA;AAEJ,EAAA;AAEa,MAAA,aAAA,GAAgB,MAAMC,gBAAA,CAAWD,mCAAiB;;;;;"}
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var vuuFilterParser = require('@vuu-ui/vuu-filter-parser');
|
|
4
|
+
var eventEmitter = require('../event-emitter.js');
|
|
5
|
+
var index = require('../nanoid/index.js');
|
|
6
|
+
var datasourceUtils = require('./datasource-utils.js');
|
|
7
|
+
|
|
8
|
+
var __defProp = Object.defineProperty;
|
|
9
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
10
|
+
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
11
|
+
class BaseDataSource extends eventEmitter.EventEmitter {
|
|
12
|
+
constructor({
|
|
13
|
+
aggregations,
|
|
14
|
+
baseFilterSpec,
|
|
15
|
+
columns,
|
|
16
|
+
filterSpec,
|
|
17
|
+
groupBy,
|
|
18
|
+
sort,
|
|
19
|
+
title,
|
|
20
|
+
viewport
|
|
21
|
+
}) {
|
|
22
|
+
super();
|
|
23
|
+
// This should simply be id
|
|
24
|
+
__publicField(this, "viewport");
|
|
25
|
+
__publicField(this, "_clientCallback");
|
|
26
|
+
__publicField(this, "_config", datasourceUtils.vanillaConfig);
|
|
27
|
+
__publicField(this, "_range", { from: 0, to: 0 });
|
|
28
|
+
__publicField(this, "_size", 0);
|
|
29
|
+
__publicField(this, "_title");
|
|
30
|
+
this._config = {
|
|
31
|
+
...this._config,
|
|
32
|
+
aggregations: aggregations || this._config.aggregations,
|
|
33
|
+
baseFilterSpec: baseFilterSpec || this._config.baseFilterSpec,
|
|
34
|
+
columns: columns || this._config.columns,
|
|
35
|
+
filterSpec: filterSpec || this._config.filterSpec,
|
|
36
|
+
groupBy: groupBy || this._config.groupBy,
|
|
37
|
+
sort: sort || this._config.sort
|
|
38
|
+
};
|
|
39
|
+
this._title = title;
|
|
40
|
+
this.viewport = viewport ?? "";
|
|
41
|
+
}
|
|
42
|
+
subscribe({
|
|
43
|
+
baseFilterSpec,
|
|
44
|
+
columns,
|
|
45
|
+
aggregations,
|
|
46
|
+
range,
|
|
47
|
+
sort,
|
|
48
|
+
groupBy,
|
|
49
|
+
filterSpec,
|
|
50
|
+
viewport = this.viewport || (this.viewport = index.uuid())
|
|
51
|
+
}, callback) {
|
|
52
|
+
this._clientCallback = callback;
|
|
53
|
+
this.viewport = viewport;
|
|
54
|
+
if (aggregations || baseFilterSpec || columns || filterSpec || groupBy || sort) {
|
|
55
|
+
this._config = {
|
|
56
|
+
...this._config,
|
|
57
|
+
aggregations: aggregations || this._config.aggregations,
|
|
58
|
+
baseFilterSpec: baseFilterSpec || this._config.baseFilterSpec,
|
|
59
|
+
columns: columns || this._config.columns,
|
|
60
|
+
filterSpec: filterSpec || this._config.filterSpec,
|
|
61
|
+
groupBy: groupBy || this._config.groupBy,
|
|
62
|
+
sort: sort || this._config.sort
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
if (range) {
|
|
66
|
+
this._range = range;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
get aggregations() {
|
|
70
|
+
return this._config.aggregations;
|
|
71
|
+
}
|
|
72
|
+
set aggregations(aggregations) {
|
|
73
|
+
this.config = {
|
|
74
|
+
...this._config,
|
|
75
|
+
aggregations
|
|
76
|
+
};
|
|
77
|
+
this.emit("config", this._config);
|
|
78
|
+
}
|
|
79
|
+
get baseFilter() {
|
|
80
|
+
return this._config.baseFilterSpec;
|
|
81
|
+
}
|
|
82
|
+
set baseFilter(baseFilter) {
|
|
83
|
+
this.config = {
|
|
84
|
+
...this._config,
|
|
85
|
+
baseFilterSpec: baseFilter
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
get columns() {
|
|
89
|
+
return this._config.columns;
|
|
90
|
+
}
|
|
91
|
+
set columns(columns) {
|
|
92
|
+
this.config = {
|
|
93
|
+
...this._config,
|
|
94
|
+
columns
|
|
95
|
+
};
|
|
96
|
+
this.emit("config", this._config);
|
|
97
|
+
}
|
|
98
|
+
get filter() {
|
|
99
|
+
return this._config.filterSpec;
|
|
100
|
+
}
|
|
101
|
+
set filter(filter) {
|
|
102
|
+
this.config = {
|
|
103
|
+
...this._config,
|
|
104
|
+
filterSpec: filter
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
get config() {
|
|
108
|
+
return this._config;
|
|
109
|
+
}
|
|
110
|
+
set config(config) {
|
|
111
|
+
const configChanges = this.applyConfig(config);
|
|
112
|
+
if (configChanges) {
|
|
113
|
+
this.emit("config", this._config, void 0, configChanges);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
get range() {
|
|
117
|
+
return this._range;
|
|
118
|
+
}
|
|
119
|
+
set range(range) {
|
|
120
|
+
if (range.from !== this._range.from || range.to !== this._range.to) {
|
|
121
|
+
this._range = range;
|
|
122
|
+
this.rangeRequest(range);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
get size() {
|
|
126
|
+
return this._size;
|
|
127
|
+
}
|
|
128
|
+
get sort() {
|
|
129
|
+
return this._config.sort;
|
|
130
|
+
}
|
|
131
|
+
set sort(sort) {
|
|
132
|
+
this.config = {
|
|
133
|
+
...this._config,
|
|
134
|
+
sort
|
|
135
|
+
};
|
|
136
|
+
this.emit("config", this._config);
|
|
137
|
+
}
|
|
138
|
+
// Public while we use this from useSessionDataSource
|
|
139
|
+
applyConfig(config, preserveExistingConfigAttributes = false) {
|
|
140
|
+
const { noChanges, ...otherChanges } = datasourceUtils.isConfigChanged(
|
|
141
|
+
this._config,
|
|
142
|
+
config
|
|
143
|
+
);
|
|
144
|
+
if (noChanges !== true) {
|
|
145
|
+
if (config) {
|
|
146
|
+
const newConfig = config?.filterSpec?.filter && config?.filterSpec.filterStruct === void 0 ? {
|
|
147
|
+
...config,
|
|
148
|
+
filterSpec: {
|
|
149
|
+
filter: config.filterSpec.filter,
|
|
150
|
+
filterStruct: vuuFilterParser.parseFilter(config.filterSpec.filter)
|
|
151
|
+
}
|
|
152
|
+
} : config;
|
|
153
|
+
if (preserveExistingConfigAttributes) {
|
|
154
|
+
this._config = {
|
|
155
|
+
...this._config,
|
|
156
|
+
...config
|
|
157
|
+
};
|
|
158
|
+
} else {
|
|
159
|
+
this._config = datasourceUtils.withConfigDefaults(newConfig);
|
|
160
|
+
}
|
|
161
|
+
return otherChanges;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
exports.BaseDataSource = BaseDataSource;
|
|
168
|
+
//# sourceMappingURL=BaseDataSource.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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 SubscribeCallback,\n SubscribeProps,\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\";\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: SubscribeCallback | undefined;\n protected _config: WithBaseFilter<WithFullConfig> & {\n visualLink?: LinkDescriptorWithLabel;\n } = vanillaConfig;\n protected _range: VuuRange = { from: 0, to: 0 };\n protected _size = 0;\n protected _title: string | undefined;\n\n constructor({\n aggregations,\n baseFilterSpec,\n columns,\n filterSpec,\n groupBy,\n sort,\n title,\n viewport,\n }: DataSourceConstructorProps) {\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 }: SubscribeProps,\n callback: SubscribeCallback,\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);\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);\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 config() {\n return this._config;\n }\n\n set config(config: WithBaseFilter<DataSourceConfig>) {\n const configChanges = this.applyConfig(config);\n if (configChanges) {\n this.emit(\"config\", this._config, undefined, configChanges);\n }\n }\n\n get range() {\n return this._range;\n }\n\n set range(range: VuuRange) {\n if (range.from !== this._range.from || range.to !== this._range.to) {\n this._range = range;\n this.rangeRequest(range);\n }\n }\n\n get size() {\n return this._size;\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);\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 this._config = {\n ...this._config,\n ...config,\n };\n } else {\n this._config = withConfigDefaults(newConfig);\n }\n return otherChanges;\n }\n }\n }\n\n abstract rangeRequest(range: VuuRange): void;\n}\n"],"names":["EventEmitter","vanillaConfig","uuid","isConfigChanged","parseFilter","withConfigDefaults"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
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,YAAA;AAEtD,MAAM,yBAA4B,GAAA,CACvC,MAEA,KAAA,MAAA,CAAO,IAAS,KAAA,mBAAA;AAEX,MAAM,yBAA4B,GAAA,CACvC,MAEA,KAAA,MAAA,CAAO,IAAS,KAAA,mBAAA;AAEX,MAAM,qBAAwB,GAAA,CACnC,MACqC,KAAA,MAAA,CAAO,IAAS,KAAA,WAAA;AAEhD,MAAM,qBAAqB,CAChC,MAAA,KAEA,sBAAsB,MAAM,CAAA,IAAK,oBAAoB,MAAM;;;;;;;;"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var vuuFilterParser = require('@vuu-ui/vuu-filter-parser');
|
|
4
|
+
|
|
5
|
+
const combineFilters = ({
|
|
6
|
+
baseFilterSpec,
|
|
7
|
+
filterSpec,
|
|
8
|
+
...config
|
|
9
|
+
}) => {
|
|
10
|
+
const baseFilterQuery = baseFilterSpec?.filter ?? "";
|
|
11
|
+
const combinedFilter = filterSpec.filter.length > 0 && baseFilterQuery.length > 0 ? `${filterSpec.filter} and ${baseFilterQuery}` : filterSpec.filter || baseFilterQuery;
|
|
12
|
+
const newConfig = {
|
|
13
|
+
...config,
|
|
14
|
+
filterSpec: {
|
|
15
|
+
filter: combinedFilter,
|
|
16
|
+
filterStruct: combinedFilter.length > 0 ? vuuFilterParser.parseFilter(combinedFilter) : void 0
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
return newConfig;
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
exports.combineFilters = combineFilters;
|
|
23
|
+
//# sourceMappingURL=datasource-filter-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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":["parseFilter"],"mappings":";;;;AAGO,MAAM,iBAAiB,CAAC;AAAA,EAC7B,cAAA;AAAA,EACA,UAAA;AAAA,EACA,GAAG,MAAA;AACL,CAAsC,KAAA;AACpC,EAAM,MAAA,eAAA,GAAkB,gBAAgB,MAAU,IAAA,EAAA,CAAA;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,CAAA;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,GAAAA,2BAAA,CAAY,cAAc,CAAI,GAAA,KAAA,CAAA;AAAA,KAC9D;AAAA,GACF,CAAA;AAEA,EAAO,OAAA,SAAA,CAAA;AACT;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
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/cjs/index.js
CHANGED
|
@@ -9,9 +9,10 @@ var DataWindow = require('./DataWindow.js');
|
|
|
9
9
|
var commonTypes = require('./common-types.js');
|
|
10
10
|
var cssUtils = require('./css-utils.js');
|
|
11
11
|
var dataUtils = require('./data-utils.js');
|
|
12
|
-
var
|
|
13
|
-
var
|
|
14
|
-
var
|
|
12
|
+
var BaseDataSource = require('./datasource/BaseDataSource.js');
|
|
13
|
+
var datasourceActionUtils = require('./datasource/datasource-action-utils.js');
|
|
14
|
+
var datasourceFilterUtils = require('./datasource/datasource-filter-utils.js');
|
|
15
|
+
var datasourceUtils = require('./datasource/datasource-utils.js');
|
|
15
16
|
var formatter = require('./date/formatter.js');
|
|
16
17
|
var types = require('./date/types.js');
|
|
17
18
|
var dateUtils = require('./date/date-utils.js');
|
|
@@ -168,12 +169,12 @@ exports.UP2 = dataUtils.UP2;
|
|
|
168
169
|
exports.getMovingValueDirection = dataUtils.getMovingValueDirection;
|
|
169
170
|
exports.isValidNumber = dataUtils.isValidNumber;
|
|
170
171
|
exports.shallowEquals = dataUtils.shallowEquals;
|
|
172
|
+
exports.BaseDataSource = BaseDataSource.BaseDataSource;
|
|
171
173
|
exports.isViewportMenusAction = datasourceActionUtils.isViewportMenusAction;
|
|
172
174
|
exports.isVisualLinkCreatedAction = datasourceActionUtils.isVisualLinkCreatedAction;
|
|
173
175
|
exports.isVisualLinkRemovedAction = datasourceActionUtils.isVisualLinkRemovedAction;
|
|
174
176
|
exports.isVisualLinksAction = datasourceActionUtils.isVisualLinksAction;
|
|
175
177
|
exports.isVuuFeatureAction = datasourceActionUtils.isVuuFeatureAction;
|
|
176
|
-
exports.combine = datasourceFilterUtils.combine;
|
|
177
178
|
exports.combineFilters = datasourceFilterUtils.combineFilters;
|
|
178
179
|
exports.NO_CONFIG_CHANGES = datasourceUtils.NO_CONFIG_CHANGES;
|
|
179
180
|
exports.NoFilter = datasourceUtils.NoFilter;
|
|
@@ -278,6 +279,7 @@ exports.PageDown = keyboardUtils.PageDown;
|
|
|
278
279
|
exports.PageUp = keyboardUtils.PageUp;
|
|
279
280
|
exports.Space = keyboardUtils.Space;
|
|
280
281
|
exports.Tab = keyboardUtils.Tab;
|
|
282
|
+
exports.isArrowKey = keyboardUtils.isArrowKey;
|
|
281
283
|
exports.KeySet = keyset.KeySet;
|
|
282
284
|
exports.getSelectedOption = listUtils.getSelectedOption;
|
|
283
285
|
exports.getAllLocalEntity = localStorageUtils.getAllLocalEntity;
|
|
@@ -325,7 +327,6 @@ exports.resetRange = rangeUtils.resetRange;
|
|
|
325
327
|
exports.withinRange = rangeUtils.withinRange;
|
|
326
328
|
exports.actualRowPositioning = rowUtils.actualRowPositioning;
|
|
327
329
|
exports.asDataSourceRowObject = rowUtils.asDataSourceRowObject;
|
|
328
|
-
exports.getIndexFromRowElement = rowUtils.getIndexFromRowElement;
|
|
329
330
|
exports.getRowElementAtIndex = rowUtils.getRowElementAtIndex;
|
|
330
331
|
exports.virtualRowPositioning = rowUtils.virtualRowPositioning;
|
|
331
332
|
exports.RowSelected = selectionUtils.RowSelected;
|
package/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/cjs/keyboard-utils.js
CHANGED
|
@@ -12,6 +12,7 @@ const PageUp = "PageUp";
|
|
|
12
12
|
const PageDown = "PageDown";
|
|
13
13
|
const Space = " ";
|
|
14
14
|
const Tab = "Tab";
|
|
15
|
+
const isArrowKey = (key) => key === "ArrowUp" || key === "ArrowDown" || key === "ArrowLeft" || key === "ArrowRight";
|
|
15
16
|
|
|
16
17
|
exports.ArrowDown = ArrowDown;
|
|
17
18
|
exports.ArrowLeft = ArrowLeft;
|
|
@@ -25,4 +26,5 @@ exports.PageDown = PageDown;
|
|
|
25
26
|
exports.PageUp = PageUp;
|
|
26
27
|
exports.Space = Space;
|
|
27
28
|
exports.Tab = Tab;
|
|
29
|
+
exports.isArrowKey = isArrowKey;
|
|
28
30
|
//# sourceMappingURL=keyboard-utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keyboard-utils.js","sources":["../src/keyboard-utils.ts"],"sourcesContent":["export const ArrowUp = \"ArrowUp\";\nexport const ArrowDown = \"ArrowDown\";\nexport const ArrowLeft = \"ArrowLeft\";\nexport const ArrowRight = \"ArrowRight\";\nexport const Enter = \"Enter\";\nexport const Escape = \"Escape\";\nexport const Home = \"Home\";\nexport const End = \"End\";\nexport const PageUp = \"PageUp\";\nexport const PageDown = \"PageDown\";\nexport const Space = \" \";\nexport const Tab = \"Tab\";\n"],"names":[],"mappings":";;AAAO,MAAM,OAAU,GAAA,UAAA;AAChB,MAAM,SAAY,GAAA,YAAA;AAClB,MAAM,SAAY,GAAA,YAAA;AAClB,MAAM,UAAa,GAAA,aAAA;AACnB,MAAM,KAAQ,GAAA,QAAA;AACd,MAAM,MAAS,GAAA,SAAA;AACf,MAAM,IAAO,GAAA,OAAA;AACb,MAAM,GAAM,GAAA,MAAA;AACZ,MAAM,MAAS,GAAA,SAAA;AACf,MAAM,QAAW,GAAA,WAAA;AACjB,MAAM,KAAQ,GAAA,IAAA;AACd,MAAM,GAAM,GAAA
|
|
1
|
+
{"version":3,"file":"keyboard-utils.js","sources":["../src/keyboard-utils.ts"],"sourcesContent":["export const ArrowUp = \"ArrowUp\";\nexport const ArrowDown = \"ArrowDown\";\nexport const ArrowLeft = \"ArrowLeft\";\nexport const ArrowRight = \"ArrowRight\";\nexport const Enter = \"Enter\";\nexport const Escape = \"Escape\";\nexport const Home = \"Home\";\nexport const End = \"End\";\nexport const PageUp = \"PageUp\";\nexport const PageDown = \"PageDown\";\nexport const Space = \" \";\nexport const Tab = \"Tab\";\n\nexport type ArrowKey = \"ArrowUp\" | \"ArrowDown\" | \"ArrowLeft\" | \"ArrowRight\";\nexport type PageKey = \"Home\" | \"End\" | \"PageUp\" | \"PageDown\";\n\nexport const isArrowKey = (key: string): key is ArrowKey =>\n key === \"ArrowUp\" ||\n key === \"ArrowDown\" ||\n key === \"ArrowLeft\" ||\n key === \"ArrowRight\";\n"],"names":[],"mappings":";;AAAO,MAAM,OAAU,GAAA,UAAA;AAChB,MAAM,SAAY,GAAA,YAAA;AAClB,MAAM,SAAY,GAAA,YAAA;AAClB,MAAM,UAAa,GAAA,aAAA;AACnB,MAAM,KAAQ,GAAA,QAAA;AACd,MAAM,MAAS,GAAA,SAAA;AACf,MAAM,IAAO,GAAA,OAAA;AACb,MAAM,GAAM,GAAA,MAAA;AACZ,MAAM,MAAS,GAAA,SAAA;AACf,MAAM,QAAW,GAAA,WAAA;AACjB,MAAM,KAAQ,GAAA,IAAA;AACd,MAAM,GAAM,GAAA,MAAA;AAKN,MAAA,UAAA,GAAa,CAAC,GACzB,KAAA,GAAA,KAAQ,aACR,GAAQ,KAAA,WAAA,IACR,GAAQ,KAAA,WAAA,IACR,GAAQ,KAAA;;;;;;;;;;;;;;;;"}
|
package/cjs/row-utils.js
CHANGED
|
@@ -39,23 +39,6 @@ const getRowElementAtIndex = (container, rowIndex) => {
|
|
|
39
39
|
}
|
|
40
40
|
}
|
|
41
41
|
};
|
|
42
|
-
const getIndexFromRowElement = (rowElement) => {
|
|
43
|
-
const rowIndex = rowElement.ariaRowIndex;
|
|
44
|
-
if (rowIndex != null) {
|
|
45
|
-
const index = parseInt(rowIndex) - 1;
|
|
46
|
-
if (!isNaN(index)) {
|
|
47
|
-
return index;
|
|
48
|
-
} else {
|
|
49
|
-
throw Error(
|
|
50
|
-
`getIndexFromRowElement row element aria rowindex invalid ${rowIndex}`
|
|
51
|
-
);
|
|
52
|
-
}
|
|
53
|
-
} else {
|
|
54
|
-
throw Error(
|
|
55
|
-
"getIndexFromRowElement row element does not have aria rowindex"
|
|
56
|
-
);
|
|
57
|
-
}
|
|
58
|
-
};
|
|
59
42
|
const asDataSourceRowObject = (row, columnMap) => {
|
|
60
43
|
const { [IS_LEAF]: isLeaf, [KEY]: key, [IDX]: index } = row;
|
|
61
44
|
const rowObject = {
|
|
@@ -73,7 +56,6 @@ const asDataSourceRowObject = (row, columnMap) => {
|
|
|
73
56
|
|
|
74
57
|
exports.actualRowPositioning = actualRowPositioning;
|
|
75
58
|
exports.asDataSourceRowObject = asDataSourceRowObject;
|
|
76
|
-
exports.getIndexFromRowElement = getIndexFromRowElement;
|
|
77
59
|
exports.getRowElementAtIndex = getRowElementAtIndex;
|
|
78
60
|
exports.virtualRowPositioning = virtualRowPositioning;
|
|
79
61
|
//# sourceMappingURL=row-utils.js.map
|
package/cjs/row-utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"row-utils.js","sources":["../src/row-utils.ts"],"sourcesContent":["//TODO this all probably belongs in vuu-table\nimport type {\n DataSourceRow,\n DataSourceRowObject,\n} from \"@vuu-ui/vuu-data-types\";\nimport type { MutableRefObject } from \"react\";\nimport { ColumnMap, metadataKeys } from \"./column-utils\";\nimport { isRowSelected } from \"./selection-utils\";\n\nconst { IS_LEAF, KEY, IDX } = metadataKeys;\n\nexport type RowOffsetFunc = (\n row: DataSourceRow,\n pctScrollTop?: number,\n) => number;\nexport type RowAtPositionFunc = (position: number) => number;\n\n/**\n * RowOffset function, RowAtPosition function, isVirtualScroll\n */\nexport type RowPositioning = [RowOffsetFunc, RowAtPositionFunc, boolean];\n\nexport const actualRowPositioning = (rowHeight: number): RowPositioning => [\n (row) => row[IDX] * rowHeight,\n (position) => Math.floor(position / rowHeight),\n false,\n];\n\n/**\n * return functions for determining a) the pixel offset to apply to a row, given the\n * row index and b) the index of the row at a given scroll offset. This implementation\n * is used when we are forced to 'virtualise' scrolling - because the number of rows\n * is high enough that we cannot create a large enough HTML content container.\n *\n * @param rowHeight\n * @param virtualisedExtent\n * @param pctScrollTop\n * @returns\n */\nexport const virtualRowPositioning = (\n rowHeight: number,\n virtualisedExtent: number,\n pctScrollTop: MutableRefObject<number>,\n): RowPositioning => [\n (row, offset = 0) => {\n const rowOffset = pctScrollTop.current * virtualisedExtent;\n return (row[IDX] - offset) * rowHeight - rowOffset;\n },\n /*\n Return index position of closest row \n */\n (position) => {\n const rowOffset = pctScrollTop.current * virtualisedExtent;\n return Math.round((position + rowOffset) / rowHeight);\n },\n true,\n];\n\nexport const getRowElementAtIndex = (\n container: HTMLDivElement | EventTarget,\n rowIndex: number,\n) => {\n if (rowIndex === -1) {\n return null;\n } else {\n const activeRow = (container as HTMLElement).querySelector(\n `[aria-rowindex=\"${rowIndex + 1}\"]`,\n ) as HTMLElement;\n\n if (activeRow) {\n return activeRow;\n } else {\n throw Error(\n `getRowElementAtIndex no row found for index index ${rowIndex}`,\n );\n }\n }\n};\n\nexport const
|
|
1
|
+
{"version":3,"file":"row-utils.js","sources":["../src/row-utils.ts"],"sourcesContent":["//TODO this all probably belongs in vuu-table\nimport type {\n DataSourceRow,\n DataSourceRowObject,\n} from \"@vuu-ui/vuu-data-types\";\nimport type { MutableRefObject } from \"react\";\nimport { ColumnMap, metadataKeys } from \"./column-utils\";\nimport { isRowSelected } from \"./selection-utils\";\n\nconst { IS_LEAF, KEY, IDX } = metadataKeys;\n\nexport type RowOffsetFunc = (\n row: DataSourceRow,\n pctScrollTop?: number,\n) => number;\nexport type RowAtPositionFunc = (position: number) => number;\n\n/**\n * RowOffset function, RowAtPosition function, isVirtualScroll\n */\nexport type RowPositioning = [RowOffsetFunc, RowAtPositionFunc, boolean];\n\nexport const actualRowPositioning = (rowHeight: number): RowPositioning => [\n (row) => row[IDX] * rowHeight,\n (position) => Math.floor(position / rowHeight),\n false,\n];\n\n/**\n * return functions for determining a) the pixel offset to apply to a row, given the\n * row index and b) the index of the row at a given scroll offset. This implementation\n * is used when we are forced to 'virtualise' scrolling - because the number of rows\n * is high enough that we cannot create a large enough HTML content container.\n *\n * @param rowHeight\n * @param virtualisedExtent\n * @param pctScrollTop\n * @returns\n */\nexport const virtualRowPositioning = (\n rowHeight: number,\n virtualisedExtent: number,\n pctScrollTop: MutableRefObject<number>,\n): RowPositioning => [\n (row, offset = 0) => {\n const rowOffset = pctScrollTop.current * virtualisedExtent;\n return (row[IDX] - offset) * rowHeight - rowOffset;\n },\n /*\n Return index position of closest row \n */\n (position) => {\n const rowOffset = pctScrollTop.current * virtualisedExtent;\n return Math.round((position + rowOffset) / rowHeight);\n },\n true,\n];\n\nexport const getRowElementAtIndex = (\n container: HTMLDivElement | EventTarget,\n rowIndex: number,\n) => {\n if (rowIndex === -1) {\n return null;\n } else {\n const activeRow = (container as HTMLElement).querySelector(\n `[aria-rowindex=\"${rowIndex + 1}\"]`,\n ) as HTMLElement;\n\n if (activeRow) {\n return activeRow;\n } else {\n throw Error(\n `getRowElementAtIndex no row found for index index ${rowIndex}`,\n );\n }\n }\n};\n\nexport const asDataSourceRowObject = (\n row: DataSourceRow,\n columnMap: ColumnMap,\n): DataSourceRowObject => {\n const { [IS_LEAF]: isLeaf, [KEY]: key, [IDX]: index } = row;\n\n const rowObject: DataSourceRowObject = {\n key,\n index,\n isGroupRow: !isLeaf,\n isSelected: isRowSelected(row),\n data: {},\n };\n\n for (const [colName, colIdx] of Object.entries(columnMap)) {\n rowObject.data[colName] = row[colIdx];\n }\n\n return rowObject;\n};\n"],"names":["metadataKeys","isRowSelected"],"mappings":";;;;;AASA,MAAM,EAAE,OAAA,EAAS,GAAK,EAAA,GAAA,EAAQ,GAAAA,wBAAA,CAAA;AAajB,MAAA,oBAAA,GAAuB,CAAC,SAAsC,KAAA;AAAA,EACzE,CAAC,GAAA,KAAQ,GAAI,CAAA,GAAG,CAAI,GAAA,SAAA;AAAA,EACpB,CAAC,QAAA,KAAa,IAAK,CAAA,KAAA,CAAM,WAAW,SAAS,CAAA;AAAA,EAC7C,KAAA;AACF,EAAA;AAaO,MAAM,qBAAwB,GAAA,CACnC,SACA,EAAA,iBAAA,EACA,YACmB,KAAA;AAAA,EACnB,CAAC,GAAK,EAAA,MAAA,GAAS,CAAM,KAAA;AACnB,IAAM,MAAA,SAAA,GAAY,aAAa,OAAU,GAAA,iBAAA,CAAA;AACzC,IAAA,OAAA,CAAQ,GAAI,CAAA,GAAG,CAAI,GAAA,MAAA,IAAU,SAAY,GAAA,SAAA,CAAA;AAAA,GAC3C;AAAA;AAAA;AAAA;AAAA,EAIA,CAAC,QAAa,KAAA;AACZ,IAAM,MAAA,SAAA,GAAY,aAAa,OAAU,GAAA,iBAAA,CAAA;AACzC,IAAA,OAAO,IAAK,CAAA,KAAA,CAAA,CAAO,QAAW,GAAA,SAAA,IAAa,SAAS,CAAA,CAAA;AAAA,GACtD;AAAA,EACA,IAAA;AACF,EAAA;AAEa,MAAA,oBAAA,GAAuB,CAClC,SAAA,EACA,QACG,KAAA;AACH,EAAA,IAAI,aAAa,CAAI,CAAA,EAAA;AACnB,IAAO,OAAA,IAAA,CAAA;AAAA,GACF,MAAA;AACL,IAAA,MAAM,YAAa,SAA0B,CAAA,aAAA;AAAA,MAC3C,CAAA,gBAAA,EAAmB,WAAW,CAAC,CAAA,EAAA,CAAA;AAAA,KACjC,CAAA;AAEA,IAAA,IAAI,SAAW,EAAA;AACb,MAAO,OAAA,SAAA,CAAA;AAAA,KACF,MAAA;AACL,MAAM,MAAA,KAAA;AAAA,QACJ,qDAAqD,QAAQ,CAAA,CAAA;AAAA,OAC/D,CAAA;AAAA,KACF;AAAA,GACF;AACF,EAAA;AAEa,MAAA,qBAAA,GAAwB,CACnC,GAAA,EACA,SACwB,KAAA;AACxB,EAAA,MAAM,EAAE,CAAC,OAAO,GAAG,MAAQ,EAAA,CAAC,GAAG,GAAG,GAAK,EAAA,CAAC,GAAG,GAAG,OAAU,GAAA,GAAA,CAAA;AAExD,EAAA,MAAM,SAAiC,GAAA;AAAA,IACrC,GAAA;AAAA,IACA,KAAA;AAAA,IACA,YAAY,CAAC,MAAA;AAAA,IACb,UAAA,EAAYC,6BAAc,GAAG,CAAA;AAAA,IAC7B,MAAM,EAAC;AAAA,GACT,CAAA;AAEA,EAAA,KAAA,MAAW,CAAC,OAAS,EAAA,MAAM,KAAK,MAAO,CAAA,OAAA,CAAQ,SAAS,CAAG,EAAA;AACzD,IAAA,SAAA,CAAU,IAAK,CAAA,OAAO,CAAI,GAAA,GAAA,CAAI,MAAM,CAAA,CAAA;AAAA,GACtC;AAEA,EAAO,OAAA,SAAA,CAAA;AACT;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataSourceContext.js","sources":["../../src/context-definitions/DataSourceContext.tsx"],"sourcesContent":["import type {\n DataSource,\n DataSourceConstructorProps,\n ServerAPI,\n} from \"@vuu-ui/vuu-data-types\";\nimport { createContext } from \"react\";\n\nexport type DataSourceConstructor = {\n new (props: DataSourceConstructorProps): DataSource;\n};\n\nexport interface DataSourceContextProps {\n isLocalData: boolean;\n VuuDataSource: DataSourceConstructor;\n vuuModuleNames?: string[];\n getServerAPI: () => Promise<\n Pick<ServerAPI, \"getTableList\" | \"getTableSchema\" | \"rpcCall\">\n >;\n}\n\nconst getServerAPI = () => {\n throw Error(\"no DataSourceProvider has been installed\");\n};\n\nclass NullDataSource {\n constructor() {\n throw Error(\"no DataSourceProvider has been installed\");\n }\n}\n\nexport const DataSourceContext = createContext<DataSourceContextProps>({\n isLocalData: false,\n getServerAPI,\n VuuDataSource: NullDataSource as
|
|
1
|
+
{"version":3,"file":"DataSourceContext.js","sources":["../../src/context-definitions/DataSourceContext.tsx"],"sourcesContent":["import type {\n DataSource,\n DataSourceConstructorProps,\n ServerAPI,\n} from \"@vuu-ui/vuu-data-types\";\nimport { createContext } from \"react\";\n\nexport type DataSourceConstructor = {\n new (props: DataSourceConstructorProps): DataSource;\n};\n\nexport interface DataSourceContextProps {\n isLocalData: boolean;\n VuuDataSource: DataSourceConstructor;\n vuuModuleNames?: string[];\n getServerAPI: () => Promise<\n Pick<ServerAPI, \"getTableList\" | \"getTableSchema\" | \"rpcCall\">\n >;\n}\n\nconst getServerAPI = () => {\n throw Error(\"no DataSourceProvider has been installed\");\n};\n\nclass NullDataSource {\n constructor(_: DataSourceConstructorProps) {\n throw Error(\"no DataSourceProvider has been installed\");\n }\n}\n\nexport const DataSourceContext = createContext<DataSourceContextProps>({\n isLocalData: false,\n getServerAPI,\n VuuDataSource: NullDataSource as DataSourceConstructor,\n});\n"],"names":[],"mappings":";;AAoBA,MAAM,eAAe,MAAM;AACzB,EAAA,MAAM,MAAM,0CAA0C,CAAA,CAAA;AACxD,CAAA,CAAA;AAEA,MAAM,cAAe,CAAA;AAAA,EACnB,YAAY,CAA+B,EAAA;AACzC,IAAA,MAAM,MAAM,0CAA0C,CAAA,CAAA;AAAA,GACxD;AACF,CAAA;AAEO,MAAM,oBAAoB,aAAsC,CAAA;AAAA,EACrE,WAAa,EAAA,KAAA;AAAA,EACb,YAAA;AAAA,EACA,aAAe,EAAA,cAAA;AACjB,CAAC;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataSourceProvider.js","sources":["../../src/context-definitions/DataSourceProvider.tsx"],"sourcesContent":["import { ReactNode, useContext } from \"react\";\nimport { DataSourceContext, DataSourceContextProps } from \"./DataSourceContext\";\n\nexport const DataSourceProvider = ({\n children,\n getServerAPI,\n isLocalData = true,\n VuuDataSource,\n vuuModuleNames
|
|
1
|
+
{"version":3,"file":"DataSourceProvider.js","sources":["../../src/context-definitions/DataSourceProvider.tsx"],"sourcesContent":["import { ReactNode, useContext } from \"react\";\nimport { DataSourceContext, DataSourceContextProps } from \"./DataSourceContext\";\n\nexport const DataSourceProvider = ({\n children,\n getServerAPI,\n isLocalData = true,\n VuuDataSource,\n vuuModuleNames,\n}: Omit<DataSourceContextProps, \"isLocalData\"> & {\n children: ReactNode;\n isLocalData?: boolean;\n}) => {\n return (\n <DataSourceContext.Provider\n value={{ isLocalData, vuuModuleNames, VuuDataSource, getServerAPI }}\n >\n {children}\n </DataSourceContext.Provider>\n );\n};\n\nexport const useDataSource = () => useContext(DataSourceContext);\n"],"names":[],"mappings":";;;;AAGO,MAAM,qBAAqB,CAAC;AAAA,EACjC,QAAA;AAAA,EACA,YAAA;AAAA,EACA,WAAc,GAAA,IAAA;AAAA,EACd,aAAA;AAAA,EACA,cAAA;AACF,CAGM,KAAA;AACJ,EACE,uBAAA,GAAA;AAAA,IAAC,iBAAkB,CAAA,QAAA;AAAA,IAAlB;AAAA,MACC,KAAO,EAAA,EAAE,WAAa,EAAA,cAAA,EAAgB,eAAe,YAAa,EAAA;AAAA,MAEjE,QAAA;AAAA,KAAA;AAAA,GACH,CAAA;AAEJ,EAAA;AAEa,MAAA,aAAA,GAAgB,MAAM,UAAA,CAAW,iBAAiB;;;;"}
|
|
@@ -0,0 +1,166 @@
|
|
|
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
|
+
|
|
6
|
+
var __defProp = Object.defineProperty;
|
|
7
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
8
|
+
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
9
|
+
class BaseDataSource extends EventEmitter {
|
|
10
|
+
constructor({
|
|
11
|
+
aggregations,
|
|
12
|
+
baseFilterSpec,
|
|
13
|
+
columns,
|
|
14
|
+
filterSpec,
|
|
15
|
+
groupBy,
|
|
16
|
+
sort,
|
|
17
|
+
title,
|
|
18
|
+
viewport
|
|
19
|
+
}) {
|
|
20
|
+
super();
|
|
21
|
+
// This should simply be id
|
|
22
|
+
__publicField(this, "viewport");
|
|
23
|
+
__publicField(this, "_clientCallback");
|
|
24
|
+
__publicField(this, "_config", vanillaConfig);
|
|
25
|
+
__publicField(this, "_range", { from: 0, to: 0 });
|
|
26
|
+
__publicField(this, "_size", 0);
|
|
27
|
+
__publicField(this, "_title");
|
|
28
|
+
this._config = {
|
|
29
|
+
...this._config,
|
|
30
|
+
aggregations: aggregations || this._config.aggregations,
|
|
31
|
+
baseFilterSpec: baseFilterSpec || this._config.baseFilterSpec,
|
|
32
|
+
columns: columns || this._config.columns,
|
|
33
|
+
filterSpec: filterSpec || this._config.filterSpec,
|
|
34
|
+
groupBy: groupBy || this._config.groupBy,
|
|
35
|
+
sort: sort || this._config.sort
|
|
36
|
+
};
|
|
37
|
+
this._title = title;
|
|
38
|
+
this.viewport = viewport ?? "";
|
|
39
|
+
}
|
|
40
|
+
subscribe({
|
|
41
|
+
baseFilterSpec,
|
|
42
|
+
columns,
|
|
43
|
+
aggregations,
|
|
44
|
+
range,
|
|
45
|
+
sort,
|
|
46
|
+
groupBy,
|
|
47
|
+
filterSpec,
|
|
48
|
+
viewport = this.viewport || (this.viewport = uuid())
|
|
49
|
+
}, callback) {
|
|
50
|
+
this._clientCallback = callback;
|
|
51
|
+
this.viewport = viewport;
|
|
52
|
+
if (aggregations || baseFilterSpec || columns || filterSpec || groupBy || sort) {
|
|
53
|
+
this._config = {
|
|
54
|
+
...this._config,
|
|
55
|
+
aggregations: aggregations || this._config.aggregations,
|
|
56
|
+
baseFilterSpec: baseFilterSpec || this._config.baseFilterSpec,
|
|
57
|
+
columns: columns || this._config.columns,
|
|
58
|
+
filterSpec: filterSpec || this._config.filterSpec,
|
|
59
|
+
groupBy: groupBy || this._config.groupBy,
|
|
60
|
+
sort: sort || this._config.sort
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
if (range) {
|
|
64
|
+
this._range = range;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
get aggregations() {
|
|
68
|
+
return this._config.aggregations;
|
|
69
|
+
}
|
|
70
|
+
set aggregations(aggregations) {
|
|
71
|
+
this.config = {
|
|
72
|
+
...this._config,
|
|
73
|
+
aggregations
|
|
74
|
+
};
|
|
75
|
+
this.emit("config", this._config);
|
|
76
|
+
}
|
|
77
|
+
get baseFilter() {
|
|
78
|
+
return this._config.baseFilterSpec;
|
|
79
|
+
}
|
|
80
|
+
set baseFilter(baseFilter) {
|
|
81
|
+
this.config = {
|
|
82
|
+
...this._config,
|
|
83
|
+
baseFilterSpec: baseFilter
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
get columns() {
|
|
87
|
+
return this._config.columns;
|
|
88
|
+
}
|
|
89
|
+
set columns(columns) {
|
|
90
|
+
this.config = {
|
|
91
|
+
...this._config,
|
|
92
|
+
columns
|
|
93
|
+
};
|
|
94
|
+
this.emit("config", this._config);
|
|
95
|
+
}
|
|
96
|
+
get filter() {
|
|
97
|
+
return this._config.filterSpec;
|
|
98
|
+
}
|
|
99
|
+
set filter(filter) {
|
|
100
|
+
this.config = {
|
|
101
|
+
...this._config,
|
|
102
|
+
filterSpec: filter
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
get config() {
|
|
106
|
+
return this._config;
|
|
107
|
+
}
|
|
108
|
+
set config(config) {
|
|
109
|
+
const configChanges = this.applyConfig(config);
|
|
110
|
+
if (configChanges) {
|
|
111
|
+
this.emit("config", this._config, void 0, configChanges);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
get range() {
|
|
115
|
+
return this._range;
|
|
116
|
+
}
|
|
117
|
+
set range(range) {
|
|
118
|
+
if (range.from !== this._range.from || range.to !== this._range.to) {
|
|
119
|
+
this._range = range;
|
|
120
|
+
this.rangeRequest(range);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
get size() {
|
|
124
|
+
return this._size;
|
|
125
|
+
}
|
|
126
|
+
get sort() {
|
|
127
|
+
return this._config.sort;
|
|
128
|
+
}
|
|
129
|
+
set sort(sort) {
|
|
130
|
+
this.config = {
|
|
131
|
+
...this._config,
|
|
132
|
+
sort
|
|
133
|
+
};
|
|
134
|
+
this.emit("config", this._config);
|
|
135
|
+
}
|
|
136
|
+
// Public while we use this from useSessionDataSource
|
|
137
|
+
applyConfig(config, preserveExistingConfigAttributes = false) {
|
|
138
|
+
const { noChanges, ...otherChanges } = isConfigChanged(
|
|
139
|
+
this._config,
|
|
140
|
+
config
|
|
141
|
+
);
|
|
142
|
+
if (noChanges !== true) {
|
|
143
|
+
if (config) {
|
|
144
|
+
const newConfig = config?.filterSpec?.filter && config?.filterSpec.filterStruct === void 0 ? {
|
|
145
|
+
...config,
|
|
146
|
+
filterSpec: {
|
|
147
|
+
filter: config.filterSpec.filter,
|
|
148
|
+
filterStruct: parseFilter(config.filterSpec.filter)
|
|
149
|
+
}
|
|
150
|
+
} : config;
|
|
151
|
+
if (preserveExistingConfigAttributes) {
|
|
152
|
+
this._config = {
|
|
153
|
+
...this._config,
|
|
154
|
+
...config
|
|
155
|
+
};
|
|
156
|
+
} else {
|
|
157
|
+
this._config = withConfigDefaults(newConfig);
|
|
158
|
+
}
|
|
159
|
+
return otherChanges;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
export { BaseDataSource };
|
|
166
|
+
//# sourceMappingURL=BaseDataSource.js.map
|