@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,34 +1,13 @@
1
- import { r as registerInstance, c as createEvent, h, H as Host, g as getElement } from './index-27c691bc.js';
1
+ import { r as registerInstance, h, H as Host, g as getElement } from './index-27c691bc.js';
2
2
  import { L as Locale } from './locale-3c32f251.js';
3
- import { c as config } from './config-6cfbb06f.js';
3
+ import { g as getIconPath } from './assets-manager-120996e9.js';
4
4
 
5
5
  const KB_PROPERTY = "property";
6
6
  const KB_OBJECT = "object";
7
- /*
8
- INDEX:
9
- 1. getObjectIcon
10
- 2. convertObjectTypeToTreeItem
11
- 3. convertObjectToTreeItem
12
- 4. getObjectType
13
- 5. findObjectInTree
14
- 6. findPropertyInTree
15
- 7. convertPropertyToTreeItem
16
- 8. updateTreeModelWithObjects
17
- 9. convertKbPropertiesDataToTreeItemData
18
- 10. clearKbPropertiesFromTree
19
- */
20
- /* 1.2 getIcon (for properties)*/
21
- const getPropertyIcon = (typeId, kbPropertiesTypes) => {
22
- // The object icon has to be retrieved from the ObjetTypes array, by matching the ObjectData typeId with the ObjectType id.
23
- const propertyType = kbPropertiesTypes.find(propertyType => propertyType.id === typeId);
24
- if (propertyType) {
25
- return propertyType.icon;
26
- }
27
- else {
28
- return undefined;
29
- }
30
- };
31
- /* 2. convertObjectTypeToTreeItem*/
7
+ const getPropertyIcon = (typeId, kbPropertiesTypes) =>
8
+ // The object icon has to be retrieved from the ObjectTypes array, by
9
+ // matching the ObjectData typeId with the ObjectType id
10
+ kbPropertiesTypes.find(propertyType => propertyType.id === typeId).icon;
32
11
  const convertObjectTypeToTreeItem = (objectType) => ({
33
12
  caption: objectType.name,
34
13
  id: objectType.id,
@@ -38,7 +17,6 @@ const convertObjectTypeToTreeItem = (objectType) => ({
38
17
  expanded: true,
39
18
  items: []
40
19
  });
41
- /* 3. convertObjectToTreeItem*/
42
20
  const convertObjectToTreeItem = (object, objectTypes) => ({
43
21
  caption: object.name,
44
22
  id: object.id,
@@ -47,42 +25,6 @@ const convertObjectToTreeItem = (object, objectTypes) => ({
47
25
  metadata: KB_OBJECT,
48
26
  leaf: true
49
27
  });
50
- /* 5. findObjectInTree*/
51
- const findObjectInTree = (object, actualTreeState) => {
52
- var _a;
53
- const objectTreeItemInfo = {
54
- objectExists: false,
55
- objectTypeIndex: -1
56
- };
57
- if (actualTreeState) {
58
- const objectTypeTreeItemIndex = actualTreeState.findIndex(objectTypeTreeItem => {
59
- return objectTypeTreeItem.id === object.typeId;
60
- });
61
- if (objectTypeTreeItemIndex !== -1) {
62
- objectTreeItemInfo.objectTypeIndex = objectTypeTreeItemIndex;
63
- // objectType exists as a node in the actual tree.
64
- // Now try to find the object
65
- const objectFound = (_a = actualTreeState[objectTypeTreeItemIndex].items) === null || _a === void 0 ? void 0 : _a.find(objectTreeItem => {
66
- return objectTreeItem.id === object.id;
67
- });
68
- if (objectFound) {
69
- objectTreeItemInfo.objectExists = true;
70
- }
71
- }
72
- }
73
- return objectTreeItemInfo;
74
- };
75
- /* 6. findPropertyInTree */
76
- const findPropertyInTree = (property, updatedTreeData) => {
77
- const found = updatedTreeData.find(node => {
78
- return node.id === property.id;
79
- });
80
- if (found) {
81
- return true;
82
- }
83
- return false;
84
- };
85
- /* 7. convertPropertyToTreeItem */
86
28
  const convertPropertyToTreeItem = (property, kbPropertiesTypes) => ({
87
29
  caption: property.name,
88
30
  id: property.id,
@@ -91,144 +33,245 @@ const convertPropertyToTreeItem = (property, kbPropertiesTypes) => ({
91
33
  metadata: KB_PROPERTY,
92
34
  leaf: true
93
35
  });
94
- /* 8. updateTreeModelWithObjects*/
95
- const updateTreeModelWithObjects = (objects, objectTypes, actualTreeState) => {
96
- const updatedTreeData = [...actualTreeState];
36
+ /**
37
+ * Updates the tree model with the provided objects.
38
+ * Objects may already exist and are placed under their parent node.
39
+ * If the parent node doesn't exist (identified by typeId on ObjectTypes),
40
+ * it is created and added at the bottom.
41
+ *
42
+ * @param {ObjectData[] | undefined} objects - The array of objects to update.
43
+ * @param {Map<string, ObjectType>} objectTypesMap - A map of object types by ID.
44
+ * @param {Set<string>} objectsSet - A set of existing object IDs.
45
+ * @param {TreeViewModel} actualTreeState - The current tree state to be updated.
46
+ * @returns {TreeViewModel} - The updated tree view model.
47
+ */
48
+ const updateObjectsTreeModel = (objects, objectTypesMap, objectsSet, actualTreeState) => {
97
49
  if (!objects) {
98
- // nothing to do
99
- return updatedTreeData;
50
+ return [...actualTreeState];
100
51
  }
52
+ const updatedTreeData = [...actualTreeState];
101
53
  objects.forEach(object => {
102
54
  // objects that already exists in the actual actualTreeState should not be added.
103
- // We can find the object in the actual actualTreeState.
104
- const objectTreeItemInfo = findObjectInTree(object, updatedTreeData);
105
- if (!objectTreeItemInfo.objectExists) {
106
- // object does not exists in actualTreeState
107
- // if the objectType tree node exists, insert inside.
108
- // if the objectType tree node does not exists, create object type node first.
109
- if (objectTreeItemInfo.objectTypeIndex === -1) {
110
- const objectType = objectTypes.get(object.typeId);
111
- if (objectType !== undefined) {
112
- const objectTypeTreeItem = convertObjectTypeToTreeItem(objectType);
113
- objectTreeItemInfo.objectTypeIndex =
114
- updatedTreeData.push(objectTypeTreeItem) - 1;
115
- }
55
+ if (objectsSet.has(object.id)) {
56
+ // object already exists
57
+ return;
58
+ }
59
+ const objectTreeItem = convertObjectToTreeItem(object, objectTypesMap);
60
+ // TODO: Improve the algorithm efficiency. This check visits potentially all nodes
61
+ // from the TreeViewModel on each iteration. Using a Map to pre-store the TreeView
62
+ // nodes would improve efficiency.
63
+ const objectTypeTreeItemIndex = updatedTreeData.findIndex(treeItem => treeItem.id === object.typeId);
64
+ if (objectTypeTreeItemIndex === -1) {
65
+ // Create and add new object type tree item
66
+ const objectType = objectTypesMap.get(object.typeId);
67
+ if (objectType) {
68
+ const objectTypeTreeItem = convertObjectTypeToTreeItem(objectType);
69
+ objectTypeTreeItem.items.push(objectTreeItem);
70
+ updatedTreeData.push(objectTypeTreeItem);
116
71
  }
117
- const objectAsTreeItem = convertObjectToTreeItem(object, objectTypes);
118
- // insert object in tree (under the object type tree node)
119
- updatedTreeData[objectTreeItemInfo.objectTypeIndex].items.push(objectAsTreeItem);
120
72
  }
73
+ else {
74
+ // objectType exists already. insert object as children of the object type tree item.
75
+ updatedTreeData[objectTypeTreeItemIndex].items.push(objectTreeItem);
76
+ }
77
+ objectsSet.add(object.id);
121
78
  });
122
79
  return updatedTreeData;
123
80
  };
124
- /* 9. convertKbPropertiesDataToTreeItemData*/
81
+ /**
82
+ * Converts an array of KB properties data into tree item data for a tree view.
83
+ *
84
+ * @param {KBPropertyData[]} properties - The array of KB property data.
85
+ * @param {KBPropertyType[]} kbPropertiesTypes - The array of KB property types.
86
+ * @param {TreeViewModel} actualTreeState - The current state of the tree.
87
+ * @returns {TreeViewModel} - The updated tree view item models.
88
+ */
125
89
  const convertKbPropertiesDataToTreeItemData = (properties, kbPropertiesTypes, actualTreeState) => {
126
- const updatedTreeData = [...actualTreeState];
127
90
  if (!properties) {
128
- // nothing to do
129
- return updatedTreeData;
91
+ return [...actualTreeState];
130
92
  }
93
+ const updatedTreeData = [...actualTreeState];
131
94
  properties.forEach(property => {
132
95
  // properties have no parent node, and they should be added at the beginning of the tree
133
- const propertyAlreadyExists = findPropertyInTree(property, updatedTreeData);
134
- if (!propertyAlreadyExists) {
135
- const propertyTreeItem = convertPropertyToTreeItem(property, kbPropertiesTypes);
136
- updatedTreeData.unshift(propertyTreeItem);
96
+ const propertyAlreadyExists = updatedTreeData.find(node => node.id === property.id) !== undefined;
97
+ if (propertyAlreadyExists) {
98
+ return;
137
99
  }
100
+ const propertyTreeItem = convertPropertyToTreeItem(property, kbPropertiesTypes);
101
+ updatedTreeData.unshift(propertyTreeItem);
138
102
  });
139
103
  return updatedTreeData;
140
104
  };
141
- /* 10. clearKbPropertiesFromTree*/
142
- const clearKbPropertiesFromTree = (kBPropertiesData, actualTreeState) => {
143
- if (!(actualTreeState.length > 0)) {
144
- // nothing to do.
145
- return [];
146
- }
147
- const kBPropertiesDataIds = kBPropertiesData.map(property => {
148
- return property.id;
149
- });
150
- const treeModelWithoutKbProperties = actualTreeState.filter(item => {
151
- return !kBPropertiesDataIds.includes(item.id);
152
- });
153
- return treeModelWithoutKbProperties;
154
- };
105
+ /**
106
+ * Removes properties from the tree model.
107
+ *
108
+ * @param {TreeViewModel} actualTreeState - The current state of the tree,
109
+ * containing various tree view items.
110
+ * @returns {TreeViewModel} - A new array of tree view items that excludes
111
+ * any items with metadata of type `KB_PROPERTY`.
112
+ */
113
+ const clearKbPropertiesFromTree = (actualTreeState) => actualTreeState.filter(item => item.metadata !== KB_PROPERTY);
155
114
 
156
- 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%}";
115
+ 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}";
157
116
 
117
+ var __classPrivateFieldSet = (undefined && undefined.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
118
+ if (kind === "m")
119
+ throw new TypeError("Private method is not writable");
120
+ if (kind === "a" && !f)
121
+ throw new TypeError("Private accessor was defined without a setter");
122
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver))
123
+ throw new TypeError("Cannot write private member to an object whose class did not declare it");
124
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
125
+ };
126
+ var __classPrivateFieldGet = (undefined && undefined.__classPrivateFieldGet) || function (receiver, state, kind, f) {
127
+ if (kind === "a" && !f)
128
+ throw new TypeError("Private accessor was defined without a getter");
129
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver))
130
+ throw new TypeError("Cannot read private member from an object whose class did not declare it");
131
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
132
+ };
133
+ 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;
134
+ const FILE_ICON = getIconPath({
135
+ category: "gemini-tools",
136
+ name: "file",
137
+ colorType: "on-elevation"
138
+ });
139
+ const SETTINGS_ICON = getIconPath({
140
+ category: "gemini-tools",
141
+ name: "settings",
142
+ colorType: "primary"
143
+ });
144
+ const GENERAL_REFERENCES_ICON = getIconPath({
145
+ category: "window-tools",
146
+ name: "references",
147
+ colorType: "neutral"
148
+ });
149
+ const MENUS_NEW_OBJECT_ICON = getIconPath({
150
+ category: "menus",
151
+ name: "new-object",
152
+ colorType: "on-primary"
153
+ });
154
+ const TREE_VIEW_ICON = getIconPath({
155
+ category: "controls",
156
+ name: "treeview"
157
+ });
158
+ const CHECKBOX_CHECKED_VALUE = "true";
158
159
  const CSS_BUNDLES = [
159
160
  "resets/box-sizing",
160
- "utils/form",
161
- "utils/layout",
162
- "utils/typography",
163
161
  "components/button",
164
162
  "components/checkbox",
165
163
  "components/edit",
166
- "components/tree-view"
164
+ "components/icon",
165
+ "components/tree-view",
166
+ "utils/form",
167
+ "utils/layout",
168
+ "utils/typography"
167
169
  ];
168
170
  const GxIdeKbManagerExport = class {
169
171
  constructor(hostRef) {
170
172
  registerInstance(this, hostRef);
171
- this.componentDidLoadEvent = createEvent(this, "componentDidLoadEvent", 7);
172
- this.componentDidRenderFirstTime = createEvent(this, "componentDidRenderFirstTime", 7);
173
- this.checkedPropertiesIds = [];
174
- this.renderedFirstTime = false;
175
- this.flattenedObjectTypes = new Map();
176
- // 7.LISTENERS //
177
- // 8.PUBLIC METHODS API //
178
- // 9.LOCAL METHODS //
179
- this.evaluateObjects = () => {
180
- var _a;
181
- this.noObjects = !!(((_a = this.treeModel) === null || _a === void 0 ? void 0 : _a.length) === 0 || !this.treeModel);
182
- };
183
- this.optionsCallbackHandler = () => {
184
- if (this.optionsCallback) {
185
- this.optionsCallback();
186
- // returns Promise<void>
187
- }
188
- };
189
- this.addKBPropertiesCallbackHandler = async (e) => {
190
- const checked = e.detail.value;
191
- this.addKbPropertiesIsChecked = checked;
192
- if (checked && this.addKBPropertiesCallback) {
193
- this.kBPropertiesData = await this.addKBPropertiesCallback();
194
- if (this.kBPropertiesData.length === 0) ;
195
- else {
196
- // 'convertObjectDataToTreeItemData' can be used for converting KBPropertiesData as well, because the two types share the same properties
197
- const newTreeModel = convertKbPropertiesDataToTreeItemData(this.kBPropertiesData, this.kbPropertiesTypes, this.treeModel);
198
- this.treeModel = newTreeModel;
173
+ _GxIdeKbManagerExport_instances.add(this);
174
+ _GxIdeKbManagerExport_addKbDescriptionEl.set(this, void 0);
175
+ _GxIdeKbManagerExport_componentLocale.set(this, void 0);
176
+ _GxIdeKbManagerExport_animateEmptyState.set(this, false);
177
+ _GxIdeKbManagerExport_exportAllEl.set(this, void 0);
178
+ _GxIdeKbManagerExport_fileNameEl.set(this, void 0);
179
+ _GxIdeKbManagerExport_kBPropertiesData.set(this, void 0);
180
+ /**
181
+ * Stores the object types information (name, and icon)
182
+ */
183
+ // eslint-disable-next-line @stencil-community/own-props-must-be-private
184
+ _GxIdeKbManagerExport_objectTypesMap.set(this, new Map());
185
+ /**
186
+ * Stores the object's id that have been added.
187
+ */
188
+ // eslint-disable-next-line @stencil-community/own-props-must-be-private
189
+ _GxIdeKbManagerExport_objectsSet.set(this, new Set());
190
+ _GxIdeKbManagerExport_addKBPropertiesCallbackHandler.set(this, async (e) => {
191
+ this.addKbPropertiesIsChecked =
192
+ e.detail.target.value === CHECKBOX_CHECKED_VALUE;
193
+ if (this.addKbPropertiesIsChecked) {
194
+ __classPrivateFieldSet(this, _GxIdeKbManagerExport_kBPropertiesData, await this.addKBPropertiesCallback(), "f");
195
+ if (__classPrivateFieldGet(this, _GxIdeKbManagerExport_kBPropertiesData, "f").length) {
196
+ this.objectsTreeViewModel = convertKbPropertiesDataToTreeItemData(__classPrivateFieldGet(this, _GxIdeKbManagerExport_kBPropertiesData, "f"), this.kbPropertiesTypes, this.objectsTreeViewModel);
199
197
  }
200
198
  }
201
- else if (!checked) {
199
+ else {
202
200
  // previous properties (if any) should be removed
203
- const objectsWithoutProperties = clearKbPropertiesFromTree(this.kBPropertiesData, this.treeModel);
204
- this.treeModel = objectsWithoutProperties;
201
+ this.objectsTreeViewModel = clearKbPropertiesFromTree(this.objectsTreeViewModel);
205
202
  }
206
- };
207
- this.addObjectsCallbackHandler = async () => {
208
- if (this.addObjectsCallback) {
209
- const objects = await this.addObjectsCallback();
210
- this.updateObjects(objects);
203
+ });
204
+ _GxIdeKbManagerExport_addObjectsCallbackHandler.set(this, async () => {
205
+ __classPrivateFieldGet(this, _GxIdeKbManagerExport_exportAllEl, "f").value = undefined;
206
+ this.exportAllIsChecked = false;
207
+ const addedObjects = await this.addObjectsCallback();
208
+ __classPrivateFieldGet(this, _GxIdeKbManagerExport_updateObjects, "f").call(this, addedObjects);
209
+ });
210
+ _GxIdeKbManagerExport_addReferencesCallbackHandler.set(this, async () => {
211
+ const objects = await this.addReferencesCallback(this.checkedObjectsIds);
212
+ __classPrivateFieldGet(this, _GxIdeKbManagerExport_updateObjects, "f").call(this, objects);
213
+ });
214
+ _GxIdeKbManagerExport_cancelCallbackHandler.set(this, async () => {
215
+ const cancelled = await this.cancelCallback();
216
+ if (cancelled) {
217
+ this.exportingIsInProcess = false;
218
+ }
219
+ });
220
+ _GxIdeKbManagerExport_clearButtonHandler.set(this, () => {
221
+ this.objectsTreeViewModel = [];
222
+ __classPrivateFieldGet(this, _GxIdeKbManagerExport_objectsSet, "f").clear();
223
+ __classPrivateFieldGet(this, _GxIdeKbManagerExport_addKbDescriptionEl, "f").value = undefined;
224
+ __classPrivateFieldGet(this, _GxIdeKbManagerExport_exportAllEl, "f").value = undefined;
225
+ });
226
+ _GxIdeKbManagerExport_evaluateContentToDisplay.set(this, () => {
227
+ // Nothing to display on the tree-view
228
+ if (!this.hasObjects && !this.exportAllIsChecked) {
229
+ 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)));
211
230
  }
212
- };
213
- this.addReferencesCallbackHandler = async () => {
214
- if (this.addReferencesCallback) {
215
- const objects = await this.addReferencesCallback(this.checkedObjectsIds);
216
- this.updateObjects(objects);
231
+ else {
232
+ __classPrivateFieldSet(this, _GxIdeKbManagerExport_animateEmptyState, true, "f"); // improve performance if is first render
217
233
  }
218
- };
219
- /*
220
- * Used to update objects. Objects are updated when calling the 'addObjectsCallback' or 'addReferencesCallback'
221
- */
222
- this.updateObjects = (objects) => {
223
- if (objects.length) {
224
- const newTreeModel = updateTreeModelWithObjects(objects, this.flattenedObjectTypes, this.treeModel);
225
- this.treeModel = newTreeModel;
234
+ if (this.exportAllIsChecked) {
235
+ 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" }));
226
236
  }
227
- };
228
- /*
229
- * Update checked objects 'checkedObjectsArray' array. Used for the 'addReferencesCallback'
230
- */
231
- this.objectsTreeCheckedItemsChangedHandler = (event) => {
237
+ else {
238
+ __classPrivateFieldSet(this, _GxIdeKbManagerExport_animateEmptyState, true, "f"); // improve performance if is first render
239
+ }
240
+ 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
241
+ ? "none"
242
+ : "metadata", model: this.objectsTreeViewModel, showLines: "last", toggleCheckboxes: true, sortItemsCallback: __classPrivateFieldGet(this, _GxIdeKbManagerExport_sortTreeItems, "f"), onCheckedItemsChange: __classPrivateFieldGet(this, _GxIdeKbManagerExport_objectsTreeCheckedItemsChangedHandler, "f") }));
243
+ });
244
+ _GxIdeKbManagerExport_evaluateObjects.set(this, () => {
245
+ this.hasObjects =
246
+ this.objectsTreeViewModel && this.objectsTreeViewModel.length > 0;
247
+ });
248
+ _GxIdeKbManagerExport_evaluateTreeViewFilters.set(this, () => {
249
+ if (this.addKbPropertiesIsChecked && this.exportAllIsChecked) {
250
+ return KB_PROPERTY; // only show properties
251
+ }
252
+ if (!this.addKbPropertiesIsChecked && !this.exportAllIsChecked) {
253
+ return KB_OBJECT; // only show objects
254
+ }
255
+ return "none";
256
+ });
257
+ _GxIdeKbManagerExport_exportAllChangedHandler.set(this, (event) => {
258
+ this.exportAllIsChecked = event.detail.target.value !== "undefined";
259
+ });
260
+ _GxIdeKbManagerExport_exportCallbackHandler.set(this, async () => {
261
+ this.exportingIsInProcess = true;
262
+ const fileName = __classPrivateFieldGet(this, _GxIdeKbManagerExport_fileNameEl, "f").value;
263
+ const checkedKbPropertiesIds = this.addKbPropertiesIsChecked
264
+ ? this.checkedPropertiesIds
265
+ : [];
266
+ const checkedObjectIds = this.exportAllIsChecked
267
+ ? undefined
268
+ : this.checkedObjectsIds;
269
+ this.exportCallback(fileName, checkedKbPropertiesIds, checkedObjectIds).then(() => {
270
+ this.exportingIsInProcess = false;
271
+ });
272
+ // returns Promise<boolean> but no procedure was detailed on the spec.
273
+ });
274
+ _GxIdeKbManagerExport_objectsTreeCheckedItemsChangedHandler.set(this, (event) => {
232
275
  // filter 'checked objects' and 'checked properties' ids
233
276
  const checkedObjectsIds = [];
234
277
  const checkedPropertiesIds = [];
@@ -243,156 +286,92 @@ const GxIdeKbManagerExport = class {
243
286
  });
244
287
  this.checkedObjectsIds = checkedObjectsIds;
245
288
  this.checkedPropertiesIds = checkedPropertiesIds;
246
- };
247
- this.exportCallbackHandler = async () => {
248
- if (this.exportCallback) {
249
- this.exportingIsInProcess = true;
250
- const exportAllChecked = this.exportAllCheckboxEl.checked;
251
- const fileName = this.fileNameEl.value;
252
- const checkedKbPropertiesIds = this.addKbPropertiesIsChecked
253
- ? this.checkedPropertiesIds
254
- : [];
255
- const checkedObjectIds = exportAllChecked
256
- ? undefined
257
- : this.checkedObjectsIds;
258
- this.exportCallback(fileName, checkedKbPropertiesIds, checkedObjectIds).then(() => {
259
- this.exportingIsInProcess = false;
260
- });
261
- // returns Promise<boolean> but no procedure was detailed on the spec.
262
- }
263
- };
264
- this.cancelCallbackHandler = async () => {
265
- if (this.cancelCallback) {
266
- const cancelled = await this.cancelCallback();
267
- if (cancelled) {
268
- this.exportingIsInProcess = false;
289
+ this.atLeastOnePropertyItemIsChecked = this.checkedPropertiesIds.length > 0;
290
+ this.atLeastOneObjectItemIsChecked = this.checkedObjectsIds.length > 0;
291
+ });
292
+ _GxIdeKbManagerExport_sortTreeItems.set(this, (subModel) => {
293
+ // "property" items should be added on top.
294
+ // else sort alphabetically by "caption" value.
295
+ return subModel.sort((a, b) => {
296
+ if (a.metadata === "property" && b.metadata !== "property") {
297
+ return -1;
269
298
  }
270
- }
271
- };
272
- this.clearButtonHandler = () => {
273
- /* revisar*/
274
- this.objectsTreeEl.updateAllItemsProperties({ checked: false });
275
- };
276
- this.exportAllChangedHandler = (event) => {
277
- this.exportAllIsChecked = event.detail.value;
278
- };
279
- this.evaluateTreeViewFilters = () => {
280
- if (this.addKbPropertiesIsChecked && this.exportAllIsChecked) {
281
- // only show properties
282
- return KB_PROPERTY;
283
- }
284
- else if (!this.addKbPropertiesIsChecked && !this.exportAllIsChecked) {
285
- // only show objects
286
- return KB_OBJECT;
287
- }
288
- return "none"; // Applies if !this.addKbPropertiesIsChecked && this.exportAllIsChecked
289
- };
290
- this.evaluateContentToDisplay = () => {
291
- // Nothing to display on the tree-view
292
- if (this.noObjects) {
293
- return this.renderMessage(true);
294
- }
295
- // The tree should be empty, because all filters are being applied.
296
- // Display a message to prevent a white screen.
297
- if (!this.addKbPropertiesIsChecked && this.exportAllIsChecked) {
298
- return this.renderMessage(false);
299
- }
300
- 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
301
- ? "none"
302
- : "metadata", onCheckedItemsChange: this.objectsTreeCheckedItemsChangedHandler, ref: el => (this.objectsTreeEl = el), "show-lines": "last", class: "tree-view" }));
303
- };
304
- this.renderMessage = (nothingToDisplay) => {
305
- 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 ? ([
306
- h("span", null, this._componentLocale.main.noObjectsToDisplay),
307
- h("gxg-text", { type: "text-link-no-line", textAlign: "center", onClick: this.addObjectsCallbackHandler }, this._componentLocale.main.beginByADdingSomeObjects)
308
- ]) : (h("span", null, this._componentLocale.main.exportAllMessage))));
309
- };
310
- this.clearButtonDisabledConditions = () => {
311
- const checkedItems = this.treeModel.filter(item => {
312
- return item.checked;
299
+ if (b.metadata === "property" && a.metadata !== "property") {
300
+ return 1;
301
+ }
302
+ return a.caption.localeCompare(b.caption);
313
303
  });
314
- return checkedItems.length === 0;
315
- };
316
- this.loaderCancelCallbackHandler = async () => {
317
- this.cancelCallbackHandler();
318
- };
319
- this.onClickCancelCallbackHandler = async () => {
320
- this.cancelCallbackHandler();
321
- };
322
- this.exportAllIsChecked = false;
304
+ });
305
+ _GxIdeKbManagerExport_renderFooter.set(this, () => {
306
+ const referencesButtonEnabled = this.atLeastOneObjectItemIsChecked;
307
+ const clearButtonEnabled = this.objectsTreeViewModel.length > 0;
308
+ 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", {
309
+ // Add button
310
+ class: "button-primary button-icon-and-text", disabled: this.exportAllIsChecked, part: "add-button", onClick: !this.exportAllIsChecked && __classPrivateFieldGet(this, _GxIdeKbManagerExport_addObjectsCallbackHandler, "f")
311
+ }, h("ch-image", { class: "icon-sm", disabled: this.exportAllIsChecked, src: MENUS_NEW_OBJECT_ICON }), __classPrivateFieldGet(this, _GxIdeKbManagerExport_componentLocale, "f").footer.addButton)));
312
+ });
313
+ _GxIdeKbManagerExport_updateObjects.set(this, (objectsDataArray) => {
314
+ if (objectsDataArray.length) {
315
+ const newObjectsTreeModel = updateObjectsTreeModel(objectsDataArray, __classPrivateFieldGet(this, _GxIdeKbManagerExport_objectTypesMap, "f"), __classPrivateFieldGet(this, _GxIdeKbManagerExport_objectsSet, "f"), this.objectsTreeViewModel);
316
+ this.objectsTreeViewModel = newObjectsTreeModel;
317
+ }
318
+ });
323
319
  this.addKbPropertiesIsChecked = false;
