@genexus/genexus-ide-ui 3.2.4 → 3.2.6

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.
@@ -14,7 +14,7 @@ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (
14
14
  throw new TypeError("Cannot write private member to an object whose class did not declare it");
15
15
  return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
16
16
  };
17
- var _GxIdeKbManagerImport_componentLocale, _GxIdeKbManagerImport_selectedObjectsInFileIds, _GxIdeKbManagerImport_fileInputEl, _GxIdeKbManagerImport_fileInputHiddenEl, _GxIdeKbManagerImport_objectsTreeEl, _GxIdeKbManagerImport_successItemsIds, _GxIdeKbManagerImport_warningItemsIds, _GxIdeKbManagerImport_errorItemsIds, _GxIdeKbManagerImport_categoryItemMap, _GxIdeKbManagerImport_objectCategoryItemMap, _GxIdeKbManagerImport_importedCategoryData, _GxIdeKbManagerImport_cancelImportHandler, _GxIdeKbManagerImport_clearStatusHandler, _GxIdeKbManagerImport_evaluateImport, _GxIdeKbManagerImport_evaluateImportStatusMessage, _GxIdeKbManagerImport_importObjectsHandler, _GxIdeKbManagerImport_loadFileHandler, _GxIdeKbManagerImport_lazyLoadTreeItems, _GxIdeKbManagerImport_objectsTreeCheckedItemsChangedHandler, _GxIdeKbManagerImport_objectsTreeContextMenuHandler, _GxIdeKbManagerImport_objectsTreeSelectedItemsChangedHandler, _GxIdeKbManagerImport_optionsHandler, _GxIdeKbManagerImport_removeFileSelection, _GxIdeKbManagerImport_selectFileInputHandler, _GxIdeKbManagerImport_selectFileInputChangedHandler, _GxIdeKbManagerImport_statusButtonsSelectionChangedHandler, _GxIdeKbManagerImport_toggleSelectionClickHandler, _GxIdeKbManagerImport_updateStatusItemsState;
17
+ var _GxIdeKbManagerImport_componentLocale, _GxIdeKbManagerImport_selectedObjectsInFileIds, _GxIdeKbManagerImport_fileInputEl, _GxIdeKbManagerImport_fileInputHiddenEl, _GxIdeKbManagerImport_objectsTreeEl, _GxIdeKbManagerImport_successItemsIds, _GxIdeKbManagerImport_warningItemsIds, _GxIdeKbManagerImport_errorItemsIds, _GxIdeKbManagerImport_categoryItemMap, _GxIdeKbManagerImport_objectCategoryItemMap, _GxIdeKbManagerImport_importedCategoryData, _GxIdeKbManagerImport_cancelImportHandler, _GxIdeKbManagerImport_clearStatusHandler, _GxIdeKbManagerImport_evaluateImport, _GxIdeKbManagerImport_evaluateImportStatusMessage, _GxIdeKbManagerImport_importObjectsHandler, _GxIdeKbManagerImport_buildImportSelection, _GxIdeKbManagerImport_loadFileHandler, _GxIdeKbManagerImport_lazyLoadTreeItems, _GxIdeKbManagerImport_objectsTreeCheckedItemsChangedHandler, _GxIdeKbManagerImport_objectsTreeContextMenuHandler, _GxIdeKbManagerImport_objectsTreeSelectedItemsChangedHandler, _GxIdeKbManagerImport_optionsHandler, _GxIdeKbManagerImport_removeFileSelection, _GxIdeKbManagerImport_selectFileInputHandler, _GxIdeKbManagerImport_selectFileInputChangedHandler, _GxIdeKbManagerImport_statusButtonsSelectionChangedHandler, _GxIdeKbManagerImport_toggleSelectionClickHandler, _GxIdeKbManagerImport_updateStatusItemsState;
18
18
  import { Host, h } from "@stencil/core";
19
19
  import { getIconPath } from "@genexus/mercury";
20
20
  import { Locale } from "../../common/locale";
@@ -93,41 +93,83 @@ export class GxIdeKbManagerImport {
93
93
  this.statusInfo.success.display;
94
94
  });
