@universal-ember/table 3.4.2 → 3.5.0
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/declarations/-private/preferences.d.ts +4 -2
- package/declarations/-private/preferences.d.ts.map +1 -1
- package/declarations/plugins/-private/base.d.ts.map +1 -1
- package/declarations/plugins/column-reordering/plugin.d.ts +8 -1
- package/declarations/plugins/column-reordering/plugin.d.ts.map +1 -1
- package/dist/-private/preferences.js +8 -2
- package/dist/-private/preferences.js.map +1 -1
- package/dist/plugins/-private/base.js +18 -10
- package/dist/plugins/-private/base.js.map +1 -1
- package/dist/plugins/column-reordering/plugin.js +14 -6
- package/dist/plugins/column-reordering/plugin.js.map +1 -1
- package/package.json +1 -2
- package/src/-private/preferences.ts +10 -2
- package/src/plugins/-private/base.ts +18 -12
- package/src/plugins/column-reordering/plugin.ts +20 -6
|
@@ -27,16 +27,18 @@ export declare class TablePreferences {
|
|
|
27
27
|
* The API for reactively interacting with preferences
|
|
28
28
|
*/
|
|
29
29
|
declare class TrackedPreferences {
|
|
30
|
-
plugins:
|
|
30
|
+
plugins: TrackedMap<string, TrackedPluginPrefs<unknown>>;
|
|
31
31
|
get isAtDefault(): boolean;
|
|
32
|
+
getPlugin(name: string): TrackedPluginPrefs | undefined;
|
|
32
33
|
forPlugin(name: string): TrackedPluginPrefs<unknown>;
|
|
33
34
|
serialize(): TablePreferencesData;
|
|
34
35
|
restore(data: TablePreferencesData): void;
|
|
35
36
|
}
|
|
36
37
|
declare class TrackedPluginPrefs<PluginName = unknown> {
|
|
37
38
|
table: TrackedMap<string, unknown>;
|
|
38
|
-
columns:
|
|
39
|
+
columns: TrackedMap<string, TrackedMap<string, unknown>>;
|
|
39
40
|
get isAtDefault(): boolean;
|
|
41
|
+
getColumn: (key: string) => TrackedMap<string, unknown> | undefined;
|
|
40
42
|
forColumn: (key: string) => TrackedMap<string, unknown>;
|
|
41
43
|
serialize(): PluginPreferenceFor<PluginName>;
|
|
42
44
|
restore(data: PluginPreferences): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preferences.d.ts","sourceRoot":"","sources":["../../src/-private/preferences.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,OAAO,KAAK,EACV,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,IAAI,OAAO,EAE7B,oBAAoB,EACrB,MAAM,cAAc,CAAC;AAEtB,qBAAa,gBAAgB;IAIzB,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,OAAO,CAAC;IAJlB,OAAO,qBAA4B;gBAGzB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,OAAO,YAAA;IAO3B,UAAU;IAIV,cAAc;IAId;;;;;;OAMG;IACH,OAAO;IAMP;;;OAGG;IACH,OAAO,CAAC,OAAO,EAAE,OAAO;CAOzB;AAED;;;;GAIG;AACH,cAAM,kBAAkB;IACtB,OAAO,
|
|
1
|
+
{"version":3,"file":"preferences.d.ts","sourceRoot":"","sources":["../../src/-private/preferences.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,OAAO,KAAK,EACV,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,IAAI,OAAO,EAE7B,oBAAoB,EACrB,MAAM,cAAc,CAAC;AAEtB,qBAAa,gBAAgB;IAIzB,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,OAAO,CAAC;IAJlB,OAAO,qBAA4B;gBAGzB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,OAAO,YAAA;IAO3B,UAAU;IAIV,cAAc;IAId;;;;;;OAMG;IACH,OAAO;IAMP;;;OAGG;IACH,OAAO,CAAC,OAAO,EAAE,OAAO;CAOzB;AAED;;;;GAIG;AACH,cAAM,kBAAkB;IACtB,OAAO,kDAAgD;IAEvD,IAAI,WAAW,IAAI,OAAO,CAIzB;IAED,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS;IAIvD,SAAS,CAAC,IAAI,EAAE,MAAM;IAWtB,SAAS,IAAI,oBAAoB;IAkBjC,OAAO,CAAC,IAAI,EAAE,oBAAoB,GAAG,IAAI;CAW1C;AAED,cAAM,kBAAkB,CAAC,UAAU,GAAG,OAAO;IAC3C,KAAK,8BAAqC;IAC1C,OAAO,kDAAyD;IAEhE,IAAI,WAAW,IAAI,OAAO,CAKzB;IAED,SAAS,GAAI,KAAK,MAAM,KAAG,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAEhE;IAEF,SAAS,GAAI,KAAK,MAAM,KAAG,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CASpD;IAEF,SAAS,IAAI,mBAAmB,CAAC,UAAU,CAAC;IAwB5C,OAAO,CAAC,IAAI,EAAE,iBAAiB,GAAG,IAAI;CAiBvC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/plugins/-private/base.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/plugins/-private/base.ts"],"names":[],"mappings":"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"}
|
|
@@ -136,6 +136,12 @@ export declare class ColumnOrder<DataType = unknown> {
|
|
|
136
136
|
*/
|
|
137
137
|
save?: (order: Map<string, number>) => void;
|
|
138
138
|
/**
|
|
139
|
+
* Optional: Callback to read the current saved order from preferences.
|
|
140
|
+
* Called reactively - when preferences change, order updates automatically.
|
|
141
|
+
*/
|
|
142
|
+
read?: () => Map<string, number> | undefined;
|
|
143
|
+
/**
|
|
144
|
+
* @deprecated Use `read` instead for reactive preferences support.
|
|
139
145
|
* Optional: Previously saved column order to restore.
|
|
140
146
|
*/
|
|
141
147
|
existingOrder?: Map<string, number>;
|
|
@@ -168,7 +174,8 @@ export declare class ColumnOrder<DataType = unknown> {
|
|
|
168
174
|
swapWith(key: string, position: number): false | undefined;
|
|
169
175
|
get(key: string): number;
|
|
170
176
|
/**
|
|
171
|
-
* The same as this.map, but with all the columns' information
|
|
177
|
+
* The same as this.map, but with all the columns' information.
|
|
178
|
+
* Prefers preferences (via read callback) when available for reactivity.
|
|
172
179
|
*/
|
|
173
180
|
get orderedMap(): ReadonlyMap<string, number>;
|
|
174
181
|
get orderedColumns(): Column<DataType>[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/plugins/column-reordering/plugin.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAI/C,OAAO,EAAE,UAAU,EAAiB,MAAM,qBAAqB,CAAC;AAEhE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAEpD,UAAU,2BAA4B,SAAQ,iBAAiB;IAC7D,KAAK,EAAE;QACL,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAChC,CAAC;CACH;AAED,OAAO,QAAQ,gCAAgC,CAAC;IAC9C,UAAU,QAAQ;QAChB,gBAAgB,CAAC,EAAE,2BAA2B,CAAC;QAC/C,mBAAmB,CAAC,EAAE,2BAA2B,CAAC;KACnD;CACF;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE;QACJ,MAAM,EAAE,UAAU,CAAC;QACnB,KAAK,EAAE,SAAS,CAAC;KAClB,CAAC;CACH;AAED,qBAAa,gBAAiB,SAAQ,UAAU,CAAC,SAAS,CAAC;IACzD,IAAI,SAAuB;IAC3B,MAAM,CAAC,QAAQ,WAAmB;IAElC,IAAI;;;MAGO;IAEX,KAAK;IAML,IAAI,OAAO,sBAEV;CACF;AAED,qBAAa,UAAU,CAAC,QAAQ,GAAG,OAAO;;IAC5B,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC;IAS5C,IAAI,QAAQ,IAKQ,MAAM,CAHzB;IAGD,IAAI,QAAQ,CAAC,KAAK,EAAE,MAAM,EAEzB;IAED,IAAI,WAAW,YAEd;IAED,IAAI,YAAY,YAKf;IAED,IAAI,cAAc,YAEjB;IAED,IAAI,eAAe,YAElB;IAED;;OAEG;IACH,QAAQ,aAEN;IAEF;;OAEG;IACH,SAAS,aAEP;CACH;AAED,qBAAa,SAAS,CAAC,QAAQ,GAAG,OAAO;IAC3B,OAAO,CAAC,KAAK;gBAAL,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC;IAE1C;;;;;;;OAOG;IAEH,WAAW,wBAKR;IAEH;;OAEG;IAEH,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC;IAIpC;;OAEG;IAEH,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,MAAM;IAIzD;;OAEG;IACH,QAAQ,GAAI,OAAO,WAAW,CAAC,QAAQ,CAAC,UAEtC;IAEF;;;OAGG;IAEH,KAAK;IASL;;OAEG;IAEH,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IAU7B;;OAEG;IAEH,OAAO,CAAC,IAAI;IAUZ,IAAI,OAAO,uBAIV;IAED;;;OAGG;IACH,OAAO,KAAK,cAAc,GAQzB;IAED,OAAO,KAAK,UAAU,GAErB;CACF;AAED;;;GAGG;AACH,qBAAa,WAAW,CAAC,QAAQ,GAAG,OAAO;IAOvC,OAAO,CAAC,IAAI;IANd;;OAEG;IACH,GAAG,6BAAoC;gBAG7B,IAAI,EAAE;QACZ;;;;;;;;;;;WAWG;QACH,OAAO,EAAE,MAAM,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;QAClC;;;;;;;;;;;;WAYG;QACH,cAAc,CAAC,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC/C;;WAEG;QACH,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,IAAI,CAAC;QAC5C
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/plugins/column-reordering/plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -48,11 +48,14 @@ class TablePreferences {
|
|
|
48
48
|
*/
|
|
49
49
|
class TrackedPreferences {
|
|
50
50
|
constructor() {
|
|
51
|
-
_defineProperty(this, "plugins", new
|
|
51
|
+
_defineProperty(this, "plugins", new TrackedMap());
|
|
52
52
|
}
|
|
53
53
|
get isAtDefault() {
|
|
54
54
|
return [...this.plugins.values()].every(pluginPrefs => pluginPrefs.isAtDefault);
|
|
55
55
|
}
|
|
56
|
+
getPlugin(name) {
|
|
57
|
+
return this.plugins.get(name);
|
|
58
|
+
}
|
|
56
59
|
forPlugin(name) {
|
|
57
60
|
let existing = this.plugins.get(name);
|
|
58
61
|
if (!existing) {
|
|
@@ -90,7 +93,10 @@ class TrackedPreferences {
|
|
|
90
93
|
class TrackedPluginPrefs {
|
|
91
94
|
constructor() {
|
|
92
95
|
_defineProperty(this, "table", new TrackedMap());
|
|
93
|
-
_defineProperty(this, "columns", new
|
|
96
|
+
_defineProperty(this, "columns", new TrackedMap());
|
|
97
|
+
_defineProperty(this, "getColumn", key => {
|
|
98
|
+
return this.columns.get(key);
|
|
99
|
+
});
|
|
94
100
|
_defineProperty(this, "forColumn", key => {
|
|
95
101
|
let existing = this.columns.get(key);
|
|
96
102
|
if (!existing) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preferences.js","sources":["../../src/-private/preferences.ts"],"sourcesContent":["import { TrackedMap } from 'tracked-built-ins';\n\nimport type {\n PluginPreferenceFor,\n PluginPreferences,\n PreferencesAdapter as Adapter,\n PreferencesTableValues,\n TablePreferencesData,\n} from './interfaces';\n\nexport class TablePreferences {\n storage = new TrackedPreferences();\n\n constructor(\n private key: string,\n private adapter?: Adapter,\n ) {\n if (this.adapter) {\n this.restore(this.adapter);\n }\n }\n\n hasAdapter() {\n return this.adapter !== undefined;\n }\n\n getIsAtDefault() {\n return this.storage.isAtDefault;\n }\n\n /**\n * Passes a JSON-compatible structure to `adapter.persist`\n *\n * This structure could be stored in a remote database or\n * local storage. The `adpater.restore` method can be used to restore\n * this structure back in to the {@link TrackedPreferences }\n */\n persist() {\n return this.adapter?.persist?.(this.key, {\n ...this.storage.serialize(),\n });\n }\n\n /**\n * Using the `adapter.restore` method, convert the JSON structure\n * to {@link TrackedPreferences }\n */\n restore(adapter: Adapter) {\n const data = adapter?.restore?.(this.key);\n\n if (!data) return;\n\n return this.storage.restore(data);\n }\n}\n\n/**\n * @public\n *\n * The API for reactively interacting with preferences\n */\nclass TrackedPreferences {\n plugins = new
|
|
1
|
+
{"version":3,"file":"preferences.js","sources":["../../src/-private/preferences.ts"],"sourcesContent":["import { TrackedMap } from 'tracked-built-ins';\n\nimport type {\n PluginPreferenceFor,\n PluginPreferences,\n PreferencesAdapter as Adapter,\n PreferencesTableValues,\n TablePreferencesData,\n} from './interfaces';\n\nexport class TablePreferences {\n storage = new TrackedPreferences();\n\n constructor(\n private key: string,\n private adapter?: Adapter,\n ) {\n if (this.adapter) {\n this.restore(this.adapter);\n }\n }\n\n hasAdapter() {\n return this.adapter !== undefined;\n }\n\n getIsAtDefault() {\n return this.storage.isAtDefault;\n }\n\n /**\n * Passes a JSON-compatible structure to `adapter.persist`\n *\n * This structure could be stored in a remote database or\n * local storage. The `adpater.restore` method can be used to restore\n * this structure back in to the {@link TrackedPreferences }\n */\n persist() {\n return this.adapter?.persist?.(this.key, {\n ...this.storage.serialize(),\n });\n }\n\n /**\n * Using the `adapter.restore` method, convert the JSON structure\n * to {@link TrackedPreferences }\n */\n restore(adapter: Adapter) {\n const data = adapter?.restore?.(this.key);\n\n if (!data) return;\n\n return this.storage.restore(data);\n }\n}\n\n/**\n * @public\n *\n * The API for reactively interacting with preferences\n */\nclass TrackedPreferences {\n plugins = new TrackedMap<string, TrackedPluginPrefs>();\n\n get isAtDefault(): boolean {\n return [...this.plugins.values()].every(\n (pluginPrefs) => pluginPrefs.isAtDefault,\n );\n }\n\n getPlugin(name: string): TrackedPluginPrefs | undefined {\n return this.plugins.get(name);\n }\n\n forPlugin(name: string) {\n let existing = this.plugins.get(name);\n\n if (!existing) {\n existing = new TrackedPluginPrefs();\n this.plugins.set(name, existing);\n }\n\n return existing;\n }\n\n serialize(): TablePreferencesData {\n const plugins: TablePreferencesData['plugins'] = {};\n\n for (const [pluginName, preferences] of this.plugins.entries()) {\n /**\n * This cast is dirty, and should be fixed eventually.\n * We should be able to, knowing that pluginName\n * will either be in the registry, or be a default PluginPreferences\n * object, that we can assign the serialized structure to plugins.\n */\n (plugins as any)[pluginName] = preferences.serialize();\n }\n\n return {\n plugins,\n };\n }\n\n restore(data: TablePreferencesData): void {\n const { plugins } = data;\n\n for (const [pluginName, preferences] of Object.entries(plugins || {})) {\n const trackedPluginPrefs = new TrackedPluginPrefs();\n\n trackedPluginPrefs.restore(preferences);\n\n this.plugins.set(pluginName, trackedPluginPrefs);\n }\n }\n}\n\nclass TrackedPluginPrefs<PluginName = unknown> {\n table = new TrackedMap<string, unknown>();\n columns = new TrackedMap<string, TrackedMap<string, unknown>>();\n\n get isAtDefault(): boolean {\n return (\n this.table.size === 0 &&\n [...this.columns.values()].every((x) => x.size === 0)\n );\n }\n\n getColumn = (key: string): TrackedMap<string, unknown> | undefined => {\n return this.columns.get(key);\n };\n\n forColumn = (key: string): TrackedMap<string, unknown> => {\n let existing = this.columns.get(key);\n\n if (!existing) {\n existing = new TrackedMap();\n this.columns.set(key, existing);\n }\n\n return existing;\n };\n\n serialize(): PluginPreferenceFor<PluginName> {\n const columnsPrefs: PluginPreferences['columns'] = {};\n const tablePrefs: PluginPreferences['table'] = {};\n\n for (const [columnKey, preferences] of this.columns.entries()) {\n const serializedPreferences: Record<string, unknown> = {};\n\n for (const [key, preference] of preferences.entries()) {\n serializedPreferences[key] = preference;\n }\n\n columnsPrefs[columnKey] = serializedPreferences;\n }\n\n for (const [key, preference] of this.table.entries()) {\n tablePrefs[key] = preference;\n }\n\n return {\n table: tablePrefs,\n columns: columnsPrefs,\n } as PluginPreferenceFor<PluginName>;\n }\n\n restore(data: PluginPreferences): void {\n const { table, columns } = data;\n\n for (const [key, preferences] of Object.entries(columns)) {\n const trackedPluginPrefs = new TrackedMap(Object.entries(preferences));\n\n this.columns.set(key, trackedPluginPrefs);\n }\n\n /**\n * TODO: fix the inference here...\n * each time there is a cast, there is a greater risk of runtime error.\n */\n this.table = new TrackedMap<string, PreferencesTableValues<PluginName>>(\n Object.entries(table) as [string, PreferencesTableValues<PluginName>][],\n );\n }\n}\n"],"names":["TablePreferences","constructor","key","adapter","_defineProperty","TrackedPreferences","restore","hasAdapter","undefined","getIsAtDefault","storage","isAtDefault","persist","serialize","data","TrackedMap","plugins","values","every","pluginPrefs","getPlugin","name","get","forPlugin","existing","TrackedPluginPrefs","set","pluginName","preferences","entries","Object","trackedPluginPrefs","columns","table","size","x","columnsPrefs","tablePrefs","columnKey","serializedPreferences","preference"],"mappings":"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"}
|
|
@@ -92,8 +92,10 @@ const preferences = {
|
|
|
92
92
|
*/
|
|
93
93
|
delete(key) {
|
|
94
94
|
const prefs = column.table.preferences;
|
|
95
|
-
const
|
|
96
|
-
|
|
95
|
+
const pluginPrefs = prefs.storage.getPlugin(klass.name);
|
|
96
|
+
if (!pluginPrefs) return prefs.persist();
|
|
97
|
+
const columnPrefs = pluginPrefs.getColumn(column.key);
|
|
98
|
+
if (!columnPrefs) return prefs.persist();
|
|
97
99
|
columnPrefs.delete(key);
|
|
98
100
|
return prefs.persist();
|
|
99
101
|
},
|
|
@@ -102,8 +104,10 @@ const preferences = {
|
|
|
102
104
|
*/
|
|
103
105
|
get(key) {
|
|
104
106
|
const prefs = column.table.preferences;
|
|
105
|
-
const
|
|
106
|
-
|
|
107
|
+
const pluginPrefs = prefs.storage.getPlugin(klass.name);
|
|
108
|
+
if (!pluginPrefs) return undefined;
|
|
109
|
+
const columnPrefs = pluginPrefs.getColumn(column.key);
|
|
110
|
+
if (!columnPrefs) return undefined;
|
|
107
111
|
return columnPrefs.get(key);
|
|
108
112
|
},
|
|
109
113
|
/**
|
|
@@ -133,8 +137,10 @@ const preferences = {
|
|
|
133
137
|
const tablePrefs = table.preferences;
|
|
134
138
|
for (const column of table.columns) {
|
|
135
139
|
const prefs = column.table.preferences;
|
|
136
|
-
const
|
|
137
|
-
|
|
140
|
+
const pluginPrefs = prefs.storage.getPlugin(klass.name);
|
|
141
|
+
if (!pluginPrefs) continue;
|
|
142
|
+
const columnPrefs = pluginPrefs.getColumn(column.key);
|
|
143
|
+
if (!columnPrefs) continue;
|
|
138
144
|
columnPrefs.delete(key);
|
|
139
145
|
}
|
|
140
146
|
return tablePrefs.persist();
|
|
@@ -158,8 +164,9 @@ const preferences = {
|
|
|
158
164
|
*/
|
|
159
165
|
delete(key) {
|
|
160
166
|
const prefs = table.preferences;
|
|
161
|
-
const
|
|
162
|
-
|
|
167
|
+
const pluginPrefs = prefs.storage.getPlugin(klass.name);
|
|
168
|
+
if (!pluginPrefs) return prefs.persist();
|
|
169
|
+
pluginPrefs.table.delete(key);
|
|
163
170
|
return prefs.persist();
|
|
164
171
|
},
|
|
165
172
|
/**
|
|
@@ -167,8 +174,9 @@ const preferences = {
|
|
|
167
174
|
*/
|
|
168
175
|
get(key) {
|
|
169
176
|
const prefs = table.preferences;
|
|
170
|
-
const
|
|
171
|
-
|
|
177
|
+
const pluginPrefs = prefs.storage.getPlugin(klass.name);
|
|
178
|
+
if (!pluginPrefs) return undefined;
|
|
179
|
+
return pluginPrefs.table.get(key);
|
|
172
180
|
},
|
|
173
181
|
/**
|
|
174
182
|
* set an entry on the underlying `Map` used for this table-plugin pair
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.js","sources":["../../../src/plugins/-private/base.ts"],"sourcesContent":["import { assert } from '@ember/debug';\n\nimport {\n COLUMN_META_KEY,\n ROW_META_KEY,\n TABLE_KEY,\n TABLE_META_KEY,\n} from '../../-private/table.ts';\nimport { normalizePluginsConfig } from './utils.ts';\n\nimport type { Table } from '../../-private/table.ts';\nimport type { ColumnReordering } from '../column-reordering';\nimport type { ColumnVisibility } from '../column-visibility';\nimport type { Class, Constructor } from '../../-private/private-types.ts';\nimport type { Column, Row } from '../../index.ts';\nimport type {\n ColumnMetaFor,\n ColumnOptionsFor,\n OptionsFor,\n Plugin,\n RowMetaFor,\n TableMetaFor,\n} from '../../-private/interfaces';\n\ntype InstanceOf<T> = T extends Class<infer Instance> ? Instance : T;\n\n/**\n * @public\n *\n * list of interfaces by feature name that consumers may provide alternative\n * implementation for\n */\nexport interface TableFeatures extends Record<string, unknown | undefined> {\n /**\n * @public\n *\n * interface for the table meta of a \"column visibility plugin\"\n */\n columnVisibility: InstanceOf<ColumnVisibility['meta']['table']>;\n /**\n * @public\n *\n * interface for the table meta of a \"column order plugin\"\n */\n columnOrder: InstanceOf<ColumnReordering['meta']['table']>;\n}\n\n/**\n * @public\n *\n * list of interfaces by feature name that consumers may provide alternative\n * implementation for\n */\nexport interface ColumnFeatures extends Record<string, unknown | undefined> {\n /**\n * @public\n *\n * interface for the column meta of a \"column visibility plugin\"\n */\n columnVisibility: InstanceOf<ColumnVisibility['meta']['column']>;\n /**\n * @public\n *\n * interface for the column meta of a \"column order plugin\"\n */\n columnOrder: InstanceOf<ColumnReordering['meta']['column']>;\n}\n\n/**\n * @private utility type\n *\n */\nexport type SignatureFrom<Klass extends BasePlugin<any>> =\n Klass extends BasePlugin<infer Signature> ? Signature : never;\n\ndeclare const __Signature__: unique symbol;\n\n/**\n * @public\n *\n * If your table plugin is a class, you may extend from BasePlugin, which provides\n * small utility methods and properties for getting the metadata for your plugin\n * for the table and each column\n *\n * One instance of a plugin exists per table\n */\nexport abstract class BasePlugin<Signature = unknown>\n implements Plugin<Signature>\n{\n constructor(protected table: Table) {}\n\n /**\n * @private (secret)\n *\n * Because classes are kind of like interfaces,\n * we need \"something\" to help TS know what a Resource is.\n *\n * This isn't a real API, but does help with type inference\n * with the SignatureFrom utility above\n */\n declare [__Signature__]: Signature;\n\n /**\n * Helper for specifying plugins on `headlessTable` with the plugin-level options\n */\n static with<T extends BasePlugin<any>>(\n this: Constructor<T>,\n configFn: () => OptionsFor<SignatureFrom<T>>,\n ): [Constructor<T>, () => OptionsFor<SignatureFrom<T>>] {\n return [this, configFn];\n }\n\n /**\n * Helper for specifying column-level configurations for a plugin on `headlessTable`'s\n * columns option\n */\n static forColumn<T extends BasePlugin<any>>(\n this: Constructor<T>,\n configFn: () => ColumnOptionsFor<SignatureFrom<T>>,\n ): [Constructor<T>, () => ColumnOptionsFor<SignatureFrom<T>>] {\n return [this, configFn];\n }\n\n declare meta?: {\n column?: Constructor<ColumnMetaFor<Signature>>;\n table?: Constructor<TableMetaFor<Signature>>;\n row?: Constructor<RowMetaFor<Signature>>;\n };\n\n abstract name: string;\n static features?: string[];\n static requires?: string[];\n}\n\n/**\n * @public\n *\n * returns boolean if the passed table has an instance of the configured passed plugin class.\n * This can be used to help guard against accessing public-specific APIs if those plugins\n * are not configured for a particular table instance\n */\nexport function hasPlugin<P extends BasePlugin<any>, Data = unknown>(\n table: Table<Data>,\n klass: Class<P>,\n) {\n return Boolean(table.pluginOf(klass));\n}\n\nexport const preferences = {\n /**\n * @public\n *\n * returns an object for getting and setting preferences data\n * based on the column (scoped to key)\n *\n * Only the provided plugin will have access to these preferences\n * (though, if other plugins can guess how the underlying plugin access\n * works, they can access this data, too. No security guaranteed)\n */\n forColumn<P extends BasePlugin<any>, Data = unknown>(\n column: Column<Data>,\n klass: Class<P>,\n ) {\n return {\n /**\n * delete an entry on the underlying `Map` used for this column-plugin pair\n */\n delete(key: string) {\n const prefs = column.table.preferences;\n const existing = prefs.storage.forPlugin(klass.name);\n const columnPrefs = existing.forColumn(column.key);\n\n columnPrefs.delete(key);\n\n return prefs.persist();\n },\n /**\n * get an entry on the underlying `Map` used for this column-plugin pair\n */\n get(key: string) {\n const prefs = column.table.preferences;\n const existing = prefs.storage.forPlugin(klass.name);\n const columnPrefs = existing.forColumn(column.key);\n\n return columnPrefs.get(key);\n },\n /**\n * set an entry on the underlying `Map` used for this column-plugin pair\n */\n set(key: string, value: unknown) {\n const prefs = column.table.preferences;\n const existing = prefs.storage.forPlugin(klass.name);\n const columnPrefs = existing.forColumn(column.key);\n\n columnPrefs.set(key, value);\n\n prefs.persist();\n },\n };\n },\n\n /**\n * @public\n *\n * returns an object for bulk updating preferences data\n * for all columns (scoped to key and table)\n */\n forAllColumns<P extends BasePlugin<any>, Data = unknown>(\n table: Table<Data>,\n klass: Class<P>,\n ) {\n return {\n /**\n * delete an entry on every column in the underlying column `Map` for this table-plugin pair\n */\n delete(key: string) {\n const tablePrefs = table.preferences;\n\n for (const column of table.columns) {\n const prefs = column.table.preferences;\n const existing = prefs.storage.forPlugin(klass.name);\n const columnPrefs = existing.forColumn(column.key);\n\n columnPrefs.delete(key);\n }\n\n return tablePrefs.persist();\n },\n };\n },\n\n /**\n * @public\n *\n * returns an object for getting and setting preferences data\n * based on the table (scoped to the key: \"table\")\n *\n * Only the provided plugin will have access to these preferences\n * (though, if other plugins can guess how the underlying plugin access\n * works, they can access this data, too. No security guaranteed)\n */\n forTable<P extends BasePlugin<any>, Data = unknown>(\n table: Table<Data>,\n klass: Class<P>,\n ) {\n return {\n /**\n * delete an entry on the underlying `Map` used for this table-plugin pair\n */\n delete(key: string) {\n const prefs = table.preferences;\n const existing = prefs.storage.forPlugin(klass.name);\n\n existing.table.delete(key);\n\n return prefs.persist();\n },\n /**\n * get an entry on the underlying `Map` used for this table-plugin pair\n */\n get(key: string) {\n const prefs = table.preferences;\n const existing = prefs.storage.forPlugin(klass.name);\n\n return existing.table.get(key);\n },\n /**\n * set an entry on the underlying `Map` used for this table-plugin pair\n */\n set(key: string, value: unknown) {\n const prefs = table.preferences;\n const existing = prefs.storage.forPlugin(klass.name);\n\n existing.table.set(key, value);\n\n return prefs.persist();\n },\n };\n },\n};\n\n/**\n * if a `requester` is not provided,\n * Get the columns for the table, considering any and all plugins that could modify columns.\n *\n * If you are an end-consumer of @universal-ember/table, this is the function to use.\n * If you are a plugin-author, you'll want to pass your plugin class as the second parameter.\n *\n * For a given plugin, `requester`, determine what columns should be returned.\n * Since multiple plugins could be used in a table, there is an implicit hierarchy of\n * column modifications that can occur from each of those plugins.\n *\n * If a plugin defines other plugins as either *requirements* or *optional requirements*,\n * and that upstream plugin defines a `columns` property, then those columns will be returned here.\n *\n * This works recursively up the plugin tree up until a plugin has no requirements, and then\n * all columns from the table are returned.\n */\nfunction columnsFor<DataType = any>(\n table: Table<DataType>,\n requester?: Plugin<any>,\n): Column<DataType>[] {\n assert(\n `First argument passed to columns.for must be an instance of Table`,\n table[TABLE_KEY],\n );\n\n const visibility = findPlugin(table.plugins, 'columnVisibility');\n const reordering = findPlugin(table.plugins, 'columnOrder');\n const sizing = findPlugin(table.plugins, 'columnResizing');\n\n // TODO: actually resolve the graph, rather than use the hardcoded feature names\n // atm, this only \"happens\" to work based on expectations of\n // of the currently implemented plugins' capabilities and implied hierarchy.\n\n if (requester) {\n assert(\n `[${requester.name}] requested columns from the table, but the plugin, ${requester.name}, ` +\n `is not used in this table`,\n table.plugins.some(\n (plugin) => plugin instanceof (requester as Class<Plugin>),\n ),\n );\n\n if (sizing && sizing.constructor === requester) {\n return table.columns.values();\n }\n\n if (visibility && visibility.constructor === requester) {\n return table.columns.values();\n }\n\n if (reordering && reordering.constructor === requester) {\n if (visibility) {\n assert(\n `<#${visibility.name}> defined a 'columns' property, but did not return valid data.`,\n visibility.columns && Array.isArray(visibility.columns),\n );\n\n return visibility.columns;\n }\n\n return table.columns.values();\n }\n\n if (reordering) {\n assert(\n `<#${reordering.name}> defined a 'columns' property, but did not return valid data.`,\n reordering.columns && Array.isArray(reordering.columns),\n );\n\n return reordering.columns;\n }\n\n if (visibility) {\n assert(\n `<#${visibility.name}> defined a 'columns' property, but did not return valid data.`,\n visibility.columns && Array.isArray(visibility.columns),\n );\n\n return visibility.columns;\n }\n\n if (sizing) {\n assert(\n `<#${sizing.name}> defined a 'columns' property, but did not return valid data.`,\n sizing.columns && Array.isArray(sizing.columns),\n );\n\n return sizing.columns;\n }\n\n return table.columns.values();\n }\n\n /**\n * This flow is the inverse of when we have a requester\n */\n\n if (reordering) {\n assert(\n `<#${reordering.name}> defined a 'columns' property, but did not return valid data.`,\n reordering.columns && Array.isArray(reordering.columns),\n );\n\n return reordering.columns;\n }\n\n if (visibility) {\n assert(\n `<#${visibility.name}> defined a 'columns' property, but did not return valid data.`,\n visibility.columns && Array.isArray(visibility.columns),\n );\n\n return visibility.columns;\n }\n\n if (sizing) {\n assert(\n `<#${sizing.name}> defined a 'columns' property, but did not return valid data.`,\n sizing.columns && Array.isArray(sizing.columns),\n );\n\n return sizing.columns;\n }\n\n return table.columns.values();\n}\n\nexport const columns = {\n for: columnsFor,\n\n /**\n * for a given current or reference column, return the column that\n * is immediately next, or to the right of that column.\n *\n * If a plugin class is provided, the hierarchy of column list modifications\n * will be respected.\n */\n next: <Data = unknown>(\n current: Column<Data>,\n requester?: Plugin<any>,\n ): Column<Data> | undefined => {\n const columns = requester\n ? columnsFor(current.table, requester)\n : columnsFor(current.table);\n\n const referenceIndex = columns.indexOf(current);\n\n assert(\n `index of reference column must be >= 0. column likely not a part of the table`,\n referenceIndex >= 0,\n );\n\n /**\n * There can be nothing after the last column\n */\n if (referenceIndex >= columns.length - 1) {\n return undefined;\n }\n\n return columns[referenceIndex + 1];\n },\n\n /**\n * for a given current or reference column, return the column that\n * is immediately previous, or to the left of that column.\n *\n * If a plugin class is provided, the hierarchy of column list modifications\n * will be respected.\n */\n previous: <Data = unknown>(\n current: Column<Data>,\n requester?: Plugin<any>,\n ): Column<Data> | undefined => {\n const columns = requester\n ? columnsFor(current.table, requester)\n : columnsFor(current.table);\n const referenceIndex = columns.indexOf(current);\n\n assert(\n `index of reference column must be >= 0. column likely not a part of the table`,\n referenceIndex >= 0,\n );\n\n /**\n * There can be nothing before the first column\n */\n if (referenceIndex === 0) {\n return undefined;\n }\n\n return columns[referenceIndex - 1];\n },\n /**\n * for a given current or reference column, return the columns that\n * should appear before, or to the left of that column.\n *\n * if a plugin class is provided, the hierarchy of column list modifications\n * will be respected.\n */\n before: <Data = unknown>(\n current: Column<Data>,\n requester?: Plugin<any>,\n ): Column<Data>[] => {\n const columns = requester\n ? columnsFor(current.table, requester)\n : columnsFor(current.table);\n\n const referenceIndex = columns.indexOf(current);\n\n return columns.slice(0, referenceIndex);\n },\n /**\n * for a given current or reference column, return the columns that\n * should appear after, or to the right of that column.\n *\n * if a plugin class is provided, the hierarchy of column list modifications\n * will be respected.\n */\n after: <Data = unknown>(\n current: Column<Data>,\n requester?: Plugin<any>,\n ): Column<Data>[] => {\n const columns = requester\n ? columnsFor(current.table, requester)\n : columnsFor(current.table);\n\n const referenceIndex = columns.indexOf(current);\n\n return columns.slice(referenceIndex + 1);\n },\n};\n\nexport const meta = {\n /**\n * @public\n *\n * For a given column and plugin, return the meta / state bucket for the\n * plugin<->column instance pair.\n *\n * Note that this requires the column instance to exist on the table.\n */\n forColumn<P extends BasePlugin<any>, Data = unknown>(\n column: Column<Data>,\n klass: Class<P>,\n ): ColumnMetaFor<SignatureFrom<P>> {\n const columnMeta = column.table[COLUMN_META_KEY];\n\n return getPluginInstance(columnMeta, column, klass, () => {\n const plugin = column.table.pluginOf(klass);\n\n assert(\n `[${klass.name}] cannot get plugin instance of unregistered plugin class`,\n plugin,\n );\n assert(\n `<#${plugin.name}> plugin does not have meta specified`,\n plugin.meta,\n );\n assert(\n `<#${plugin.name}> plugin does not specify column meta`,\n plugin.meta.column,\n );\n\n return new plugin.meta.column(column);\n });\n },\n\n /**\n * @public\n *\n * For a given row and plugin, return the meta / state bucket for the\n * plugin<->row instance pair.\n *\n * Note that this requires the row instance to exist on the table.\n */\n forRow<P extends BasePlugin<any>, Data = unknown>(\n row: Row<Data>,\n klass: Class<P>,\n ): RowMetaFor<SignatureFrom<P>> {\n const rowMeta = row.table[ROW_META_KEY];\n\n return getPluginInstance(rowMeta, row, klass, () => {\n const plugin = row.table.pluginOf(klass);\n\n assert(\n `[${klass.name}] cannot get plugin instance of unregistered plugin class`,\n plugin,\n );\n assert(\n `<#${plugin.name}> plugin does not have meta specified`,\n plugin.meta,\n );\n assert(\n `<#${plugin.name}> plugin does not specify row meta`,\n plugin.meta.row,\n );\n\n return new plugin.meta.row(row);\n });\n },\n\n /**\n * @public\n *\n * For a given table and plugin, return the meta / state bucket for the\n * plugin<->table instance pair.\n */\n forTable<P extends BasePlugin<any>, Data = unknown>(\n table: Table<Data>,\n klass: Class<P>,\n ): TableMetaFor<SignatureFrom<P>> {\n const tableMeta = table[TABLE_META_KEY];\n\n return getPluginInstance(tableMeta, klass, () => {\n const plugin = table.pluginOf(klass);\n\n assert(\n `[${klass.name}] cannot get plugin instance of unregistered plugin class`,\n plugin,\n );\n assert(\n `<#${plugin.name}> plugin does not have meta specified`,\n plugin.meta,\n );\n assert(\n `<#${plugin.name}> plugin does not specify table meta`,\n plugin.meta.table,\n );\n assert(\n `<#${plugin.name}> plugin already exists for the table. ` +\n `A plugin may only be instantiated once per table.`,\n ![...tableMeta.keys()].includes(klass),\n );\n\n return new plugin.meta.table(table);\n });\n },\n\n /**\n * Instead of finding meta based on column or table instances,\n * you can search for meta based on feature strings, such as `columnWidth`\n */\n withFeature: {\n /**\n * @public\n *\n * for a given column and feature name, return the \"ColumnMeta\" for that feature.\n * This is useful when plugins may depend on one another but may not necessarily care which\n * plugin is providing what behavior.\n *\n * For example, multiple column-focused plugins may care about width or visibility\n */\n forColumn<FeatureName extends string, Data = unknown>(\n column: Column<Data>,\n featureName: FeatureName,\n ): ColumnFeatures[FeatureName] {\n const { plugins } = column.table;\n\n const provider = findPlugin(plugins, featureName);\n\n assert(\n `Could not find plugin with feature: ${featureName}. ` +\n `Available features: ${availableFeatures(plugins)}`,\n provider,\n );\n\n // TS doesn't believe in the constructor property?\n return meta.forColumn(column, (provider as any).constructor);\n },\n\n /**\n * @public\n *\n * for a given table and feature name, return the \"TableMeta\" for that feature.\n * This is useful when plugins may depend on one another but may not necessarily care\n * which plugin is providing that behavior.\n *\n * For example, multiple column-focused plugins may care about width or visibility.\n */\n forTable<FeatureName extends string, Data = unknown>(\n table: Table<Data>,\n featureName: FeatureName,\n ): TableFeatures[FeatureName] {\n const { plugins } = table;\n\n const provider = findPlugin(plugins, featureName);\n\n assert(\n `Could not find plugin with feature: ${featureName}. ` +\n `Available features: ${availableFeatures(plugins)}`,\n provider,\n );\n\n // TS doesn't believe in the constructor property?\n return meta.forTable(table, (provider as any).constructor);\n },\n },\n};\n\nfunction findPlugin(plugins: Plugin[], featureName: string) {\n const provider = plugins.find((plugin) => {\n /*\n * have to cast in order to get static properties, but we may not have a base plugin\n * so we must rely on nullish coalesting to protect from throwing exceptions\n *\n * (Plugin || BasePlugin).features)\n */\n const features =\n plugin.features || (plugin.constructor as typeof BasePlugin).features;\n\n return features?.includes(featureName);\n });\n\n return provider;\n}\n\nfunction availableFeatures(plugins: Plugin[]): string {\n const allFeatures = plugins\n .map((plugin) => {\n /*\n * have to cast in order to get static properties, but we may not have a base plugin\n * so we must rely on nullish coalesting to protect from throwing exceptions\n *\n * (Plugin || BasePlugin).features)\n */\n const features =\n plugin.features || (plugin.constructor as typeof BasePlugin).features;\n\n return features;\n })\n .flat()\n .filter(Boolean);\n\n return allFeatures.length > 0 ? allFeatures.join(', ') : '[none]';\n}\n\nexport const options = {\n /**\n * @public\n *\n * For a given table and plugin, return the options, if any were given from the user\n * during construction of the table.\n */\n forTable<P extends BasePlugin<any>, Data = unknown>(\n table: Table<Data>,\n klass: Class<P>,\n ): Partial<OptionsFor<SignatureFrom<P>>> {\n const normalized = normalizePluginsConfig(table?.config?.plugins);\n const tuple = normalized?.find((option) => option[0] === klass);\n const t = tuple as [Class<P>, () => OptionsFor<SignatureFrom<P>>];\n\n // Plugin not provided, likely\n if (!t) return {};\n\n const fn = t[1];\n\n return fn() ?? {};\n },\n\n forColumn<P extends BasePlugin<any>, Data = unknown>(\n column: Column<Data>,\n klass: Class<P>,\n ): Partial<ColumnOptionsFor<SignatureFrom<P>>> {\n const tuple = column.config.pluginOptions?.find(\n (option) => option[0] === klass,\n );\n const t = tuple as [unknown, () => ColumnOptionsFor<SignatureFrom<P>>];\n\n const fn = t?.[1];\n\n if (!fn) return {};\n\n return fn() ?? {};\n },\n};\n\ntype FactoryMap<Instance> = Map<Class<Instance>, Instance>;\n\n/**\n * @private\n */\nfunction getPluginInstance<Instance>(\n map: Map<Class<Instance>, Instance>,\n mapKey: Class<Instance>,\n factory: () => Instance,\n): Instance;\nfunction getPluginInstance<RootKey extends Column<any> | Row<any>, Instance>(\n map: WeakMap<Column | Row, Map<Class<Instance>, Instance>>,\n rootKey: RootKey,\n mapKey: Class<Instance>,\n factory: () => Instance,\n): Instance;\nfunction getPluginInstance<RootKey extends Column<any> | Row<any>, Instance>(\n ...args:\n | [FactoryMap<Instance>, Class<Instance>, () => Instance]\n | [\n WeakMap<Column | Row, FactoryMap<Instance>>,\n RootKey,\n Class<Instance>,\n () => Instance,\n ]\n): Instance {\n let map: WeakMap<Column | Row, FactoryMap<Instance>> | FactoryMap<Instance>;\n let mapKey: Class<Instance>;\n let rootKey: RootKey | undefined;\n let factory: () => Instance;\n\n if (args.length === 3) {\n map = args[0];\n mapKey = args[1];\n factory = args[2];\n } else if (args.length === 4) {\n map = args[0];\n rootKey = args[1];\n mapKey = args[2];\n factory = args[3];\n } else {\n throw new Error(\n // TS says args is of type \"never\", but TS can't protect against general misuse\n // (esp without TS)\n `Incorrect arity passed to getPluginInstance. Expected 3 or 4, received ${\n (args as any).length\n }`,\n );\n }\n\n let bucket: FactoryMap<Instance> | undefined;\n\n if (map instanceof WeakMap) {\n assert(`rootKey is missing`, rootKey);\n\n bucket = map.get(rootKey);\n\n if (!bucket) {\n bucket = new Map();\n\n map.set(rootKey, bucket);\n }\n } else {\n bucket = map;\n }\n\n let instance = bucket.get(mapKey);\n\n if (instance) {\n return instance;\n }\n\n instance = factory();\n\n bucket.set(mapKey, instance);\n\n return instance;\n}\n"],"names":["BasePlugin","constructor","table","with","configFn","forColumn","_defineProperty","hasPlugin","klass","Boolean","pluginOf","preferences","column","delete","key","prefs","existing","storage","forPlugin","name","columnPrefs","persist","get","set","value","forAllColumns","tablePrefs","columns","forTable","columnsFor","requester","assert","TABLE_KEY","visibility","findPlugin","plugins","reordering","sizing","some","plugin","values","Array","isArray","for","next","current","referenceIndex","indexOf","length","undefined","previous","before","slice","after","meta","columnMeta","COLUMN_META_KEY","getPluginInstance","forRow","row","rowMeta","ROW_META_KEY","tableMeta","TABLE_META_KEY","keys","includes","withFeature","featureName","provider","availableFeatures","find","features","allFeatures","map","flat","filter","join","options","normalized","normalizePluginsConfig","config","tuple","option","t","fn","pluginOptions","args","mapKey","rootKey","factory","Error","bucket","WeakMap","Map","instance"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"base.js","sources":["../../../src/plugins/-private/base.ts"],"sourcesContent":["import { assert } from '@ember/debug';\n\nimport {\n COLUMN_META_KEY,\n ROW_META_KEY,\n TABLE_KEY,\n TABLE_META_KEY,\n} from '../../-private/table.ts';\nimport { normalizePluginsConfig } from './utils.ts';\n\nimport type { Table } from '../../-private/table.ts';\nimport type { ColumnReordering } from '../column-reordering';\nimport type { ColumnVisibility } from '../column-visibility';\nimport type { Class, Constructor } from '../../-private/private-types.ts';\nimport type { Column, Row } from '../../index.ts';\nimport type {\n ColumnMetaFor,\n ColumnOptionsFor,\n OptionsFor,\n Plugin,\n RowMetaFor,\n TableMetaFor,\n} from '../../-private/interfaces';\n\ntype InstanceOf<T> = T extends Class<infer Instance> ? Instance : T;\n\n/**\n * @public\n *\n * list of interfaces by feature name that consumers may provide alternative\n * implementation for\n */\nexport interface TableFeatures extends Record<string, unknown | undefined> {\n /**\n * @public\n *\n * interface for the table meta of a \"column visibility plugin\"\n */\n columnVisibility: InstanceOf<ColumnVisibility['meta']['table']>;\n /**\n * @public\n *\n * interface for the table meta of a \"column order plugin\"\n */\n columnOrder: InstanceOf<ColumnReordering['meta']['table']>;\n}\n\n/**\n * @public\n *\n * list of interfaces by feature name that consumers may provide alternative\n * implementation for\n */\nexport interface ColumnFeatures extends Record<string, unknown | undefined> {\n /**\n * @public\n *\n * interface for the column meta of a \"column visibility plugin\"\n */\n columnVisibility: InstanceOf<ColumnVisibility['meta']['column']>;\n /**\n * @public\n *\n * interface for the column meta of a \"column order plugin\"\n */\n columnOrder: InstanceOf<ColumnReordering['meta']['column']>;\n}\n\n/**\n * @private utility type\n *\n */\nexport type SignatureFrom<Klass extends BasePlugin<any>> =\n Klass extends BasePlugin<infer Signature> ? Signature : never;\n\ndeclare const __Signature__: unique symbol;\n\n/**\n * @public\n *\n * If your table plugin is a class, you may extend from BasePlugin, which provides\n * small utility methods and properties for getting the metadata for your plugin\n * for the table and each column\n *\n * One instance of a plugin exists per table\n */\nexport abstract class BasePlugin<Signature = unknown>\n implements Plugin<Signature>\n{\n constructor(protected table: Table) {}\n\n /**\n * @private (secret)\n *\n * Because classes are kind of like interfaces,\n * we need \"something\" to help TS know what a Resource is.\n *\n * This isn't a real API, but does help with type inference\n * with the SignatureFrom utility above\n */\n declare [__Signature__]: Signature;\n\n /**\n * Helper for specifying plugins on `headlessTable` with the plugin-level options\n */\n static with<T extends BasePlugin<any>>(\n this: Constructor<T>,\n configFn: () => OptionsFor<SignatureFrom<T>>,\n ): [Constructor<T>, () => OptionsFor<SignatureFrom<T>>] {\n return [this, configFn];\n }\n\n /**\n * Helper for specifying column-level configurations for a plugin on `headlessTable`'s\n * columns option\n */\n static forColumn<T extends BasePlugin<any>>(\n this: Constructor<T>,\n configFn: () => ColumnOptionsFor<SignatureFrom<T>>,\n ): [Constructor<T>, () => ColumnOptionsFor<SignatureFrom<T>>] {\n return [this, configFn];\n }\n\n declare meta?: {\n column?: Constructor<ColumnMetaFor<Signature>>;\n table?: Constructor<TableMetaFor<Signature>>;\n row?: Constructor<RowMetaFor<Signature>>;\n };\n\n abstract name: string;\n static features?: string[];\n static requires?: string[];\n}\n\n/**\n * @public\n *\n * returns boolean if the passed table has an instance of the configured passed plugin class.\n * This can be used to help guard against accessing public-specific APIs if those plugins\n * are not configured for a particular table instance\n */\nexport function hasPlugin<P extends BasePlugin<any>, Data = unknown>(\n table: Table<Data>,\n klass: Class<P>,\n) {\n return Boolean(table.pluginOf(klass));\n}\n\nexport const preferences = {\n /**\n * @public\n *\n * returns an object for getting and setting preferences data\n * based on the column (scoped to key)\n *\n * Only the provided plugin will have access to these preferences\n * (though, if other plugins can guess how the underlying plugin access\n * works, they can access this data, too. No security guaranteed)\n */\n forColumn<P extends BasePlugin<any>, Data = unknown>(\n column: Column<Data>,\n klass: Class<P>,\n ) {\n return {\n /**\n * delete an entry on the underlying `Map` used for this column-plugin pair\n */\n delete(key: string) {\n const prefs = column.table.preferences;\n const pluginPrefs = prefs.storage.getPlugin(klass.name);\n if (!pluginPrefs) return prefs.persist();\n const columnPrefs = pluginPrefs.getColumn(column.key);\n if (!columnPrefs) return prefs.persist();\n\n columnPrefs.delete(key);\n\n return prefs.persist();\n },\n /**\n * get an entry on the underlying `Map` used for this column-plugin pair\n */\n get(key: string) {\n const prefs = column.table.preferences;\n const pluginPrefs = prefs.storage.getPlugin(klass.name);\n if (!pluginPrefs) return undefined;\n const columnPrefs = pluginPrefs.getColumn(column.key);\n if (!columnPrefs) return undefined;\n return columnPrefs.get(key);\n },\n /**\n * set an entry on the underlying `Map` used for this column-plugin pair\n */\n set(key: string, value: unknown) {\n const prefs = column.table.preferences;\n const existing = prefs.storage.forPlugin(klass.name);\n const columnPrefs = existing.forColumn(column.key);\n\n columnPrefs.set(key, value);\n\n prefs.persist();\n },\n };\n },\n\n /**\n * @public\n *\n * returns an object for bulk updating preferences data\n * for all columns (scoped to key and table)\n */\n forAllColumns<P extends BasePlugin<any>, Data = unknown>(\n table: Table<Data>,\n klass: Class<P>,\n ) {\n return {\n /**\n * delete an entry on every column in the underlying column `Map` for this table-plugin pair\n */\n delete(key: string) {\n const tablePrefs = table.preferences;\n\n for (const column of table.columns) {\n const prefs = column.table.preferences;\n const pluginPrefs = prefs.storage.getPlugin(klass.name);\n if (!pluginPrefs) continue;\n const columnPrefs = pluginPrefs.getColumn(column.key);\n if (!columnPrefs) continue;\n\n columnPrefs.delete(key);\n }\n\n return tablePrefs.persist();\n },\n };\n },\n\n /**\n * @public\n *\n * returns an object for getting and setting preferences data\n * based on the table (scoped to the key: \"table\")\n *\n * Only the provided plugin will have access to these preferences\n * (though, if other plugins can guess how the underlying plugin access\n * works, they can access this data, too. No security guaranteed)\n */\n forTable<P extends BasePlugin<any>, Data = unknown>(\n table: Table<Data>,\n klass: Class<P>,\n ) {\n return {\n /**\n * delete an entry on the underlying `Map` used for this table-plugin pair\n */\n delete(key: string) {\n const prefs = table.preferences;\n const pluginPrefs = prefs.storage.getPlugin(klass.name);\n if (!pluginPrefs) return prefs.persist();\n\n pluginPrefs.table.delete(key);\n\n return prefs.persist();\n },\n /**\n * get an entry on the underlying `Map` used for this table-plugin pair\n */\n get(key: string) {\n const prefs = table.preferences;\n const pluginPrefs = prefs.storage.getPlugin(klass.name);\n if (!pluginPrefs) return undefined;\n return pluginPrefs.table.get(key);\n },\n /**\n * set an entry on the underlying `Map` used for this table-plugin pair\n */\n set(key: string, value: unknown) {\n const prefs = table.preferences;\n const existing = prefs.storage.forPlugin(klass.name);\n\n existing.table.set(key, value);\n\n return prefs.persist();\n },\n };\n },\n};\n\n/**\n * if a `requester` is not provided,\n * Get the columns for the table, considering any and all plugins that could modify columns.\n *\n * If you are an end-consumer of @universal-ember/table, this is the function to use.\n * If you are a plugin-author, you'll want to pass your plugin class as the second parameter.\n *\n * For a given plugin, `requester`, determine what columns should be returned.\n * Since multiple plugins could be used in a table, there is an implicit hierarchy of\n * column modifications that can occur from each of those plugins.\n *\n * If a plugin defines other plugins as either *requirements* or *optional requirements*,\n * and that upstream plugin defines a `columns` property, then those columns will be returned here.\n *\n * This works recursively up the plugin tree up until a plugin has no requirements, and then\n * all columns from the table are returned.\n */\nfunction columnsFor<DataType = any>(\n table: Table<DataType>,\n requester?: Plugin<any>,\n): Column<DataType>[] {\n assert(\n `First argument passed to columns.for must be an instance of Table`,\n table[TABLE_KEY],\n );\n\n const visibility = findPlugin(table.plugins, 'columnVisibility');\n const reordering = findPlugin(table.plugins, 'columnOrder');\n const sizing = findPlugin(table.plugins, 'columnResizing');\n\n // TODO: actually resolve the graph, rather than use the hardcoded feature names\n // atm, this only \"happens\" to work based on expectations of\n // of the currently implemented plugins' capabilities and implied hierarchy.\n\n if (requester) {\n assert(\n `[${requester.name}] requested columns from the table, but the plugin, ${requester.name}, ` +\n `is not used in this table`,\n table.plugins.some(\n (plugin) => plugin instanceof (requester as Class<Plugin>),\n ),\n );\n\n if (sizing && sizing.constructor === requester) {\n return table.columns.values();\n }\n\n if (visibility && visibility.constructor === requester) {\n return table.columns.values();\n }\n\n if (reordering && reordering.constructor === requester) {\n if (visibility) {\n assert(\n `<#${visibility.name}> defined a 'columns' property, but did not return valid data.`,\n visibility.columns && Array.isArray(visibility.columns),\n );\n\n return visibility.columns;\n }\n\n return table.columns.values();\n }\n\n if (reordering) {\n assert(\n `<#${reordering.name}> defined a 'columns' property, but did not return valid data.`,\n reordering.columns && Array.isArray(reordering.columns),\n );\n\n return reordering.columns;\n }\n\n if (visibility) {\n assert(\n `<#${visibility.name}> defined a 'columns' property, but did not return valid data.`,\n visibility.columns && Array.isArray(visibility.columns),\n );\n\n return visibility.columns;\n }\n\n if (sizing) {\n assert(\n `<#${sizing.name}> defined a 'columns' property, but did not return valid data.`,\n sizing.columns && Array.isArray(sizing.columns),\n );\n\n return sizing.columns;\n }\n\n return table.columns.values();\n }\n\n /**\n * This flow is the inverse of when we have a requester\n */\n\n if (reordering) {\n assert(\n `<#${reordering.name}> defined a 'columns' property, but did not return valid data.`,\n reordering.columns && Array.isArray(reordering.columns),\n );\n\n return reordering.columns;\n }\n\n if (visibility) {\n assert(\n `<#${visibility.name}> defined a 'columns' property, but did not return valid data.`,\n visibility.columns && Array.isArray(visibility.columns),\n );\n\n return visibility.columns;\n }\n\n if (sizing) {\n assert(\n `<#${sizing.name}> defined a 'columns' property, but did not return valid data.`,\n sizing.columns && Array.isArray(sizing.columns),\n );\n\n return sizing.columns;\n }\n\n return table.columns.values();\n}\n\nexport const columns = {\n for: columnsFor,\n\n /**\n * for a given current or reference column, return the column that\n * is immediately next, or to the right of that column.\n *\n * If a plugin class is provided, the hierarchy of column list modifications\n * will be respected.\n */\n next: <Data = unknown>(\n current: Column<Data>,\n requester?: Plugin<any>,\n ): Column<Data> | undefined => {\n const columns = requester\n ? columnsFor(current.table, requester)\n : columnsFor(current.table);\n\n const referenceIndex = columns.indexOf(current);\n\n assert(\n `index of reference column must be >= 0. column likely not a part of the table`,\n referenceIndex >= 0,\n );\n\n /**\n * There can be nothing after the last column\n */\n if (referenceIndex >= columns.length - 1) {\n return undefined;\n }\n\n return columns[referenceIndex + 1];\n },\n\n /**\n * for a given current or reference column, return the column that\n * is immediately previous, or to the left of that column.\n *\n * If a plugin class is provided, the hierarchy of column list modifications\n * will be respected.\n */\n previous: <Data = unknown>(\n current: Column<Data>,\n requester?: Plugin<any>,\n ): Column<Data> | undefined => {\n const columns = requester\n ? columnsFor(current.table, requester)\n : columnsFor(current.table);\n const referenceIndex = columns.indexOf(current);\n\n assert(\n `index of reference column must be >= 0. column likely not a part of the table`,\n referenceIndex >= 0,\n );\n\n /**\n * There can be nothing before the first column\n */\n if (referenceIndex === 0) {\n return undefined;\n }\n\n return columns[referenceIndex - 1];\n },\n /**\n * for a given current or reference column, return the columns that\n * should appear before, or to the left of that column.\n *\n * if a plugin class is provided, the hierarchy of column list modifications\n * will be respected.\n */\n before: <Data = unknown>(\n current: Column<Data>,\n requester?: Plugin<any>,\n ): Column<Data>[] => {\n const columns = requester\n ? columnsFor(current.table, requester)\n : columnsFor(current.table);\n\n const referenceIndex = columns.indexOf(current);\n\n return columns.slice(0, referenceIndex);\n },\n /**\n * for a given current or reference column, return the columns that\n * should appear after, or to the right of that column.\n *\n * if a plugin class is provided, the hierarchy of column list modifications\n * will be respected.\n */\n after: <Data = unknown>(\n current: Column<Data>,\n requester?: Plugin<any>,\n ): Column<Data>[] => {\n const columns = requester\n ? columnsFor(current.table, requester)\n : columnsFor(current.table);\n\n const referenceIndex = columns.indexOf(current);\n\n return columns.slice(referenceIndex + 1);\n },\n};\n\nexport const meta = {\n /**\n * @public\n *\n * For a given column and plugin, return the meta / state bucket for the\n * plugin<->column instance pair.\n *\n * Note that this requires the column instance to exist on the table.\n */\n forColumn<P extends BasePlugin<any>, Data = unknown>(\n column: Column<Data>,\n klass: Class<P>,\n ): ColumnMetaFor<SignatureFrom<P>> {\n const columnMeta = column.table[COLUMN_META_KEY];\n\n return getPluginInstance(columnMeta, column, klass, () => {\n const plugin = column.table.pluginOf(klass);\n\n assert(\n `[${klass.name}] cannot get plugin instance of unregistered plugin class`,\n plugin,\n );\n assert(\n `<#${plugin.name}> plugin does not have meta specified`,\n plugin.meta,\n );\n assert(\n `<#${plugin.name}> plugin does not specify column meta`,\n plugin.meta.column,\n );\n\n return new plugin.meta.column(column);\n });\n },\n\n /**\n * @public\n *\n * For a given row and plugin, return the meta / state bucket for the\n * plugin<->row instance pair.\n *\n * Note that this requires the row instance to exist on the table.\n */\n forRow<P extends BasePlugin<any>, Data = unknown>(\n row: Row<Data>,\n klass: Class<P>,\n ): RowMetaFor<SignatureFrom<P>> {\n const rowMeta = row.table[ROW_META_KEY];\n\n return getPluginInstance(rowMeta, row, klass, () => {\n const plugin = row.table.pluginOf(klass);\n\n assert(\n `[${klass.name}] cannot get plugin instance of unregistered plugin class`,\n plugin,\n );\n assert(\n `<#${plugin.name}> plugin does not have meta specified`,\n plugin.meta,\n );\n assert(\n `<#${plugin.name}> plugin does not specify row meta`,\n plugin.meta.row,\n );\n\n return new plugin.meta.row(row);\n });\n },\n\n /**\n * @public\n *\n * For a given table and plugin, return the meta / state bucket for the\n * plugin<->table instance pair.\n */\n forTable<P extends BasePlugin<any>, Data = unknown>(\n table: Table<Data>,\n klass: Class<P>,\n ): TableMetaFor<SignatureFrom<P>> {\n const tableMeta = table[TABLE_META_KEY];\n\n return getPluginInstance(tableMeta, klass, () => {\n const plugin = table.pluginOf(klass);\n\n assert(\n `[${klass.name}] cannot get plugin instance of unregistered plugin class`,\n plugin,\n );\n assert(\n `<#${plugin.name}> plugin does not have meta specified`,\n plugin.meta,\n );\n assert(\n `<#${plugin.name}> plugin does not specify table meta`,\n plugin.meta.table,\n );\n assert(\n `<#${plugin.name}> plugin already exists for the table. ` +\n `A plugin may only be instantiated once per table.`,\n ![...tableMeta.keys()].includes(klass),\n );\n\n return new plugin.meta.table(table);\n });\n },\n\n /**\n * Instead of finding meta based on column or table instances,\n * you can search for meta based on feature strings, such as `columnWidth`\n */\n withFeature: {\n /**\n * @public\n *\n * for a given column and feature name, return the \"ColumnMeta\" for that feature.\n * This is useful when plugins may depend on one another but may not necessarily care which\n * plugin is providing what behavior.\n *\n * For example, multiple column-focused plugins may care about width or visibility\n */\n forColumn<FeatureName extends string, Data = unknown>(\n column: Column<Data>,\n featureName: FeatureName,\n ): ColumnFeatures[FeatureName] {\n const { plugins } = column.table;\n\n const provider = findPlugin(plugins, featureName);\n\n assert(\n `Could not find plugin with feature: ${featureName}. ` +\n `Available features: ${availableFeatures(plugins)}`,\n provider,\n );\n\n // TS doesn't believe in the constructor property?\n return meta.forColumn(column, (provider as any).constructor);\n },\n\n /**\n * @public\n *\n * for a given table and feature name, return the \"TableMeta\" for that feature.\n * This is useful when plugins may depend on one another but may not necessarily care\n * which plugin is providing that behavior.\n *\n * For example, multiple column-focused plugins may care about width or visibility.\n */\n forTable<FeatureName extends string, Data = unknown>(\n table: Table<Data>,\n featureName: FeatureName,\n ): TableFeatures[FeatureName] {\n const { plugins } = table;\n\n const provider = findPlugin(plugins, featureName);\n\n assert(\n `Could not find plugin with feature: ${featureName}. ` +\n `Available features: ${availableFeatures(plugins)}`,\n provider,\n );\n\n // TS doesn't believe in the constructor property?\n return meta.forTable(table, (provider as any).constructor);\n },\n },\n};\n\nfunction findPlugin(plugins: Plugin[], featureName: string) {\n const provider = plugins.find((plugin) => {\n /*\n * have to cast in order to get static properties, but we may not have a base plugin\n * so we must rely on nullish coalesting to protect from throwing exceptions\n *\n * (Plugin || BasePlugin).features)\n */\n const features =\n plugin.features || (plugin.constructor as typeof BasePlugin).features;\n\n return features?.includes(featureName);\n });\n\n return provider;\n}\n\nfunction availableFeatures(plugins: Plugin[]): string {\n const allFeatures = plugins\n .map((plugin) => {\n /*\n * have to cast in order to get static properties, but we may not have a base plugin\n * so we must rely on nullish coalesting to protect from throwing exceptions\n *\n * (Plugin || BasePlugin).features)\n */\n const features =\n plugin.features || (plugin.constructor as typeof BasePlugin).features;\n\n return features;\n })\n .flat()\n .filter(Boolean);\n\n return allFeatures.length > 0 ? allFeatures.join(', ') : '[none]';\n}\n\nexport const options = {\n /**\n * @public\n *\n * For a given table and plugin, return the options, if any were given from the user\n * during construction of the table.\n */\n forTable<P extends BasePlugin<any>, Data = unknown>(\n table: Table<Data>,\n klass: Class<P>,\n ): Partial<OptionsFor<SignatureFrom<P>>> {\n const normalized = normalizePluginsConfig(table?.config?.plugins);\n const tuple = normalized?.find((option) => option[0] === klass);\n const t = tuple as [Class<P>, () => OptionsFor<SignatureFrom<P>>];\n\n // Plugin not provided, likely\n if (!t) return {};\n\n const fn = t[1];\n\n return fn() ?? {};\n },\n\n forColumn<P extends BasePlugin<any>, Data = unknown>(\n column: Column<Data>,\n klass: Class<P>,\n ): Partial<ColumnOptionsFor<SignatureFrom<P>>> {\n const tuple = column.config.pluginOptions?.find(\n (option) => option[0] === klass,\n );\n const t = tuple as [unknown, () => ColumnOptionsFor<SignatureFrom<P>>];\n\n const fn = t?.[1];\n\n if (!fn) return {};\n\n return fn() ?? {};\n },\n};\n\ntype FactoryMap<Instance> = Map<Class<Instance>, Instance>;\n\n/**\n * @private\n */\nfunction getPluginInstance<Instance>(\n map: Map<Class<Instance>, Instance>,\n mapKey: Class<Instance>,\n factory: () => Instance,\n): Instance;\nfunction getPluginInstance<RootKey extends Column<any> | Row<any>, Instance>(\n map: WeakMap<Column | Row, Map<Class<Instance>, Instance>>,\n rootKey: RootKey,\n mapKey: Class<Instance>,\n factory: () => Instance,\n): Instance;\nfunction getPluginInstance<RootKey extends Column<any> | Row<any>, Instance>(\n ...args:\n | [FactoryMap<Instance>, Class<Instance>, () => Instance]\n | [\n WeakMap<Column | Row, FactoryMap<Instance>>,\n RootKey,\n Class<Instance>,\n () => Instance,\n ]\n): Instance {\n let map: WeakMap<Column | Row, FactoryMap<Instance>> | FactoryMap<Instance>;\n let mapKey: Class<Instance>;\n let rootKey: RootKey | undefined;\n let factory: () => Instance;\n\n if (args.length === 3) {\n map = args[0];\n mapKey = args[1];\n factory = args[2];\n } else if (args.length === 4) {\n map = args[0];\n rootKey = args[1];\n mapKey = args[2];\n factory = args[3];\n } else {\n throw new Error(\n // TS says args is of type \"never\", but TS can't protect against general misuse\n // (esp without TS)\n `Incorrect arity passed to getPluginInstance. Expected 3 or 4, received ${\n (args as any).length\n }`,\n );\n }\n\n let bucket: FactoryMap<Instance> | undefined;\n\n if (map instanceof WeakMap) {\n assert(`rootKey is missing`, rootKey);\n\n bucket = map.get(rootKey);\n\n if (!bucket) {\n bucket = new Map();\n\n map.set(rootKey, bucket);\n }\n } else {\n bucket = map;\n }\n\n let instance = bucket.get(mapKey);\n\n if (instance) {\n return instance;\n }\n\n instance = factory();\n\n bucket.set(mapKey, instance);\n\n return instance;\n}\n"],"names":["BasePlugin","constructor","table","with","configFn","forColumn","_defineProperty","hasPlugin","klass","Boolean","pluginOf","preferences","column","delete","key","prefs","pluginPrefs","storage","getPlugin","name","persist","columnPrefs","getColumn","get","undefined","set","value","existing","forPlugin","forAllColumns","tablePrefs","columns","forTable","columnsFor","requester","assert","TABLE_KEY","visibility","findPlugin","plugins","reordering","sizing","some","plugin","values","Array","isArray","for","next","current","referenceIndex","indexOf","length","previous","before","slice","after","meta","columnMeta","COLUMN_META_KEY","getPluginInstance","forRow","row","rowMeta","ROW_META_KEY","tableMeta","TABLE_META_KEY","keys","includes","withFeature","featureName","provider","availableFeatures","find","features","allFeatures","map","flat","filter","join","options","normalized","normalizePluginsConfig","config","tuple","option","t","fn","pluginOptions","args","mapKey","rootKey","factory","Error","bucket","WeakMap","Map","instance"],"mappings":";;;;;AA0BA;AACA;AACA;AACA;AACA;AACA;;AAgBA;AACA;AACA;AACA;AACA;AACA;;AAgBA;AACA;AACA;AACA;;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAeA,UAAU,CAEhC;EACEC,WAAWA,CAAWC,KAAY,EAAE;IAAA,IAAdA,CAAAA,KAAY,GAAZA,KAAY;AAAG;;AAErC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGE;AACF;AACA;EACE,OAAOC,IAAIA,CAETC,QAA4C,EACU;AACtD,IAAA,OAAO,CAAC,IAAI,EAAEA,QAAQ,CAAC;AACzB;;AAEA;AACF;AACA;AACA;EACE,OAAOC,SAASA,CAEdD,QAAkD,EACU;AAC5D,IAAA,OAAO,CAAC,IAAI,EAAEA,QAAQ,CAAC;AACzB;AAWF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AANAE,eAAA,CAhDsBN,UAAU,EAAA,UAAA,EAAA,MAAA,CAAA;AAAAM,eAAA,CAAVN,UAAU,EAAA,UAAA,EAAA,MAAA,CAAA;AAuDzB,SAASO,SAASA,CACvBL,KAAkB,EAClBM,KAAe,EACf;EACA,OAAOC,OAAO,CAACP,KAAK,CAACQ,QAAQ,CAACF,KAAK,CAAC,CAAC;AACvC;AAEO,MAAMG,WAAW,GAAG;AACzB;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACEN,EAAAA,SAASA,CACPO,MAAoB,EACpBJ,KAAe,EACf;IACA,OAAO;AACL;AACN;AACA;MACMK,MAAMA,CAACC,GAAW,EAAE;AAClB,QAAA,MAAMC,KAAK,GAAGH,MAAM,CAACV,KAAK,CAACS,WAAW;QACtC,MAAMK,WAAW,GAAGD,KAAK,CAACE,OAAO,CAACC,SAAS,CAACV,KAAK,CAACW,IAAI,CAAC;QACvD,IAAI,CAACH,WAAW,EAAE,OAAOD,KAAK,CAACK,OAAO,EAAE;QACxC,MAAMC,WAAW,GAAGL,WAAW,CAACM,SAAS,CAACV,MAAM,CAACE,GAAG,CAAC;QACrD,IAAI,CAACO,WAAW,EAAE,OAAON,KAAK,CAACK,OAAO,EAAE;AAExCC,QAAAA,WAAW,CAACR,MAAM,CAACC,GAAG,CAAC;AAEvB,QAAA,OAAOC,KAAK,CAACK,OAAO,EAAE;OACvB;AACD;AACN;AACA;MACMG,GAAGA,CAACT,GAAW,EAAE;AACf,QAAA,MAAMC,KAAK,GAAGH,MAAM,CAACV,KAAK,CAACS,WAAW;QACtC,MAAMK,WAAW,GAAGD,KAAK,CAACE,OAAO,CAACC,SAAS,CAACV,KAAK,CAACW,IAAI,CAAC;AACvD,QAAA,IAAI,CAACH,WAAW,EAAE,OAAOQ,SAAS;QAClC,MAAMH,WAAW,GAAGL,WAAW,CAACM,SAAS,CAACV,MAAM,CAACE,GAAG,CAAC;AACrD,QAAA,IAAI,CAACO,WAAW,EAAE,OAAOG,SAAS;AAClC,QAAA,OAAOH,WAAW,CAACE,GAAG,CAACT,GAAG,CAAC;OAC5B;AACD;AACN;AACA;AACMW,MAAAA,GAAGA,CAACX,GAAW,EAAEY,KAAc,EAAE;AAC/B,QAAA,MAAMX,KAAK,GAAGH,MAAM,CAACV,KAAK,CAACS,WAAW;QACtC,MAAMgB,QAAQ,GAAGZ,KAAK,CAACE,OAAO,CAACW,SAAS,CAACpB,KAAK,CAACW,IAAI,CAAC;QACpD,MAAME,WAAW,GAAGM,QAAQ,CAACtB,SAAS,CAACO,MAAM,CAACE,GAAG,CAAC;AAElDO,QAAAA,WAAW,CAACI,GAAG,CAACX,GAAG,EAAEY,KAAK,CAAC;QAE3BX,KAAK,CAACK,OAAO,EAAE;AACjB;KACD;GACF;AAED;AACF;AACA;AACA;AACA;AACA;AACES,EAAAA,aAAaA,CACX3B,KAAkB,EAClBM,KAAe,EACf;IACA,OAAO;AACL;AACN;AACA;MACMK,MAAMA,CAACC,GAAW,EAAE;AAClB,QAAA,MAAMgB,UAAU,GAAG5B,KAAK,CAACS,WAAW;AAEpC,QAAA,KAAK,MAAMC,MAAM,IAAIV,KAAK,CAAC6B,OAAO,EAAE;AAClC,UAAA,MAAMhB,KAAK,GAAGH,MAAM,CAACV,KAAK,CAACS,WAAW;UACtC,MAAMK,WAAW,GAAGD,KAAK,CAACE,OAAO,CAACC,SAAS,CAACV,KAAK,CAACW,IAAI,CAAC;UACvD,IAAI,CAACH,WAAW,EAAE;UAClB,MAAMK,WAAW,GAAGL,WAAW,CAACM,SAAS,CAACV,MAAM,CAACE,GAAG,CAAC;UACrD,IAAI,CAACO,WAAW,EAAE;AAElBA,UAAAA,WAAW,CAACR,MAAM,CAACC,GAAG,CAAC;AACzB;AAEA,QAAA,OAAOgB,UAAU,CAACV,OAAO,EAAE;AAC7B;KACD;GACF;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACEY,EAAAA,QAAQA,CACN9B,KAAkB,EAClBM,KAAe,EACf;IACA,OAAO;AACL;AACN;AACA;MACMK,MAAMA,CAACC,GAAW,EAAE;AAClB,QAAA,MAAMC,KAAK,GAAGb,KAAK,CAACS,WAAW;QAC/B,MAAMK,WAAW,GAAGD,KAAK,CAACE,OAAO,CAACC,SAAS,CAACV,KAAK,CAACW,IAAI,CAAC;QACvD,IAAI,CAACH,WAAW,EAAE,OAAOD,KAAK,CAACK,OAAO,EAAE;AAExCJ,QAAAA,WAAW,CAACd,KAAK,CAACW,MAAM,CAACC,GAAG,CAAC;AAE7B,QAAA,OAAOC,KAAK,CAACK,OAAO,EAAE;OACvB;AACD;AACN;AACA;MACMG,GAAGA,CAACT,GAAW,EAAE;AACf,QAAA,MAAMC,KAAK,GAAGb,KAAK,CAACS,WAAW;QAC/B,MAAMK,WAAW,GAAGD,KAAK,CAACE,OAAO,CAACC,SAAS,CAACV,KAAK,CAACW,IAAI,CAAC;AACvD,QAAA,IAAI,CAACH,WAAW,EAAE,OAAOQ,SAAS;AAClC,QAAA,OAAOR,WAAW,CAACd,KAAK,CAACqB,GAAG,CAACT,GAAG,CAAC;OAClC;AACD;AACN;AACA;AACMW,MAAAA,GAAGA,CAACX,GAAW,EAAEY,KAAc,EAAE;AAC/B,QAAA,MAAMX,KAAK,GAAGb,KAAK,CAACS,WAAW;QAC/B,MAAMgB,QAAQ,GAAGZ,KAAK,CAACE,OAAO,CAACW,SAAS,CAACpB,KAAK,CAACW,IAAI,CAAC;QAEpDQ,QAAQ,CAACzB,KAAK,CAACuB,GAAG,CAACX,GAAG,EAAEY,KAAK,CAAC;AAE9B,QAAA,OAAOX,KAAK,CAACK,OAAO,EAAE;AACxB;KACD;AACH;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASa,UAAUA,CACjB/B,KAAsB,EACtBgC,SAAuB,EACH;AACpBC,EAAAA,MAAM,CACJ,CAAmE,iEAAA,CAAA,EACnEjC,KAAK,CAACkC,SAAS,CACjB,CAAC;EAED,MAAMC,UAAU,GAAGC,UAAU,CAACpC,KAAK,CAACqC,OAAO,EAAE,kBAAkB,CAAC;EAChE,MAAMC,UAAU,GAAGF,UAAU,CAACpC,KAAK,CAACqC,OAAO,EAAE,aAAa,CAAC;EAC3D,MAAME,MAAM,GAAGH,UAAU,CAACpC,KAAK,CAACqC,OAAO,EAAE,gBAAgB,CAAC;;AAE1D;AACA;AACA;;AAEA,EAAA,IAAIL,SAAS,EAAE;IACbC,MAAM,CACJ,CAAID,CAAAA,EAAAA,SAAS,CAACf,IAAI,uDAAuDe,SAAS,CAACf,IAAI,CAAA,EAAA,CAAI,GACzF,CAAA,yBAAA,CAA2B,EAC7BjB,KAAK,CAACqC,OAAO,CAACG,IAAI,CACfC,MAAM,IAAKA,MAAM,YAAaT,SACjC,CACF,CAAC;AAED,IAAA,IAAIO,MAAM,IAAIA,MAAM,CAACxC,WAAW,KAAKiC,SAAS,EAAE;AAC9C,MAAA,OAAOhC,KAAK,CAAC6B,OAAO,CAACa,MAAM,EAAE;AAC/B;AAEA,IAAA,IAAIP,UAAU,IAAIA,UAAU,CAACpC,WAAW,KAAKiC,SAAS,EAAE;AACtD,MAAA,OAAOhC,KAAK,CAAC6B,OAAO,CAACa,MAAM,EAAE;AAC/B;AAEA,IAAA,IAAIJ,UAAU,IAAIA,UAAU,CAACvC,WAAW,KAAKiC,SAAS,EAAE;AACtD,MAAA,IAAIG,UAAU,EAAE;AACdF,QAAAA,MAAM,CACJ,CAAKE,EAAAA,EAAAA,UAAU,CAAClB,IAAI,CAAA,8DAAA,CAAgE,EACpFkB,UAAU,CAACN,OAAO,IAAIc,KAAK,CAACC,OAAO,CAACT,UAAU,CAACN,OAAO,CACxD,CAAC;QAED,OAAOM,UAAU,CAACN,OAAO;AAC3B;AAEA,MAAA,OAAO7B,KAAK,CAAC6B,OAAO,CAACa,MAAM,EAAE;AAC/B;AAEA,IAAA,IAAIJ,UAAU,EAAE;AACdL,MAAAA,MAAM,CACJ,CAAKK,EAAAA,EAAAA,UAAU,CAACrB,IAAI,CAAA,8DAAA,CAAgE,EACpFqB,UAAU,CAACT,OAAO,IAAIc,KAAK,CAACC,OAAO,CAACN,UAAU,CAACT,OAAO,CACxD,CAAC;MAED,OAAOS,UAAU,CAACT,OAAO;AAC3B;AAEA,IAAA,IAAIM,UAAU,EAAE;AACdF,MAAAA,MAAM,CACJ,CAAKE,EAAAA,EAAAA,UAAU,CAAClB,IAAI,CAAA,8DAAA,CAAgE,EACpFkB,UAAU,CAACN,OAAO,IAAIc,KAAK,CAACC,OAAO,CAACT,UAAU,CAACN,OAAO,CACxD,CAAC;MAED,OAAOM,UAAU,CAACN,OAAO;AAC3B;AAEA,IAAA,IAAIU,MAAM,EAAE;AACVN,MAAAA,MAAM,CACJ,CAAKM,EAAAA,EAAAA,MAAM,CAACtB,IAAI,CAAA,8DAAA,CAAgE,EAChFsB,MAAM,CAACV,OAAO,IAAIc,KAAK,CAACC,OAAO,CAACL,MAAM,CAACV,OAAO,CAChD,CAAC;MAED,OAAOU,MAAM,CAACV,OAAO;AACvB;AAEA,IAAA,OAAO7B,KAAK,CAAC6B,OAAO,CAACa,MAAM,EAAE;AAC/B;;AAEA;AACF;AACA;;AAEE,EAAA,IAAIJ,UAAU,EAAE;AACdL,IAAAA,MAAM,CACJ,CAAKK,EAAAA,EAAAA,UAAU,CAACrB,IAAI,CAAA,8DAAA,CAAgE,EACpFqB,UAAU,CAACT,OAAO,IAAIc,KAAK,CAACC,OAAO,CAACN,UAAU,CAACT,OAAO,CACxD,CAAC;IAED,OAAOS,UAAU,CAACT,OAAO;AAC3B;AAEA,EAAA,IAAIM,UAAU,EAAE;AACdF,IAAAA,MAAM,CACJ,CAAKE,EAAAA,EAAAA,UAAU,CAAClB,IAAI,CAAA,8DAAA,CAAgE,EACpFkB,UAAU,CAACN,OAAO,IAAIc,KAAK,CAACC,OAAO,CAACT,UAAU,CAACN,OAAO,CACxD,CAAC;IAED,OAAOM,UAAU,CAACN,OAAO;AAC3B;AAEA,EAAA,IAAIU,MAAM,EAAE;AACVN,IAAAA,MAAM,CACJ,CAAKM,EAAAA,EAAAA,MAAM,CAACtB,IAAI,CAAA,8DAAA,CAAgE,EAChFsB,MAAM,CAACV,OAAO,IAAIc,KAAK,CAACC,OAAO,CAACL,MAAM,CAACV,OAAO,CAChD,CAAC;IAED,OAAOU,MAAM,CAACV,OAAO;AACvB;AAEA,EAAA,OAAO7B,KAAK,CAAC6B,OAAO,CAACa,MAAM,EAAE;AAC/B;AAEO,MAAMb,OAAO,GAAG;AACrBgB,EAAAA,GAAG,EAAEd,UAAU;AAEf;AACF;AACA;AACA;AACA;AACA;AACA;AACEe,EAAAA,IAAI,EAAEA,CACJC,OAAqB,EACrBf,SAAuB,KACM;AAC7B,IAAA,MAAMH,OAAO,GAAGG,SAAS,GACrBD,UAAU,CAACgB,OAAO,CAAC/C,KAAK,EAAEgC,SAAS,CAAC,GACpCD,UAAU,CAACgB,OAAO,CAAC/C,KAAK,CAAC;AAE7B,IAAA,MAAMgD,cAAc,GAAGnB,OAAO,CAACoB,OAAO,CAACF,OAAO,CAAC;AAE/Cd,IAAAA,MAAM,CACJ,CAA+E,6EAAA,CAAA,EAC/Ee,cAAc,IAAI,CACpB,CAAC;;AAED;AACJ;AACA;AACI,IAAA,IAAIA,cAAc,IAAInB,OAAO,CAACqB,MAAM,GAAG,CAAC,EAAE;AACxC,MAAA,OAAO5B,SAAS;AAClB;AAEA,IAAA,OAAOO,OAAO,CAACmB,cAAc,GAAG,CAAC,CAAC;GACnC;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACEG,EAAAA,QAAQ,EAAEA,CACRJ,OAAqB,EACrBf,SAAuB,KACM;AAC7B,IAAA,MAAMH,OAAO,GAAGG,SAAS,GACrBD,UAAU,CAACgB,OAAO,CAAC/C,KAAK,EAAEgC,SAAS,CAAC,GACpCD,UAAU,CAACgB,OAAO,CAAC/C,KAAK,CAAC;AAC7B,IAAA,MAAMgD,cAAc,GAAGnB,OAAO,CAACoB,OAAO,CAACF,OAAO,CAAC;AAE/Cd,IAAAA,MAAM,CACJ,CAA+E,6EAAA,CAAA,EAC/Ee,cAAc,IAAI,CACpB,CAAC;;AAED;AACJ;AACA;IACI,IAAIA,cAAc,KAAK,CAAC,EAAE;AACxB,MAAA,OAAO1B,SAAS;AAClB;AAEA,IAAA,OAAOO,OAAO,CAACmB,cAAc,GAAG,CAAC,CAAC;GACnC;AACD;AACF;AACA;AACA;AACA;AACA;AACA;AACEI,EAAAA,MAAM,EAAEA,CACNL,OAAqB,EACrBf,SAAuB,KACJ;AACnB,IAAA,MAAMH,OAAO,GAAGG,SAAS,GACrBD,UAAU,CAACgB,OAAO,CAAC/C,KAAK,EAAEgC,SAAS,CAAC,GACpCD,UAAU,CAACgB,OAAO,CAAC/C,KAAK,CAAC;AAE7B,IAAA,MAAMgD,cAAc,GAAGnB,OAAO,CAACoB,OAAO,CAACF,OAAO,CAAC;AAE/C,IAAA,OAAOlB,OAAO,CAACwB,KAAK,CAAC,CAAC,EAAEL,cAAc,CAAC;GACxC;AACD;AACF;AACA;AACA;AACA;AACA;AACA;AACEM,EAAAA,KAAK,EAAEA,CACLP,OAAqB,EACrBf,SAAuB,KACJ;AACnB,IAAA,MAAMH,OAAO,GAAGG,SAAS,GACrBD,UAAU,CAACgB,OAAO,CAAC/C,KAAK,EAAEgC,SAAS,CAAC,GACpCD,UAAU,CAACgB,OAAO,CAAC/C,KAAK,CAAC;AAE7B,IAAA,MAAMgD,cAAc,GAAGnB,OAAO,CAACoB,OAAO,CAACF,OAAO,CAAC;AAE/C,IAAA,OAAOlB,OAAO,CAACwB,KAAK,CAACL,cAAc,GAAG,CAAC,CAAC;AAC1C;AACF;AAEO,MAAMO,IAAI,GAAG;AAClB;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACEpD,EAAAA,SAASA,CACPO,MAAoB,EACpBJ,KAAe,EACkB;AACjC,IAAA,MAAMkD,UAAU,GAAG9C,MAAM,CAACV,KAAK,CAACyD,eAAe,CAAC;IAEhD,OAAOC,iBAAiB,CAACF,UAAU,EAAE9C,MAAM,EAAEJ,KAAK,EAAE,MAAM;MACxD,MAAMmC,MAAM,GAAG/B,MAAM,CAACV,KAAK,CAACQ,QAAQ,CAACF,KAAK,CAAC;MAE3C2B,MAAM,CACJ,IAAI3B,KAAK,CAACW,IAAI,CAA2D,yDAAA,CAAA,EACzEwB,MACF,CAAC;MACDR,MAAM,CACJ,CAAKQ,EAAAA,EAAAA,MAAM,CAACxB,IAAI,uCAAuC,EACvDwB,MAAM,CAACc,IACT,CAAC;AACDtB,MAAAA,MAAM,CACJ,CAAA,EAAA,EAAKQ,MAAM,CAACxB,IAAI,CAAA,qCAAA,CAAuC,EACvDwB,MAAM,CAACc,IAAI,CAAC7C,MACd,CAAC;MAED,OAAO,IAAI+B,MAAM,CAACc,IAAI,CAAC7C,MAAM,CAACA,MAAM,CAAC;AACvC,KAAC,CAAC;GACH;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACEiD,EAAAA,MAAMA,CACJC,GAAc,EACdtD,KAAe,EACe;AAC9B,IAAA,MAAMuD,OAAO,GAAGD,GAAG,CAAC5D,KAAK,CAAC8D,YAAY,CAAC;IAEvC,OAAOJ,iBAAiB,CAACG,OAAO,EAAED,GAAG,EAAEtD,KAAK,EAAE,MAAM;MAClD,MAAMmC,MAAM,GAAGmB,GAAG,CAAC5D,KAAK,CAACQ,QAAQ,CAACF,KAAK,CAAC;MAExC2B,MAAM,CACJ,IAAI3B,KAAK,CAACW,IAAI,CAA2D,yDAAA,CAAA,EACzEwB,MACF,CAAC;MACDR,MAAM,CACJ,CAAKQ,EAAAA,EAAAA,MAAM,CAACxB,IAAI,uCAAuC,EACvDwB,MAAM,CAACc,IACT,CAAC;AACDtB,MAAAA,MAAM,CACJ,CAAA,EAAA,EAAKQ,MAAM,CAACxB,IAAI,CAAA,kCAAA,CAAoC,EACpDwB,MAAM,CAACc,IAAI,CAACK,GACd,CAAC;MAED,OAAO,IAAInB,MAAM,CAACc,IAAI,CAACK,GAAG,CAACA,GAAG,CAAC;AACjC,KAAC,CAAC;GACH;AAED;AACF;AACA;AACA;AACA;AACA;AACE9B,EAAAA,QAAQA,CACN9B,KAAkB,EAClBM,KAAe,EACiB;AAChC,IAAA,MAAMyD,SAAS,GAAG/D,KAAK,CAACgE,cAAc,CAAC;AAEvC,IAAA,OAAON,iBAAiB,CAACK,SAAS,EAAEzD,KAAK,EAAE,MAAM;AAC/C,MAAA,MAAMmC,MAAM,GAAGzC,KAAK,CAACQ,QAAQ,CAACF,KAAK,CAAC;MAEpC2B,MAAM,CACJ,IAAI3B,KAAK,CAACW,IAAI,CAA2D,yDAAA,CAAA,EACzEwB,MACF,CAAC;MACDR,MAAM,CACJ,CAAKQ,EAAAA,EAAAA,MAAM,CAACxB,IAAI,uCAAuC,EACvDwB,MAAM,CAACc,IACT,CAAC;AACDtB,MAAAA,MAAM,CACJ,CAAA,EAAA,EAAKQ,MAAM,CAACxB,IAAI,CAAA,oCAAA,CAAsC,EACtDwB,MAAM,CAACc,IAAI,CAACvD,KACd,CAAC;MACDiC,MAAM,CACJ,KAAKQ,MAAM,CAACxB,IAAI,CAAyC,uCAAA,CAAA,GACvD,CAAmD,iDAAA,CAAA,EACrD,CAAC,CAAC,GAAG8C,SAAS,CAACE,IAAI,EAAE,CAAC,CAACC,QAAQ,CAAC5D,KAAK,CACvC,CAAC;MAED,OAAO,IAAImC,MAAM,CAACc,IAAI,CAACvD,KAAK,CAACA,KAAK,CAAC;AACrC,KAAC,CAAC;GACH;AAED;AACF;AACA;AACA;AACEmE,EAAAA,WAAW,EAAE;AACX;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIhE,IAAAA,SAASA,CACPO,MAAoB,EACpB0D,WAAwB,EACK;MAC7B,MAAM;AAAE/B,QAAAA;OAAS,GAAG3B,MAAM,CAACV,KAAK;AAEhC,MAAA,MAAMqE,QAAQ,GAAGjC,UAAU,CAACC,OAAO,EAAE+B,WAAW,CAAC;AAEjDnC,MAAAA,MAAM,CACJ,CAAA,oCAAA,EAAuCmC,WAAW,CAAA,EAAA,CAAI,GACpD,CAAA,oBAAA,EAAuBE,iBAAiB,CAACjC,OAAO,CAAC,CAAE,CAAA,EACrDgC,QACF,CAAC;;AAED;MACA,OAAOd,IAAI,CAACpD,SAAS,CAACO,MAAM,EAAG2D,QAAQ,CAAStE,WAAW,CAAC;KAC7D;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI+B,IAAAA,QAAQA,CACN9B,KAAkB,EAClBoE,WAAwB,EACI;MAC5B,MAAM;AAAE/B,QAAAA;AAAQ,OAAC,GAAGrC,KAAK;AAEzB,MAAA,MAAMqE,QAAQ,GAAGjC,UAAU,CAACC,OAAO,EAAE+B,WAAW,CAAC;AAEjDnC,MAAAA,MAAM,CACJ,CAAA,oCAAA,EAAuCmC,WAAW,CAAA,EAAA,CAAI,GACpD,CAAA,oBAAA,EAAuBE,iBAAiB,CAACjC,OAAO,CAAC,CAAE,CAAA,EACrDgC,QACF,CAAC;;AAED;MACA,OAAOd,IAAI,CAACzB,QAAQ,CAAC9B,KAAK,EAAGqE,QAAQ,CAAStE,WAAW,CAAC;AAC5D;AACF;AACF;AAEA,SAASqC,UAAUA,CAACC,OAAiB,EAAE+B,WAAmB,EAAE;AAC1D,EAAA,MAAMC,QAAQ,GAAGhC,OAAO,CAACkC,IAAI,CAAE9B,MAAM,IAAK;AACxC;AACJ;AACA;AACA;AACA;AACA;IACI,MAAM+B,QAAQ,GACZ/B,MAAM,CAAC+B,QAAQ,IAAK/B,MAAM,CAAC1C,WAAW,CAAuByE,QAAQ;AAEvE,IAAA,OAAOA,QAAQ,EAAEN,QAAQ,CAACE,WAAW,CAAC;AACxC,GAAC,CAAC;AAEF,EAAA,OAAOC,QAAQ;AACjB;AAEA,SAASC,iBAAiBA,CAACjC,OAAiB,EAAU;AACpD,EAAA,MAAMoC,WAAW,GAAGpC,OAAO,CACxBqC,GAAG,CAAEjC,MAAM,IAAK;AACf;AACN;AACA;AACA;AACA;AACA;IACM,MAAM+B,QAAQ,GACZ/B,MAAM,CAAC+B,QAAQ,IAAK/B,MAAM,CAAC1C,WAAW,CAAuByE,QAAQ;AAEvE,IAAA,OAAOA,QAAQ;GAChB,CAAC,CACDG,IAAI,EAAE,CACNC,MAAM,CAACrE,OAAO,CAAC;AAElB,EAAA,OAAOkE,WAAW,CAACvB,MAAM,GAAG,CAAC,GAAGuB,WAAW,CAACI,IAAI,CAAC,IAAI,CAAC,GAAG,QAAQ;AACnE;AAEO,MAAMC,OAAO,GAAG;AACrB;AACF;AACA;AACA;AACA;AACA;AACEhD,EAAAA,QAAQA,CACN9B,KAAkB,EAClBM,KAAe,EACwB;IACvC,MAAMyE,UAAU,GAAGC,sBAAsB,CAAChF,KAAK,EAAEiF,MAAM,EAAE5C,OAAO,CAAC;AACjE,IAAA,MAAM6C,KAAK,GAAGH,UAAU,EAAER,IAAI,CAAEY,MAAM,IAAKA,MAAM,CAAC,CAAC,CAAC,KAAK7E,KAAK,CAAC;IAC/D,MAAM8E,CAAC,GAAGF,KAAuD;;AAEjE;AACA,IAAA,IAAI,CAACE,CAAC,EAAE,OAAO,EAAE;AAEjB,IAAA,MAAMC,EAAE,GAAGD,CAAC,CAAC,CAAC,CAAC;AAEf,IAAA,OAAOC,EAAE,EAAE,IAAI,EAAE;GAClB;AAEDlF,EAAAA,SAASA,CACPO,MAAoB,EACpBJ,KAAe,EAC8B;AAC7C,IAAA,MAAM4E,KAAK,GAAGxE,MAAM,CAACuE,MAAM,CAACK,aAAa,EAAEf,IAAI,CAC5CY,MAAM,IAAKA,MAAM,CAAC,CAAC,CAAC,KAAK7E,KAC5B,CAAC;IACD,MAAM8E,CAAC,GAAGF,KAA4D;AAEtE,IAAA,MAAMG,EAAE,GAAGD,CAAC,GAAG,CAAC,CAAC;AAEjB,IAAA,IAAI,CAACC,EAAE,EAAE,OAAO,EAAE;AAElB,IAAA,OAAOA,EAAE,EAAE,IAAI,EAAE;AACnB;AACF;;AAIA;AACA;AACA;;AAYA,SAAS3B,iBAAiBA,CACxB,GAAG6B,IAOE,EACK;AACV,EAAA,IAAIb,GAAuE;AAC3E,EAAA,IAAIc,MAAuB;AAC3B,EAAA,IAAIC,OAA4B;AAChC,EAAA,IAAIC,OAAuB;AAE3B,EAAA,IAAIH,IAAI,CAACrC,MAAM,KAAK,CAAC,EAAE;AACrBwB,IAAAA,GAAG,GAAGa,IAAI,CAAC,CAAC,CAAC;AACbC,IAAAA,MAAM,GAAGD,IAAI,CAAC,CAAC,CAAC;AAChBG,IAAAA,OAAO,GAAGH,IAAI,CAAC,CAAC,CAAC;AACnB,GAAC,MAAM,IAAIA,IAAI,CAACrC,MAAM,KAAK,CAAC,EAAE;AAC5BwB,IAAAA,GAAG,GAAGa,IAAI,CAAC,CAAC,CAAC;AACbE,IAAAA,OAAO,GAAGF,IAAI,CAAC,CAAC,CAAC;AACjBC,IAAAA,MAAM,GAAGD,IAAI,CAAC,CAAC,CAAC;AAChBG,IAAAA,OAAO,GAAGH,IAAI,CAAC,CAAC,CAAC;AACnB,GAAC,MAAM;AACL,IAAA,MAAM,IAAII,KAAK;AACb;AACA;AACA,IAAA,CAAA,uEAAA,EACGJ,IAAI,CAASrC,MAAM,CAAA,CAExB,CAAC;AACH;AAEA,EAAA,IAAI0C,MAAwC;EAE5C,IAAIlB,GAAG,YAAYmB,OAAO,EAAE;AAC1B5D,IAAAA,MAAM,CAAC,CAAA,kBAAA,CAAoB,EAAEwD,OAAO,CAAC;AAErCG,IAAAA,MAAM,GAAGlB,GAAG,CAACrD,GAAG,CAACoE,OAAO,CAAC;IAEzB,IAAI,CAACG,MAAM,EAAE;AACXA,MAAAA,MAAM,GAAG,IAAIE,GAAG,EAAE;AAElBpB,MAAAA,GAAG,CAACnD,GAAG,CAACkE,OAAO,EAAEG,MAAM,CAAC;AAC1B;AACF,GAAC,MAAM;AACLA,IAAAA,MAAM,GAAGlB,GAAG;AACd;AAEA,EAAA,IAAIqB,QAAQ,GAAGH,MAAM,CAACvE,GAAG,CAACmE,MAAM,CAAC;AAEjC,EAAA,IAAIO,QAAQ,EAAE;AACZ,IAAA,OAAOA,QAAQ;AACjB;EAEAA,QAAQ,GAAGL,OAAO,EAAE;AAEpBE,EAAAA,MAAM,CAACrE,GAAG,CAACiE,MAAM,EAAEO,QAAQ,CAAC;AAE5B,EAAA,OAAOA,QAAQ;AACjB;;;;"}
|
|
@@ -156,7 +156,7 @@ let TableMeta = (_class = class TableMeta {
|
|
|
156
156
|
columns: () => this.allColumns,
|
|
157
157
|
visibleColumns: () => this.visibleColumns,
|
|
158
158
|
save: this.save,
|
|
159
|
-
|
|
159
|
+
read: () => this.read()
|
|
160
160
|
});
|
|
161
161
|
}
|
|
162
162
|
}), _applyDecoratedDescriptor(_class.prototype, "getPosition", [action], Object.getOwnPropertyDescriptor(_class.prototype, "getPosition"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "setPosition", [action], Object.getOwnPropertyDescriptor(_class.prototype, "setPosition"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "reset", [action], Object.getOwnPropertyDescriptor(_class.prototype, "reset"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "save", [action], Object.getOwnPropertyDescriptor(_class.prototype, "save"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "read", [action], Object.getOwnPropertyDescriptor(_class.prototype, "read"), _class.prototype), _class);
|
|
@@ -182,9 +182,12 @@ let ColumnOrder = (_class2 = class ColumnOrder {
|
|
|
182
182
|
this.args.save?.(map);
|
|
183
183
|
});
|
|
184
184
|
this.args = args;
|
|
185
|
+
// Initialize map from existingOrder for backwards compatibility
|
|
186
|
+
// The reactive `read` callback will override this in orderedMap
|
|
185
187
|
let _allColumns = this.args.columns();
|
|
186
|
-
|
|
187
|
-
|
|
188
|
+
const initialOrder = args.existingOrder ?? args.read?.();
|
|
189
|
+
if (initialOrder) {
|
|
190
|
+
let newOrder = new Map(initialOrder.entries());
|
|
188
191
|
addMissingColumnsToMap(_allColumns, newOrder);
|
|
189
192
|
removeExtraColumnsFromMap(_allColumns, newOrder);
|
|
190
193
|
this.map = new TrackedMap(newOrder);
|
|
@@ -337,10 +340,14 @@ let ColumnOrder = (_class2 = class ColumnOrder {
|
|
|
337
340
|
}
|
|
338
341
|
|
|
339
342
|
/**
|
|
340
|
-
* The same as this.map, but with all the columns' information
|
|
343
|
+
* The same as this.map, but with all the columns' information.
|
|
344
|
+
* Prefers preferences (via read callback) when available for reactivity.
|
|
341
345
|
*/
|
|
342
346
|
get orderedMap() {
|
|
343
|
-
|
|
347
|
+
// Prefer preferences for reactivity, fall back to local map
|
|
348
|
+
const savedOrder = this.args.read?.();
|
|
349
|
+
const baseMap = savedOrder ?? this.map;
|
|
350
|
+
return orderOf(this.args.columns(), baseMap);
|
|
344
351
|
}
|
|
345
352
|
get orderedColumns() {
|
|
346
353
|
const allColumns = this.args.columns();
|
|
@@ -348,7 +355,8 @@ let ColumnOrder = (_class2 = class ColumnOrder {
|
|
|
348
355
|
keyMap[column.key] = column;
|
|
349
356
|
return keyMap;
|
|
350
357
|
}, {});
|
|
351
|
-
|
|
358
|
+
// Use orderedMap which is reactive to preferences
|
|
359
|
+
const mergedOrder = this.orderedMap;
|
|
352
360
|
const result = Array.from({
|
|
353
361
|
length: allColumns.length
|
|
354
362
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sources":["../../../src/plugins/column-reordering/plugin.ts"],"sourcesContent":["import { cached, tracked } from '@glimmer/tracking';\nimport { assert } from '@ember/debug';\nimport { action } from '@ember/object';\n\nimport { TrackedMap } from 'tracked-built-ins';\n\nimport { preferences } from '../../plugins/index.ts';\n\nimport { BasePlugin, columns, meta } from '../-private/base.ts';\n\nimport type { PluginPreferences } from '../../plugins/index.ts';\nimport type { Column, Table } from '../../index.ts';\n\ninterface ColumnReorderingPreferences extends PluginPreferences {\n table: {\n order?: Record<string, number>;\n };\n}\n\ndeclare module '@universal-ember/table/plugins' {\n interface Registry {\n ColumnReordering?: ColumnReorderingPreferences;\n 'column-reordering'?: ColumnReorderingPreferences;\n }\n}\n\nexport interface Signature {\n Meta: {\n Column: ColumnMeta;\n Table: TableMeta;\n };\n}\n\nexport class ColumnReordering extends BasePlugin<Signature> {\n name = 'column-reordering';\n static features = ['columnOrder'];\n\n meta = {\n column: ColumnMeta,\n table: TableMeta,\n } as const;\n\n reset() {\n const tableMeta = meta.forTable(this.table, ColumnReordering);\n\n tableMeta.reset();\n }\n\n get columns() {\n return meta.forTable(this.table, ColumnReordering).columns;\n }\n}\n\nexport class ColumnMeta<DataType = unknown> {\n constructor(private column: Column<DataType>) {}\n\n get #tableMeta(): TableMeta<DataType> {\n return meta.forTable(\n this.column.table,\n ColumnReordering,\n ) as TableMeta<DataType>;\n }\n\n get position() {\n return this.#tableMeta.getPosition(this.column);\n }\n\n // Swaps this column with the column in the new position\n set position(value: number) {\n this.#tableMeta.setPosition(this.column, value);\n }\n\n get canMoveLeft() {\n return this.#tableMeta.getPosition(this.column) !== 0;\n }\n\n get canMoveRight() {\n return (\n this.#tableMeta.getPosition(this.column) !==\n this.#tableMeta.columns.length - 1\n );\n }\n\n get cannotMoveLeft() {\n return !this.canMoveLeft;\n }\n\n get cannotMoveRight() {\n return !this.canMoveRight;\n }\n\n /**\n * Move the column one spot to the left\n */\n moveLeft = () => {\n this.#tableMeta.columnOrder.moveLeft(this.column.key);\n };\n\n /**\n * Move the column one spot to the right\n */\n moveRight = () => {\n this.#tableMeta.columnOrder.moveRight(this.column.key);\n };\n}\n\nexport class TableMeta<DataType = unknown> {\n constructor(private table: Table<DataType>) {}\n\n /**\n * @private\n *\n * We want to maintain the instance of this ColumnOrder class because\n * we allow the consumer of the table to swap out columns at any time.\n * When they do this, we want to maintain the order of the table, best we can.\n * This is also why the order of the columns is maintained via column key\n */\n @tracked\n columnOrder = new ColumnOrder<DataType>({\n columns: () => this.allColumns,\n visibleColumns: () => this.visibleColumns,\n save: this.save,\n existingOrder: this.read(),\n });\n\n /**\n * Get the curret order/position of a column\n */\n @action\n getPosition(column: Column<DataType>) {\n return this.columnOrder.get(column.key);\n }\n\n /**\n * Swap the column with the column at `newPosition`\n */\n @action\n setPosition(column: Column<DataType>, newPosition: number) {\n return this.columnOrder.swapWith(column.key, newPosition);\n }\n\n /**\n * Using a `ColumnOrder` instance, set the order of all columns\n */\n setOrder = (order: ColumnOrder<DataType>) => {\n this.columnOrder.setAll(order.map);\n };\n\n /**\n * Revert to default config, delete preferences,\n * and clear the columnOrder\n */\n @action\n reset() {\n preferences.forTable(this.table, ColumnReordering).delete('order');\n this.columnOrder = new ColumnOrder<DataType>({\n columns: () => this.allColumns,\n visibleColumns: () => this.visibleColumns,\n save: this.save,\n });\n }\n\n /**\n * @private\n */\n @action\n save(map: Map<string, number>) {\n const order: Record<string, number> = {};\n\n for (const [key, position] of map.entries()) {\n order[key] = position;\n }\n\n preferences.forTable(this.table, ColumnReordering).set('order', order);\n }\n\n /**\n * @private\n */\n @action\n private read() {\n const order = preferences\n .forTable(this.table, ColumnReordering)\n .get('order');\n\n if (!order) return;\n\n return new Map<string, number>(Object.entries(order));\n }\n\n get columns() {\n return this.columnOrder.orderedColumns.filter(\n (column) => this.visibleColumns[column.key],\n );\n }\n\n /**\n * @private\n * This isn't our data to expose, but it is useful to alias\n */\n private get visibleColumns() {\n return columns\n .for(this.table, ColumnReordering)\n .reduce<Record<string, boolean>>((acc, column) => {\n acc[column.key] = true;\n\n return acc;\n }, {});\n }\n\n private get allColumns() {\n return this.table.columns.values();\n }\n}\n\n/**\n * @private\n * Used for keeping track of and updating column order\n */\nexport class ColumnOrder<DataType = unknown> {\n /**\n * This map will be empty until we re-order something.\n */\n map = new TrackedMap<string, number>();\n\n constructor(\n private args: {\n /**\n * All columns to track in the ordering.\n *\n * Backwards compatible usage (without ColumnVisibility):\n * - Pass only the columns you want to display\n * - All columns are treated as visible\n *\n * New usage (with ColumnVisibility):\n * - Pass ALL columns (including hidden ones)\n * - Provide `visibleColumns` to indicate which are visible\n * - Hidden columns maintain their position when toggled\n */\n columns: () => Column<DataType>[];\n /**\n * Optional: Record of which columns are currently visible.\n * When provided, moveLeft/moveRight will skip over hidden columns.\n * When omitted, all columns from `columns` are treated as visible (backwards compatible).\n *\n * Example when using ColumnVisibility:\n * ```ts\n * visibleColumns: () => columns.reduce((acc, col) => {\n * acc[col.key] = meta(col).ColumnVisibility?.isVisible !== false;\n * return acc;\n * }, {})\n * ```\n */\n visibleColumns?: () => Record<string, boolean>;\n /**\n * Optional: Callback to persist the column order (e.g., to localStorage).\n */\n save?: (order: Map<string, number>) => void;\n /**\n * Optional: Previously saved column order to restore.\n */\n existingOrder?: Map<string, number>;\n },\n ) {\n let allColumns = this.args.columns();\n\n if (args.existingOrder) {\n let newOrder = new Map(args.existingOrder.entries());\n\n addMissingColumnsToMap(allColumns, newOrder);\n removeExtraColumnsFromMap(allColumns, newOrder);\n this.map = new TrackedMap(newOrder);\n } else {\n this.map = new TrackedMap(allColumns.map((column, i) => [column.key, i]));\n }\n }\n\n /**\n * @private\n * Helper to get visible columns, defaulting to all columns if not specified\n */\n private getVisibleColumns(): Record<string, boolean> {\n if (this.args.visibleColumns) {\n return this.args.visibleColumns();\n }\n\n // Default: all columns are visible\n return this.args.columns().reduce(\n (acc, col) => {\n acc[col.key] = true;\n return acc;\n },\n {} as Record<string, boolean>,\n );\n }\n\n /**\n * To account for columnVisibilty, we need to:\n * - get the list of visible columns\n * - get the column order (which preserves the order of hidden columns)\n * - skip over non-visible columns when determining the previous \"index\"\n * - set the position to whatever that is.\n */\n @action\n moveLeft(key: string) {\n const orderedColumns = this.orderedColumns;\n if (this.map.get(key) === 0) {\n return;\n }\n\n let found = false;\n\n for (const column of orderedColumns.reverse()) {\n if (found) {\n // Shift moved column left\n let currentPosition = this.map.get(key);\n\n assert('current key must exist in map', currentPosition !== undefined);\n this.map.set(key, currentPosition - 1);\n\n // Shift displayed column right\n let displayedColumnPosition = this.map.get(column.key);\n\n assert(\n 'displaced key must exist in map',\n displayedColumnPosition !== undefined,\n );\n this.map.set(column.key, displayedColumnPosition + 1);\n\n if (this.getVisibleColumns()[column.key]) {\n break;\n }\n }\n\n if (column.key === key) {\n found = true;\n }\n }\n\n this.args.save?.(this.map);\n }\n\n setAll = (map: Map<string, number>) => {\n let allColumns = this.args.columns();\n\n addMissingColumnsToMap(allColumns, map);\n removeExtraColumnsFromMap(allColumns, map);\n\n this.map.clear();\n\n for (const [key, value] of map.entries()) {\n this.map.set(key, value);\n }\n\n this.args.save?.(map);\n };\n\n /**\n * To account for columnVisibilty, we need to:\n * - get the list of visible columns\n * - get the column order (which preserves the order of hidden columns)\n * - skip over non-visible columns when determining the next \"index\"\n * - set the position to whatever that is.\n */\n @action\n moveRight(key: string) {\n const orderedColumns = this.orderedColumns;\n let found = false;\n\n for (const column of orderedColumns) {\n if (found) {\n // Shift moved column right\n let currentPosition = this.map.get(key);\n\n assert('current key must exist in map', currentPosition !== undefined);\n this.map.set(key, currentPosition + 1);\n\n // Shift displaced column left\n let displayedColumnPosition = this.map.get(column.key);\n\n assert(\n 'displaced key must exist in map',\n displayedColumnPosition !== undefined,\n );\n this.map.set(column.key, displayedColumnPosition - 1);\n\n if (this.getVisibleColumns()[column.key]) {\n break;\n }\n }\n\n if (column.key === key) {\n found = true;\n }\n }\n\n this.args.save?.(this.map);\n }\n\n /**\n * Performs a swap of the column's position with the column at position\n */\n @action\n swapWith(key: string, position: number) {\n const validPositions = [...this.orderedMap.values()];\n\n /**\n * Position to swap to must exist\n */\n if (!validPositions.includes(position)) {\n return;\n }\n\n /**\n * Where did this column `key` come from? we can find out\n * by reading orderedMap\n */\n const currentPosition = this.orderedMap.get(key);\n\n assert(\n `Pre-existing position for ${key} could not be found. Does the column exist? ` +\n `The current positions are: ` +\n [...this.orderedMap.entries()]\n .map((entry) => entry.join(' => '))\n .join(', ') +\n ` and the visibleColumns are: ` +\n Object.keys(this.getVisibleColumns()).join(', ') +\n ` and current \"map\" (${this.map.size}) is: ` +\n [...this.map.entries()].map((entry) => entry.join(' => ')).join(', '),\n undefined !== currentPosition,\n );\n\n /**\n * No need to change anything if the position is the same\n * This helps reduce @tracked invalidations, which in turn reduces DOM thrashing.\n */\n if (currentPosition === position) {\n return false;\n }\n\n const keyByPosition = new Map<number, string>(\n [...this.orderedMap.entries()].map(\n (entry) => entry.reverse() as [number, string],\n ),\n );\n\n for (const [existingPosition, key] of keyByPosition.entries()) {\n if (existingPosition === position) {\n /**\n * We swap positions because the positions are not incremental\n * meaning we can have gaps, intentionally, due to hidden columns\n */\n this.map.set(key, currentPosition);\n\n break;\n }\n }\n\n /**\n * Finally, set the position for the requested column\n */\n this.map.set(key, position);\n\n /**\n * Now that we've set the value for one column,\n * we need to make sure that all columns have a recorded position.\n */\n for (const [key, position] of this.orderedMap.entries()) {\n if (this.map.has(key)) continue;\n\n this.map.set(key, position);\n }\n\n this.args.save?.(this.map);\n }\n\n @action\n get(key: string) {\n const result = this.orderedMap.get(key);\n\n assert(\n `No position found for ${key}. Is the column used within this table?`,\n /* 0 is falsey, but it's a valid value for position */\n undefined !== result,\n );\n\n return result;\n }\n\n /**\n * The same as this.map, but with all the columns' information\n */\n @cached\n get orderedMap(): ReadonlyMap<string, number> {\n return orderOf(this.args.columns(), this.map);\n }\n\n @cached\n get orderedColumns(): Column<DataType>[] {\n const allColumns = this.args.columns();\n const columnsByKey = allColumns.reduce(\n (keyMap, column) => {\n keyMap[column.key] = column;\n return keyMap;\n },\n {} as Record<string, Column<DataType>>,\n );\n const mergedOrder = orderOf(allColumns, this.map);\n\n const result: Column<DataType>[] = Array.from({\n length: allColumns.length,\n });\n\n for (const [key, position] of mergedOrder.entries()) {\n const column = columnsByKey[key];\n\n // Skip columns that no longer exist (they've been removed from the columns array)\n if (!column) {\n continue;\n }\n\n result[position] = column;\n }\n\n // Filter out undefined entries (from removed columns or gaps in positions)\n return result.filter(Boolean);\n }\n}\n\n/**\n * @private\n *\n * Utility for helping determine the percieved order of a set of columns\n * given the original (default) ordering, and then user-configurations.\n *\n * This function adds missing columns but preserves extra columns in the map\n * (they might be hidden, not deleted).\n */\nexport function orderOf(\n columns: { key: string }[],\n currentOrder: Map<string, number>,\n): Map<string, number> {\n // Create a copy to avoid mutating the input\n let workingOrder = new Map(currentOrder);\n\n // Add any missing columns to the end\n addMissingColumnsToMap(columns, workingOrder);\n\n // DON'T remove extra columns - they might be hidden columns, not deleted ones\n // The ColumnOrder constructor handles removal of truly deleted columns\n\n // Ensure positions are consecutive and zero based\n let inOrder = Array.from(workingOrder.entries()).sort(\n ([_keyA, positionA], [_keyB, positionB]) => positionA - positionB,\n );\n\n let orderedColumns = new Map<string, number>();\n\n let position = 0;\n\n for (let [key] of inOrder) {\n orderedColumns.set(key, position++);\n }\n\n return orderedColumns;\n}\n\n/**\n * @private\n *\n * Utility to add any missing columns to the position map. By calling this whenever\n * data is passed in to the system we can simplify the code within the system because\n * we know we are dealing with a full set of positions.\n *\n * @param columns - A list of all columns available to the table\n * @param map - A Map of `key` to position (as a zero based integer)\n */\nfunction addMissingColumnsToMap(\n columns: { key: string }[],\n map: Map<string, number>,\n): void {\n if (map.size < columns.length) {\n let maxAssignedColumn = Math.max(...map.values());\n\n for (let column of columns) {\n if (map.get(column.key) === undefined) {\n map.set(column.key, ++maxAssignedColumn);\n }\n }\n }\n}\n\n/**\n * @private\n *\n * Utility to remove any extra columns from the position map. By calling this whenever\n * data is passed in to the system we can simplify the code within the system because\n * we know we are dealing with a full set of positions.\n *\n * @param columns - A list of all columns available to the table\n * @param map - A Map of `key` to position (as a zero based integer)\n */\nfunction removeExtraColumnsFromMap(\n columns: { key: string }[],\n map: Map<string, number>,\n): void {\n let columnsLookup = columns.reduce(\n function (acc, { key }) {\n acc[key] = true;\n\n return acc;\n },\n {} as Record<string, boolean>,\n );\n\n for (let key of map.keys()) {\n if (!columnsLookup[key]) {\n map.delete(key);\n }\n }\n}\n"],"names":["ColumnReordering","BasePlugin","constructor","args","_defineProperty","column","ColumnMeta","table","TableMeta","reset","tableMeta","meta","forTable","columns","_ColumnMeta_brand","WeakSet","_classPrivateMethodInitSpec","_classPrivateGetter","_get_tableMeta","columnOrder","moveLeft","key","moveRight","position","getPosition","value","setPosition","canMoveLeft","canMoveRight","length","cannotMoveLeft","cannotMoveRight","_this","_class","_initializerDefineProperty","_descriptor","order","setAll","map","get","newPosition","swapWith","preferences","delete","ColumnOrder","allColumns","visibleColumns","save","entries","set","read","Map","Object","orderedColumns","filter","for","reduce","acc","values","_applyDecoratedDescriptor","prototype","tracked","configurable","enumerable","writable","initializer","existingOrder","action","getOwnPropertyDescriptor","_class2","TrackedMap","addMissingColumnsToMap","removeExtraColumnsFromMap","clear","newOrder","i","getVisibleColumns","col","found","reverse","currentPosition","assert","undefined","displayedColumnPosition","validPositions","orderedMap","includes","entry","join","keys","size","keyByPosition","existingPosition","has","result","orderOf","columnsByKey","keyMap","mergedOrder","Array","from","Boolean","cached","currentOrder","workingOrder","inOrder","sort","_keyA","positionA","_keyB","positionB","maxAssignedColumn","Math","max","columnsLookup"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"plugin.js","sources":["../../../src/plugins/column-reordering/plugin.ts"],"sourcesContent":["import { cached, tracked } from '@glimmer/tracking';\nimport { assert } from '@ember/debug';\nimport { action } from '@ember/object';\n\nimport { TrackedMap } from 'tracked-built-ins';\n\nimport { preferences } from '../../plugins/index.ts';\n\nimport { BasePlugin, columns, meta } from '../-private/base.ts';\n\nimport type { PluginPreferences } from '../../plugins/index.ts';\nimport type { Column, Table } from '../../index.ts';\n\ninterface ColumnReorderingPreferences extends PluginPreferences {\n table: {\n order?: Record<string, number>;\n };\n}\n\ndeclare module '@universal-ember/table/plugins' {\n interface Registry {\n ColumnReordering?: ColumnReorderingPreferences;\n 'column-reordering'?: ColumnReorderingPreferences;\n }\n}\n\nexport interface Signature {\n Meta: {\n Column: ColumnMeta;\n Table: TableMeta;\n };\n}\n\nexport class ColumnReordering extends BasePlugin<Signature> {\n name = 'column-reordering';\n static features = ['columnOrder'];\n\n meta = {\n column: ColumnMeta,\n table: TableMeta,\n } as const;\n\n reset() {\n const tableMeta = meta.forTable(this.table, ColumnReordering);\n\n tableMeta.reset();\n }\n\n get columns() {\n return meta.forTable(this.table, ColumnReordering).columns;\n }\n}\n\nexport class ColumnMeta<DataType = unknown> {\n constructor(private column: Column<DataType>) {}\n\n get #tableMeta(): TableMeta<DataType> {\n return meta.forTable(\n this.column.table,\n ColumnReordering,\n ) as TableMeta<DataType>;\n }\n\n get position() {\n return this.#tableMeta.getPosition(this.column);\n }\n\n // Swaps this column with the column in the new position\n set position(value: number) {\n this.#tableMeta.setPosition(this.column, value);\n }\n\n get canMoveLeft() {\n return this.#tableMeta.getPosition(this.column) !== 0;\n }\n\n get canMoveRight() {\n return (\n this.#tableMeta.getPosition(this.column) !==\n this.#tableMeta.columns.length - 1\n );\n }\n\n get cannotMoveLeft() {\n return !this.canMoveLeft;\n }\n\n get cannotMoveRight() {\n return !this.canMoveRight;\n }\n\n /**\n * Move the column one spot to the left\n */\n moveLeft = () => {\n this.#tableMeta.columnOrder.moveLeft(this.column.key);\n };\n\n /**\n * Move the column one spot to the right\n */\n moveRight = () => {\n this.#tableMeta.columnOrder.moveRight(this.column.key);\n };\n}\n\nexport class TableMeta<DataType = unknown> {\n constructor(private table: Table<DataType>) {}\n\n /**\n * @private\n *\n * We want to maintain the instance of this ColumnOrder class because\n * we allow the consumer of the table to swap out columns at any time.\n * When they do this, we want to maintain the order of the table, best we can.\n * This is also why the order of the columns is maintained via column key\n */\n @tracked\n columnOrder = new ColumnOrder<DataType>({\n columns: () => this.allColumns,\n visibleColumns: () => this.visibleColumns,\n save: this.save,\n read: () => this.read(),\n });\n\n /**\n * Get the curret order/position of a column\n */\n @action\n getPosition(column: Column<DataType>) {\n return this.columnOrder.get(column.key);\n }\n\n /**\n * Swap the column with the column at `newPosition`\n */\n @action\n setPosition(column: Column<DataType>, newPosition: number) {\n return this.columnOrder.swapWith(column.key, newPosition);\n }\n\n /**\n * Using a `ColumnOrder` instance, set the order of all columns\n */\n setOrder = (order: ColumnOrder<DataType>) => {\n this.columnOrder.setAll(order.map);\n };\n\n /**\n * Revert to default config, delete preferences,\n * and clear the columnOrder\n */\n @action\n reset() {\n preferences.forTable(this.table, ColumnReordering).delete('order');\n this.columnOrder = new ColumnOrder<DataType>({\n columns: () => this.allColumns,\n visibleColumns: () => this.visibleColumns,\n save: this.save,\n });\n }\n\n /**\n * @private\n */\n @action\n save(map: Map<string, number>) {\n const order: Record<string, number> = {};\n\n for (const [key, position] of map.entries()) {\n order[key] = position;\n }\n\n preferences.forTable(this.table, ColumnReordering).set('order', order);\n }\n\n /**\n * @private\n */\n @action\n private read() {\n const order = preferences\n .forTable(this.table, ColumnReordering)\n .get('order');\n\n if (!order) return;\n\n return new Map<string, number>(Object.entries(order));\n }\n\n get columns() {\n return this.columnOrder.orderedColumns.filter(\n (column) => this.visibleColumns[column.key],\n );\n }\n\n /**\n * @private\n * This isn't our data to expose, but it is useful to alias\n */\n private get visibleColumns() {\n return columns\n .for(this.table, ColumnReordering)\n .reduce<Record<string, boolean>>((acc, column) => {\n acc[column.key] = true;\n\n return acc;\n }, {});\n }\n\n private get allColumns() {\n return this.table.columns.values();\n }\n}\n\n/**\n * @private\n * Used for keeping track of and updating column order\n */\nexport class ColumnOrder<DataType = unknown> {\n /**\n * This map will be empty until we re-order something.\n */\n map = new TrackedMap<string, number>();\n\n constructor(\n private args: {\n /**\n * All columns to track in the ordering.\n *\n * Backwards compatible usage (without ColumnVisibility):\n * - Pass only the columns you want to display\n * - All columns are treated as visible\n *\n * New usage (with ColumnVisibility):\n * - Pass ALL columns (including hidden ones)\n * - Provide `visibleColumns` to indicate which are visible\n * - Hidden columns maintain their position when toggled\n */\n columns: () => Column<DataType>[];\n /**\n * Optional: Record of which columns are currently visible.\n * When provided, moveLeft/moveRight will skip over hidden columns.\n * When omitted, all columns from `columns` are treated as visible (backwards compatible).\n *\n * Example when using ColumnVisibility:\n * ```ts\n * visibleColumns: () => columns.reduce((acc, col) => {\n * acc[col.key] = meta(col).ColumnVisibility?.isVisible !== false;\n * return acc;\n * }, {})\n * ```\n */\n visibleColumns?: () => Record<string, boolean>;\n /**\n * Optional: Callback to persist the column order (e.g., to localStorage).\n */\n save?: (order: Map<string, number>) => void;\n /**\n * Optional: Callback to read the current saved order from preferences.\n * Called reactively - when preferences change, order updates automatically.\n */\n read?: () => Map<string, number> | undefined;\n /**\n * @deprecated Use `read` instead for reactive preferences support.\n * Optional: Previously saved column order to restore.\n */\n existingOrder?: Map<string, number>;\n },\n ) {\n // Initialize map from existingOrder for backwards compatibility\n // The reactive `read` callback will override this in orderedMap\n let allColumns = this.args.columns();\n const initialOrder = args.existingOrder ?? args.read?.();\n\n if (initialOrder) {\n let newOrder = new Map(initialOrder.entries());\n\n addMissingColumnsToMap(allColumns, newOrder);\n removeExtraColumnsFromMap(allColumns, newOrder);\n this.map = new TrackedMap(newOrder);\n } else {\n this.map = new TrackedMap(allColumns.map((column, i) => [column.key, i]));\n }\n }\n\n /**\n * @private\n * Helper to get visible columns, defaulting to all columns if not specified\n */\n private getVisibleColumns(): Record<string, boolean> {\n if (this.args.visibleColumns) {\n return this.args.visibleColumns();\n }\n\n // Default: all columns are visible\n return this.args.columns().reduce(\n (acc, col) => {\n acc[col.key] = true;\n return acc;\n },\n {} as Record<string, boolean>,\n );\n }\n\n /**\n * To account for columnVisibilty, we need to:\n * - get the list of visible columns\n * - get the column order (which preserves the order of hidden columns)\n * - skip over non-visible columns when determining the previous \"index\"\n * - set the position to whatever that is.\n */\n @action\n moveLeft(key: string) {\n const orderedColumns = this.orderedColumns;\n if (this.map.get(key) === 0) {\n return;\n }\n\n let found = false;\n\n for (const column of orderedColumns.reverse()) {\n if (found) {\n // Shift moved column left\n let currentPosition = this.map.get(key);\n\n assert('current key must exist in map', currentPosition !== undefined);\n this.map.set(key, currentPosition - 1);\n\n // Shift displayed column right\n let displayedColumnPosition = this.map.get(column.key);\n\n assert(\n 'displaced key must exist in map',\n displayedColumnPosition !== undefined,\n );\n this.map.set(column.key, displayedColumnPosition + 1);\n\n if (this.getVisibleColumns()[column.key]) {\n break;\n }\n }\n\n if (column.key === key) {\n found = true;\n }\n }\n\n this.args.save?.(this.map);\n }\n\n setAll = (map: Map<string, number>) => {\n let allColumns = this.args.columns();\n\n addMissingColumnsToMap(allColumns, map);\n removeExtraColumnsFromMap(allColumns, map);\n\n this.map.clear();\n\n for (const [key, value] of map.entries()) {\n this.map.set(key, value);\n }\n\n this.args.save?.(map);\n };\n\n /**\n * To account for columnVisibilty, we need to:\n * - get the list of visible columns\n * - get the column order (which preserves the order of hidden columns)\n * - skip over non-visible columns when determining the next \"index\"\n * - set the position to whatever that is.\n */\n @action\n moveRight(key: string) {\n const orderedColumns = this.orderedColumns;\n let found = false;\n\n for (const column of orderedColumns) {\n if (found) {\n // Shift moved column right\n let currentPosition = this.map.get(key);\n\n assert('current key must exist in map', currentPosition !== undefined);\n this.map.set(key, currentPosition + 1);\n\n // Shift displaced column left\n let displayedColumnPosition = this.map.get(column.key);\n\n assert(\n 'displaced key must exist in map',\n displayedColumnPosition !== undefined,\n );\n this.map.set(column.key, displayedColumnPosition - 1);\n\n if (this.getVisibleColumns()[column.key]) {\n break;\n }\n }\n\n if (column.key === key) {\n found = true;\n }\n }\n\n this.args.save?.(this.map);\n }\n\n /**\n * Performs a swap of the column's position with the column at position\n */\n @action\n swapWith(key: string, position: number) {\n const validPositions = [...this.orderedMap.values()];\n\n /**\n * Position to swap to must exist\n */\n if (!validPositions.includes(position)) {\n return;\n }\n\n /**\n * Where did this column `key` come from? we can find out\n * by reading orderedMap\n */\n const currentPosition = this.orderedMap.get(key);\n\n assert(\n `Pre-existing position for ${key} could not be found. Does the column exist? ` +\n `The current positions are: ` +\n [...this.orderedMap.entries()]\n .map((entry) => entry.join(' => '))\n .join(', ') +\n ` and the visibleColumns are: ` +\n Object.keys(this.getVisibleColumns()).join(', ') +\n ` and current \"map\" (${this.map.size}) is: ` +\n [...this.map.entries()].map((entry) => entry.join(' => ')).join(', '),\n undefined !== currentPosition,\n );\n\n /**\n * No need to change anything if the position is the same\n * This helps reduce @tracked invalidations, which in turn reduces DOM thrashing.\n */\n if (currentPosition === position) {\n return false;\n }\n\n const keyByPosition = new Map<number, string>(\n [...this.orderedMap.entries()].map(\n (entry) => entry.reverse() as [number, string],\n ),\n );\n\n for (const [existingPosition, key] of keyByPosition.entries()) {\n if (existingPosition === position) {\n /**\n * We swap positions because the positions are not incremental\n * meaning we can have gaps, intentionally, due to hidden columns\n */\n this.map.set(key, currentPosition);\n\n break;\n }\n }\n\n /**\n * Finally, set the position for the requested column\n */\n this.map.set(key, position);\n\n /**\n * Now that we've set the value for one column,\n * we need to make sure that all columns have a recorded position.\n */\n for (const [key, position] of this.orderedMap.entries()) {\n if (this.map.has(key)) continue;\n\n this.map.set(key, position);\n }\n\n this.args.save?.(this.map);\n }\n\n @action\n get(key: string) {\n const result = this.orderedMap.get(key);\n\n assert(\n `No position found for ${key}. Is the column used within this table?`,\n /* 0 is falsey, but it's a valid value for position */\n undefined !== result,\n );\n\n return result;\n }\n\n /**\n * The same as this.map, but with all the columns' information.\n * Prefers preferences (via read callback) when available for reactivity.\n */\n @cached\n get orderedMap(): ReadonlyMap<string, number> {\n // Prefer preferences for reactivity, fall back to local map\n const savedOrder = this.args.read?.();\n const baseMap = savedOrder ?? this.map;\n return orderOf(this.args.columns(), baseMap);\n }\n\n @cached\n get orderedColumns(): Column<DataType>[] {\n const allColumns = this.args.columns();\n const columnsByKey = allColumns.reduce(\n (keyMap, column) => {\n keyMap[column.key] = column;\n return keyMap;\n },\n {} as Record<string, Column<DataType>>,\n );\n // Use orderedMap which is reactive to preferences\n const mergedOrder = this.orderedMap;\n\n const result: Column<DataType>[] = Array.from({\n length: allColumns.length,\n });\n\n for (const [key, position] of mergedOrder.entries()) {\n const column = columnsByKey[key];\n\n // Skip columns that no longer exist (they've been removed from the columns array)\n if (!column) {\n continue;\n }\n\n result[position] = column;\n }\n\n // Filter out undefined entries (from removed columns or gaps in positions)\n return result.filter(Boolean);\n }\n}\n\n/**\n * @private\n *\n * Utility for helping determine the percieved order of a set of columns\n * given the original (default) ordering, and then user-configurations.\n *\n * This function adds missing columns but preserves extra columns in the map\n * (they might be hidden, not deleted).\n */\nexport function orderOf(\n columns: { key: string }[],\n currentOrder: Map<string, number>,\n): Map<string, number> {\n // Create a copy to avoid mutating the input\n let workingOrder = new Map(currentOrder);\n\n // Add any missing columns to the end\n addMissingColumnsToMap(columns, workingOrder);\n\n // DON'T remove extra columns - they might be hidden columns, not deleted ones\n // The ColumnOrder constructor handles removal of truly deleted columns\n\n // Ensure positions are consecutive and zero based\n let inOrder = Array.from(workingOrder.entries()).sort(\n ([_keyA, positionA], [_keyB, positionB]) => positionA - positionB,\n );\n\n let orderedColumns = new Map<string, number>();\n\n let position = 0;\n\n for (let [key] of inOrder) {\n orderedColumns.set(key, position++);\n }\n\n return orderedColumns;\n}\n\n/**\n * @private\n *\n * Utility to add any missing columns to the position map. By calling this whenever\n * data is passed in to the system we can simplify the code within the system because\n * we know we are dealing with a full set of positions.\n *\n * @param columns - A list of all columns available to the table\n * @param map - A Map of `key` to position (as a zero based integer)\n */\nfunction addMissingColumnsToMap(\n columns: { key: string }[],\n map: Map<string, number>,\n): void {\n if (map.size < columns.length) {\n let maxAssignedColumn = Math.max(...map.values());\n\n for (let column of columns) {\n if (map.get(column.key) === undefined) {\n map.set(column.key, ++maxAssignedColumn);\n }\n }\n }\n}\n\n/**\n * @private\n *\n * Utility to remove any extra columns from the position map. By calling this whenever\n * data is passed in to the system we can simplify the code within the system because\n * we know we are dealing with a full set of positions.\n *\n * @param columns - A list of all columns available to the table\n * @param map - A Map of `key` to position (as a zero based integer)\n */\nfunction removeExtraColumnsFromMap(\n columns: { key: string }[],\n map: Map<string, number>,\n): void {\n let columnsLookup = columns.reduce(\n function (acc, { key }) {\n acc[key] = true;\n\n return acc;\n },\n {} as Record<string, boolean>,\n );\n\n for (let key of map.keys()) {\n if (!columnsLookup[key]) {\n map.delete(key);\n }\n }\n}\n"],"names":["ColumnReordering","BasePlugin","constructor","args","_defineProperty","column","ColumnMeta","table","TableMeta","reset","tableMeta","meta","forTable","columns","_ColumnMeta_brand","WeakSet","_classPrivateMethodInitSpec","_classPrivateGetter","_get_tableMeta","columnOrder","moveLeft","key","moveRight","position","getPosition","value","setPosition","canMoveLeft","canMoveRight","length","cannotMoveLeft","cannotMoveRight","_this","_class","_initializerDefineProperty","_descriptor","order","setAll","map","get","newPosition","swapWith","preferences","delete","ColumnOrder","allColumns","visibleColumns","save","entries","set","read","Map","Object","orderedColumns","filter","for","reduce","acc","values","_applyDecoratedDescriptor","prototype","tracked","configurable","enumerable","writable","initializer","action","getOwnPropertyDescriptor","_class2","TrackedMap","addMissingColumnsToMap","removeExtraColumnsFromMap","clear","initialOrder","existingOrder","newOrder","i","getVisibleColumns","col","found","reverse","currentPosition","assert","undefined","displayedColumnPosition","validPositions","orderedMap","includes","entry","join","keys","size","keyByPosition","existingPosition","has","result","savedOrder","baseMap","orderOf","columnsByKey","keyMap","mergedOrder","Array","from","Boolean","cached","currentOrder","workingOrder","inOrder","sort","_keyA","positionA","_keyB","positionB","maxAssignedColumn","Math","max","columnsLookup"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@universal-ember/table",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.5.0",
|
|
4
4
|
"description": "An implementation of table behaviors for driving any table or table-like UI -- all without a UI (headless)",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ember-addon",
|
|
@@ -116,7 +116,6 @@
|
|
|
116
116
|
"ember-modifier": "^4.2.0",
|
|
117
117
|
"ember-modify-based-class-resource": "^1.1.0",
|
|
118
118
|
"ember-resources": "^7.0.2",
|
|
119
|
-
"ember-tracked-storage-polyfill": "^1.0.0",
|
|
120
119
|
"reactiveweb": "^1.3.0",
|
|
121
120
|
"tracked-built-ins": "^4.0.0"
|
|
122
121
|
},
|
|
@@ -60,7 +60,7 @@ export class TablePreferences {
|
|
|
60
60
|
* The API for reactively interacting with preferences
|
|
61
61
|
*/
|
|
62
62
|
class TrackedPreferences {
|
|
63
|
-
plugins = new
|
|
63
|
+
plugins = new TrackedMap<string, TrackedPluginPrefs>();
|
|
64
64
|
|
|
65
65
|
get isAtDefault(): boolean {
|
|
66
66
|
return [...this.plugins.values()].every(
|
|
@@ -68,6 +68,10 @@ class TrackedPreferences {
|
|
|
68
68
|
);
|
|
69
69
|
}
|
|
70
70
|
|
|
71
|
+
getPlugin(name: string): TrackedPluginPrefs | undefined {
|
|
72
|
+
return this.plugins.get(name);
|
|
73
|
+
}
|
|
74
|
+
|
|
71
75
|
forPlugin(name: string) {
|
|
72
76
|
let existing = this.plugins.get(name);
|
|
73
77
|
|
|
@@ -112,7 +116,7 @@ class TrackedPreferences {
|
|
|
112
116
|
|
|
113
117
|
class TrackedPluginPrefs<PluginName = unknown> {
|
|
114
118
|
table = new TrackedMap<string, unknown>();
|
|
115
|
-
columns = new
|
|
119
|
+
columns = new TrackedMap<string, TrackedMap<string, unknown>>();
|
|
116
120
|
|
|
117
121
|
get isAtDefault(): boolean {
|
|
118
122
|
return (
|
|
@@ -121,6 +125,10 @@ class TrackedPluginPrefs<PluginName = unknown> {
|
|
|
121
125
|
);
|
|
122
126
|
}
|
|
123
127
|
|
|
128
|
+
getColumn = (key: string): TrackedMap<string, unknown> | undefined => {
|
|
129
|
+
return this.columns.get(key);
|
|
130
|
+
};
|
|
131
|
+
|
|
124
132
|
forColumn = (key: string): TrackedMap<string, unknown> => {
|
|
125
133
|
let existing = this.columns.get(key);
|
|
126
134
|
|
|
@@ -167,8 +167,10 @@ export const preferences = {
|
|
|
167
167
|
*/
|
|
168
168
|
delete(key: string) {
|
|
169
169
|
const prefs = column.table.preferences;
|
|
170
|
-
const
|
|
171
|
-
|
|
170
|
+
const pluginPrefs = prefs.storage.getPlugin(klass.name);
|
|
171
|
+
if (!pluginPrefs) return prefs.persist();
|
|
172
|
+
const columnPrefs = pluginPrefs.getColumn(column.key);
|
|
173
|
+
if (!columnPrefs) return prefs.persist();
|
|
172
174
|
|
|
173
175
|
columnPrefs.delete(key);
|
|
174
176
|
|
|
@@ -179,9 +181,10 @@ export const preferences = {
|
|
|
179
181
|
*/
|
|
180
182
|
get(key: string) {
|
|
181
183
|
const prefs = column.table.preferences;
|
|
182
|
-
const
|
|
183
|
-
|
|
184
|
-
|
|
184
|
+
const pluginPrefs = prefs.storage.getPlugin(klass.name);
|
|
185
|
+
if (!pluginPrefs) return undefined;
|
|
186
|
+
const columnPrefs = pluginPrefs.getColumn(column.key);
|
|
187
|
+
if (!columnPrefs) return undefined;
|
|
185
188
|
return columnPrefs.get(key);
|
|
186
189
|
},
|
|
187
190
|
/**
|
|
@@ -218,8 +221,10 @@ export const preferences = {
|
|
|
218
221
|
|
|
219
222
|
for (const column of table.columns) {
|
|
220
223
|
const prefs = column.table.preferences;
|
|
221
|
-
const
|
|
222
|
-
|
|
224
|
+
const pluginPrefs = prefs.storage.getPlugin(klass.name);
|
|
225
|
+
if (!pluginPrefs) continue;
|
|
226
|
+
const columnPrefs = pluginPrefs.getColumn(column.key);
|
|
227
|
+
if (!columnPrefs) continue;
|
|
223
228
|
|
|
224
229
|
columnPrefs.delete(key);
|
|
225
230
|
}
|
|
@@ -249,9 +254,10 @@ export const preferences = {
|
|
|
249
254
|
*/
|
|
250
255
|
delete(key: string) {
|
|
251
256
|
const prefs = table.preferences;
|
|
252
|
-
const
|
|
257
|
+
const pluginPrefs = prefs.storage.getPlugin(klass.name);
|
|
258
|
+
if (!pluginPrefs) return prefs.persist();
|
|
253
259
|
|
|
254
|
-
|
|
260
|
+
pluginPrefs.table.delete(key);
|
|
255
261
|
|
|
256
262
|
return prefs.persist();
|
|
257
263
|
},
|
|
@@ -260,9 +266,9 @@ export const preferences = {
|
|
|
260
266
|
*/
|
|
261
267
|
get(key: string) {
|
|
262
268
|
const prefs = table.preferences;
|
|
263
|
-
const
|
|
264
|
-
|
|
265
|
-
return
|
|
269
|
+
const pluginPrefs = prefs.storage.getPlugin(klass.name);
|
|
270
|
+
if (!pluginPrefs) return undefined;
|
|
271
|
+
return pluginPrefs.table.get(key);
|
|
266
272
|
},
|
|
267
273
|
/**
|
|
268
274
|
* set an entry on the underlying `Map` used for this table-plugin pair
|
|
@@ -120,7 +120,7 @@ export class TableMeta<DataType = unknown> {
|
|
|
120
120
|
columns: () => this.allColumns,
|
|
121
121
|
visibleColumns: () => this.visibleColumns,
|
|
122
122
|
save: this.save,
|
|
123
|
-
|
|
123
|
+
read: () => this.read(),
|
|
124
124
|
});
|
|
125
125
|
|
|
126
126
|
/**
|
|
@@ -257,15 +257,24 @@ export class ColumnOrder<DataType = unknown> {
|
|
|
257
257
|
*/
|
|
258
258
|
save?: (order: Map<string, number>) => void;
|
|
259
259
|
/**
|
|
260
|
+
* Optional: Callback to read the current saved order from preferences.
|
|
261
|
+
* Called reactively - when preferences change, order updates automatically.
|
|
262
|
+
*/
|
|
263
|
+
read?: () => Map<string, number> | undefined;
|
|
264
|
+
/**
|
|
265
|
+
* @deprecated Use `read` instead for reactive preferences support.
|
|
260
266
|
* Optional: Previously saved column order to restore.
|
|
261
267
|
*/
|
|
262
268
|
existingOrder?: Map<string, number>;
|
|
263
269
|
},
|
|
264
270
|
) {
|
|
271
|
+
// Initialize map from existingOrder for backwards compatibility
|
|
272
|
+
// The reactive `read` callback will override this in orderedMap
|
|
265
273
|
let allColumns = this.args.columns();
|
|
274
|
+
const initialOrder = args.existingOrder ?? args.read?.();
|
|
266
275
|
|
|
267
|
-
if (
|
|
268
|
-
let newOrder = new Map(
|
|
276
|
+
if (initialOrder) {
|
|
277
|
+
let newOrder = new Map(initialOrder.entries());
|
|
269
278
|
|
|
270
279
|
addMissingColumnsToMap(allColumns, newOrder);
|
|
271
280
|
removeExtraColumnsFromMap(allColumns, newOrder);
|
|
@@ -488,11 +497,15 @@ export class ColumnOrder<DataType = unknown> {
|
|
|
488
497
|
}
|
|
489
498
|
|
|
490
499
|
/**
|
|
491
|
-
* The same as this.map, but with all the columns' information
|
|
500
|
+
* The same as this.map, but with all the columns' information.
|
|
501
|
+
* Prefers preferences (via read callback) when available for reactivity.
|
|
492
502
|
*/
|
|
493
503
|
@cached
|
|
494
504
|
get orderedMap(): ReadonlyMap<string, number> {
|
|
495
|
-
|
|
505
|
+
// Prefer preferences for reactivity, fall back to local map
|
|
506
|
+
const savedOrder = this.args.read?.();
|
|
507
|
+
const baseMap = savedOrder ?? this.map;
|
|
508
|
+
return orderOf(this.args.columns(), baseMap);
|
|
496
509
|
}
|
|
497
510
|
|
|
498
511
|
@cached
|
|
@@ -505,7 +518,8 @@ export class ColumnOrder<DataType = unknown> {
|
|
|
505
518
|
},
|
|
506
519
|
{} as Record<string, Column<DataType>>,
|
|
507
520
|
);
|
|
508
|
-
|
|
521
|
+
// Use orderedMap which is reactive to preferences
|
|
522
|
+
const mergedOrder = this.orderedMap;
|
|
509
523
|
|
|
510
524
|
const result: Column<DataType>[] = Array.from({
|
|
511
525
|
length: allColumns.length,
|