320
+ this.atLeastOnePropertyItemIsChecked = false;
321
+ this.atLeastOneObjectItemIsChecked = false;
324
322
  this.checkedObjectsIds = [];
325
- this.noObjects = undefined;
326
- this.treeModel = [];
323
+ this.checkedPropertiesIds = [];
324
+ this.exportAllIsChecked = false;
327
325
  this.exportingIsInProcess = false;
328
- this.displayTitle = false;
326
+ this.hasObjects = undefined;
327
+ this.objectsTreeViewModel = [];
328
+ this.addKBPropertiesCallback = undefined;
329
+ this.addObjectsCallback = undefined;
330
+ this.addReferencesCallback = undefined;
331
+ this.cancelCallback = undefined;
332
+ this.exportCallback = undefined;
333
+ this.exportFileDirectoryCallback = undefined;
329
334
  this.fileName = undefined;
330
- this.loader = false;
331
335
  this.kbPropertiesTypes = undefined;
336
+ this.loader = false;
332
337
  this.objectTypes = undefined;
333
- this.exportFileDirectoryCallback = undefined;
334
338
  this.optionsCallback = undefined;
335
- this.addKBPropertiesCallback = undefined;
336
- this.addReferencesCallback = undefined;
337
- this.addObjectsCallback = undefined;
338
- this.exportCallback = undefined;
339
- this.cancelCallback = undefined;
340
339
  }