95
95
  _GxIdeKbManagerImport_importObjectsHandler.set(this, async () => {
96
- var _a;
97
96
  /* first clear imported objects (this clears errors/warnings/success counts as well)*/
98
97
  __classPrivateFieldGet(this, _GxIdeKbManagerImport_clearStatusHandler, "f").call(this);
99
98
  /* then do the import*/
100
99
  this.importingIsInProcess = true;
101
- /*
102
- Process checked objects manually, considering lazy loading.
103
- Example:
104
- 1. The "Attributes" category is lazy-loaded and marked as checked.
105
- 2. The user runs the import without expanding the node.
106
- 3. No attribute objects appear as checked, since lazy load was not triggered.
107
- 4. Still, all attribute objects must be included, because the category itself is checked.
108
-
109
- This avoids forcing users to expand nodes just to select objects.
110
- Large categories are not expanded by default to improve performance, which is crucial
111
- for very large imports (1000+ objects).
112
- */
113
- const checkedObjectsIds = [];
114
- for (let category of __classPrivateFieldGet(this, _GxIdeKbManagerImport_objectsTreeEl, "f").model) {
115
- if (((_a = category.items) === null || _a === void 0 ? void 0 : _a.length) > 0) {
116
- for (let obj of category.items) {
117
- if (obj.checked)
118
- checkedObjectsIds.push(obj.id);
100
+ const selection = __classPrivateFieldGet(this, _GxIdeKbManagerImport_buildImportSelection, "f").call(this);
101
+ await this.importCallback(selection);
102
+ this.importingIsInProcess = false;
103
+ });
104
+ /*
105
+ Build the structured ImportSelection from the current tree state.
106
+
107
+ Lazy categories may not have their items loaded yet; in that case the
108
+ category's own `checked` flag represents the user's intent for the whole
109
+ group. Large categories are not expanded by default to keep imports of
110
+ 1000+ objects responsive.
111
+
112
+ For each category, the most compact group representation is picked:
113
+ - every item checked → mode: "all"
114
+ - no item checked → group omitted from the partial selection
115
+ - mixed → "include" or "exclude", whichever has fewer ids
116
+ */
117
+ _GxIdeKbManagerImport_buildImportSelection.set(this, () => {
118
+ var _a, _b;
119
+ const groups = [];
120
+ let everyGroupFullySelected = true;
121
+ for (const category of __classPrivateFieldGet(this, _GxIdeKbManagerImport_objectsTreeEl, "f").model) {
122
+ const categoryData = __classPrivateFieldGet(this, _GxIdeKbManagerImport_importedCategoryData, "f").find(cat => cat.id === category.id);
123
+ const totalItems = (_a = categoryData === null || categoryData === void 0 ? void 0 : categoryData.items.length) !== null && _a !== void 0 ? _a : 0;
124
+ const childrenLoaded = !!(category.items && category.items.length > 0);
125
+ if (!childrenLoaded && category.lazy) {
126
+ if (category.checked) {
127
+ groups.push({ groupId: category.id, mode: "all" });
128
+ }
129
+ else {
130
+ everyGroupFullySelected = false;
131
+ }
132
+ continue;
133
+ }
134
+ const checkedIds = [];
135
+ const uncheckedIds = [];
136
+ for (const child of (_b = category.items) !== null && _b !== void 0 ? _b : []) {
137
+ if (child.checked) {
138
+ checkedIds.push(child.id);
119
139
  }
140
+ else {
141
+ uncheckedIds.push(child.id);
142
+ }
143
+ }
144
+ if (uncheckedIds.length === 0 && checkedIds.length === totalItems) {
145
+ groups.push({ groupId: category.id, mode: "all" });
146
+ }
147
+ else if (checkedIds.length === 0) {
148
+ everyGroupFullySelected = false;
120
149
  }
121
- else if (category.lazy && category.checked) {
122
- const categoryData = __classPrivateFieldGet(this, _GxIdeKbManagerImport_importedCategoryData, "f").find(cat => cat.id == category.id);
123
- for (let obj of categoryData.items) {
124
- checkedObjectsIds.push(obj.id);
150
+ else {
151
+ everyGroupFullySelected = false;
152
+ if (checkedIds.length <= uncheckedIds.length) {
153
+ groups.push({
154
+ groupId: category.id,
155
+ mode: "include",
156
+ ids: checkedIds
157
+ });
158
+ }
159
+ else {
160
+ groups.push({
161
+ groupId: category.id,
162
+ mode: "exclude",
163
+ ids: uncheckedIds
164
+ });
125
165
  }
126
166
  }
127
167
  }
128
- this.importCallback(checkedObjectsIds).then(() => {
129
- this.importingIsInProcess = false;
130
- });
168
+ if (everyGroupFullySelected &&
169
+ groups.length === __classPrivateFieldGet(this, _GxIdeKbManagerImport_importedCategoryData, "f").length) {
170
+ return { mode: "all" };
171
+ }
172
+ return { mode: "partial", groups };
131
173
  });
132
174
  _GxIdeKbManagerImport_loadFileHandler.set(this, async (file) => {
133
175
  __classPrivateFieldSet(this, _GxIdeKbManagerImport_importedCategoryData, await this.loadCallback(file), "f");
@@ -144,6 +186,9 @@ export class GxIdeKbManagerImport {
144
186
  });
145
187
  const importCategoryTreeData = convertImportCategoryDataToTreeView(__classPrivateFieldGet(this, _GxIdeKbManagerImport_importedCategoryData, "f"));
146
188
  this.objectsTreeModel = importCategoryTreeData;
189
+ // Tree-view renders with `checked={true}` by default, so a freshly
190
+ // loaded file starts with everything selected.
191
+ this.hasSelection = importCategoryTreeData.length > 0;
147
192
  });
148
193
  _GxIdeKbManagerImport_lazyLoadTreeItems.set(this, async (treeItemId) => {
149
194
  const category = __classPrivateFieldGet(this, _GxIdeKbManagerImport_importedCategoryData, "f").find(cat => cat.id === treeItemId);
@@ -187,6 +232,7 @@ export class GxIdeKbManagerImport {
187
232
  else {
188
233
  this.selectAllCheckboxIndeterminate = true;
189
234
  }
235
+ this.hasSelection = checkedItemIds.length > 0;
190
236
  });
191
237
  _GxIdeKbManagerImport_objectsTreeContextMenuHandler.set(this, (event) => {
192
238
  if (event.detail.metadata === KB_OBJECT) {
@@ -262,6 +308,10 @@ export class GxIdeKbManagerImport {
262
308
  if (__classPrivateFieldGet(this, _GxIdeKbManagerImport_objectsTreeEl, "f")) {
263
309
  const checked = event.detail === CHECKBOX_ALL_CHECKED_VALUE;
264
310
  __classPrivateFieldGet(this, _GxIdeKbManagerImport_objectsTreeEl, "f").updateAllItemsProperties({ checked: checked });
311
+ // updateAllItemsProperties does not fire onCheckedItemsChange, so we
312
+ // mirror the new selection state explicitly to keep the Import button
313
+ // disabled when the user unchecks everything via this toggle.
314
+ this.hasSelection = checked && this.objectsTreeModel.length > 0;
265
315
  }
266
316
  });
267
317
  _GxIdeKbManagerImport_updateStatusItemsState.set(this, () => {
@@ -285,6 +335,7 @@ export class GxIdeKbManagerImport {
285
335
  });
286
336
  this.selectAllCheckboxValue = undefined;
287
337
  this.selectAllCheckboxIndeterminate = false;
338
+ this.hasSelection = false;
288
339
  this.importStatusMessage = undefined;
289
340
  this.importTreeState = [];
290
341
  this.importedTreeFilterRegExp = undefined;
@@ -387,7 +438,8 @@ export class GxIdeKbManagerImport {
387
438
  }), h("div", { class: "buttons-spacer" }, h("button", {
388
439
  // import objects button
389
440
  id: "import-btn", class: "button-primary ", onClick: __classPrivateFieldGet(this, _GxIdeKbManagerImport_importObjectsHandler, "f"), disabled: ((_b = this.objectsTreeModel) === null || _b === void 0 ? void 0 : _b.length) === 0 ||
390
- this.importingIsInProcess
441
+ this.importingIsInProcess ||
442
+ !this.hasSelection
391
443
  }, __classPrivateFieldGet(this, _GxIdeKbManagerImport_componentLocale, "f").main.objectsInFile.importButton), h("button", {
392
444
  // cancel-import button
393
445
  id: "cancel-import-btn", class: "button-secondary ", onClick: __classPrivateFieldGet(this, _GxIdeKbManagerImport_cancelImportHandler, "f"), disabled: !this.importingIsInProcess, part: "cancel-import-button"
@@ -452,7 +504,7 @@ export class GxIdeKbManagerImport {
452
504
  "mutable": false,
453
505
  "complexType": {
454
506
  "original": "ImportCallback",
455
- "resolved": "(itemIds: string[]) => Promise<boolean>",
507
+ "resolved": "(selection: ImportSelection) => Promise<boolean>",
456
508
  "references": {
457
509
  "ImportCallback": {
458
510
  "location": "local",
@@ -575,6 +627,7 @@ export class GxIdeKbManagerImport {
575
627
  return {
576
628
  "selectAllCheckboxValue": {},
577
629
  "selectAllCheckboxIndeterminate": {},
630
+ "hasSelection": {},
578
631
  "importStatusMessage": {},
579
632
  "importTreeState": {},
580
633
  "importedTreeFilterRegExp": {},
@@ -668,5 +721,5 @@ export class GxIdeKbManagerImport {
668
721
  }];
669
722
  }
670
723
  }
671
- _GxIdeKbManagerImport_componentLocale = new WeakMap(), _GxIdeKbManagerImport_selectedObjectsInFileIds = new WeakMap(), _GxIdeKbManagerImport_fileInputEl = new WeakMap(), _GxIdeKbManagerImport_fileInputHiddenEl = new WeakMap(), _GxIdeKbManagerImport_objectsTreeEl = new WeakMap(), _GxIdeKbManagerImport_successItemsIds = new WeakMap(), _GxIdeKbManagerImport_warningItemsIds = new WeakMap(), _GxIdeKbManagerImport_errorItemsIds = new WeakMap(), _GxIdeKbManagerImport_categoryItemMap = new WeakMap(), _GxIdeKbManagerImport_objectCategoryItemMap = new WeakMap(), _GxIdeKbManagerImport_importedCategoryData = new WeakMap(), _GxIdeKbManagerImport_cancelImportHandler = new WeakMap(), _GxIdeKbManagerImport_clearStatusHandler = new WeakMap(), _GxIdeKbManagerImport_evaluateImport = new WeakMap(), _GxIdeKbManagerImport_evaluateImportStatusMessage = new WeakMap(), _GxIdeKbManagerImport_importObjectsHandler = new WeakMap(), _GxIdeKbManagerImport_loadFileHandler = new WeakMap(), _GxIdeKbManagerImport_lazyLoadTreeItems = new WeakMap(), _GxIdeKbManagerImport_objectsTreeCheckedItemsChangedHandler = new WeakMap(), _GxIdeKbManagerImport_objectsTreeContextMenuHandler = new WeakMap(), _GxIdeKbManagerImport_objectsTreeSelectedItemsChangedHandler = new WeakMap(), _GxIdeKbManagerImport_optionsHandler = new WeakMap(), _GxIdeKbManagerImport_removeFileSelection = new WeakMap(), _GxIdeKbManagerImport_selectFileInputHandler = new WeakMap(), _GxIdeKbManagerImport_selectFileInputChangedHandler = new WeakMap(), _GxIdeKbManagerImport_statusButtonsSelectionChangedHandler = new WeakMap(), _GxIdeKbManagerImport_toggleSelectionClickHandler = new WeakMap(), _GxIdeKbManagerImport_updateStatusItemsState = new WeakMap();
724
+ _GxIdeKbManagerImport_componentLocale = new WeakMap(), _GxIdeKbManagerImport_selectedObjectsInFileIds = new WeakMap(), _GxIdeKbManagerImport_fileInputEl = new WeakMap(), _GxIdeKbManagerImport_fileInputHiddenEl = new WeakMap(), _GxIdeKbManagerImport_objectsTreeEl = new WeakMap(), _GxIdeKbManagerImport_successItemsIds = new WeakMap(), _GxIdeKbManagerImport_warningItemsIds = new WeakMap(), _GxIdeKbManagerImport_errorItemsIds = new WeakMap(), _GxIdeKbManagerImport_categoryItemMap = new WeakMap(), _GxIdeKbManagerImport_objectCategoryItemMap = new WeakMap(), _GxIdeKbManagerImport_importedCategoryData = new WeakMap(), _GxIdeKbManagerImport_cancelImportHandler = new WeakMap(), _GxIdeKbManagerImport_clearStatusHandler = new WeakMap(), _GxIdeKbManagerImport_evaluateImport = new WeakMap(), _GxIdeKbManagerImport_evaluateImportStatusMessage = new WeakMap(), _GxIdeKbManagerImport_importObjectsHandler = new WeakMap(), _GxIdeKbManagerImport_buildImportSelection = new WeakMap(), _GxIdeKbManagerImport_loadFileHandler = new WeakMap(), _GxIdeKbManagerImport_lazyLoadTreeItems = new WeakMap(), _GxIdeKbManagerImport_objectsTreeCheckedItemsChangedHandler = new WeakMap(), _GxIdeKbManagerImport_objectsTreeContextMenuHandler = new WeakMap(), _GxIdeKbManagerImport_objectsTreeSelectedItemsChangedHandler = new WeakMap(), _GxIdeKbManagerImport_optionsHandler = new WeakMap(), _GxIdeKbManagerImport_removeFileSelection = new WeakMap(), _GxIdeKbManagerImport_selectFileInputHandler = new WeakMap(), _GxIdeKbManagerImport_selectFileInputChangedHandler = new WeakMap(), _GxIdeKbManagerImport_statusButtonsSelectionChangedHandler = new WeakMap(), _GxIdeKbManagerImport_toggleSelectionClickHandler = new WeakMap(), _GxIdeKbManagerImport_updateStatusItemsState = new WeakMap();
672
725
  //# sourceMappingURL=kb-manager-import.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"kb-manager-import.js","sourceRoot":"","sources":["../../../src/components/kb-manager-import/kb-manager-import.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Element,\n Event,\n EventEmitter,\n Host,\n h,\n Method,\n Prop,\n State,\n Watch\n} from \"@stencil/core\";\n\nimport {\n ChCheckboxCustomEvent,\n // ChEditCustomEvent,\n TreeViewItemContextMenu\n} from \"@genexus/chameleon-controls-library\";\nimport { TreeViewItemModel } from \"@genexus/chameleon-controls-library\";\nimport { TreeViewItemModelExtended } from \"@genexus/chameleon-controls-library\";\nimport { getIconPath, MercuryBundles } from \"@genexus/mercury\";\n\nimport { Locale } from \"../../common/locale\";\n\nimport {\n ImportCategoryData,\n ImportItemResultData,\n ContextMenuInfo\n} from \"../../common/types\";\nimport {\n convertImportCategoryDataToTreeView,\n addImportItemResultDataItem,\n convertImportCategoryItemToTreeItem\n} from \"./helpers\";\nimport { CheckedItemsInfo } from \"../_helpers/list-selector/list-selector\";\n\nimport { KB_OBJECT, STATUS_REGEXP_KEY } from \"./helpers\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"components/button\",\n \"components/checkbox\",\n \"components/edit\",\n \"components/icon\",\n \"components/tree-view\",\n \"utils/form\",\n \"utils/layout\",\n \"utils/typography\",\n \"utils/spacing\"\n];\n\nconst NOTICE_ICON = getIconPath({\n category: \"gemini-tools\",\n name: \"notice\",\n colorType: \"on-surface\"\n});\n\nconst FILE_ICON = getIconPath({\n category: \"gemini-tools\",\n name: \"file\",\n colorType: \"primary\"\n});\n\nconst GEMINI_TOOLS_SETTINGS = getIconPath({\n category: \"gemini-tools\",\n name: \"settings\",\n colorType: \"primary\"\n});\n\nconst MENU_DELETE = getIconPath({\n category: \"menus\",\n name: \"delete\",\n colorType: \"primary\"\n});\n\nconst CHECKBOX_ALL_CHECKED_VALUE = \"allChecked\";\nconst CHECKBOX_ALL_UNCHECKED_VALUE = \"allUnchecked\";\n\n@Component({\n tag: \"gx-ide-kb-manager-import\",\n styleUrl: \"kb-manager-import.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/kb-manager-import\"]\n})\nexport class GxIdeKbManagerImport {\n /**\n * The component hard-coded strings translations.\n */\n // eslint-disable-next-line @stencil-community/own-props-must-be-private\n #componentLocale: any;\n\n #selectedObjectsInFileIds: string[] = [];\n\n @Element() el: HTMLGxIdeKbManagerImportElement;\n\n #fileInputEl!: HTMLChEditElement;\n #fileInputHiddenEl!: HTMLInputElement;\n #objectsTreeEl!: HTMLChTreeViewRenderElement;\n #successItemsIds: Set<string> = new Set();\n #warningItemsIds: Set<string> = new Set();\n #errorItemsIds: Set<string> = new Set();\n // #categoryItemMap maps a category id, with the name and icon.\n // required for the \"import status\" tree.\n #categoryItemMap: CategoryItemMap = new Map();\n #objectCategoryItemMap: ObjectCategoryItemMap = new Map();\n #importedCategoryData: ImportCategoryData[];\n\n @State() selectAllCheckboxValue: string;\n @State() selectAllCheckboxIndeterminate: boolean = false;\n @State() importStatusMessage: string;\n @State() importTreeState: TreeViewItemModel[] = [];\n @State() importedTreeFilterRegExp: RegExp;\n @Watch(\"importTreeState\")\n importTreeStateChanged() {\n // this.#filterImportedHandler();\n }\n @State() importingIsInProcess = false;\n @State() importTreeFilterList: string[] = [];\n @State() noImport: boolean;\n @State() noObjects: boolean = true;\n @State() objectsTreeModel: TreeViewItemModel[] = [];\n @State() showHiddenImportsMessage = false;\n @State() someStatusVisible: boolean;\n @State() statusInfo: StatusInfo = {\n error: {\n display: true,\n number: 0\n },\n warning: {\n display: true,\n number: 0\n },\n success: {\n display: true,\n number: 0\n }\n };\n\n @Watch(\"importTreeState\")\n watchImportTreeStateHandler() {\n this.#evaluateImport();\n if (this.noImport) {\n this.importStatusMessage =\n this.#componentLocale.main.importStatus.noImportedFiles;\n } else {\n this.importStatusMessage =\n this.#componentLocale.main.importStatus.importedButHidden;\n }\n }\n @Watch(\"objectsTreeModel\")\n watchObjectsTreeModelHandler(newState: TreeViewItemModel[]) {\n this.noObjects = !newState || newState.length === 0;\n }\n\n /**\n * Callback invoked when user wants to cancel the export process.\n */\n @Prop() readonly cancelCallback!: CancelCallback;\n\n /**\n * Callback invoked when user wants to initiate the import process.\n */\n @Prop() readonly importCallback!: ImportCallback;\n\n /**\n * Callback invoked when user wants to load the xpz information\n */\n @Prop() readonly loadCallback!: LoadCallback;\n\n /**\n * Displays status buttons (errors, warning, succeeded) with minimal UI (no captions)\n */\n @Prop() readonly objectContextMenuCallback!: ObjectContextMenuCallback;\n\n /**\n * Callback invoked when user wants to access the export options.\n */\n @Prop() readonly optionsCallback!: OptionsCallback;\n\n /**\n * Imported xml or xps file name\n */\n @Prop({ mutable: true }) selectedFile: File;\n @Watch(\"selectedFile\")\n selectedFileChanged(newFile: File) {\n if (newFile) {\n this.#loadFileHandler(newFile);\n }\n }\n\n /**\n * Displays status buttons (error, warning, success) with minimal UI (no captions).\n */\n @Prop() readonly statusMinimal = false;\n\n /**\n * Emitted once just after the component is fully loaded.\n */\n @Event() componentDidLoadEvent: EventEmitter<boolean>;\n\n /**\n * Emitted once just after the component is fully loaded and the first render() occurs\n */\n @Event() componentDidRenderFirstTime: EventEmitter<boolean>;\n\n componentDidLoad() {\n this.#fileInputEl.focus();\n }\n\n componentDidRender() {}\n\n async componentWillLoad() {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n this.componentDidLoadEvent.emit(true);\n // this.#evaluateObjects();\n this.#evaluateImport();\n this.importStatusMessage =\n this.#componentLocale.main.importStatus.noImportedFiles;\n this.#evaluateImportStatusMessage();\n }\n\n /**\n * Add the result of importing an item\n */\n @Method()\n async addResultItem(item: ImportItemResultData) {\n this.importTreeState = addImportItemResultDataItem(\n item,\n this.#categoryItemMap,\n this.#objectCategoryItemMap,\n this.importTreeState\n );\n this.statusInfo[item.status].number++;\n this.#updateStatusItemsState();\n }\n\n #cancelImportHandler = () => {\n this.cancelCallback();\n };\n\n #clearStatusHandler = () => {\n this.importTreeState = [];\n this.statusInfo.error.number = 0;\n this.statusInfo.warning.number = 0;\n this.statusInfo.success.number = 0;\n };\n\n #evaluateImport = () => {\n this.noImport = !!(\n this.importTreeState?.length === 0 || !this.importTreeState\n );\n };\n\n #evaluateImportStatusMessage = () => {\n this.someStatusVisible =\n this.statusInfo.error.display ||\n this.statusInfo.warning.display ||\n this.statusInfo.success.display;\n };\n\n #importObjectsHandler = async () => {\n /* first clear imported objects (this clears errors/warnings/success counts as well)*/\n this.#clearStatusHandler();\n /* then do the import*/\n this.importingIsInProcess = true;\n\n /*\n Process checked objects manually, considering lazy loading. \n Example: \n 1. The \"Attributes\" category is lazy-loaded and marked as checked. \n 2. The user runs the import without expanding the node. \n 3. No attribute objects appear as checked, since lazy load was not triggered. \n 4. Still, all attribute objects must be included, because the category itself is checked. \n\n This avoids forcing users to expand nodes just to select objects. \n Large categories are not expanded by default to improve performance, which is crucial \n for very large imports (1000+ objects). \n */\n const checkedObjectsIds: string[] = [];\n for (let category of this.#objectsTreeEl.model) {\n if (category.items?.length > 0) {\n for (let obj of category.items) {\n if (obj.checked) checkedObjectsIds.push(obj.id);\n }\n } else if (category.lazy && category.checked) {\n const categoryData = this.#importedCategoryData.find(\n cat => cat.id == category.id\n );\n for (let obj of categoryData.items) {\n checkedObjectsIds.push(obj.id);\n }\n }\n }\n this.importCallback(checkedObjectsIds).then(() => {\n this.importingIsInProcess = false;\n });\n };\n\n #loadFileHandler = async (file: File) => {\n this.#importedCategoryData = await this.loadCallback(file);\n this.#categoryItemMap.clear();\n this.#objectCategoryItemMap.clear();\n\n this.#importedCategoryData.forEach(category => {\n this.#categoryItemMap.set(category.id, {\n name: category.name,\n icon: category.icon\n });\n category.items.forEach(object => {\n this.#objectCategoryItemMap.set(object.id, category.id);\n });\n });\n\n const importCategoryTreeData = convertImportCategoryDataToTreeView(\n this.#importedCategoryData\n );\n this.objectsTreeModel = importCategoryTreeData;\n };\n\n #lazyLoadTreeItems = async (treeItemId: string) => {\n const category = this.#importedCategoryData.find(\n cat => cat.id === treeItemId\n );\n return category && category.items.length > 0\n ? convertImportCategoryItemToTreeItem(category.icon, category.items)\n : [];\n };\n\n #objectsTreeCheckedItemsChangedHandler = (\n event: CustomEvent<Map<string, TreeViewItemModelExtended>>\n ) => {\n const allItems = event.detail;\n const checkedItemIds: string[] = [];\n const pendingCheckedItemIds: string[] = [];\n const checkedObjectsIds: string[] = [];\n allItems.forEach(item => {\n if (item.item.checked) {\n checkedItemIds.push(item.item.id);\n if (item.item.lazy && !item.item.items)\n pendingCheckedItemIds.push(item.item.id);\n }\n if (item.item.checked && item.item.metadata === KB_OBJECT) {\n checkedObjectsIds.push(item.item.id);\n }\n });\n\n for (let pendingCheckedItemId of pendingCheckedItemIds) {\n const category = this.#importedCategoryData.find(\n cat => cat.id === pendingCheckedItemId\n );\n if (category) {\n for (let item of category.items) {\n if (checkedObjectsIds.indexOf(item.id) < 0)\n checkedObjectsIds.push(item.id);\n }\n }\n }\n\n // Evaluate \"Select All / Unselect All\" checkbox state\n if (allItems.size === checkedItemIds.length) {\n this.selectAllCheckboxValue = CHECKBOX_ALL_CHECKED_VALUE;\n this.selectAllCheckboxIndeterminate = false;\n } else if (checkedItemIds.length === 0) {\n this.selectAllCheckboxValue = CHECKBOX_ALL_UNCHECKED_VALUE;\n this.selectAllCheckboxIndeterminate = false;\n } else {\n this.selectAllCheckboxIndeterminate = true;\n }\n };\n\n #objectsTreeContextMenuHandler = (\n event: CustomEvent<TreeViewItemContextMenu>\n ) => {\n if (event.detail.metadata === KB_OBJECT) {\n this.objectContextMenuCallback(\"imported\", {\n selection: this.#selectedObjectsInFileIds,\n clientX: event.detail.contextmenuEvent.screenX,\n clientY: event.detail.contextmenuEvent.screenY\n });\n }\n };\n\n #objectsTreeSelectedItemsChangedHandler = (\n event: CustomEvent<TreeViewItemModelExtended[]>\n ) => {\n this.#selectedObjectsInFileIds = event.detail.map(item => item.item.id);\n };\n\n #optionsHandler = () => {\n if (this.optionsCallback) {\n this.optionsCallback();\n // returns boolean\n }\n };\n\n #removeFileSelection = () => {\n this.selectedFile = null;\n this.#fileInputHiddenEl.value = null;\n };\n\n #selectFileInputHandler = () => {\n this.#fileInputHiddenEl.click();\n };\n\n #selectFileInputChangedHandler = (event: InputEvent) => {\n const target = event.target as HTMLInputElement;\n if (target.files?.length > 0) {\n this.selectedFile = target.files[0];\n }\n };\n\n #statusButtonsSelectionChangedHandler = (\n event: CustomEvent<CheckedItemsInfo>\n ) => {\n const activeStates = event.detail;\n const statuses: Status[] = [];\n\n const errorIndex = activeStates.findIndex(\n state => state.itemId === \"errors\"\n );\n const warningIndex = activeStates.findIndex(\n state => state.itemId === \"warnings\"\n );\n const successIndex = activeStates.findIndex(\n state => state.itemId === \"successes\"\n );\n\n if (errorIndex !== -1) {\n statuses.push(\"error\");\n }\n if (warningIndex !== -1) {\n statuses.push(\"warning\");\n }\n if (successIndex !== -1) {\n statuses.push(\"success\");\n }\n\n let pattern = `\"${STATUS_REGEXP_KEY}\":\"\"`;\n if (statuses.length) {\n const statusOptions = statuses.join(\"|\");\n pattern = `\"${STATUS_REGEXP_KEY}\":\"(${statusOptions})\"`;\n }\n this.importedTreeFilterRegExp = new RegExp(pattern, \"i\");\n\n // Update statusInfo for the status-buttons\n this.statusInfo = {\n error: {\n display: errorIndex !== -1,\n number: this.statusInfo.error.number\n },\n warning: {\n display: warningIndex !== -1,\n number: this.statusInfo.warning.number\n },\n success: {\n display: successIndex !== -1,\n number: this.statusInfo.success.number\n }\n };\n\n this.#evaluateImportStatusMessage();\n };\n\n #toggleSelectionClickHandler = (\n event: ChCheckboxCustomEvent<any> | InputEvent\n ) => {\n if (this.#objectsTreeEl) {\n const checked = event.detail === CHECKBOX_ALL_CHECKED_VALUE;\n this.#objectsTreeEl.updateAllItemsProperties({ checked: checked });\n }\n };\n\n #updateStatusItemsState = () => {\n this.#errorItemsIds.clear();\n this.#warningItemsIds.clear();\n this.#successItemsIds.clear();\n this.importTreeState.forEach(item => {\n const items = item.items;\n items.forEach(child => {\n if (child.metadata === \"error\") {\n this.#errorItemsIds.add(child.id);\n }\n if (child.metadata === \"warning\") {\n this.#warningItemsIds.add(child.id);\n }\n if (child.metadata === \"success\") {\n this.#successItemsIds.add(child.id);\n }\n });\n });\n };\n\n render(): void {\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n\n <section class=\"section\">\n <header\n // header\n class=\"field-group dialog-header-with-border header header-two-cols spacing-body-block-start spacing-body-inline\"\n slot=\"header\"\n >\n <div\n // select a file\n class=\"field field-inline\"\n >\n <label class=\"label\" htmlFor=\"file-name\">\n {this.#componentLocale.header.fileNameLabel}\n </label>\n <ch-edit\n autoFocus\n id=\"file-name\"\n class=\"input\"\n part=\"file-name\"\n type=\"text\"\n readonly\n value={this.selectedFile?.name}\n placeholder={this.#componentLocale.header.fileNamePlaceholder}\n startImgSrc={FILE_ICON}\n ref={(el: HTMLChEditElement) =>\n (this.#fileInputEl = el as HTMLChEditElement)\n }\n ></ch-edit>\n <input\n hidden\n type=\"file\"\n accept=\".xpz, .xml\"\n onChange={this.#selectFileInputChangedHandler}\n ref={(el: HTMLInputElement) =>\n (this.#fileInputHiddenEl = el as HTMLInputElement)\n }\n />\n </div>\n\n <div class=\"buttons-spacer\">\n <button\n // remove file selection\n aria-label={this.#componentLocale.header.removeFileSelection}\n title={this.#componentLocale.header.removeFileSelection}\n id=\"reset-all-button\"\n class=\"button-tertiary button-icon-only\"\n part=\"reset-all-button\"\n onClick={this.#removeFileSelection}\n >\n <ch-image class=\"icon-m\" src={MENU_DELETE}></ch-image>\n </button>\n\n <button\n // select file\n id=\"select-file-load-button\"\n class=\"button-primary\"\n part=\"select-file-load-button\"\n onClick={this.#selectFileInputHandler}\n disabled={this.importingIsInProcess}\n >\n {this.#componentLocale.header.selectFileButton}\n </button>\n </div>\n </header>\n\n <section\n // objects in file\n class=\"objects-in-file__section\"\n >\n <h2 class=\"dialog-header dialog-header-with-border dialog-header__objects-in-file subtitle-regular-xs\t text-align-center spacing-body-inline\">\n {this.#componentLocale.main.objectsInFile.title}\n </h2>\n\n <div class=\"field-group objects-in-file__main\">\n {!this.noObjects ? (\n <ch-tree-view-render\n // objects in file tree\n showLines=\"last\"\n class=\"tree-view tree-view-import\"\n model={this.objectsTreeModel}\n dragDisabled={true}\n dropDisabled={true}\n toggleCheckboxes={true}\n checkbox={true}\n checked={true}\n lazyLoadTreeItemsCallback={this.#lazyLoadTreeItems}\n onCheckedItemsChange={\n this.#objectsTreeCheckedItemsChangedHandler\n }\n onSelectedItemsChange={\n this.#objectsTreeSelectedItemsChangedHandler\n }\n onItemContextmenu={this.#objectsTreeContextMenuHandler}\n ref={(el: HTMLChTreeViewRenderElement) =>\n (this.#objectsTreeEl = el as HTMLChTreeViewRenderElement)\n }\n ></ch-tree-view-render>\n ) : (\n <gx-ide-empty-state\n isAnimated={false}\n stateTitle={\n this.#componentLocale.main.objectsInFile.noObjects\n }\n key=\"no-objects-empty-state\"\n >\n <button\n // begin by selecting a file\n class=\"button-secondary\"\n onClick={this.#selectFileInputHandler}\n >\n {this.#componentLocale.main.objectsInFile.selectFile}\n </button>\n </gx-ide-empty-state>\n )}\n\n <footer class=\"field-group objects-in-file__footer spacing-body-inline\">\n <ch-checkbox\n // select all / unselect all checkbox\n id=\"select-all-checkbox\"\n class=\"checkbox create-data-in-kb\"\n checkedValue={CHECKBOX_ALL_CHECKED_VALUE}\n unCheckedValue={CHECKBOX_ALL_UNCHECKED_VALUE}\n caption={\n this.#componentLocale.main.objectsInFile.selectUnselect\n }\n value={this.selectAllCheckboxValue}\n onInput={this.#toggleSelectionClickHandler}\n disabled={\n this.importingIsInProcess ||\n this.objectsTreeModel.length === 0\n }\n part=\"select-all-checkbox\"\n ></ch-checkbox>\n\n <div class=\"buttons-spacer\">\n <button\n // import objects button\n id=\"import-btn\"\n class=\"button-primary \"\n onClick={this.#importObjectsHandler}\n disabled={\n this.objectsTreeModel?.length === 0 ||\n this.importingIsInProcess\n }\n >\n {this.#componentLocale.main.objectsInFile.importButton}\n </button>\n\n <button\n // cancel-import button\n id=\"cancel-import-btn\"\n class=\"button-secondary \"\n onClick={this.#cancelImportHandler}\n disabled={!this.importingIsInProcess}\n part=\"cancel-import-button\"\n >\n {this.#componentLocale.main.objectsInFile.cancelButton}\n </button>\n\n <button\n // settings/options button\n id=\"select-kb-btn\"\n class=\"button-tertiary button-icon-only\"\n part=\"select-kb-btn\"\n onClick={this.#optionsHandler}\n >\n <ch-image\n class=\"icon-m\"\n src={GEMINI_TOOLS_SETTINGS}\n ></ch-image>\n </button>\n </div>\n </footer>\n </div>\n </section>\n\n <section\n // import status\n class=\"import-status__section\"\n >\n <h2 class=\"dialog-header dialog-header-with-border dialog-header__import-status subtitle-regular-xs\t text-align-center spacing-body-inline\">\n {this.#componentLocale.main.importStatus.title}\n </h2>\n\n <div class=\"field-group import-status__main\">\n {!this.noImport && this.someStatusVisible ? (\n <ch-tree-view-render\n // import status tree\n model={this.importTreeState}\n toggleCheckboxes={true}\n showLines=\"last\"\n class=\"tree-view tree-view-import\"\n filter={this.importedTreeFilterRegExp}\n filterType=\"metadata\"\n filterOptions={{\n autoExpand: true,\n hideMatchesAndShowNonMatches: false\n }}\n ></ch-tree-view-render>\n ) : (\n <gx-ide-empty-state\n isAnimated={false}\n stateIconSrc={NOTICE_ICON}\n stateTitle={this.importStatusMessage}\n key=\"no-objects-empty-state\"\n ></gx-ide-empty-state>\n )}\n\n <footer class=\"import-status__footer spacing-body-inline\">\n <button\n // clear status button\n class=\"button-secondary import-clear-status-btn\"\n onClick={this.#clearStatusHandler}\n disabled={this.noImport || this.importingIsInProcess}\n part=\"clear-status-btn\"\n >\n {this.#componentLocale.main.importStatus.clearButton}\n </button>\n </footer>\n </div>\n </section>\n\n <footer\n // footer\n class=\"footer\"\n >\n <gx-ide-status-buttons\n errors={this.statusInfo.error.number}\n warnings={this.statusInfo.warning.number}\n successes={this.statusInfo.success.number}\n hideMessage\n compact\n minimal={this.statusMinimal}\n onSelectionChanged={this.#statusButtonsSelectionChangedHandler}\n ></gx-ide-status-buttons>\n </footer>\n </section>\n </Host>\n );\n }\n}\nexport type CancelCallback = () => Promise<boolean>;\n\nexport type ImportCallback = (itemIds: string[]) => Promise<boolean>;\n\nexport type ImportItemData = {\n id: string;\n name: string;\n};\n\nexport type LoadCallback = (file: File) => Promise<ImportCategoryData[]>;\n\nexport type ObjectContextMenuCallback = (\n tree: ObjectsSourceType,\n contextMenuInfo: ContextMenuInfo\n) => Promise<void>;\n\nexport type ObjectsSourceType = \"in-file\" | \"imported\";\n\nexport type OptionsCallback = () => Promise<void>;\n\nexport interface SelectedObject {\n itemId: string;\n subItemsIds: string[];\n}\n\nexport type StatusItemsState = {\n error: string[];\n warning: string[];\n success: string[];\n};\n\ntype StatusInfo = {\n error: {\n display: boolean;\n number: number;\n };\n warning: {\n display: boolean;\n number: number;\n };\n success: {\n display: boolean;\n number: number;\n };\n};\n\nexport type CategoryItemMap = Map<string, CategoryItemMapValue>;\nexport type CategoryItemMapValue = { name: string; icon: string };\nexport type ObjectCategoryItemMap = Map<string, string>;\nexport type Status = \"success\" | \"error\" | \"warning\";\n"]}
1
+ {"version":3,"file":"kb-manager-import.js","sourceRoot":"","sources":["../../../src/components/kb-manager-import/kb-manager-import.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Element,\n Event,\n EventEmitter,\n Host,\n h,\n Method,\n Prop,\n State,\n Watch\n} from \"@stencil/core\";\n\nimport {\n ChCheckboxCustomEvent,\n // ChEditCustomEvent,\n TreeViewItemContextMenu\n} from \"@genexus/chameleon-controls-library\";\nimport { TreeViewItemModel } from \"@genexus/chameleon-controls-library\";\nimport { TreeViewItemModelExtended } from \"@genexus/chameleon-controls-library\";\nimport { getIconPath, MercuryBundles } from \"@genexus/mercury\";\n\nimport { Locale } from \"../../common/locale\";\n\nimport {\n ImportCategoryData,\n ImportItemResultData,\n ContextMenuInfo\n} from \"../../common/types\";\nimport {\n convertImportCategoryDataToTreeView,\n addImportItemResultDataItem,\n convertImportCategoryItemToTreeItem\n} from \"./helpers\";\nimport { CheckedItemsInfo } from \"../_helpers/list-selector/list-selector\";\n\nimport { KB_OBJECT, STATUS_REGEXP_KEY } from \"./helpers\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"components/button\",\n \"components/checkbox\",\n \"components/edit\",\n \"components/icon\",\n \"components/tree-view\",\n \"utils/form\",\n \"utils/layout\",\n \"utils/typography\",\n \"utils/spacing\"\n];\n\nconst NOTICE_ICON = getIconPath({\n category: \"gemini-tools\",\n name: \"notice\",\n colorType: \"on-surface\"\n});\n\nconst FILE_ICON = getIconPath({\n category: \"gemini-tools\",\n name: \"file\",\n colorType: \"primary\"\n});\n\nconst GEMINI_TOOLS_SETTINGS = getIconPath({\n category: \"gemini-tools\",\n name: \"settings\",\n colorType: \"primary\"\n});\n\nconst MENU_DELETE = getIconPath({\n category: \"menus\",\n name: \"delete\",\n colorType: \"primary\"\n});\n\nconst CHECKBOX_ALL_CHECKED_VALUE = \"allChecked\";\nconst CHECKBOX_ALL_UNCHECKED_VALUE = \"allUnchecked\";\n\n@Component({\n tag: \"gx-ide-kb-manager-import\",\n styleUrl: \"kb-manager-import.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/kb-manager-import\"]\n})\nexport class GxIdeKbManagerImport {\n /**\n * The component hard-coded strings translations.\n */\n // eslint-disable-next-line @stencil-community/own-props-must-be-private\n #componentLocale: any;\n\n #selectedObjectsInFileIds: string[] = [];\n\n @Element() el: HTMLGxIdeKbManagerImportElement;\n\n #fileInputEl!: HTMLChEditElement;\n #fileInputHiddenEl!: HTMLInputElement;\n #objectsTreeEl!: HTMLChTreeViewRenderElement;\n #successItemsIds: Set<string> = new Set();\n #warningItemsIds: Set<string> = new Set();\n #errorItemsIds: Set<string> = new Set();\n // #categoryItemMap maps a category id, with the name and icon.\n // required for the \"import status\" tree.\n #categoryItemMap: CategoryItemMap = new Map();\n #objectCategoryItemMap: ObjectCategoryItemMap = new Map();\n #importedCategoryData: ImportCategoryData[];\n\n @State() selectAllCheckboxValue: string;\n @State() selectAllCheckboxIndeterminate: boolean = false;\n @State() hasSelection: boolean = false;\n @State() importStatusMessage: string;\n @State() importTreeState: TreeViewItemModel[] = [];\n @State() importedTreeFilterRegExp: RegExp;\n @Watch(\"importTreeState\")\n importTreeStateChanged() {\n // this.#filterImportedHandler();\n }\n @State() importingIsInProcess = false;\n @State() importTreeFilterList: string[] = [];\n @State() noImport: boolean;\n @State() noObjects: boolean = true;\n @State() objectsTreeModel: TreeViewItemModel[] = [];\n @State() showHiddenImportsMessage = false;\n @State() someStatusVisible: boolean;\n @State() statusInfo: StatusInfo = {\n error: {\n display: true,\n number: 0\n },\n warning: {\n display: true,\n number: 0\n },\n success: {\n display: true,\n number: 0\n }\n };\n\n @Watch(\"importTreeState\")\n watchImportTreeStateHandler() {\n this.#evaluateImport();\n if (this.noImport) {\n this.importStatusMessage =\n this.#componentLocale.main.importStatus.noImportedFiles;\n } else {\n this.importStatusMessage =\n this.#componentLocale.main.importStatus.importedButHidden;\n }\n }\n @Watch(\"objectsTreeModel\")\n watchObjectsTreeModelHandler(newState: TreeViewItemModel[]) {\n this.noObjects = !newState || newState.length === 0;\n }\n\n /**\n * Callback invoked when user wants to cancel the export process.\n */\n @Prop() readonly cancelCallback!: CancelCallback;\n\n /**\n * Callback invoked when user wants to initiate the import process.\n */\n @Prop() readonly importCallback!: ImportCallback;\n\n /**\n * Callback invoked when user wants to load the xpz information\n */\n @Prop() readonly loadCallback!: LoadCallback;\n\n /**\n * Displays status buttons (errors, warning, succeeded) with minimal UI (no captions)\n */\n @Prop() readonly objectContextMenuCallback!: ObjectContextMenuCallback;\n\n /**\n * Callback invoked when user wants to access the export options.\n */\n @Prop() readonly optionsCallback!: OptionsCallback;\n\n /**\n * Imported xml or xps file name\n */\n @Prop({ mutable: true }) selectedFile: File;\n @Watch(\"selectedFile\")\n selectedFileChanged(newFile: File) {\n if (newFile) {\n this.#loadFileHandler(newFile);\n }\n }\n\n /**\n * Displays status buttons (error, warning, success) with minimal UI (no captions).\n */\n @Prop() readonly statusMinimal = false;\n\n /**\n * Emitted once just after the component is fully loaded.\n */\n @Event() componentDidLoadEvent: EventEmitter<boolean>;\n\n /**\n * Emitted once just after the component is fully loaded and the first render() occurs\n */\n @Event() componentDidRenderFirstTime: EventEmitter<boolean>;\n\n componentDidLoad() {\n this.#fileInputEl.focus();\n }\n\n componentDidRender() {}\n\n async componentWillLoad() {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n this.componentDidLoadEvent.emit(true);\n // this.#evaluateObjects();\n this.#evaluateImport();\n this.importStatusMessage =\n this.#componentLocale.main.importStatus.noImportedFiles;\n this.#evaluateImportStatusMessage();\n }\n\n /**\n * Add the result of importing an item\n */\n @Method()\n async addResultItem(item: ImportItemResultData) {\n this.importTreeState = addImportItemResultDataItem(\n item,\n this.#categoryItemMap,\n this.#objectCategoryItemMap,\n this.importTreeState\n );\n this.statusInfo[item.status].number++;\n this.#updateStatusItemsState();\n }\n\n #cancelImportHandler = () => {\n this.cancelCallback();\n };\n\n #clearStatusHandler = () => {\n this.importTreeState = [];\n this.statusInfo.error.number = 0;\n this.statusInfo.warning.number = 0;\n this.statusInfo.success.number = 0;\n };\n\n #evaluateImport = () => {\n this.noImport = !!(\n this.importTreeState?.length === 0 || !this.importTreeState\n );\n };\n\n #evaluateImportStatusMessage = () => {\n this.someStatusVisible =\n this.statusInfo.error.display ||\n this.statusInfo.warning.display ||\n this.statusInfo.success.display;\n };\n\n #importObjectsHandler = async () => {\n /* first clear imported objects (this clears errors/warnings/success counts as well)*/\n this.#clearStatusHandler();\n /* then do the import*/\n this.importingIsInProcess = true;\n\n const selection = this.#buildImportSelection();\n\n await this.importCallback(selection);\n this.importingIsInProcess = false;\n };\n\n /*\n Build the structured ImportSelection from the current tree state.\n\n Lazy categories may not have their items loaded yet; in that case the\n category's own `checked` flag represents the user's intent for the whole\n group. Large categories are not expanded by default to keep imports of\n 1000+ objects responsive.\n\n For each category, the most compact group representation is picked:\n - every item checked → mode: \"all\"\n - no item checked → group omitted from the partial selection\n - mixed → \"include\" or \"exclude\", whichever has fewer ids\n */\n #buildImportSelection = (): ImportSelection => {\n const groups: GroupSelection[] = [];\n let everyGroupFullySelected = true;\n\n for (const category of this.#objectsTreeEl.model) {\n const categoryData = this.#importedCategoryData.find(\n cat => cat.id === category.id\n );\n const totalItems = categoryData?.items.length ?? 0;\n const childrenLoaded = !!(category.items && category.items.length > 0);\n\n if (!childrenLoaded && category.lazy) {\n if (category.checked) {\n groups.push({ groupId: category.id, mode: \"all\" });\n } else {\n everyGroupFullySelected = false;\n }\n continue;\n }\n\n const checkedIds: string[] = [];\n const uncheckedIds: string[] = [];\n for (const child of category.items ?? []) {\n if (child.checked) {\n checkedIds.push(child.id);\n } else {\n uncheckedIds.push(child.id);\n }\n }\n\n if (uncheckedIds.length === 0 && checkedIds.length === totalItems) {\n groups.push({ groupId: category.id, mode: \"all\" });\n } else if (checkedIds.length === 0) {\n everyGroupFullySelected = false;\n } else {\n everyGroupFullySelected = false;\n if (checkedIds.length <= uncheckedIds.length) {\n groups.push({\n groupId: category.id,\n mode: \"include\",\n ids: checkedIds\n });\n } else {\n groups.push({\n groupId: category.id,\n mode: \"exclude\",\n ids: uncheckedIds\n });\n }\n }\n }\n\n if (\n everyGroupFullySelected &&\n groups.length === this.#importedCategoryData.length\n ) {\n return { mode: \"all\" };\n }\n\n return { mode: \"partial\", groups };\n };\n\n #loadFileHandler = async (file: File) => {\n this.#importedCategoryData = await this.loadCallback(file);\n this.#categoryItemMap.clear();\n this.#objectCategoryItemMap.clear();\n\n this.#importedCategoryData.forEach(category => {\n this.#categoryItemMap.set(category.id, {\n name: category.name,\n icon: category.icon\n });\n category.items.forEach(object => {\n this.#objectCategoryItemMap.set(object.id, category.id);\n });\n });\n\n const importCategoryTreeData = convertImportCategoryDataToTreeView(\n this.#importedCategoryData\n );\n this.objectsTreeModel = importCategoryTreeData;\n // Tree-view renders with `checked={true}` by default, so a freshly\n // loaded file starts with everything selected.\n this.hasSelection = importCategoryTreeData.length > 0;\n };\n\n #lazyLoadTreeItems = async (treeItemId: string) => {\n const category = this.#importedCategoryData.find(\n cat => cat.id === treeItemId\n );\n return category && category.items.length > 0\n ? convertImportCategoryItemToTreeItem(category.icon, category.items)\n : [];\n };\n\n #objectsTreeCheckedItemsChangedHandler = (\n event: CustomEvent<Map<string, TreeViewItemModelExtended>>\n ) => {\n const allItems = event.detail;\n const checkedItemIds: string[] = [];\n const pendingCheckedItemIds: string[] = [];\n const checkedObjectsIds: string[] = [];\n allItems.forEach(item => {\n if (item.item.checked) {\n checkedItemIds.push(item.item.id);\n if (item.item.lazy && !item.item.items)\n pendingCheckedItemIds.push(item.item.id);\n }\n if (item.item.checked && item.item.metadata === KB_OBJECT) {\n checkedObjectsIds.push(item.item.id);\n }\n });\n\n for (let pendingCheckedItemId of pendingCheckedItemIds) {\n const category = this.#importedCategoryData.find(\n cat => cat.id === pendingCheckedItemId\n );\n if (category) {\n for (let item of category.items) {\n if (checkedObjectsIds.indexOf(item.id) < 0)\n checkedObjectsIds.push(item.id);\n }\n }\n }\n\n // Evaluate \"Select All / Unselect All\" checkbox state\n if (allItems.size === checkedItemIds.length) {\n this.selectAllCheckboxValue = CHECKBOX_ALL_CHECKED_VALUE;\n this.selectAllCheckboxIndeterminate = false;\n } else if (checkedItemIds.length === 0) {\n this.selectAllCheckboxValue = CHECKBOX_ALL_UNCHECKED_VALUE;\n this.selectAllCheckboxIndeterminate = false;\n } else {\n this.selectAllCheckboxIndeterminate = true;\n }\n\n this.hasSelection = checkedItemIds.length > 0;\n };\n\n #objectsTreeContextMenuHandler = (\n event: CustomEvent<TreeViewItemContextMenu>\n ) => {\n if (event.detail.metadata === KB_OBJECT) {\n this.objectContextMenuCallback(\"imported\", {\n selection: this.#selectedObjectsInFileIds,\n clientX: event.detail.contextmenuEvent.screenX,\n clientY: event.detail.contextmenuEvent.screenY\n });\n }\n };\n\n #objectsTreeSelectedItemsChangedHandler = (\n event: CustomEvent<TreeViewItemModelExtended[]>\n ) => {\n this.#selectedObjectsInFileIds = event.detail.map(item => item.item.id);\n };\n\n #optionsHandler = () => {\n if (this.optionsCallback) {\n this.optionsCallback();\n // returns boolean\n }\n };\n\n #removeFileSelection = () => {\n this.selectedFile = null;\n this.#fileInputHiddenEl.value = null;\n };\n\n #selectFileInputHandler = () => {\n this.#fileInputHiddenEl.click();\n };\n\n #selectFileInputChangedHandler = (event: InputEvent) => {\n const target = event.target as HTMLInputElement;\n if (target.files?.length > 0) {\n this.selectedFile = target.files[0];\n }\n };\n\n #statusButtonsSelectionChangedHandler = (\n event: CustomEvent<CheckedItemsInfo>\n ) => {\n const activeStates = event.detail;\n const statuses: Status[] = [];\n\n const errorIndex = activeStates.findIndex(\n state => state.itemId === \"errors\"\n );\n const warningIndex = activeStates.findIndex(\n state => state.itemId === \"warnings\"\n );\n const successIndex = activeStates.findIndex(\n state => state.itemId === \"successes\"\n );\n\n if (errorIndex !== -1) {\n statuses.push(\"error\");\n }\n if (warningIndex !== -1) {\n statuses.push(\"warning\");\n }\n if (successIndex !== -1) {\n statuses.push(\"success\");\n }\n\n let pattern = `\"${STATUS_REGEXP_KEY}\":\"\"`;\n if (statuses.length) {\n const statusOptions = statuses.join(\"|\");\n pattern = `\"${STATUS_REGEXP_KEY}\":\"(${statusOptions})\"`;\n }\n this.importedTreeFilterRegExp = new RegExp(pattern, \"i\");\n\n // Update statusInfo for the status-buttons\n this.statusInfo = {\n error: {\n display: errorIndex !== -1,\n number: this.statusInfo.error.number\n },\n warning: {\n display: warningIndex !== -1,\n number: this.statusInfo.warning.number\n },\n success: {\n display: successIndex !== -1,\n number: this.statusInfo.success.number\n }\n };\n\n this.#evaluateImportStatusMessage();\n };\n\n #toggleSelectionClickHandler = (\n event: ChCheckboxCustomEvent<any> | InputEvent\n ) => {\n if (this.#objectsTreeEl) {\n const checked = event.detail === CHECKBOX_ALL_CHECKED_VALUE;\n this.#objectsTreeEl.updateAllItemsProperties({ checked: checked });\n // updateAllItemsProperties does not fire onCheckedItemsChange, so we\n // mirror the new selection state explicitly to keep the Import button\n // disabled when the user unchecks everything via this toggle.\n this.hasSelection = checked && this.objectsTreeModel.length > 0;\n }\n };\n\n #updateStatusItemsState = () => {\n this.#errorItemsIds.clear();\n this.#warningItemsIds.clear();\n this.#successItemsIds.clear();\n this.importTreeState.forEach(item => {\n const items = item.items;\n items.forEach(child => {\n if (child.metadata === \"error\") {\n this.#errorItemsIds.add(child.id);\n }\n if (child.metadata === \"warning\") {\n this.#warningItemsIds.add(child.id);\n }\n if (child.metadata === \"success\") {\n this.#successItemsIds.add(child.id);\n }\n });\n });\n };\n\n render(): void {\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n\n <section class=\"section\">\n <header\n // header\n class=\"field-group dialog-header-with-border header header-two-cols spacing-body-block-start spacing-body-inline\"\n slot=\"header\"\n >\n <div\n // select a file\n class=\"field field-inline\"\n >\n <label class=\"label\" htmlFor=\"file-name\">\n {this.#componentLocale.header.fileNameLabel}\n </label>\n <ch-edit\n autoFocus\n id=\"file-name\"\n class=\"input\"\n part=\"file-name\"\n type=\"text\"\n readonly\n value={this.selectedFile?.name}\n placeholder={this.#componentLocale.header.fileNamePlaceholder}\n startImgSrc={FILE_ICON}\n ref={(el: HTMLChEditElement) =>\n (this.#fileInputEl = el as HTMLChEditElement)\n }\n ></ch-edit>\n <input\n hidden\n type=\"file\"\n accept=\".xpz, .xml\"\n onChange={this.#selectFileInputChangedHandler}\n ref={(el: HTMLInputElement) =>\n (this.#fileInputHiddenEl = el as HTMLInputElement)\n }\n />\n </div>\n\n <div class=\"buttons-spacer\">\n <button\n // remove file selection\n aria-label={this.#componentLocale.header.removeFileSelection}\n title={this.#componentLocale.header.removeFileSelection}\n id=\"reset-all-button\"\n class=\"button-tertiary button-icon-only\"\n part=\"reset-all-button\"\n onClick={this.#removeFileSelection}\n >\n <ch-image class=\"icon-m\" src={MENU_DELETE}></ch-image>\n </button>\n\n <button\n // select file\n id=\"select-file-load-button\"\n class=\"button-primary\"\n part=\"select-file-load-button\"\n onClick={this.#selectFileInputHandler}\n disabled={this.importingIsInProcess}\n >\n {this.#componentLocale.header.selectFileButton}\n </button>\n </div>\n </header>\n\n <section\n // objects in file\n class=\"objects-in-file__section\"\n >\n <h2 class=\"dialog-header dialog-header-with-border dialog-header__objects-in-file subtitle-regular-xs\t text-align-center spacing-body-inline\">\n {this.#componentLocale.main.objectsInFile.title}\n </h2>\n\n <div class=\"field-group objects-in-file__main\">\n {!this.noObjects ? (\n <ch-tree-view-render\n // objects in file tree\n showLines=\"last\"\n class=\"tree-view tree-view-import\"\n model={this.objectsTreeModel}\n dragDisabled={true}\n dropDisabled={true}\n toggleCheckboxes={true}\n checkbox={true}\n checked={true}\n lazyLoadTreeItemsCallback={this.#lazyLoadTreeItems}\n onCheckedItemsChange={\n this.#objectsTreeCheckedItemsChangedHandler\n }\n onSelectedItemsChange={\n this.#objectsTreeSelectedItemsChangedHandler\n }\n onItemContextmenu={this.#objectsTreeContextMenuHandler}\n ref={(el: HTMLChTreeViewRenderElement) =>\n (this.#objectsTreeEl = el as HTMLChTreeViewRenderElement)\n }\n ></ch-tree-view-render>\n ) : (\n <gx-ide-empty-state\n isAnimated={false}\n stateTitle={\n this.#componentLocale.main.objectsInFile.noObjects\n }\n key=\"no-objects-empty-state\"\n >\n <button\n // begin by selecting a file\n class=\"button-secondary\"\n onClick={this.#selectFileInputHandler}\n >\n {this.#componentLocale.main.objectsInFile.selectFile}\n </button>\n </gx-ide-empty-state>\n )}\n\n <footer class=\"field-group objects-in-file__footer spacing-body-inline\">\n <ch-checkbox\n // select all / unselect all checkbox\n id=\"select-all-checkbox\"\n class=\"checkbox create-data-in-kb\"\n checkedValue={CHECKBOX_ALL_CHECKED_VALUE}\n unCheckedValue={CHECKBOX_ALL_UNCHECKED_VALUE}\n caption={\n this.#componentLocale.main.objectsInFile.selectUnselect\n }\n value={this.selectAllCheckboxValue}\n onInput={this.#toggleSelectionClickHandler}\n disabled={\n this.importingIsInProcess ||\n this.objectsTreeModel.length === 0\n }\n part=\"select-all-checkbox\"\n ></ch-checkbox>\n\n <div class=\"buttons-spacer\">\n <button\n // import objects button\n id=\"import-btn\"\n class=\"button-primary \"\n onClick={this.#importObjectsHandler}\n disabled={\n this.objectsTreeModel?.length === 0 ||\n this.importingIsInProcess ||\n !this.hasSelection\n }\n >\n {this.#componentLocale.main.objectsInFile.importButton}\n </button>\n\n <button\n // cancel-import button\n id=\"cancel-import-btn\"\n class=\"button-secondary \"\n onClick={this.#cancelImportHandler}\n disabled={!this.importingIsInProcess}\n part=\"cancel-import-button\"\n >\n {this.#componentLocale.main.objectsInFile.cancelButton}\n </button>\n\n <button\n // settings/options button\n id=\"select-kb-btn\"\n class=\"button-tertiary button-icon-only\"\n part=\"select-kb-btn\"\n onClick={this.#optionsHandler}\n >\n <ch-image\n class=\"icon-m\"\n src={GEMINI_TOOLS_SETTINGS}\n ></ch-image>\n </button>\n </div>\n </footer>\n </div>\n </section>\n\n <section\n // import status\n class=\"import-status__section\"\n >\n <h2 class=\"dialog-header dialog-header-with-border dialog-header__import-status subtitle-regular-xs\t text-align-center spacing-body-inline\">\n {this.#componentLocale.main.importStatus.title}\n </h2>\n\n <div class=\"field-group import-status__main\">\n {!this.noImport && this.someStatusVisible ? (\n <ch-tree-view-render\n // import status tree\n model={this.importTreeState}\n toggleCheckboxes={true}\n showLines=\"last\"\n class=\"tree-view tree-view-import\"\n filter={this.importedTreeFilterRegExp}\n filterType=\"metadata\"\n filterOptions={{\n autoExpand: true,\n hideMatchesAndShowNonMatches: false\n }}\n ></ch-tree-view-render>\n ) : (\n <gx-ide-empty-state\n isAnimated={false}\n stateIconSrc={NOTICE_ICON}\n stateTitle={this.importStatusMessage}\n key=\"no-objects-empty-state\"\n ></gx-ide-empty-state>\n )}\n\n <footer class=\"import-status__footer spacing-body-inline\">\n <button\n // clear status button\n class=\"button-secondary import-clear-status-btn\"\n onClick={this.#clearStatusHandler}\n disabled={this.noImport || this.importingIsInProcess}\n part=\"clear-status-btn\"\n >\n {this.#componentLocale.main.importStatus.clearButton}\n </button>\n </footer>\n </div>\n </section>\n\n <footer\n // footer\n class=\"footer\"\n >\n <gx-ide-status-buttons\n errors={this.statusInfo.error.number}\n warnings={this.statusInfo.warning.number}\n successes={this.statusInfo.success.number}\n hideMessage\n compact\n minimal={this.statusMinimal}\n onSelectionChanged={this.#statusButtonsSelectionChangedHandler}\n ></gx-ide-status-buttons>\n </footer>\n </section>\n </Host>\n );\n }\n}\nexport type CancelCallback = () => Promise<boolean>;\n\n/**\n * Payload passed to `importCallback` describing the user's selection.\n *\n * - `mode: \"all\"` imports every available item across every group.\n * - `mode: \"partial\"` imports only what is declared in `groups`. Groups not\n * present in the list are excluded from the import.\n *\n * Per group the most compact representation is used: `\"all\"` for an entire\n * group, `\"include\"` / `\"exclude\"` for explicit lists (whichever side has\n * fewer ids).\n */\nexport type ImportSelection = {\n mode: \"all\" | \"partial\";\n groups?: GroupSelection[];\n};\n\nexport type GroupSelection = {\n groupId: string;\n mode: \"all\" | \"include\" | \"exclude\";\n ids?: string[];\n};\n\nexport type ImportCallback = (selection: ImportSelection) => Promise<boolean>;\n\nexport type ImportItemData = {\n id: string;\n name: string;\n};\n\nexport type LoadCallback = (file: File) => Promise<ImportCategoryData[]>;\n\nexport type ObjectContextMenuCallback = (\n tree: ObjectsSourceType,\n contextMenuInfo: ContextMenuInfo\n) => Promise<void>;\n\nexport type ObjectsSourceType = \"in-file\" | \"imported\";\n\nexport type OptionsCallback = () => Promise<void>;\n\nexport interface SelectedObject {\n itemId: string;\n subItemsIds: string[];\n}\n\nexport type StatusItemsState = {\n error: string[];\n warning: string[];\n success: string[];\n};\n\ntype StatusInfo = {\n error: {\n display: boolean;\n number: number;\n };\n warning: {\n display: boolean;\n number: number;\n };\n success: {\n display: boolean;\n number: number;\n };\n};\n\nexport type CategoryItemMap = Map<string, CategoryItemMapValue>;\nexport type CategoryItemMapValue = { name: string; icon: string };\nexport type ObjectCategoryItemMap = Map<string, string>;\nexport type Status = \"success\" | \"error\" | \"warning\";\n"]}
@@ -135,7 +135,7 @@ var __classPrivateFieldSet = (undefined && undefined.__classPrivateFieldSet) ||
135
135
  throw new TypeError("Cannot write private member to an object whose class did not declare it");
136
136
  return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
137
137
  };
138
- var _GxIdeKbManagerImport_componentLocale, _GxIdeKbManagerImport_selectedObjectsInFileIds, _GxIdeKbManagerImport_fileInputEl, _GxIdeKbManagerImport_fileInputHiddenEl, _GxIdeKbManagerImport_objectsTreeEl, _GxIdeKbManagerImport_successItemsIds, _GxIdeKbManagerImport_warningItemsIds, _GxIdeKbManagerImport_errorItemsIds, _GxIdeKbManagerImport_categoryItemMap, _GxIdeKbManagerImport_objectCategoryItemMap, _GxIdeKbManagerImport_importedCategoryData, _GxIdeKbManagerImport_cancelImportHandler, _GxIdeKbManagerImport_clearStatusHandler, _GxIdeKbManagerImport_evaluateImport, _GxIdeKbManagerImport_evaluateImportStatusMessage, _GxIdeKbManagerImport_importObjectsHandler, _GxIdeKbManagerImport_loadFileHandler, _GxIdeKbManagerImport_lazyLoadTreeItems, _GxIdeKbManagerImport_objectsTreeCheckedItemsChangedHandler, _GxIdeKbManagerImport_objectsTreeContextMenuHandler, _GxIdeKbManagerImport_objectsTreeSelectedItemsChangedHandler, _GxIdeKbManagerImport_optionsHandler, _GxIdeKbManagerImport_removeFileSelection, _GxIdeKbManagerImport_selectFileInputHandler, _GxIdeKbManagerImport_selectFileInputChangedHandler, _GxIdeKbManagerImport_statusButtonsSelectionChangedHandler, _GxIdeKbManagerImport_toggleSelectionClickHandler, _GxIdeKbManagerImport_updateStatusItemsState;
138
+ var _GxIdeKbManagerImport_componentLocale, _GxIdeKbManagerImport_selectedObjectsInFileIds, _GxIdeKbManagerImport_fileInputEl, _GxIdeKbManagerImport_fileInputHiddenEl, _GxIdeKbManagerImport_objectsTreeEl, _GxIdeKbManagerImport_successItemsIds, _GxIdeKbManagerImport_warningItemsIds, _GxIdeKbManagerImport_errorItemsIds, _GxIdeKbManagerImport_categoryItemMap, _GxIdeKbManagerImport_objectCategoryItemMap, _GxIdeKbManagerImport_importedCategoryData, _GxIdeKbManagerImport_cancelImportHandler, _GxIdeKbManagerImport_clearStatusHandler, _GxIdeKbManagerImport_evaluateImport, _GxIdeKbManagerImport_evaluateImportStatusMessage, _GxIdeKbManagerImport_importObjectsHandler, _GxIdeKbManagerImport_buildImportSelection, _GxIdeKbManagerImport_loadFileHandler, _GxIdeKbManagerImport_lazyLoadTreeItems, _GxIdeKbManagerImport_objectsTreeCheckedItemsChangedHandler, _GxIdeKbManagerImport_objectsTreeContextMenuHandler, _GxIdeKbManagerImport_objectsTreeSelectedItemsChangedHandler, _GxIdeKbManagerImport_optionsHandler, _GxIdeKbManagerImport_removeFileSelection, _GxIdeKbManagerImport_selectFileInputHandler, _GxIdeKbManagerImport_selectFileInputChangedHandler, _GxIdeKbManagerImport_statusButtonsSelectionChangedHandler, _GxIdeKbManagerImport_toggleSelectionClickHandler, _GxIdeKbManagerImport_updateStatusItemsState;
139
139
  const CSS_BUNDLES = [
140
140
  "resets/box-sizing",
141
141
  "components/button",
@@ -214,41 +214,83 @@ const GxIdeKbManagerImport$1 = /*@__PURE__*/ proxyCustomElement(class GxIdeKbMan
214
214
  this.statusInfo.success.display;
215
215
  });
216
216
  _GxIdeKbManagerImport_importObjectsHandler.set(this, async () => {
217
- var _a;
218
217
  /* first clear imported objects (this clears errors/warnings/success counts as well)*/
219
218
  __classPrivateFieldGet(this, _GxIdeKbManagerImport_clearStatusHandler, "f").call(this);
220
219
  /* then do the import*/
221
220
  this.importingIsInProcess = true;
222
- /*
223
- Process checked objects manually, considering lazy loading.
224
- Example:
225
- 1. The "Attributes" category is lazy-loaded and marked as checked.
226
- 2. The user runs the import without expanding the node.
227
- 3. No attribute objects appear as checked, since lazy load was not triggered.
228
- 4. Still, all attribute objects must be included, because the category itself is checked.
229
-
230
- This avoids forcing users to expand nodes just to select objects.
231
- Large categories are not expanded by default to improve performance, which is crucial
232
- for very large imports (1000+ objects).
233
- */
234
- const checkedObjectsIds = [];
235
- for (let category of __classPrivateFieldGet(this, _GxIdeKbManagerImport_objectsTreeEl, "f").model) {
236
- if (((_a = category.items) === null || _a === void 0 ? void 0 : _a.length) > 0) {
237
- for (let obj of category.items) {
238
- if (obj.checked)
239
- checkedObjectsIds.push(obj.id);
221
+ const selection = __classPrivateFieldGet(this, _GxIdeKbManagerImport_buildImportSelection, "f").call(this);
222
+ await this.importCallback(selection);
223
+ this.importingIsInProcess = false;
224
+ });
225
+ /*
226
+ Build the structured ImportSelection from the current tree state.
227
+
228
+ Lazy categories may not have their items loaded yet; in that case the
229
+ category's own `checked` flag represents the user's intent for the whole
230
+ group. Large categories are not expanded by default to keep imports of
231
+ 1000+ objects responsive.
232
+
233
+ For each category, the most compact group representation is picked:
234
+ - every item checked → mode: "all"
235
+ - no item checked → group omitted from the partial selection
236
+ - mixed → "include" or "exclude", whichever has fewer ids
237
+ */
238
+ _GxIdeKbManagerImport_buildImportSelection.set(this, () => {
239
+ var _a, _b;
240
+ const groups = [];
241
+ let everyGroupFullySelected = true;
242
+ for (const category of __classPrivateFieldGet(this, _GxIdeKbManagerImport_objectsTreeEl, "f").model) {
243
+ const categoryData = __classPrivateFieldGet(this, _GxIdeKbManagerImport_importedCategoryData, "f").find(cat => cat.id === category.id);
244
+ const totalItems = (_a = categoryData === null || categoryData === void 0 ? void 0 : categoryData.items.length) !== null && _a !== void 0 ? _a : 0;
245
+ const childrenLoaded = !!(category.items && category.items.length > 0);
246
+ if (!childrenLoaded && category.lazy) {
247
+ if (category.checked) {
248
+ groups.push({ groupId: category.id, mode: "all" });
249
+ }
250
+ else {
251
+ everyGroupFullySelected = false;
240
252
  }
253
+ continue;
241
254
  }
242
- else if (category.lazy && category.checked) {
243
- const categoryData = __classPrivateFieldGet(this, _GxIdeKbManagerImport_importedCategoryData, "f").find(cat => cat.id == category.id);
244
- for (let obj of categoryData.items) {
245
- checkedObjectsIds.push(obj.id);
255
+ const checkedIds = [];
256
+ const uncheckedIds = [];
257
+ for (const child of (_b = category.items) !== null && _b !== void 0 ? _b : []) {
258
+ if (child.checked) {
259
+ checkedIds.push(child.id);
260
+ }
261
+ else {
262
+ uncheckedIds.push(child.id);
263
+ }
264
+ }
265
+ if (uncheckedIds.length === 0 && checkedIds.length === totalItems) {
266
+ groups.push({ groupId: category.id, mode: "all" });
267
+ }
268
+ else if (checkedIds.length === 0) {
269
+ everyGroupFullySelected = false;
270
+ }
271
+ else {
272
+ everyGroupFullySelected = false;
273
+ if (checkedIds.length <= uncheckedIds.length) {
274
+ groups.push({
275
+ groupId: category.id,
276
+ mode: "include",
277
+ ids: checkedIds
278
+ });
279
+ }
280
+ else {
281
+ groups.push({
282
+ groupId: category.id,
283
+ mode: "exclude",
284
+ ids: uncheckedIds
285
+ });
246
286
  }
247
287
  }
248
288
  }
249
- this.importCallback(checkedObjectsIds).then(() => {
250
- this.importingIsInProcess = false;
251
- });
289
+ if (everyGroupFullySelected &&
290
+ groups.length === __classPrivateFieldGet(this, _GxIdeKbManagerImport_importedCategoryData, "f").length) {
291
+ return { mode: "all" };
292
+ }
293
+ return { mode: "partial", groups };
252
294
  });
253
295
  _GxIdeKbManagerImport_loadFileHandler.set(this, async (file) => {
254
296
  __classPrivateFieldSet(this, _GxIdeKbManagerImport_importedCategoryData, await this.loadCallback(file), "f");
@@ -265,6 +307,9 @@ const GxIdeKbManagerImport$1 = /*@__PURE__*/ proxyCustomElement(class GxIdeKbMan
265
307
  });
266
308
  const importCategoryTreeData = convertImportCategoryDataToTreeView(__classPrivateFieldGet(this, _GxIdeKbManagerImport_importedCategoryData, "f"));
267
309
  this.objectsTreeModel = importCategoryTreeData;
310
+ // Tree-view renders with `checked={true}` by default, so a freshly
311
+ // loaded file starts with everything selected.
312
+ this.hasSelection = importCategoryTreeData.length > 0;
268
313
  });
269
314
  _GxIdeKbManagerImport_lazyLoadTreeItems.set(this, async (treeItemId) => {
270
315
  const category = __classPrivateFieldGet(this, _GxIdeKbManagerImport_importedCategoryData, "f").find(cat => cat.id === treeItemId);
@@ -302,6 +347,7 @@ const GxIdeKbManagerImport$1 = /*@__PURE__*/ proxyCustomElement(class GxIdeKbMan
302
347
  else {
303
348
  this.selectAllCheckboxIndeterminate = true;
304
349
  }
350
+ this.hasSelection = checkedItemIds.length > 0;
305
351
  });
306
352
  _GxIdeKbManagerImport_objectsTreeContextMenuHandler.set(this, (event) => {
307
353
  if (event.detail.metadata === KB_OBJECT) {
@@ -377,6 +423,10 @@ const GxIdeKbManagerImport$1 = /*@__PURE__*/ proxyCustomElement(class GxIdeKbMan
377
423
  if (__classPrivateFieldGet(this, _GxIdeKbManagerImport_objectsTreeEl, "f")) {
378
424
  const checked = event.detail === CHECKBOX_ALL_CHECKED_VALUE;
379
425
  __classPrivateFieldGet(this, _GxIdeKbManagerImport_objectsTreeEl, "f").updateAllItemsProperties({ checked: checked });
426
+ // updateAllItemsProperties does not fire onCheckedItemsChange, so we
427
+ // mirror the new selection state explicitly to keep the Import button
428
+ // disabled when the user unchecks everything via this toggle.
429
+ this.hasSelection = checked && this.objectsTreeModel.length > 0;
380
430
  }
381
431
  });
382
432
  _GxIdeKbManagerImport_updateStatusItemsState.set(this, () => {
@@ -400,6 +450,7 @@ const GxIdeKbManagerImport$1 = /*@__PURE__*/ proxyCustomElement(class GxIdeKbMan
400
450
  });
401
451
  this.selectAllCheckboxValue = undefined;
402
452
  this.selectAllCheckboxIndeterminate = false;
453
+ this.hasSelection = false;
403
454
  this.importStatusMessage = undefined;
404
455
  this.importTreeState = [];
405
456
  this.importedTreeFilterRegExp = undefined;
@@ -502,7 +553,8 @@ const GxIdeKbManagerImport$1 = /*@__PURE__*/ proxyCustomElement(class GxIdeKbMan
502
553
  }), h("div", { class: "buttons-spacer" }, h("button", {
503
554
  // import objects button
504
555
  id: "import-btn", class: "button-primary ", onClick: __classPrivateFieldGet(this, _GxIdeKbManagerImport_importObjectsHandler, "f"), disabled: ((_b = this.objectsTreeModel) === null || _b === void 0 ? void 0 : _b.length) === 0 ||
505
- this.importingIsInProcess
556
+ this.importingIsInProcess ||
557
+ !this.hasSelection
506
558
  }, __classPrivateFieldGet(this, _GxIdeKbManagerImport_componentLocale, "f").main.objectsInFile.importButton), h("button", {
507
559
  // cancel-import button
508
560
  id: "cancel-import-btn", class: "button-secondary ", onClick: __classPrivateFieldGet(this, _GxIdeKbManagerImport_cancelImportHandler, "f"), disabled: !this.importingIsInProcess, part: "cancel-import-button"
@@ -544,6 +596,7 @@ const GxIdeKbManagerImport$1 = /*@__PURE__*/ proxyCustomElement(class GxIdeKbMan
544
596
  "statusMinimal": [4, "status-minimal"],
545
597
  "selectAllCheckboxValue": [32],
546
598
  "selectAllCheckboxIndeterminate": [32],
599
+ "hasSelection": [32],
547
600
  "importStatusMessage": [32],
548
601
  "importTreeState": [32],
549
602
  "importedTreeFilterRegExp": [32],
@@ -561,7 +614,7 @@ const GxIdeKbManagerImport$1 = /*@__PURE__*/ proxyCustomElement(class GxIdeKbMan
561
614
  "objectsTreeModel": ["watchObjectsTreeModelHandler"],
562
615
  "selectedFile": ["selectedFileChanged"]
563
616
  }]);
564
- _GxIdeKbManagerImport_componentLocale = new WeakMap(), _GxIdeKbManagerImport_selectedObjectsInFileIds = new WeakMap(), _GxIdeKbManagerImport_fileInputEl = new WeakMap(), _GxIdeKbManagerImport_fileInputHiddenEl = new WeakMap(), _GxIdeKbManagerImport_objectsTreeEl = new WeakMap(), _GxIdeKbManagerImport_successItemsIds = new WeakMap(), _GxIdeKbManagerImport_warningItemsIds = new WeakMap(), _GxIdeKbManagerImport_errorItemsIds = new WeakMap(), _GxIdeKbManagerImport_categoryItemMap = new WeakMap(), _GxIdeKbManagerImport_objectCategoryItemMap = new WeakMap(), _GxIdeKbManagerImport_importedCategoryData = new WeakMap(), _GxIdeKbManagerImport_cancelImportHandler = new WeakMap(), _GxIdeKbManagerImport_clearStatusHandler = new WeakMap(), _GxIdeKbManagerImport_evaluateImport = new WeakMap(), _GxIdeKbManagerImport_evaluateImportStatusMessage = new WeakMap(), _GxIdeKbManagerImport_importObjectsHandler = new WeakMap(), _GxIdeKbManagerImport_loadFileHandler = new WeakMap(), _GxIdeKbManagerImport_lazyLoadTreeItems = new WeakMap(), _GxIdeKbManagerImport_objectsTreeCheckedItemsChangedHandler = new WeakMap(), _GxIdeKbManagerImport_objectsTreeContextMenuHandler = new WeakMap(), _GxIdeKbManagerImport_objectsTreeSelectedItemsChangedHandler = new WeakMap(), _GxIdeKbManagerImport_optionsHandler = new WeakMap(), _GxIdeKbManagerImport_removeFileSelection = new WeakMap(), _GxIdeKbManagerImport_selectFileInputHandler = new WeakMap(), _GxIdeKbManagerImport_selectFileInputChangedHandler = new WeakMap(), _GxIdeKbManagerImport_statusButtonsSelectionChangedHandler = new WeakMap(), _GxIdeKbManagerImport_toggleSelectionClickHandler = new WeakMap(), _GxIdeKbManagerImport_updateStatusItemsState = new WeakMap();
617
+ _GxIdeKbManagerImport_componentLocale = new WeakMap(), _GxIdeKbManagerImport_selectedObjectsInFileIds = new WeakMap(), _GxIdeKbManagerImport_fileInputEl = new WeakMap(), _GxIdeKbManagerImport_fileInputHiddenEl = new WeakMap(), _GxIdeKbManagerImport_objectsTreeEl = new WeakMap(), _GxIdeKbManagerImport_successItemsIds = new WeakMap(), _GxIdeKbManagerImport_warningItemsIds = new WeakMap(), _GxIdeKbManagerImport_errorItemsIds = new WeakMap(), _GxIdeKbManagerImport_categoryItemMap = new WeakMap(), _GxIdeKbManagerImport_objectCategoryItemMap = new WeakMap(), _GxIdeKbManagerImport_importedCategoryData = new WeakMap(), _GxIdeKbManagerImport_cancelImportHandler = new WeakMap(), _GxIdeKbManagerImport_clearStatusHandler = new WeakMap(), _GxIdeKbManagerImport_evaluateImport = new WeakMap(), _GxIdeKbManagerImport_evaluateImportStatusMessage = new WeakMap(), _GxIdeKbManagerImport_importObjectsHandler = new WeakMap(), _GxIdeKbManagerImport_buildImportSelection = new WeakMap(), _GxIdeKbManagerImport_loadFileHandler = new WeakMap(), _GxIdeKbManagerImport_lazyLoadTreeItems = new WeakMap(), _GxIdeKbManagerImport_objectsTreeCheckedItemsChangedHandler = new WeakMap(), _GxIdeKbManagerImport_objectsTreeContextMenuHandler = new WeakMap(), _GxIdeKbManagerImport_objectsTreeSelectedItemsChangedHandler = new WeakMap(), _GxIdeKbManagerImport_optionsHandler = new WeakMap(), _GxIdeKbManagerImport_removeFileSelection = new WeakMap(), _GxIdeKbManagerImport_selectFileInputHandler = new WeakMap(), _GxIdeKbManagerImport_selectFileInputChangedHandler = new WeakMap(), _GxIdeKbManagerImport_statusButtonsSelectionChangedHandler = new WeakMap(), _GxIdeKbManagerImport_toggleSelectionClickHandler = new WeakMap(), _GxIdeKbManagerImport_updateStatusItemsState = new WeakMap();
565
618
  function defineCustomElement$1() {
566
619
  if (typeof customElements === "undefined") {
567
620
  return;