@genexus/genexus-ide-ui 1.0.4 → 1.0.5

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.
Files changed (78) hide show
  1. package/dist/cjs/genexus-ide-ui.cjs.js +1 -1
  2. package/dist/cjs/gx-ide-empty-state.cjs.entry.js +3 -2
  3. package/dist/cjs/gx-ide-empty-state.cjs.entry.js.map +1 -1
  4. package/dist/cjs/gx-ide-kb-manager-export.cjs.entry.js +272 -293
  5. package/dist/cjs/gx-ide-kb-manager-export.cjs.entry.js.map +1 -1
  6. package/dist/cjs/gx-ide-loader.cjs.entry.js +1 -1
  7. package/dist/cjs/gx-ide-loader.cjs.entry.js.map +1 -1
  8. package/dist/cjs/gx-ide-recent-news.cjs.entry.js +1 -1
  9. package/dist/cjs/gx-ide-recent-news.cjs.entry.js.map +1 -1
  10. package/dist/cjs/gx-ide-start-page.cjs.entry.js +4 -3
  11. package/dist/cjs/gx-ide-start-page.cjs.entry.js.map +1 -1
  12. package/dist/cjs/loader.cjs.js +1 -1
  13. package/dist/collection/collection-manifest.json +1 -1
  14. package/dist/collection/components/_helpers/empty-state/gx-ide-empty-state.css +5 -1
  15. package/dist/collection/components/_helpers/empty-state/gx-ide-empty-state.js +20 -1
  16. package/dist/collection/components/_helpers/empty-state/gx-ide-empty-state.js.map +1 -1
  17. package/dist/collection/components/_helpers/ide-loader/ide-loader.css +2 -2
  18. package/dist/collection/components/kb-manager-export/gx-ide-assets/kb-manager-export/langs/kb-manager-export.lang.en.json +3 -3
  19. package/dist/collection/components/kb-manager-export/gx-ide-assets/kb-manager-export/langs/kb-manager-export.lang.ja.json +4 -4
  20. package/dist/collection/components/kb-manager-export/helpers.js +64 -105
  21. package/dist/collection/components/kb-manager-export/helpers.js.map +1 -1
  22. package/dist/collection/components/kb-manager-export/kb-manager-export.css +19 -618
  23. package/dist/collection/components/kb-manager-export/kb-manager-export.js +345 -377
  24. package/dist/collection/components/kb-manager-export/kb-manager-export.js.map +1 -1
  25. package/dist/collection/components/kb-manager-export/types.js +2 -0
  26. package/dist/collection/components/kb-manager-export/types.js.map +1 -0
  27. package/dist/collection/components/start-page/recent-news.js +1 -1
  28. package/dist/collection/components/start-page/recent-news.js.map +1 -1
  29. package/dist/collection/components/start-page/start-page.js +4 -3
  30. package/dist/collection/components/start-page/start-page.js.map +1 -1
  31. package/dist/components/gx-ide-empty-state2.js +4 -2
  32. package/dist/components/gx-ide-empty-state2.js.map +1 -1
  33. package/dist/components/gx-ide-kb-manager-export.js +294 -314
  34. package/dist/components/gx-ide-kb-manager-export.js.map +1 -1
  35. package/dist/components/gx-ide-start-page.js +4 -3
  36. package/dist/components/gx-ide-start-page.js.map +1 -1
  37. package/dist/components/ide-loader.js +1 -1
  38. package/dist/components/ide-loader.js.map +1 -1
  39. package/dist/components/recent-news.js +1 -1
  40. package/dist/components/recent-news.js.map +1 -1
  41. package/dist/esm/genexus-ide-ui.js +1 -1
  42. package/dist/esm/gx-ide-empty-state.entry.js +3 -2
  43. package/dist/esm/gx-ide-empty-state.entry.js.map +1 -1
  44. package/dist/esm/gx-ide-kb-manager-export.entry.js +273 -294
  45. package/dist/esm/gx-ide-kb-manager-export.entry.js.map +1 -1
  46. package/dist/esm/gx-ide-loader.entry.js +1 -1
  47. package/dist/esm/gx-ide-loader.entry.js.map +1 -1
  48. package/dist/esm/gx-ide-recent-news.entry.js +1 -1
  49. package/dist/esm/gx-ide-recent-news.entry.js.map +1 -1
  50. package/dist/esm/gx-ide-start-page.entry.js +4 -3
  51. package/dist/esm/gx-ide-start-page.entry.js.map +1 -1
  52. package/dist/esm/loader.js +1 -1
  53. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js +1 -1
  54. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js.map +1 -1
  55. package/dist/genexus-ide-ui/gx-ide-assets/kb-manager-export/langs/kb-manager-export.lang.en.json +3 -3
  56. package/dist/genexus-ide-ui/gx-ide-assets/kb-manager-export/langs/kb-manager-export.lang.ja.json +4 -4
  57. package/dist/genexus-ide-ui/p-2cb766ce.entry.js +493 -0
  58. package/dist/genexus-ide-ui/p-2cb766ce.entry.js.map +1 -0
  59. package/dist/genexus-ide-ui/{p-f924f02a.entry.js → p-64101478.entry.js} +2 -2
  60. package/dist/genexus-ide-ui/p-64101478.entry.js.map +1 -0
  61. package/dist/genexus-ide-ui/{p-f220c75a.entry.js → p-885302c2.entry.js} +11 -6
  62. package/dist/genexus-ide-ui/p-885302c2.entry.js.map +1 -0
  63. package/dist/genexus-ide-ui/{p-eb49e4f1.entry.js → p-8ff5da93.entry.js} +36 -31
  64. package/dist/genexus-ide-ui/p-8ff5da93.entry.js.map +1 -0
  65. package/dist/genexus-ide-ui/{p-dd07e68a.entry.js → p-a6b76120.entry.js} +2 -2
  66. package/dist/genexus-ide-ui/p-a6b76120.entry.js.map +1 -0
  67. package/dist/types/components/_helpers/empty-state/gx-ide-empty-state.d.ts +4 -0
  68. package/dist/types/components/kb-manager-export/helpers.d.ts +33 -5
  69. package/dist/types/components/kb-manager-export/kb-manager-export.d.ts +36 -98
  70. package/dist/types/components/kb-manager-export/types.d.ts +21 -0
  71. package/dist/types/components.d.ts +16 -40
  72. package/package.json +4 -4
  73. package/dist/genexus-ide-ui/p-b3baa3d2.entry.js +0 -491
  74. package/dist/genexus-ide-ui/p-b3baa3d2.entry.js.map +0 -1
  75. package/dist/genexus-ide-ui/p-dd07e68a.entry.js.map +0 -1
  76. package/dist/genexus-ide-ui/p-eb49e4f1.entry.js.map +0 -1
  77. package/dist/genexus-ide-ui/p-f220c75a.entry.js.map +0 -1
  78. package/dist/genexus-ide-ui/p-f924f02a.entry.js.map +0 -1
@@ -1,36 +1,15 @@
1
- import { proxyCustomElement, HTMLElement, createEvent, h, Host } from '@stencil/core/internal/client';
1
+ import { proxyCustomElement, HTMLElement, h, Host } from '@stencil/core/internal/client';
2
2
  import { L as Locale } from './locale.js';
3
- import { c as config } from './config.js';
4
- import { d as defineCustomElement$3 } from './container.js';
5
- import { d as defineCustomElement$2 } from './title.js';
3
+ import { g as getIconPath } from './assets-manager.js';
4
+ import { d as defineCustomElement$3 } from './gx-ide-empty-state2.js';
5
+ import { d as defineCustomElement$2 } from './ide-loader.js';
6
6
 
7
7
  const KB_PROPERTY = "property";
8
8
  const KB_OBJECT = "object";