341
- watchTreeModelHandler(newState) {
342
- this.noObjects = !!(newState.length === 0 || !newState);
343
- }
344
- watchExportingIsInProcessHandler(isExporting) {
345
- if (isExporting && this.loader) {
346
- this.loaderEl.show = true;
347
- }
348
- else if (!isExporting && this.loader) {
349
- this.loaderEl.show = false;
340
+ objectsTreeViewModelChanged(newObjectsTreeViewModel) {
341
+ this.hasObjects =
342
+ newObjectsTreeViewModel && newObjectsTreeViewModel.length > 0;
343
+ if (!this.hasObjects) {
344
+ this.atLeastOnePropertyItemIsChecked = false;
345
+ this.atLeastOneObjectItemIsChecked = false;
350
346
  }
351
347
  }
352
- watchObjectTypesHandler(newState) {
353
- this.flattenObjectTypes(newState);
348
+ objectTypesChanged(newObjectTypesArray) {
349
+ __classPrivateFieldGet(this, _GxIdeKbManagerExport_instances, "m", _GxIdeKbManagerExport_objectsTypesArrayToMap).call(this, newObjectTypesArray);
354
350
  }
355
- // 6.COMPONENT LIFECYCLE EVENTS //
356
351
  async componentWillLoad() {
357
- this._componentLocale = await Locale.getComponentStrings(this.el);
358
- this.componentDidLoadEvent.emit(true);
359
- this.evaluateObjects();
360
- this.flattenObjectTypes(this.objectTypes);
361
- }
362
- componentDidLoad() {
363
- this.fileNameEl.focus();
352
+ __classPrivateFieldSet(this, _GxIdeKbManagerExport_componentLocale, await Locale.getComponentStrings(this.el), "f");
353
+ __classPrivateFieldGet(this, _GxIdeKbManagerExport_evaluateObjects, "f").call(this);
354
+ __classPrivateFieldGet(this, _GxIdeKbManagerExport_instances, "m", _GxIdeKbManagerExport_objectsTypesArrayToMap).call(this, this.objectTypes);
364
355
  }
365
- componentDidRender() {
366
- if (!this.renderedFirstTime) {
367
- this.componentDidRenderFirstTime.emit(this._componentLocale.componentName);
368
- this.renderedFirstTime = true;
369
- }
370
- }
371
- flattenObjectTypes(newState) {
372
- newState.forEach(objectType => {
373
- this.flattenedObjectTypes.set(objectType.id, objectType);
374
- });
375
- }
376
- // 10.RENDER() FUNCTION //
377
356
  render() {
378
- 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 =
379
- el), onChange: this.exportAllChangedHandler })))), h("div", { class: {
380
- "tree-container": true,
381
- "tree-container--empty": this.noObjects ||
382
- (!this.noObjects &&
383
- this.exportAllIsChecked &&
384
- !this.addKbPropertiesIsChecked)
385
- // "tree-container--export-all": this.exportAllIsChecked
386
- } }, 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));
357
+ const exportButtonEnabled = this.atLeastOnePropertyItemIsChecked ||
358
+ this.atLeastOneObjectItemIsChecked ||
359
+ this.exportAllIsChecked;
360
+ const cancelButtonEnabled = this.exportingIsInProcess;
361
+ 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))));
387
362
  }
388
363
  static get assetsDirs() { return ["gx-ide-assets/kb-manager-export"]; }
389
364
  get el() { return getElement(this); }
390
365
  static get watchers() { return {
391
- "treeModel": ["watchTreeModelHandler"],
392
- "exportingIsInProcess": ["watchExportingIsInProcessHandler"],
393
- "objectTypes": ["watchObjectTypesHandler"]
366
+ "objectsTreeViewModel": ["objectsTreeViewModelChanged"],
367
+ "objectTypes": ["objectTypesChanged"]
394
368
  }; }
395
369
  };
370
+ _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) {
371
+ objectTypesArray.forEach(objectType => {
372
+ __classPrivateFieldGet(this, _GxIdeKbManagerExport_objectTypesMap, "f").set(objectType.id, objectType);
373
+ });
374
+ };
396
375
  GxIdeKbManagerExport.style = kbManagerExportCss;
397
376
 
398
377
  export { GxIdeKbManagerExport as gx_ide_kb_manager_export };