9
- /*
10
- INDEX:
11
- 1. getObjectIcon
12
- 2. convertObjectTypeToTreeItem
13
- 3. convertObjectToTreeItem
14
- 4. getObjectType
15
- 5. findObjectInTree
16
- 6. findPropertyInTree
17
- 7. convertPropertyToTreeItem
18
- 8. updateTreeModelWithObjects
19
- 9. convertKbPropertiesDataToTreeItemData
20
- 10. clearKbPropertiesFromTree
21
- */
22
- /* 1.2 getIcon (for properties)*/
23
- const getPropertyIcon = (typeId, kbPropertiesTypes) => {
24
- // The object icon has to be retrieved from the ObjetTypes array, by matching the ObjectData typeId with the ObjectType id.
25
- const propertyType = kbPropertiesTypes.find(propertyType => propertyType.id === typeId);
26
- if (propertyType) {
27
- return propertyType.icon;
28
- }
29
- else {
30
- return undefined;
31
- }
32
- };
33
- /* 2. convertObjectTypeToTreeItem*/
9
+ const getPropertyIcon = (typeId, kbPropertiesTypes) =>
10
+ // The object icon has to be retrieved from the ObjectTypes array, by
11
+ // matching the ObjectData typeId with the ObjectType id
12
+ kbPropertiesTypes.find(propertyType => propertyType.id === typeId).icon;
34
13
  const convertObjectTypeToTreeItem = (objectType) => ({
35
14
  caption: objectType.name,
36
15
  id: objectType.id,
@@ -40,7 +19,6 @@ const convertObjectTypeToTreeItem = (objectType) => ({
40
19
  expanded: true,
41
20
  items: []
42
21
  });
43
- /* 3. convertObjectToTreeItem*/
44
22
  const convertObjectToTreeItem = (object, objectTypes) => ({
45
23
  caption: object.name,
46
24
  id: object.id,
@@ -49,42 +27,6 @@ const convertObjectToTreeItem = (object, objectTypes) => ({
49
27
  metadata: KB_OBJECT,
50
28
  leaf: true
51
29
  });
52
- /* 5. findObjectInTree*/
53
- const findObjectInTree = (object, actualTreeState) => {
54
- var _a;
55
- const objectTreeItemInfo = {
56
- objectExists: false,
57
- objectTypeIndex: -1
58
- };
59
- if (actualTreeState) {
60
- const objectTypeTreeItemIndex = actualTreeState.findIndex(objectTypeTreeItem => {
61
- return objectTypeTreeItem.id === object.typeId;
62
- });
63
- if (objectTypeTreeItemIndex !== -1) {
64
- objectTreeItemInfo.objectTypeIndex = objectTypeTreeItemIndex;
65
- // objectType exists as a node in the actual tree.
66
- // Now try to find the object
67
- const objectFound = (_a = actualTreeState[objectTypeTreeItemIndex].items) === null || _a === void 0 ? void 0 : _a.find(objectTreeItem => {
68
- return objectTreeItem.id === object.id;
69
- });
70
- if (objectFound) {
71
- objectTreeItemInfo.objectExists = true;
72
- }
73
- }
74
- }
75
- return objectTreeItemInfo;
76
- };
77
- /* 6. findPropertyInTree */
78
- const findPropertyInTree = (property, updatedTreeData) => {
79
- const found = updatedTreeData.find(node => {
80
- return node.id === property.id;
81
- });
82
- if (found) {
83
- return true;
84
- }
85
- return false;
86
- };
87
- /* 7. convertPropertyToTreeItem */
88
30
  const convertPropertyToTreeItem = (property, kbPropertiesTypes) => ({
89
31
  caption: property.name,
90
32
  id: property.id,
@@ -93,146 +35,247 @@ const convertPropertyToTreeItem = (property, kbPropertiesTypes) => ({
93
35
  metadata: KB_PROPERTY,
94
36
  leaf: true
95
37
  });
96
- /* 8. updateTreeModelWithObjects*/
97
- const updateTreeModelWithObjects = (objects, objectTypes, actualTreeState) => {
98
- const updatedTreeData = [...actualTreeState];
38
+ /**
39
+ * Updates the tree model with the provided objects.
40
+ * Objects may already exist and are placed under their parent node.
41
+ * If the parent node doesn't exist (identified by typeId on ObjectTypes),
42
+ * it is created and added at the bottom.
43
+ *
44
+ * @param {ObjectData[] | undefined} objects - The array of objects to update.
45
+ * @param {Map<string, ObjectType>} objectTypesMap - A map of object types by ID.
46
+ * @param {Set<string>} objectsSet - A set of existing object IDs.
47
+ * @param {TreeViewModel} actualTreeState - The current tree state to be updated.
48
+ * @returns {TreeViewModel} - The updated tree view model.
49
+ */
50
+ const updateObjectsTreeModel = (objects, objectTypesMap, objectsSet, actualTreeState) => {
99
51
  if (!objects) {
100
- // nothing to do
101
- return updatedTreeData;
52
+ return [...actualTreeState];
102
53
  }
54
+ const updatedTreeData = [...actualTreeState];
103
55
  objects.forEach(object => {
104
56
  // objects that already exists in the actual actualTreeState should not be added.
105
- // We can find the object in the actual actualTreeState.
106
- const objectTreeItemInfo = findObjectInTree(object, updatedTreeData);
107
- if (!objectTreeItemInfo.objectExists) {
108
- // object does not exists in actualTreeState
109
- // if the objectType tree node exists, insert inside.
110
- // if the objectType tree node does not exists, create object type node first.
111
- if (objectTreeItemInfo.objectTypeIndex === -1) {
112
- const objectType = objectTypes.get(object.typeId);
113
- if (objectType !== undefined) {
114
- const objectTypeTreeItem = convertObjectTypeToTreeItem(objectType);
115
- objectTreeItemInfo.objectTypeIndex =
116
- updatedTreeData.push(objectTypeTreeItem) - 1;
117
- }
57
+ if (objectsSet.has(object.id)) {
58
+ // object already exists
59
+ return;
60
+ }
61
+ const objectTreeItem = convertObjectToTreeItem(object, objectTypesMap);
62
+ // TODO: Improve the algorithm efficiency. This check visits potentially all nodes
63
+ // from the TreeViewModel on each iteration. Using a Map to pre-store the TreeView
64
+ // nodes would improve efficiency.
65
+ const objectTypeTreeItemIndex = updatedTreeData.findIndex(treeItem => treeItem.id === object.typeId);
66
+ if (objectTypeTreeItemIndex === -1) {
67
+ // Create and add new object type tree item
68
+ const objectType = objectTypesMap.get(object.typeId);
69
+ if (objectType) {
70
+ const objectTypeTreeItem = convertObjectTypeToTreeItem(objectType);
71
+ objectTypeTreeItem.items.push(objectTreeItem);
72
+ updatedTreeData.push(objectTypeTreeItem);
118
73
  }
119
- const objectAsTreeItem = convertObjectToTreeItem(object, objectTypes);
120
- // insert object in tree (under the object type tree node)
121
- updatedTreeData[objectTreeItemInfo.objectTypeIndex].items.push(objectAsTreeItem);
122
74
  }
75
+ else {
76
+ // objectType exists already. insert object as children of the object type tree item.
77
+ updatedTreeData[objectTypeTreeItemIndex].items.push(objectTreeItem);
78
+ }
79
+ objectsSet.add(object.id);
123
80
  });
124
81
  return updatedTreeData;
125
82
  };
126
- /* 9. convertKbPropertiesDataToTreeItemData*/
83
+ /**
84
+ * Converts an array of KB properties data into tree item data for a tree view.
85
+ *
86
+ * @param {KBPropertyData[]} properties - The array of KB property data.
87
+ * @param {KBPropertyType[]} kbPropertiesTypes - The array of KB property types.
88
+ * @param {TreeViewModel} actualTreeState - The current state of the tree.
89
+ * @returns {TreeViewModel} - The updated tree view item models.
90
+ */
127
91
  const convertKbPropertiesDataToTreeItemData = (properties, kbPropertiesTypes, actualTreeState) => {
128
- const updatedTreeData = [...actualTreeState];
129
92
  if (!properties) {
130
- // nothing to do
131
- return updatedTreeData;
93
+ return [...actualTreeState];
132
94
  }
95
+ const updatedTreeData = [...actualTreeState];
133
96
  properties.forEach(property => {
134
97
  // properties have no parent node, and they should be added at the beginning of the tree
135
- const propertyAlreadyExists = findPropertyInTree(property, updatedTreeData);
136
- if (!propertyAlreadyExists) {
137
- const propertyTreeItem = convertPropertyToTreeItem(property, kbPropertiesTypes);
138
- updatedTreeData.unshift(propertyTreeItem);
98
+ const propertyAlreadyExists = updatedTreeData.find(node => node.id === property.id) !== undefined;
99
+ if (propertyAlreadyExists) {
100
+ return;
139
101
  }
102
+ const propertyTreeItem = convertPropertyToTreeItem(property, kbPropertiesTypes);
103
+ updatedTreeData.unshift(propertyTreeItem);
140
104
  });
141
105
  return updatedTreeData;
142
106
  };
143
- /* 10. clearKbPropertiesFromTree*/
144
- const clearKbPropertiesFromTree = (kBPropertiesData, actualTreeState) => {
145
- if (!(actualTreeState.length > 0)) {
146
- // nothing to do.
147
- return [];
148
- }
149
- const kBPropertiesDataIds = kBPropertiesData.map(property => {
150
- return property.id;
151
- });
152
- const treeModelWithoutKbProperties = actualTreeState.filter(item => {
153
- return !kBPropertiesDataIds.includes(item.id);
154
- });
155
- return treeModelWithoutKbProperties;
156
- };
107
+ /**
108
+ * Removes properties from the tree model.
109
+ *
110
+ * @param {TreeViewModel} actualTreeState - The current state of the tree,
111
+ * containing various tree view items.
112
+ * @returns {TreeViewModel} - A new array of tree view items that excludes
113
+ * any items with metadata of type `KB_PROPERTY`.
114
+ */
115
+ const clearKbPropertiesFromTree = (actualTreeState) => actualTreeState.filter(item => item.metadata !== KB_PROPERTY);
157
116
 
158
- const kbManagerExportCss = ":root{--ui-animaton-speed:0.2s}.gxg-title-01{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-01-font-weight);font-size:var(--ds-title-01-font-size);letter-spacing:var(--ds-base-font-letter-spacing--comfortable);color:var(--ds-base-font-color);text-align:start;line-height:var(--ds-base-font-line-height--comfortable)}.gxg-title-01--negative{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-01-font-weight);font-size:var(--ds-title-01-font-size);letter-spacing:var(--ds-base-font-letter-spacing--comfortable);color:var(--ds-base-font-color);text-align:start;line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--negative)}.gxg-title-02{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-02-font-weight);font-size:var(--ds-title-02-font-size);letter-spacing:var(--ds-base-font-letter-spacing--regular);color:var(--ds-base-font-color);text-align:start;text-transform:uppercase;line-height:var(--ds-base-font-line-height--comfortable)}.gxg-title-02--negative{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-02-font-weight);font-size:var(--ds-title-02-font-size);letter-spacing:var(--ds-base-font-letter-spacing--regular);color:var(--ds-base-font-color);text-align:start;text-transform:uppercase;line-height:var(--ds-base-font-line-height--comfortable);color:var(--color-on-primary)}.gxg-title-03{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-03-font-weight);font-size:var(--ds-title-03-font-size);letter-spacing:var(--ds-base-font-letter-spacing--regular);color:var(--ds-base-font-color);text-align:start;text-transform:uppercase;line-height:var(--ds-base-font-line-height--comfortable)}.gxg-title-03--negative{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-03-font-weight);font-size:var(--ds-title-03-font-size);letter-spacing:var(--ds-base-font-letter-spacing--regular);color:var(--ds-base-font-color);text-align:start;text-transform:uppercase;line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--negative)}.gxg-title-04{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-04-font-weight);font-size:var(--ds-title-04-font-size);letter-spacing:var(--ds-base-font-letter-spacing--comfortable);color:var(--ds-base-font-color);text-align:start;line-height:var(--ds-base-font-line-height--comfortable)}.gxg-title-04--negative{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-04-font-weight);font-size:var(--ds-title-04-font-size);letter-spacing:var(--ds-base-font-letter-spacing--comfortable);color:var(--ds-base-font-color);text-align:start;line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--negative)}.gxg-title-05{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-05-font-weight);font-size:var(--ds-title-05-font-size);letter-spacing:var(--ds-base-font-letter-spacing--regular);color:var(--ds-base-font-color);text-align:start;line-height:var(--ds-base-font-line-height--comfortable)}.gxg-title-05--negative{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-05-font-weight);font-size:var(--ds-title-05-font-size);letter-spacing:var(--ds-base-font-letter-spacing--regular);color:var(--ds-base-font-color);text-align:start;line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--negative)}.gxg-text{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable)}.gxg-text--negative{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--negative)}.gxg-text--gray{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--dimmed)}.gxg-quote{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);font-style:italic}.gxg-quote--negative{color:var(--ds-base-font-color--negative)}.gxg-link{line-height:unset;font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--link);text-decoration:underline;cursor:pointer;display:inline-block}.gxg-link:hover{color:var(--ds-base-font-color--link-hover)}.gxg-link:active{color:var(--ds-base-font-color--link-active)}.gxg-link-gray{line-height:unset;font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--link);text-decoration:underline;cursor:pointer;display:inline-block;color:var(--ds-base-font-color--dimmed)}.gxg-link-gray:hover{line-height:unset;font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--link);text-decoration:underline;cursor:pointer;display:inline-block;color:var(--ds-base-font-color--dimmed);filter:brightness(1.4)}.gxg-alert-error{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--error);display:inline-block}.gxg-alert-warning{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--warning);display:inline-block}.gxg-alert-success{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--success);display:inline-block}.gxg-tab--disabled{color:var(--color-primary-disabled);pointer-events:none}.gxg-tab--disabled[disabled]{color:var(--color-primary-disabled);pointer-events:none}.gxg-label{font-family:var(--ds-base-font-family-primary);font-weight:var(--gxg-label-font-weight);font-size:var(--gxg-label-font-size);color:var(--gxg-label-color);text-align:center;line-height:1.455em;display:flex;align-items:center}.gxg-label:hover{color:var(--color-primary-hover)}.gxg-label:focus{color:var(--color-primary-active)}.gxg-label:active{color:var(--color-primary-active)}.gxg-label[disabled]{color:var(--color-primary-disabled)}.gxg-label--negative{color:var(--color-on-primary)}.gxg-label--negative[disabled]{color:var(--color-on-disabled)}.gxg-scrollbar{}.gxg-scrollbar::-webkit-scrollbar{width:var(--gxg-scrollbar-width);height:var(--gxg-scrollbar-width)}.gxg-scrollbar::-webkit-scrollbar-track{background-color:var(--gxg-scrollbar-track-background);border-radius:var(--gxg-scrollbar-track-border-radius)}.gxg-scrollbar::-webkit-scrollbar-thumb{background-color:var(--gxg-scrollbar-track-thumb-background);border-radius:var(--gxg-scrollbar-track-thumb-radius)}.gxg-scrollbar::-webkit-scrollbar-thumb:hover{background-color:var(--gxg-scrollbar-track-thumb-hover-background)}.gxg-scrollbar::-webkit-scrollbar-corner{background:rgba(0, 0, 0, 0)}:host{display:grid;block-size:100%}.card-regular{background-color:var(--mer-surface__elevation--01);border:var(--mer-border__width--sm) solid var(--mer-border-color__on-elevation--01);border-radius:var(--mer-border__radius--md);padding:var(--mer-spacing--md) var(--mer-spacing--md);display:grid}.card-small{background-color:var(--mer-surface__elevation--02);border-radius:var(--mer-border__radius--sm);padding:var(--mer-spacing--sm) var(--mer-spacing--sm)}.card-small--actionable:hover{background-color:var(--mer-color__neutral-gray--600)}.card-small--actionable:active{background-color:var(--mer-color__neutral-gray--650)}.card-small:focus-visible{outline:var(--focus__outline-width) var(--focus__outline-style) var(--focus__outline-color);outline-offset:var(--focus__outline-offset)}.empty-state{block-size:100%;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:var(--mer-spacing--sm);text-align:center}.empty-state__title,.empty-state__button,.empty-state__link{max-inline-size:300px}.opacity-0{opacity:0}.opacity-1{opacity:1}.display-contents{display:contents}.gxi-hidden{display:none !important}.gxi-full-height{height:100%}.gxi-overflow-auto{overflow:auto}.gxi-display-flex{display:flex}.align-start{display:flex;align-items:start}.align-center{display:flex;align-items:center}.align-end{display:flex;align-items:end}.overflow-auto{overflow:auto}.justify-start{display:flex;justify-content:start}.justify-center{display:flex;justify-content:center}.justify-end{display:flex;justify-content:end}.grid{display:grid;grid-row-gap:var(--gx-ide-grid-row-gap);grid-column-gap:var(--gx-ide-grid-column-gap);grid-template-rows:auto}ch-grid-cell{display:flex}ch-grid{overflow:auto;height:100%}ch-grid-column{z-index:99;border-bottom:1px solid var(--mer-color__neutral-gray--800)}ch-grid-column:first-child{padding-inline-start:var(--gx-ide-container__padding) !important}ch-grid-column:last-child{padding-inline-end:var(--gx-ide-container__padding) !important}ch-grid-cell{--mer-spacing--xs:var(--gx-ide-container__padding)}.layout{display:grid;gap:var(--mer-spacing--lg);box-sizing:border-box}.layout--two-cols{grid-template-columns:1fr 1fr}.layout--space-above{padding-block-start:var(--mer-spacing--lg)}gxg-tabs{box-shadow:none}:host(.gx-ide-component){height:100% !important;display:flex !important;flex-direction:column !important}:host(:focus-within) gx-ide-top-bar::part(wrapper){background-color:var(--color-secondary-enabled)}.gx-ide-main-wrapper{color:var(--gx-ide-component-text-color);font-weight:var(--mer-font__weight--regular);font-size:var(--mer-font__size--xs);font-family:var(--mer-font-family--primary);height:100%;background-color:var(--gx-ide-component-background-color);display:flex;flex-direction:column;flex-grow:1;box-sizing:border-box}.gx-ide-main{flex-grow:1;overflow-y:auto;}.gx-ide-main::-webkit-scrollbar{width:var(--gxg-scrollbar-width);height:var(--gxg-scrollbar-width)}.gx-ide-main::-webkit-scrollbar-track{background-color:var(--gxg-scrollbar-track-background);border-radius:var(--gxg-scrollbar-track-border-radius)}.gx-ide-main::-webkit-scrollbar-thumb{background-color:var(--gxg-scrollbar-track-thumb-background);border-radius:var(--gxg-scrollbar-track-thumb-radius)}.gx-ide-main::-webkit-scrollbar-thumb:hover{background-color:var(--gxg-scrollbar-track-thumb-hover-background)}.gx-ide-main::-webkit-scrollbar-corner{background:rgba(0, 0, 0, 0)}.gx-ide-overflow{overflow-y:auto;}.gx-ide-overflow::-webkit-scrollbar{width:var(--gxg-scrollbar-width);height:var(--gxg-scrollbar-width)}.gx-ide-overflow::-webkit-scrollbar-track{background-color:var(--gxg-scrollbar-track-background);border-radius:var(--gxg-scrollbar-track-border-radius)}.gx-ide-overflow::-webkit-scrollbar-thumb{background-color:var(--gxg-scrollbar-track-thumb-background);border-radius:var(--gxg-scrollbar-track-thumb-radius)}.gx-ide-overflow::-webkit-scrollbar-thumb:hover{background-color:var(--gxg-scrollbar-track-thumb-hover-background)}.gx-ide-overflow::-webkit-scrollbar-corner{background:rgba(0, 0, 0, 0)}.tree-view-primary{font-size:var(--mer-font__size--2xs)}p{margin:0;font-size:var(--mer-font__size--xxs)}.buttons-container{display:flex;gap:var(--mer-spacing--xs)}.tree-view-container{display:flex}.header__top{border-top:1px solid var(--gx-ide-container-border-color);display:grid;padding:var(--gx-ide-container__padding) var(--gx-ide-container__padding) 0 var(--gx-ide-container__padding);gap:var(--gx-ide-grid-column-gap);grid-template-columns:1fr auto;grid-template-areas:\"select-directory export-cancel-buttons-group options-btn\"}.header__top .select-directory{grid-area:select-directory}.header__top .export-cancel-buttons-group{grid-area:export-cancel-buttons-group}.header__top .options-btn{grid-area:options-btn}.header__bottom .checkboxes-wrapper{padding:var(--gx-ide-grid-column-gap);display:flex;flex-wrap:wrap;gap:var(--gx-ide-grid-column-gap)}.header__bottom .checkboxes-wrapper .add-checkbox{display:flex}.tree-container{block-size:100%;padding:var(--tree-container-padding)}.tree-container--empty{align-items:center;justify-content:center}.tree-container .gx-ide-message{padding:100px 0}gxg-text{block-size:100%}";
117
+ const kbManagerExportCss = ".section{display:grid;block-size:100%;grid-template:\"export-file-name buttons-container buttons-container buttons-container\" max-content \"checkboxes checkboxes checkboxes checkboxes\" max-content \"main main main main\" 1fr \"footer footer footer footer\" max-content/1fr max-content max-content max-content}.header{display:contents}.header .export-file-name{grid-area:export-file-name}.header__buttons-container{grid-area:buttons-container;display:flex;gap:var(--mer-spacing--sm)}.header__checkboxes{grid-area:checkboxes;grid-template-columns:max-content 1fr}.main{grid-area:main;position:relative}.footer{grid-area:footer;justify-content:space-between}.footer .clear-btn{margin-inline-end:auto}";
159
118
 
119
+ var __classPrivateFieldSet = (undefined && undefined.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
120
+ if (kind === "m")
121
+ throw new TypeError("Private method is not writable");
122
+ if (kind === "a" && !f)
123
+ throw new TypeError("Private accessor was defined without a setter");
124
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver))
125
+ throw new TypeError("Cannot write private member to an object whose class did not declare it");
126
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
127
+ };
128
+ var __classPrivateFieldGet = (undefined && undefined.__classPrivateFieldGet) || function (receiver, state, kind, f) {
129
+ if (kind === "a" && !f)
130
+ throw new TypeError("Private accessor was defined without a getter");
131
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver))
132
+ throw new TypeError("Cannot read private member from an object whose class did not declare it");
133
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
134
+ };
135
+ var _GxIdeKbManagerExport_instances, _GxIdeKbManagerExport_addKbDescriptionEl, _GxIdeKbManagerExport_componentLocale, _GxIdeKbManagerExport_animateEmptyState, _GxIdeKbManagerExport_exportAllEl, _GxIdeKbManagerExport_fileNameEl, _GxIdeKbManagerExport_kBPropertiesData, _GxIdeKbManagerExport_objectTypesMap, _GxIdeKbManagerExport_objectsSet, _GxIdeKbManagerExport_addKBPropertiesCallbackHandler, _GxIdeKbManagerExport_addObjectsCallbackHandler, _GxIdeKbManagerExport_addReferencesCallbackHandler, _GxIdeKbManagerExport_cancelCallbackHandler, _GxIdeKbManagerExport_clearButtonHandler, _GxIdeKbManagerExport_evaluateContentToDisplay, _GxIdeKbManagerExport_evaluateObjects, _GxIdeKbManagerExport_evaluateTreeViewFilters, _GxIdeKbManagerExport_exportAllChangedHandler, _GxIdeKbManagerExport_exportCallbackHandler, _GxIdeKbManagerExport_objectsTypesArrayToMap, _GxIdeKbManagerExport_objectsTreeCheckedItemsChangedHandler, _GxIdeKbManagerExport_sortTreeItems, _GxIdeKbManagerExport_renderFooter, _GxIdeKbManagerExport_updateObjects;
136
+ const FILE_ICON = getIconPath({
137
+ category: "gemini-tools",
138
+ name: "file",
139
+ colorType: "on-elevation"
140
+ });
141
+ const SETTINGS_ICON = getIconPath({
142
+ category: "gemini-tools",
143
+ name: "settings",
144
+ colorType: "primary"
145
+ });
146
+ const GENERAL_REFERENCES_ICON = getIconPath({
147
+ category: "window-tools",
148
+ name: "references",
149
+ colorType: "neutral"
150
+ });
151
+ const MENUS_NEW_OBJECT_ICON = getIconPath({
152
+ category: "menus",
153
+ name: "new-object",
154
+ colorType: "on-primary"
155
+ });
156
+ const TREE_VIEW_ICON = getIconPath({
157
+ category: "controls",
158
+ name: "treeview"
159
+ });
160
+ const CHECKBOX_CHECKED_VALUE = "true";
160
161
  const CSS_BUNDLES = [
161
162
  "resets/box-sizing",
162
- "utils/form",
163
- "utils/layout",
164
- "utils/typography",
165
163
  "components/button",
166
164
  "components/checkbox",
167
165
  "components/edit",
168
- "components/tree-view"
166
+ "components/icon",
167
+ "components/tree-view",
168
+ "utils/form",
169
+ "utils/layout",
170
+ "utils/typography"
169
171
  ];
170
172
  const GxIdeKbManagerExport$1 = /*@__PURE__*/ proxyCustomElement(class GxIdeKbManagerExport extends HTMLElement {
171
173
  constructor() {
172
174
  super();
173
175
  this.__registerHost();
174
176
  this.__attachShadow();
175
- this.componentDidLoadEvent = createEvent(this, "componentDidLoadEvent", 7);
176
- this.componentDidRenderFirstTime = createEvent(this, "componentDidRenderFirstTime", 7);
177
- this.checkedPropertiesIds = [];
178
- this.renderedFirstTime = false;
179
- this.flattenedObjectTypes = new Map();
180
- // 7.LISTENERS //
181
- // 8.PUBLIC METHODS API //
182
- // 9.LOCAL METHODS //
183
- this.evaluateObjects = () => {
184
- var _a;
185
- this.noObjects = !!(((_a = this.treeModel) === null || _a === void 0 ? void 0 : _a.length) === 0 || !this.treeModel);
186
- };
187
- this.optionsCallbackHandler = () => {
188
- if (this.optionsCallback) {
189
- this.optionsCallback();
190
- // returns Promise<void>
191
- }
192
- };
193
- this.addKBPropertiesCallbackHandler = async (e) => {
194
- const checked = e.detail.value;
195
- this.addKbPropertiesIsChecked = checked;
196
- if (checked && this.addKBPropertiesCallback) {
197
- this.kBPropertiesData = await this.addKBPropertiesCallback();
198
- if (this.kBPropertiesData.length === 0) ;
199
- else {
200
- // 'convertObjectDataToTreeItemData' can be used for converting KBPropertiesData as well, because the two types share the same properties
201
- const newTreeModel = convertKbPropertiesDataToTreeItemData(this.kBPropertiesData, this.kbPropertiesTypes, this.treeModel);
202
- this.treeModel = newTreeModel;
177
+ _GxIdeKbManagerExport_instances.add(this);
178
+ _GxIdeKbManagerExport_addKbDescriptionEl.set(this, void 0);
179
+ _GxIdeKbManagerExport_componentLocale.set(this, void 0);
180
+ _GxIdeKbManagerExport_animateEmptyState.set(this, false);
181
+ _GxIdeKbManagerExport_exportAllEl.set(this, void 0);
182
+ _GxIdeKbManagerExport_fileNameEl.set(this, void 0);
183
+ _GxIdeKbManagerExport_kBPropertiesData.set(this, void 0);
184
+ /**
185
+ * Stores the object types information (name, and icon)
186
+ */
187
+ // eslint-disable-next-line @stencil-community/own-props-must-be-private
188
+ _GxIdeKbManagerExport_objectTypesMap.set(this, new Map());
189
+ /**
190
+ * Stores the object's id that have been added.
191
+ */
192
+ // eslint-disable-next-line @stencil-community/own-props-must-be-private
193
+ _GxIdeKbManagerExport_objectsSet.set(this, new Set());
194
+ _GxIdeKbManagerExport_addKBPropertiesCallbackHandler.set(this, async (e) => {
195
+ this.addKbPropertiesIsChecked =
196
+ e.detail.target.value === CHECKBOX_CHECKED_VALUE;
197
+ if (this.addKbPropertiesIsChecked) {
198
+ __classPrivateFieldSet(this, _GxIdeKbManagerExport_kBPropertiesData, await this.addKBPropertiesCallback(), "f");
199
+ if (__classPrivateFieldGet(this, _GxIdeKbManagerExport_kBPropertiesData, "f").length) {
200
+ this.objectsTreeViewModel = convertKbPropertiesDataToTreeItemData(__classPrivateFieldGet(this, _GxIdeKbManagerExport_kBPropertiesData, "f"), this.kbPropertiesTypes, this.objectsTreeViewModel);
203
201
  }
204
202
  }
205
- else if (!checked) {
203
+ else {
206
204
  // previous properties (if any) should be removed
207
- const objectsWithoutProperties = clearKbPropertiesFromTree(this.kBPropertiesData, this.treeModel);
208
- this.treeModel = objectsWithoutProperties;
205
+ this.objectsTreeViewModel = clearKbPropertiesFromTree(this.objectsTreeViewModel);
209
206
  }
210
- };
211
- this.addObjectsCallbackHandler = async () => {
212
- if (this.addObjectsCallback) {
213
- const objects = await this.addObjectsCallback();
214
- this.updateObjects(objects);
207
+ });
208
+ _GxIdeKbManagerExport_addObjectsCallbackHandler.set(this, async () => {
209
+ __classPrivateFieldGet(this, _GxIdeKbManagerExport_exportAllEl, "f").value = undefined;
210
+ this.exportAllIsChecked = false;
211
+ const addedObjects = await this.addObjectsCallback();
212
+ __classPrivateFieldGet(this, _GxIdeKbManagerExport_updateObjects, "f").call(this, addedObjects);
213
+ });
214
+ _GxIdeKbManagerExport_addReferencesCallbackHandler.set(this, async () => {
215
+ const objects = await this.addReferencesCallback(this.checkedObjectsIds);
216
+ __classPrivateFieldGet(this, _GxIdeKbManagerExport_updateObjects, "f").call(this, objects);
217
+ });
218
+ _GxIdeKbManagerExport_cancelCallbackHandler.set(this, async () => {
219
+ const cancelled = await this.cancelCallback();
220
+ if (cancelled) {
221
+ this.exportingIsInProcess = false;
215
222
  }
216
- };
217
- this.addReferencesCallbackHandler = async () => {
218
- if (this.addReferencesCallback) {
219
- const objects = await this.addReferencesCallback(this.checkedObjectsIds);
220
- this.updateObjects(objects);
223
+ });
224
+ _GxIdeKbManagerExport_clearButtonHandler.set(this, () => {
225
+ this.objectsTreeViewModel = [];
226
+ __classPrivateFieldGet(this, _GxIdeKbManagerExport_objectsSet, "f").clear();
227
+ __classPrivateFieldGet(this, _GxIdeKbManagerExport_addKbDescriptionEl, "f").value = undefined;
228
+ __classPrivateFieldGet(this, _GxIdeKbManagerExport_exportAllEl, "f").value = undefined;
229
+ });
230
+ _GxIdeKbManagerExport_evaluateContentToDisplay.set(this, () => {
231
+ // Nothing to display on the tree-view
232
+ if (!this.hasObjects && !this.exportAllIsChecked) {
233
+ return (h("gx-ide-empty-state", { isAnimated: __classPrivateFieldGet(this, _GxIdeKbManagerExport_animateEmptyState, "f"), stateTitle: __classPrivateFieldGet(this, _GxIdeKbManagerExport_componentLocale, "f").main.noObjectsToDisplay, key: "no-objects-empty-state" }, h("button", { class: "button-primary", onClick: __classPrivateFieldGet(this, _GxIdeKbManagerExport_addObjectsCallbackHandler, "f") }, __classPrivateFieldGet(this, _GxIdeKbManagerExport_componentLocale, "f").main.beginByADdingSomeObjects)));
221
234
  }
222
- };
223
- /*
224
- * Used to update objects. Objects are updated when calling the 'addObjectsCallback' or 'addReferencesCallback'
225
- */
226
- this.updateObjects = (objects) => {
227
- if (objects.length) {
228
- const newTreeModel = updateTreeModelWithObjects(objects, this.flattenedObjectTypes, this.treeModel);
229
- this.treeModel = newTreeModel;
235
+ else {
236
+ __classPrivateFieldSet(this, _GxIdeKbManagerExport_animateEmptyState, true, "f"); // improve performance if is first render
230
237
  }
231
- };
232
- /*
233
- * Update checked objects 'checkedObjectsArray' array. Used for the 'addReferencesCallback'
234
- */
235
- this.objectsTreeCheckedItemsChangedHandler = (event) => {
238
+ if (this.exportAllIsChecked) {
239
+ return (h("gx-ide-empty-state", { isAnimated: __classPrivateFieldGet(this, _GxIdeKbManagerExport_animateEmptyState, "f"), stateIconSrc: TREE_VIEW_ICON, stateTitle: __classPrivateFieldGet(this, _GxIdeKbManagerExport_componentLocale, "f").main.exportAllMessage, key: "exporting-all-empty-state" }));
240
+ }
241
+ else {
242
+ __classPrivateFieldSet(this, _GxIdeKbManagerExport_animateEmptyState, true, "f"); // improve performance if is first render
243
+ }
244
+ return (h("ch-tree-view-render", { class: "tree-view", checkbox: true, checked: true, dragDisabled: true, dropDisabled: true, filter: __classPrivateFieldGet(this, _GxIdeKbManagerExport_evaluateTreeViewFilters, "f").call(this), filterType: this.addKbPropertiesIsChecked && !this.exportAllIsChecked
245
+ ? "none"
246
+ : "metadata", model: this.objectsTreeViewModel, showLines: "last", toggleCheckboxes: true, sortItemsCallback: __classPrivateFieldGet(this, _GxIdeKbManagerExport_sortTreeItems, "f"), onCheckedItemsChange: __classPrivateFieldGet(this, _GxIdeKbManagerExport_objectsTreeCheckedItemsChangedHandler, "f") }));
247
+ });
248
+ _GxIdeKbManagerExport_evaluateObjects.set(this, () => {
249
+ this.hasObjects =
250
+ this.objectsTreeViewModel && this.objectsTreeViewModel.length > 0;
251
+ });
252
+ _GxIdeKbManagerExport_evaluateTreeViewFilters.set(this, () => {
253
+ if (this.addKbPropertiesIsChecked && this.exportAllIsChecked) {
254
+ return KB_PROPERTY; // only show properties
255
+ }
256
+ if (!this.addKbPropertiesIsChecked && !this.exportAllIsChecked) {
257
+ return KB_OBJECT; // only show objects
258
+ }
259
+ return "none";
260
+ });
261
+ _GxIdeKbManagerExport_exportAllChangedHandler.set(this, (event) => {
262
+ this.exportAllIsChecked = event.detail.target.value !== "undefined";
263
+ });
264
+ _GxIdeKbManagerExport_exportCallbackHandler.set(this, async () => {
265
+ this.exportingIsInProcess = true;
266
+ const fileName = __classPrivateFieldGet(this, _GxIdeKbManagerExport_fileNameEl, "f").value;
267
+ const checkedKbPropertiesIds = this.addKbPropertiesIsChecked
268
+ ? this.checkedPropertiesIds
269
+ : [];
270
+ const checkedObjectIds = this.exportAllIsChecked
271
+ ? undefined
272
+ : this.checkedObjectsIds;
273
+ this.exportCallback(fileName, checkedKbPropertiesIds, checkedObjectIds).then(() => {
274
+ this.exportingIsInProcess = false;
275
+ });
276
+ // returns Promise<boolean> but no procedure was detailed on the spec.
277
+ });
278
+ _GxIdeKbManagerExport_objectsTreeCheckedItemsChangedHandler.set(this, (event) => {
236
279
  // filter 'checked objects' and 'checked properties' ids
237
280
  const checkedObjectsIds = [];
238
281
  const checkedPropertiesIds = [];
@@ -247,197 +290,134 @@ const GxIdeKbManagerExport$1 = /*@__PURE__*/ proxyCustomElement(class GxIdeKbMan
247
290
  });
248
291
  this.checkedObjectsIds = checkedObjectsIds;
249
292
  this.checkedPropertiesIds = checkedPropertiesIds;
250
- };
251
- this.exportCallbackHandler = async () => {
252
- if (this.exportCallback) {
253
- this.exportingIsInProcess = true;
254
- const exportAllChecked = this.exportAllCheckboxEl.checked;
255
- const fileName = this.fileNameEl.value;
256
- const checkedKbPropertiesIds = this.addKbPropertiesIsChecked
257
- ? this.checkedPropertiesIds
258
- : [];
259
- const checkedObjectIds = exportAllChecked
260
- ? undefined
261
- : this.checkedObjectsIds;
262
- this.exportCallback(fileName, checkedKbPropertiesIds, checkedObjectIds).then(() => {
263
- this.exportingIsInProcess = false;
264
- });
265
- // returns Promise<boolean> but no procedure was detailed on the spec.
266
- }
267
- };
268
- this.cancelCallbackHandler = async () => {
269
- if (this.cancelCallback) {
270
- const cancelled = await this.cancelCallback();
271
- if (cancelled) {
272
- this.exportingIsInProcess = false;
293
+ this.atLeastOnePropertyItemIsChecked = this.checkedPropertiesIds.length > 0;
294
+ this.atLeastOneObjectItemIsChecked = this.checkedObjectsIds.length > 0;
295
+ });
296
+ _GxIdeKbManagerExport_sortTreeItems.set(this, (subModel) => {
297
+ // "property" items should be added on top.
298
+ // else sort alphabetically by "caption" value.
299
+ return subModel.sort((a, b) => {
300
+ if (a.metadata === "property" && b.metadata !== "property") {
301
+ return -1;
273
302
  }
274
- }
275
- };
276
- this.clearButtonHandler = () => {
277
- /* revisar*/
278
- this.objectsTreeEl.updateAllItemsProperties({ checked: false });
279
- };
280
- this.exportAllChangedHandler = (event) => {
281
- this.exportAllIsChecked = event.detail.value;
282
- };
283
- this.evaluateTreeViewFilters = () => {
284
- if (this.addKbPropertiesIsChecked && this.exportAllIsChecked) {
285
- // only show properties
286
- return KB_PROPERTY;
287
- }
288
- else if (!this.addKbPropertiesIsChecked && !this.exportAllIsChecked) {
289
- // only show objects
290
- return KB_OBJECT;
291
- }
292
- return "none"; // Applies if !this.addKbPropertiesIsChecked && this.exportAllIsChecked
293
- };
294
- this.evaluateContentToDisplay = () => {
295
- // Nothing to display on the tree-view
296
- if (this.noObjects) {
297
- return this.renderMessage(true);
298
- }
299
- // The tree should be empty, because all filters are being applied.
300
- // Display a message to prevent a white screen.
301
- if (!this.addKbPropertiesIsChecked && this.exportAllIsChecked) {
302
- return this.renderMessage(false);
303
- }
304
- return (h("ch-tree-view-render", { model: this.treeModel, dragDisabled: true, dropDisabled: true, toggleCheckboxes: true, checked: true, checkbox: true, filter: this.evaluateTreeViewFilters(), filterType: this.addKbPropertiesIsChecked && !this.exportAllIsChecked
305
- ? "none"
306
- : "metadata", onCheckedItemsChange: this.objectsTreeCheckedItemsChangedHandler, ref: el => (this.objectsTreeEl = el), "show-lines": "last", class: "tree-view" }));
307
- };
308
- this.renderMessage = (nothingToDisplay) => {
309
- return (h("gxg-text", { textAlign: config.gxgMessage.common.textAlign, padding: config.gxgMessage.common.textAlign, type: config.gxgMessage.common.type, maxWidth: config.gxgMessage.common.maxWidth, class: "gx-ide-message gx-ide-message--short", part: "referenced-by-empty-status-message" }, nothingToDisplay ? ([
310
- h("span", null, this._componentLocale.main.noObjectsToDisplay),
311
- h("gxg-text", { type: "text-link-no-line", textAlign: "center", onClick: this.addObjectsCallbackHandler }, this._componentLocale.main.beginByADdingSomeObjects)
312
- ]) : (h("span", null, this._componentLocale.main.exportAllMessage))));
313
- };
314
- this.clearButtonDisabledConditions = () => {
315
- const checkedItems = this.treeModel.filter(item => {
316
- return item.checked;
303
+ if (b.metadata === "property" && a.metadata !== "property") {
304
+ return 1;
305
+ }
306
+ return a.caption.localeCompare(b.caption);
317
307
  });
318
- return checkedItems.length === 0;
319
- };
320
- this.loaderCancelCallbackHandler = async () => {
321
- this.cancelCallbackHandler();
322
- };
323
- this.onClickCancelCallbackHandler = async () => {
324
- this.cancelCallbackHandler();
325
- };
326
- this.exportAllIsChecked = false;
308
+ });
309
+ _GxIdeKbManagerExport_renderFooter.set(this, () => {
310
+ const referencesButtonEnabled = this.atLeastOneObjectItemIsChecked;
311
+ const clearButtonEnabled = this.objectsTreeViewModel.length > 0;
312
+ return (h("footer", { class: "footer control-footer-with-border" }, h("button", { class: "button-tertiary clear-btn", disabled: !clearButtonEnabled, part: "clear-button", onClick: clearButtonEnabled && __classPrivateFieldGet(this, _GxIdeKbManagerExport_clearButtonHandler, "f") }, __classPrivateFieldGet(this, _GxIdeKbManagerExport_componentLocale, "f").footer.clearButton), h("button", { class: "button-secondary button-icon-and-text", part: "references-button", disabled: !referencesButtonEnabled, onClick: referencesButtonEnabled && __classPrivateFieldGet(this, _GxIdeKbManagerExport_addReferencesCallbackHandler, "f") }, h("ch-image", { class: "icon-sm", disabled: !referencesButtonEnabled, src: GENERAL_REFERENCES_ICON }), __classPrivateFieldGet(this, _GxIdeKbManagerExport_componentLocale, "f").footer.addReferencesButton), h("button", {
313
+ // Add button
314
+ class: "button-primary button-icon-and-text", disabled: this.exportAllIsChecked, part: "add-button", onClick: !this.exportAllIsChecked && __classPrivateFieldGet(this, _GxIdeKbManagerExport_addObjectsCallbackHandler, "f")
315
+ }, h("ch-image", { class: "icon-sm", disabled: this.exportAllIsChecked, src: MENUS_NEW_OBJECT_ICON }), __classPrivateFieldGet(this, _GxIdeKbManagerExport_componentLocale, "f").footer.addButton)));
316
+ });
317
+ _GxIdeKbManagerExport_updateObjects.set(this, (objectsDataArray) => {
318
+ if (objectsDataArray.length) {
319
+ const newObjectsTreeModel = updateObjectsTreeModel(objectsDataArray, __classPrivateFieldGet(this, _GxIdeKbManagerExport_objectTypesMap, "f"), __classPrivateFieldGet(this, _GxIdeKbManagerExport_objectsSet, "f"), this.objectsTreeViewModel);
320
+ this.objectsTreeViewModel = newObjectsTreeModel;
321
+ }
322
+ });
327
323
  this.addKbPropertiesIsChecked = false;
324
+ this.atLeastOnePropertyItemIsChecked = false;
325
+ this.atLeastOneObjectItemIsChecked = false;
328
326
  this.checkedObjectsIds = [];
329
- this.noObjects = undefined;
330
- this.treeModel = [];
327
+ this.checkedPropertiesIds = [];
328
+ this.exportAllIsChecked = false;
331
329
  this.exportingIsInProcess = false;
332
- this.displayTitle = false;
330
+ this.hasObjects = undefined;
331
+ this.objectsTreeViewModel = [];
332
+ this.addKBPropertiesCallback = undefined;
333
+ this.addObjectsCallback = undefined;
334
+ this.addReferencesCallback = undefined;
335
+ this.cancelCallback = undefined;
336
+ this.exportCallback = undefined;
337
+ this.exportFileDirectoryCallback = undefined;
333
338
  this.fileName = undefined;
334
- this.loader = false;
335
339
  this.kbPropertiesTypes = undefined;
340
+ this.loader = false;
336
341
  this.objectTypes = undefined;
337
- this.exportFileDirectoryCallback = undefined;
338
342
  this.optionsCallback = undefined;
339
- this.addKBPropertiesCallback = undefined;
340
- this.addReferencesCallback = undefined;
341
- this.addObjectsCallback = undefined;
342
- this.exportCallback = undefined;
343
- this.cancelCallback = undefined;
344
- }
345
- watchTreeModelHandler(newState) {
346
- this.noObjects = !!(newState.length === 0 || !newState);
347
343
  }
348
- watchExportingIsInProcessHandler(isExporting) {
349
- if (isExporting && this.loader) {
350
- this.loaderEl.show = true;
351
- }
352
- else if (!isExporting && this.loader) {
353
- this.loaderEl.show = false;
344
+ objectsTreeViewModelChanged(newObjectsTreeViewModel) {
345
+ this.hasObjects =
346
+ newObjectsTreeViewModel && newObjectsTreeViewModel.length > 0;
347
+ if (!this.hasObjects) {
348
+ this.atLeastOnePropertyItemIsChecked = false;
349
+ this.atLeastOneObjectItemIsChecked = false;
354
350
  }
355
351
  }
356
- watchObjectTypesHandler(newState) {
357
- this.flattenObjectTypes(newState);
352
+ objectTypesChanged(newObjectTypesArray) {
353
+ __classPrivateFieldGet(this, _GxIdeKbManagerExport_instances, "m", _GxIdeKbManagerExport_objectsTypesArrayToMap).call(this, newObjectTypesArray);
358
354
  }
359
- // 6.COMPONENT LIFECYCLE EVENTS //
360
355
  async componentWillLoad() {
361
- this._componentLocale = await Locale.getComponentStrings(this.el);
362
- this.componentDidLoadEvent.emit(true);
363
- this.evaluateObjects();
364
- this.flattenObjectTypes(this.objectTypes);
365
- }
366
- componentDidLoad() {
367
- this.fileNameEl.focus();
368
- }
369
- componentDidRender() {
370
- if (!this.renderedFirstTime) {
371
- this.componentDidRenderFirstTime.emit(this._componentLocale.componentName);
372
- this.renderedFirstTime = true;
373
- }
374
- }
375
- flattenObjectTypes(newState) {
376
- newState.forEach(objectType => {
377
- this.flattenedObjectTypes.set(objectType.id, objectType);
378
- });
356
+ __classPrivateFieldSet(this, _GxIdeKbManagerExport_componentLocale, await Locale.getComponentStrings(this.el), "f");
357
+ __classPrivateFieldGet(this, _GxIdeKbManagerExport_evaluateObjects, "f").call(this);
358
+ __classPrivateFieldGet(this, _GxIdeKbManagerExport_instances, "m", _GxIdeKbManagerExport_objectsTypesArrayToMap).call(this, this.objectTypes);
379
359
  }
380
- // 10.RENDER() FUNCTION //
381
360
  render() {
382
- return (h(Host, { class: "gx-ide-component" }, h("ch-theme", { model: CSS_BUNDLES }), h("div", { class: "gx-ide-main-wrapper" }, h("gx-ide-container", { noContentPadding: true, noHeadingPadding: true, headingPaddingTop: true, containerTitle: this.displayTitle ? this._componentLocale.componentName : null, slimmerFooter: config.gxIdeContainer.slimmerFooter }, h("header", { slot: "header", class: "header" }, h("div", { class: "header__top" }, h("gxg-form-text", { class: { "select-file-input": true }, value: this.fileName, part: "xpz-file", label: this._componentLocale.header.exportFileName, ref: el => (this.fileNameEl = el), icon: "gemini-tools/file", iconPosition: "start" }), h("gxg-buttons-container", { reduced: true, class: "export-cancel-buttons-group" }, h("gxg-button", { id: "export-kb-btn", part: "export-btn", onClick: this.exportCallbackHandler, disabled: this.noObjects }, this._componentLocale.header.exportButton), h("gxg-button", { id: "cancel-kb-export-btn", part: "cancel-button", onClick: this.onClickCancelCallbackHandler, disabled: !this.exportingIsInProcess || this.noObjects }, this._componentLocale.header.cancelButton)), h("gxg-button", { type: "secondary-icon-only", icon: "gemini-tools/settings", part: "select-kb-btn", class: { "options-btn": true }, onClick: this.optionsCallbackHandler }, this._componentLocale.header.optionsButton)), h("div", { class: "header__bottom" }, h("div", { class: { "checkboxes-wrapper": true } }, h("gxg-form-checkbox", { label: this._componentLocale.main.addKnowledgeBaseDescription, onChange: this.addKBPropertiesCallbackHandler, part: "add-kb-checkbox" }), h("gxg-form-checkbox", { label: this._componentLocale.main.exportAll, part: "export-all-checkbox", ref: el => (this.exportAllCheckboxEl =
383
- el), onChange: this.exportAllChangedHandler })))), h("div", { class: {
384
- "tree-container": true,
385
- "tree-container--empty": this.noObjects ||
386
- (!this.noObjects &&
387
- this.exportAllIsChecked &&
388
- !this.addKbPropertiesIsChecked)
389
- // "tree-container--export-all": this.exportAllIsChecked
390
- } }, this.evaluateContentToDisplay()), h("gxg-text", { type: "button-like", part: "export-button", slot: "footer-start", onClick: this.clearButtonHandler, disabled: this.clearButtonDisabledConditions() }, this._componentLocale.footer.clearButton), h("gxg-button", { onClick: this.addReferencesCallbackHandler, type: "outlined-text-icon", icon: "general/references", part: "export-button", class: { "cancel-btn": true }, disabled: this.exportAllIsChecked, slot: "footer-end" }, this._componentLocale.footer.referencesButton), h("gxg-button", { type: "primary-text-icon", icon: "menus/new-object", part: "export-button", class: { "cancel-btn": true }, onClick: this.addObjectsCallbackHandler, disabled: this.exportAllIsChecked, slot: "footer-end" }, this._componentLocale.footer.addButton))), this.loader && false ? (h("gxg-ide-loader", { cancelLabel: this._componentLocale.loader.cancelLabel, container: this.el, loaderTitle: this._componentLocale.loader.title, ref: el => (this.loaderEl = el), cancelCallback: this.loaderCancelCallbackHandler })) : null));
361
+ const exportButtonEnabled = this.atLeastOnePropertyItemIsChecked ||
362
+ this.atLeastOneObjectItemIsChecked ||
363
+ this.exportAllIsChecked;
364
+ const cancelButtonEnabled = this.exportingIsInProcess;
365
+ return (h(Host, { class: "spacing-body-block-start spacing-body-inline" }, h("ch-theme", { model: CSS_BUNDLES }), h("section", { class: "section field-group" }, h("header", { class: "header" }, h("div", { class: "field field-inline export-file-name" }, h("label", { class: "label", htmlFor: "xpz-file" }, __classPrivateFieldGet(this, _GxIdeKbManagerExport_componentLocale, "f").header.exportFileName), h("ch-edit", { autoFocus: true, id: "xpz-file", class: "form-input", part: "xpz-file", value: this.fileName, startImgSrc: FILE_ICON, ref: (el) => (__classPrivateFieldSet(this, _GxIdeKbManagerExport_fileNameEl, el, "f")) })), h("div", { class: "header__buttons-container" }, h("button", { id: "export-kb-btn", class: "button-primary export-btn", part: "export-btn", disabled: !exportButtonEnabled, onClick: exportButtonEnabled && __classPrivateFieldGet(this, _GxIdeKbManagerExport_exportCallbackHandler, "f") }, __classPrivateFieldGet(this, _GxIdeKbManagerExport_componentLocale, "f").header.exportButton), h("button", { id: "cancel-kb-export-btn", class: "button-secondary cancel-btn", part: "cancel-button", disabled: !cancelButtonEnabled, onClick: cancelButtonEnabled && __classPrivateFieldGet(this, _GxIdeKbManagerExport_cancelCallbackHandler, "f") }, __classPrivateFieldGet(this, _GxIdeKbManagerExport_componentLocale, "f").header.cancelButton), h("button", { "aria-label": __classPrivateFieldGet(this, _GxIdeKbManagerExport_componentLocale, "f").header.optionsButton, title: __classPrivateFieldGet(this, _GxIdeKbManagerExport_componentLocale, "f").header.optionsButton, class: "button-tertiary button-icon-only options-btn", part: "select-kb-btn", onClick: this.optionsCallback }, h("ch-image", { class: "icon-md", src: SETTINGS_ICON }))), h("div", { class: "header__checkboxes field-group" }, h("ch-checkbox", { class: "checkbox add-kb-description", part: "add-kb-description", caption: __classPrivateFieldGet(this, _GxIdeKbManagerExport_componentLocale, "f").main.addKnowledgeBaseDescription, checkedValue: CHECKBOX_CHECKED_VALUE, onInput: __classPrivateFieldGet(this, _GxIdeKbManagerExport_addKBPropertiesCallbackHandler, "f"), ref: (el) => (__classPrivateFieldSet(this, _GxIdeKbManagerExport_addKbDescriptionEl, el, "f")) }), h("ch-checkbox", { class: "checkbox export-all", part: "export-all-checkbox", checkedValue: CHECKBOX_CHECKED_VALUE, caption: __classPrivateFieldGet(this, _GxIdeKbManagerExport_componentLocale, "f").main.exportAll, onInput: __classPrivateFieldGet(this, _GxIdeKbManagerExport_exportAllChangedHandler, "f"), ref: (el) => (__classPrivateFieldSet(this, _GxIdeKbManagerExport_exportAllEl, el, "f")) }))), h("div", { class: "main" }, __classPrivateFieldGet(this, _GxIdeKbManagerExport_evaluateContentToDisplay, "f").call(this), this.loader && this.exportingIsInProcess && (h("gx-ide-loader", { cancelLabel: __classPrivateFieldGet(this, _GxIdeKbManagerExport_componentLocale, "f").loader.cancelLabel, loaderTitle: __classPrivateFieldGet(this, _GxIdeKbManagerExport_componentLocale, "f").loader.title, cancelCallback: __classPrivateFieldGet(this, _GxIdeKbManagerExport_cancelCallbackHandler, "f"), show: true, class: "loader" }))), __classPrivateFieldGet(this, _GxIdeKbManagerExport_renderFooter, "f").call(this))));
391
366
  }
392
367
  static get assetsDirs() { return ["gx-ide-assets/kb-manager-export"]; }
393
368
  get el() { return this; }
394
369
  static get watchers() { return {
395
- "treeModel": ["watchTreeModelHandler"],
396
- "exportingIsInProcess": ["watchExportingIsInProcessHandler"],
397
- "objectTypes": ["watchObjectTypesHandler"]
370
+ "objectsTreeViewModel": ["objectsTreeViewModelChanged"],
371
+ "objectTypes": ["objectTypesChanged"]
398
372
  }; }
399
373
  static get style() { return kbManagerExportCss; }
400
374
  }, [1, "gx-ide-kb-manager-export", {
401
- "displayTitle": [4, "display-title"],
375
+ "addKBPropertiesCallback": [16],
376
+ "addObjectsCallback": [16],
377
+ "addReferencesCallback": [16],
378
+ "cancelCallback": [16],
379
+ "exportCallback": [16],
380
+ "exportFileDirectoryCallback": [16],
402
381
  "fileName": [1, "file-name"],
403
- "loader": [4],
404
382
  "kbPropertiesTypes": [16],
383
+ "loader": [4],
405
384
  "objectTypes": [16],
406
- "exportFileDirectoryCallback": [16],
407
385
  "optionsCallback": [16],
408
- "addKBPropertiesCallback": [16],
409
- "addReferencesCallback": [16],
410
- "addObjectsCallback": [16],
411
- "exportCallback": [16],
412
- "cancelCallback": [16],
413
- "exportAllIsChecked": [32],
414
386
  "addKbPropertiesIsChecked": [32],
387
+ "atLeastOnePropertyItemIsChecked": [32],
388
+ "atLeastOneObjectItemIsChecked": [32],
415
389
  "checkedObjectsIds": [32],
416
- "noObjects": [32],
417
- "treeModel": [32],
418
- "exportingIsInProcess": [32]
390
+ "checkedPropertiesIds": [32],
391
+ "exportAllIsChecked": [32],
392
+ "exportingIsInProcess": [32],
393
+ "hasObjects": [32],
394
+ "objectsTreeViewModel": [32]
419
395
  }, undefined, {
420
- "treeModel": ["watchTreeModelHandler"],
421
- "exportingIsInProcess": ["watchExportingIsInProcessHandler"],
422
- "objectTypes": ["watchObjectTypesHandler"]
396
+ "objectsTreeViewModel": ["objectsTreeViewModelChanged"],
397
+ "objectTypes": ["objectTypesChanged"]
423
398
  }]);
399
+ _GxIdeKbManagerExport_addKbDescriptionEl = new WeakMap(), _GxIdeKbManagerExport_componentLocale = new WeakMap(), _GxIdeKbManagerExport_animateEmptyState = new WeakMap(), _GxIdeKbManagerExport_exportAllEl = new WeakMap(), _GxIdeKbManagerExport_fileNameEl = new WeakMap(), _GxIdeKbManagerExport_kBPropertiesData = new WeakMap(), _GxIdeKbManagerExport_objectTypesMap = new WeakMap(), _GxIdeKbManagerExport_objectsSet = new WeakMap(), _GxIdeKbManagerExport_addKBPropertiesCallbackHandler = new WeakMap(), _GxIdeKbManagerExport_addObjectsCallbackHandler = new WeakMap(), _GxIdeKbManagerExport_addReferencesCallbackHandler = new WeakMap(), _GxIdeKbManagerExport_cancelCallbackHandler = new WeakMap(), _GxIdeKbManagerExport_clearButtonHandler = new WeakMap(), _GxIdeKbManagerExport_evaluateContentToDisplay = new WeakMap(), _GxIdeKbManagerExport_evaluateObjects = new WeakMap(), _GxIdeKbManagerExport_evaluateTreeViewFilters = new WeakMap(), _GxIdeKbManagerExport_exportAllChangedHandler = new WeakMap(), _GxIdeKbManagerExport_exportCallbackHandler = new WeakMap(), _GxIdeKbManagerExport_objectsTreeCheckedItemsChangedHandler = new WeakMap(), _GxIdeKbManagerExport_sortTreeItems = new WeakMap(), _GxIdeKbManagerExport_renderFooter = new WeakMap(), _GxIdeKbManagerExport_updateObjects = new WeakMap(), _GxIdeKbManagerExport_instances = new WeakSet(), _GxIdeKbManagerExport_objectsTypesArrayToMap = function _GxIdeKbManagerExport_objectsTypesArrayToMap(objectTypesArray) {
400
+ objectTypesArray.forEach(objectType => {
401
+ __classPrivateFieldGet(this, _GxIdeKbManagerExport_objectTypesMap, "f").set(objectType.id, objectType);
402
+ });
403
+ };
424
404
  function defineCustomElement$1() {
425
405
  if (typeof customElements === "undefined") {
426
406
  return;
427
407
  }
428
- const components = ["gx-ide-kb-manager-export", "gx-ide-container", "gx-ide-title"];
408
+ const components = ["gx-ide-kb-manager-export", "gx-ide-empty-state", "gx-ide-loader"];
429
409
  components.forEach(tagName => { switch (tagName) {
430
410
  case "gx-ide-kb-manager-export":
431
411
  if (!customElements.get(tagName)) {
432
412
  customElements.define(tagName, GxIdeKbManagerExport$1);
433
413
  }
434
414
  break;
435
- case "gx-ide-container":
415
+ case "gx-ide-empty-state":
436
416
  if (!customElements.get(tagName)) {
437
417
  defineCustomElement$3();
438
418
  }
439
419
  break;
440
- case "gx-ide-title":
420
+ case "gx-ide-loader":
441
421
  if (!customElements.get(tagName)) {
442
422
  defineCustomElement$2();
443
423
  }