@genexus/genexus-ide-ui 1.0.3 → 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 (83) hide show
  1. package/dist/cjs/genexus-ide-ui.cjs.js +1 -1
  2. package/dist/cjs/gx-ide-container_2.cjs.entry.js.map +1 -1
  3. package/dist/cjs/gx-ide-empty-state.cjs.entry.js +3 -2
  4. package/dist/cjs/gx-ide-empty-state.cjs.entry.js.map +1 -1
  5. package/dist/cjs/gx-ide-kb-manager-export.cjs.entry.js +272 -293
  6. package/dist/cjs/gx-ide-kb-manager-export.cjs.entry.js.map +1 -1
  7. package/dist/cjs/gx-ide-loader.cjs.entry.js +1 -1
  8. package/dist/cjs/gx-ide-loader.cjs.entry.js.map +1 -1
  9. package/dist/cjs/gx-ide-recent-news.cjs.entry.js +1 -1
  10. package/dist/cjs/gx-ide-recent-news.cjs.entry.js.map +1 -1
  11. package/dist/cjs/gx-ide-start-page.cjs.entry.js +5 -4
  12. package/dist/cjs/gx-ide-start-page.cjs.entry.js.map +1 -1
  13. package/dist/cjs/loader.cjs.js +1 -1
  14. package/dist/collection/collection-manifest.json +1 -1
  15. package/dist/collection/components/_helpers/container/container.js.map +1 -1
  16. package/dist/collection/components/_helpers/empty-state/gx-ide-empty-state.css +5 -1
  17. package/dist/collection/components/_helpers/empty-state/gx-ide-empty-state.js +20 -1
  18. package/dist/collection/components/_helpers/empty-state/gx-ide-empty-state.js.map +1 -1
  19. package/dist/collection/components/_helpers/ide-loader/ide-loader.css +3 -2
  20. package/dist/collection/components/kb-manager-export/gx-ide-assets/kb-manager-export/langs/kb-manager-export.lang.en.json +3 -3
  21. package/dist/collection/components/kb-manager-export/gx-ide-assets/kb-manager-export/langs/kb-manager-export.lang.ja.json +4 -4
  22. package/dist/collection/components/kb-manager-export/helpers.js +64 -105
  23. package/dist/collection/components/kb-manager-export/helpers.js.map +1 -1
  24. package/dist/collection/components/kb-manager-export/kb-manager-export.css +19 -618
  25. package/dist/collection/components/kb-manager-export/kb-manager-export.js +345 -377
  26. package/dist/collection/components/kb-manager-export/kb-manager-export.js.map +1 -1
  27. package/dist/collection/components/kb-manager-export/types.js +2 -0
  28. package/dist/collection/components/kb-manager-export/types.js.map +1 -0
  29. package/dist/collection/components/start-page/recent-news.js +1 -1
  30. package/dist/collection/components/start-page/recent-news.js.map +1 -1
  31. package/dist/collection/components/start-page/start-page.js +5 -4
  32. package/dist/collection/components/start-page/start-page.js.map +1 -1
  33. package/dist/components/container.js.map +1 -1
  34. package/dist/components/gx-ide-empty-state2.js +4 -2
  35. package/dist/components/gx-ide-empty-state2.js.map +1 -1
  36. package/dist/components/gx-ide-kb-manager-export.js +294 -314
  37. package/dist/components/gx-ide-kb-manager-export.js.map +1 -1
  38. package/dist/components/gx-ide-start-page.js +5 -4
  39. package/dist/components/gx-ide-start-page.js.map +1 -1
  40. package/dist/components/ide-loader.js +1 -1
  41. package/dist/components/ide-loader.js.map +1 -1
  42. package/dist/components/recent-news.js +1 -1
  43. package/dist/components/recent-news.js.map +1 -1
  44. package/dist/esm/genexus-ide-ui.js +1 -1
  45. package/dist/esm/gx-ide-container_2.entry.js.map +1 -1
  46. package/dist/esm/gx-ide-empty-state.entry.js +3 -2
  47. package/dist/esm/gx-ide-empty-state.entry.js.map +1 -1
  48. package/dist/esm/gx-ide-kb-manager-export.entry.js +273 -294
  49. package/dist/esm/gx-ide-kb-manager-export.entry.js.map +1 -1
  50. package/dist/esm/gx-ide-loader.entry.js +1 -1
  51. package/dist/esm/gx-ide-loader.entry.js.map +1 -1
  52. package/dist/esm/gx-ide-recent-news.entry.js +1 -1
  53. package/dist/esm/gx-ide-recent-news.entry.js.map +1 -1
  54. package/dist/esm/gx-ide-start-page.entry.js +5 -4
  55. package/dist/esm/gx-ide-start-page.entry.js.map +1 -1
  56. package/dist/esm/loader.js +1 -1
  57. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js +1 -1
  58. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js.map +1 -1
  59. package/dist/genexus-ide-ui/gx-ide-assets/kb-manager-export/langs/kb-manager-export.lang.en.json +3 -3
  60. package/dist/genexus-ide-ui/gx-ide-assets/kb-manager-export/langs/kb-manager-export.lang.ja.json +4 -4
  61. package/dist/genexus-ide-ui/p-2cb766ce.entry.js +493 -0
  62. package/dist/genexus-ide-ui/p-2cb766ce.entry.js.map +1 -0
  63. package/dist/genexus-ide-ui/{p-f924f02a.entry.js → p-64101478.entry.js} +2 -2
  64. package/dist/genexus-ide-ui/p-64101478.entry.js.map +1 -0
  65. package/dist/genexus-ide-ui/p-7ac25fc3.entry.js.map +1 -1
  66. package/dist/genexus-ide-ui/{p-f220c75a.entry.js → p-885302c2.entry.js} +11 -6
  67. package/dist/genexus-ide-ui/p-885302c2.entry.js.map +1 -0
  68. package/dist/genexus-ide-ui/{p-bbb30314.entry.js → p-8ff5da93.entry.js} +37 -32
  69. package/dist/genexus-ide-ui/p-8ff5da93.entry.js.map +1 -0
  70. package/dist/genexus-ide-ui/{p-cb0e11db.entry.js → p-a6b76120.entry.js} +2 -2
  71. package/dist/genexus-ide-ui/p-a6b76120.entry.js.map +1 -0
  72. package/dist/types/components/_helpers/empty-state/gx-ide-empty-state.d.ts +4 -0
  73. package/dist/types/components/kb-manager-export/helpers.d.ts +33 -5
  74. package/dist/types/components/kb-manager-export/kb-manager-export.d.ts +36 -98
  75. package/dist/types/components/kb-manager-export/types.d.ts +21 -0
  76. package/dist/types/components.d.ts +16 -40
  77. package/package.json +6 -9
  78. package/dist/genexus-ide-ui/p-b3baa3d2.entry.js +0 -491
  79. package/dist/genexus-ide-ui/p-b3baa3d2.entry.js.map +0 -1
  80. package/dist/genexus-ide-ui/p-bbb30314.entry.js.map +0 -1
  81. package/dist/genexus-ide-ui/p-cb0e11db.entry.js.map +0 -1
  82. package/dist/genexus-ide-ui/p-f220c75a.entry.js.map +0 -1
  83. package/dist/genexus-ide-ui/p-f924f02a.entry.js.map +0 -1
@@ -4,35 +4,14 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  const index = require('./index-b87e3ee0.js');
6
6
  const locale = require('./locale-bf43b87c.js');
7
- const config = require('./config-7499aff7.js');
7
+ const assetsManager = require('./assets-manager-64c42a1e.js');
8
8
 
9
9
  const KB_PROPERTY = "property";
10
10
  const KB_OBJECT = "object";
11
- /*
12
- INDEX:
13
- 1. getObjectIcon
14
- 2. convertObjectTypeToTreeItem
15
- 3. convertObjectToTreeItem
16
- 4. getObjectType
17
- 5. findObjectInTree
18
- 6. findPropertyInTree
19
- 7. convertPropertyToTreeItem
20
- 8. updateTreeModelWithObjects
21
- 9. convertKbPropertiesDataToTreeItemData
22
- 10. clearKbPropertiesFromTree
23
- */
24
- /* 1.2 getIcon (for properties)*/
25
- const getPropertyIcon = (typeId, kbPropertiesTypes) => {
26
- // The object icon has to be retrieved from the ObjetTypes array, by matching the ObjectData typeId with the ObjectType id.
27
- const propertyType = kbPropertiesTypes.find(propertyType => propertyType.id === typeId);
28
- if (propertyType) {
29
- return propertyType.icon;
30
- }
31
- else {
32
- return undefined;
33
- }
34
- };
35
- /* 2. convertObjectTypeToTreeItem*/
11
+ const getPropertyIcon = (typeId, kbPropertiesTypes) =>
12
+ // The object icon has to be retrieved from the ObjectTypes array, by
13
+ // matching the ObjectData typeId with the ObjectType id
14
+ kbPropertiesTypes.find(propertyType => propertyType.id === typeId).icon;
36
15
  const convertObjectTypeToTreeItem = (objectType) => ({
37
16
  caption: objectType.name,
38
17
  id: objectType.id,
@@ -42,7 +21,6 @@ const convertObjectTypeToTreeItem = (objectType) => ({
42
21
  expanded: true,
43
22
  items: []
44
23
  });
45
- /* 3. convertObjectToTreeItem*/
46
24
  const convertObjectToTreeItem = (object, objectTypes) => ({
47
25
  caption: object.name,
48
26
  id: object.id,
@@ -51,42 +29,6 @@ const convertObjectToTreeItem = (object, objectTypes) => ({
51
29
  metadata: KB_OBJECT,
52
30
  leaf: true
53
31
  });
54
- /* 5. findObjectInTree*/
55
- const findObjectInTree = (object, actualTreeState) => {
56
- var _a;
57
- const objectTreeItemInfo = {
58
- objectExists: false,
59
- objectTypeIndex: -1
60
- };
61
- if (actualTreeState) {
62
- const objectTypeTreeItemIndex = actualTreeState.findIndex(objectTypeTreeItem => {
63
- return objectTypeTreeItem.id === object.typeId;
64
- });
65
- if (objectTypeTreeItemIndex !== -1) {
66
- objectTreeItemInfo.objectTypeIndex = objectTypeTreeItemIndex;
67
- // objectType exists as a node in the actual tree.
68
- // Now try to find the object
69
- const objectFound = (_a = actualTreeState[objectTypeTreeItemIndex].items) === null || _a === void 0 ? void 0 : _a.find(objectTreeItem => {
70
- return objectTreeItem.id === object.id;
71
- });
72
- if (objectFound) {
73
- objectTreeItemInfo.objectExists = true;
74
- }
75
- }
76
- }
77
- return objectTreeItemInfo;
78
- };
79
- /* 6. findPropertyInTree */
80
- const findPropertyInTree = (property, updatedTreeData) => {
81
- const found = updatedTreeData.find(node => {
82
- return node.id === property.id;
83
- });
84
- if (found) {
85
- return true;
86
- }
87
- return false;
88
- };
89
- /* 7. convertPropertyToTreeItem */
90
32
  const convertPropertyToTreeItem = (property, kbPropertiesTypes) => ({
91
33
  caption: property.name,
92
34
  id: property.id,
@@ -95,144 +37,245 @@ const convertPropertyToTreeItem = (property, kbPropertiesTypes) => ({
95
37
  metadata: KB_PROPERTY,
96
38
  leaf: true
97
39
  });
98
- /* 8. updateTreeModelWithObjects*/
99
- const updateTreeModelWithObjects = (objects, objectTypes, actualTreeState) => {
100
- const updatedTreeData = [...actualTreeState];
40
+ /**
41
+ * Updates the tree model with the provided objects.
42
+ * Objects may already exist and are placed under their parent node.
43
+ * If the parent node doesn't exist (identified by typeId on ObjectTypes),
44
+ * it is created and added at the bottom.
45
+ *
46
+ * @param {ObjectData[] | undefined} objects - The array of objects to update.
47
+ * @param {Map<string, ObjectType>} objectTypesMap - A map of object types by ID.
48
+ * @param {Set<string>} objectsSet - A set of existing object IDs.
49
+ * @param {TreeViewModel} actualTreeState - The current tree state to be updated.
50
+ * @returns {TreeViewModel} - The updated tree view model.
51
+ */
52
+ const updateObjectsTreeModel = (objects, objectTypesMap, objectsSet, actualTreeState) => {
101
53
  if (!objects) {
102
- // nothing to do
103
- return updatedTreeData;
54
+ return [...actualTreeState];
104
55
  }
56
+ const updatedTreeData = [...actualTreeState];
105
57
  objects.forEach(object => {
106
58
  // objects that already exists in the actual actualTreeState should not be added.
107
- // We can find the object in the actual actualTreeState.
108
- const objectTreeItemInfo = findObjectInTree(object, updatedTreeData);
109
- if (!objectTreeItemInfo.objectExists) {
110
- // object does not exists in actualTreeState
111
- // if the objectType tree node exists, insert inside.
112
- // if the objectType tree node does not exists, create object type node first.
113
- if (objectTreeItemInfo.objectTypeIndex === -1) {
114
- const objectType = objectTypes.get(object.typeId);
115
- if (objectType !== undefined) {
116
- const objectTypeTreeItem = convertObjectTypeToTreeItem(objectType);
117
- objectTreeItemInfo.objectTypeIndex =
118
- updatedTreeData.push(objectTypeTreeItem) - 1;
119
- }
59
+ if (objectsSet.has(object.id)) {
60
+ // object already exists
61
+ return;
62
+ }
63
+ const objectTreeItem = convertObjectToTreeItem(object, objectTypesMap);
64
+ // TODO: Improve the algorithm efficiency. This check visits potentially all nodes
65
+ // from the TreeViewModel on each iteration. Using a Map to pre-store the TreeView
66
+ // nodes would improve efficiency.
67
+ const objectTypeTreeItemIndex = updatedTreeData.findIndex(treeItem => treeItem.id === object.typeId);
68
+ if (objectTypeTreeItemIndex === -1) {
69
+ // Create and add new object type tree item
70
+ const objectType = objectTypesMap.get(object.typeId);
71
+ if (objectType) {
72
+ const objectTypeTreeItem = convertObjectTypeToTreeItem(objectType);
73
+ objectTypeTreeItem.items.push(objectTreeItem);
74
+ updatedTreeData.push(objectTypeTreeItem);
120
75
  }
121
- const objectAsTreeItem = convertObjectToTreeItem(object, objectTypes);
122
- // insert object in tree (under the object type tree node)
123
- updatedTreeData[objectTreeItemInfo.objectTypeIndex].items.push(objectAsTreeItem);
124
76
  }
77
+ else {
78
+ // objectType exists already. insert object as children of the object type tree item.
79
+ updatedTreeData[objectTypeTreeItemIndex].items.push(objectTreeItem);
80
+ }
81
+ objectsSet.add(object.id);
125
82
  });
126
83
  return updatedTreeData;
127
84
  };
128
- /* 9. convertKbPropertiesDataToTreeItemData*/
85
+ /**
86
+ * Converts an array of KB properties data into tree item data for a tree view.
87
+ *
88
+ * @param {KBPropertyData[]} properties - The array of KB property data.
89
+ * @param {KBPropertyType[]} kbPropertiesTypes - The array of KB property types.
90
+ * @param {TreeViewModel} actualTreeState - The current state of the tree.
91
+ * @returns {TreeViewModel} - The updated tree view item models.
92
+ */
129
93
  const convertKbPropertiesDataToTreeItemData = (properties, kbPropertiesTypes, actualTreeState) => {
130
- const updatedTreeData = [...actualTreeState];
131
94
  if (!properties) {
132
- // nothing to do
133
- return updatedTreeData;
95
+ return [...actualTreeState];
134
96
  }
97
+ const updatedTreeData = [...actualTreeState];
135
98
  properties.forEach(property => {
136
99
  // properties have no parent node, and they should be added at the beginning of the tree
137
- const propertyAlreadyExists = findPropertyInTree(property, updatedTreeData);
138
- if (!propertyAlreadyExists) {
139
- const propertyTreeItem = convertPropertyToTreeItem(property, kbPropertiesTypes);
140
- updatedTreeData.unshift(propertyTreeItem);
100
+ const propertyAlreadyExists = updatedTreeData.find(node => node.id === property.id) !== undefined;
101
+ if (propertyAlreadyExists) {
102
+ return;
141
103
  }
104
+ const propertyTreeItem = convertPropertyToTreeItem(property, kbPropertiesTypes);
105
+ updatedTreeData.unshift(propertyTreeItem);
142
106
  });
143
107
  return updatedTreeData;
144
108
  };
145
- /* 10. clearKbPropertiesFromTree*/
146
- const clearKbPropertiesFromTree = (kBPropertiesData, actualTreeState) => {
147
- if (!(actualTreeState.length > 0)) {
148
- // nothing to do.
149
- return [];
150
- }
151
- const kBPropertiesDataIds = kBPropertiesData.map(property => {
152
- return property.id;
153
- });
154
- const treeModelWithoutKbProperties = actualTreeState.filter(item => {
155
- return !kBPropertiesDataIds.includes(item.id);
156
- });
157
- return treeModelWithoutKbProperties;
158
- };
109
+ /**
110
+ * Removes properties from the tree model.
111
+ *
112
+ * @param {TreeViewModel} actualTreeState - The current state of the tree,
113
+ * containing various tree view items.
114
+ * @returns {TreeViewModel} - A new array of tree view items that excludes
115
+ * any items with metadata of type `KB_PROPERTY`.
116
+ */
117
+ const clearKbPropertiesFromTree = (actualTreeState) => actualTreeState.filter(item => item.metadata !== KB_PROPERTY);
159
118
 
160
- 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%}";
119
+ 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}";
161
120
 
121
+ var __classPrivateFieldSet = (undefined && undefined.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
122
+ if (kind === "m")
123
+ throw new TypeError("Private method is not writable");
124
+ if (kind === "a" && !f)
125
+ throw new TypeError("Private accessor was defined without a setter");
126
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver))
127
+ throw new TypeError("Cannot write private member to an object whose class did not declare it");
128
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
129
+ };
130
+ var __classPrivateFieldGet = (undefined && undefined.__classPrivateFieldGet) || function (receiver, state, kind, f) {
131
+ if (kind === "a" && !f)
132
+ throw new TypeError("Private accessor was defined without a getter");
133
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver))
134
+ throw new TypeError("Cannot read private member from an object whose class did not declare it");
135
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
136
+ };
137
+ 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;
138
+ const FILE_ICON = assetsManager.getIconPath({
139
+ category: "gemini-tools",
140
+ name: "file",
141
+ colorType: "on-elevation"
142
+ });
143
+ const SETTINGS_ICON = assetsManager.getIconPath({
144
+ category: "gemini-tools",
145
+ name: "settings",
146
+ colorType: "primary"
147
+ });
148
+ const GENERAL_REFERENCES_ICON = assetsManager.getIconPath({
149
+ category: "window-tools",
150
+ name: "references",
151
+ colorType: "neutral"
152
+ });
153
+ const MENUS_NEW_OBJECT_ICON = assetsManager.getIconPath({
154
+ category: "menus",
155
+ name: "new-object",
156
+ colorType: "on-primary"
157
+ });
158
+ const TREE_VIEW_ICON = assetsManager.getIconPath({
159
+ category: "controls",
160
+ name: "treeview"
161
+ });
162
+ const CHECKBOX_CHECKED_VALUE = "true";
162
163
  const CSS_BUNDLES = [
163
164
  "resets/box-sizing",
164
- "utils/form",
165
- "utils/layout",
166
- "utils/typography",
167
165
  "components/button",
168
166
  "components/checkbox",
169
167
  "components/edit",
170
- "components/tree-view"
168
+ "components/icon",
169
+ "components/tree-view",
170
+ "utils/form",
171
+ "utils/layout",
172
+ "utils/typography"
171
173
  ];
172
174
  const GxIdeKbManagerExport = class {
173
175
  constructor(hostRef) {
174
176
  index.registerInstance(this, hostRef);
175
- this.componentDidLoadEvent = index.createEvent(this, "componentDidLoadEvent", 7);
176
- this.componentDidRenderFirstTime = index.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;
222
+ }
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 (index.h("gx-ide-empty-state", { isAnimated: __classPrivateFieldGet(this, _GxIdeKbManagerExport_animateEmptyState, "f"), stateTitle: __classPrivateFieldGet(this, _GxIdeKbManagerExport_componentLocale, "f").main.noObjectsToDisplay, key: "no-objects-empty-state" }, index.h("button", { class: "button-primary", onClick: __classPrivateFieldGet(this, _GxIdeKbManagerExport_addObjectsCallbackHandler, "f") }, __classPrivateFieldGet(this, _GxIdeKbManagerExport_componentLocale, "f").main.beginByADdingSomeObjects)));
215
234
  }
216
- };
217
- this.addReferencesCallbackHandler = async () => {
218
- if (this.addReferencesCallback) {
219
- const objects = await this.addReferencesCallback(this.checkedObjectsIds);
220
- this.updateObjects(objects);
235
+ else {
236
+ __classPrivateFieldSet(this, _GxIdeKbManagerExport_animateEmptyState, true, "f"); // improve performance if is first render
221
237
  }
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;
238
+ if (this.exportAllIsChecked) {
239
+ return (index.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" }));
230
240
  }
231
- };
232
- /*
233
- * Update checked objects 'checkedObjectsArray' array. Used for the 'addReferencesCallback'
234
- */
235
- this.objectsTreeCheckedItemsChangedHandler = (event) => {
241
+ else {
242
+ __classPrivateFieldSet(this, _GxIdeKbManagerExport_animateEmptyState, true, "f"); // improve performance if is first render
243
+ }
244
+ return (index.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,156 +290,92 @@ const GxIdeKbManagerExport = class {
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 (index.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 (index.h("gxg-text", { textAlign: config.config.gxgMessage.common.textAlign, padding: config.config.gxgMessage.common.textAlign, type: config.config.gxgMessage.common.type, maxWidth: config.config.gxgMessage.common.maxWidth, class: "gx-ide-message gx-ide-message--short", part: "referenced-by-empty-status-message" }, nothingToDisplay ? ([
310
- index.h("span", null, this._componentLocale.main.noObjectsToDisplay),
311
- index.h("gxg-text", { type: "text-link-no-line", textAlign: "center", onClick: this.addObjectsCallbackHandler }, this._componentLocale.main.beginByADdingSomeObjects)
312
- ]) : (index.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 (index.h("footer", { class: "footer control-footer-with-border" }, index.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), index.h("button", { class: "button-secondary button-icon-and-text", part: "references-button", disabled: !referencesButtonEnabled, onClick: referencesButtonEnabled && __classPrivateFieldGet(this, _GxIdeKbManagerExport_addReferencesCallbackHandler, "f") }, index.h("ch-image", { class: "icon-sm", disabled: !referencesButtonEnabled, src: GENERAL_REFERENCES_ICON }), __classPrivateFieldGet(this, _GxIdeKbManagerExport_componentLocale, "f").footer.addReferencesButton), index.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
+ }, index.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
343
  }
345
- watchTreeModelHandler(newState) {
346
- this.noObjects = !!(newState.length === 0 || !newState);
347
- }
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.Locale.getComponentStrings(this.el);
362
- this.componentDidLoadEvent.emit(true);
363
- this.evaluateObjects();
364
- this.flattenObjectTypes(this.objectTypes);
365
- }
366
- componentDidLoad() {
367
- this.fileNameEl.focus();
356
+ __classPrivateFieldSet(this, _GxIdeKbManagerExport_componentLocale, await locale.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);
368
359
  }
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
- });
379
- }
380
- // 10.RENDER() FUNCTION //
381
360
  render() {
382
- return (index.h(index.Host, { class: "gx-ide-component" }, index.h("ch-theme", { model: CSS_BUNDLES }), index.h("div", { class: "gx-ide-main-wrapper" }, index.h("gx-ide-container", { noContentPadding: true, noHeadingPadding: true, headingPaddingTop: true, containerTitle: this.displayTitle ? this._componentLocale.componentName : null, slimmerFooter: config.config.gxIdeContainer.slimmerFooter }, index.h("header", { slot: "header", class: "header" }, index.h("div", { class: "header__top" }, index.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" }), index.h("gxg-buttons-container", { reduced: true, class: "export-cancel-buttons-group" }, index.h("gxg-button", { id: "export-kb-btn", part: "export-btn", onClick: this.exportCallbackHandler, disabled: this.noObjects }, this._componentLocale.header.exportButton), index.h("gxg-button", { id: "cancel-kb-export-btn", part: "cancel-button", onClick: this.onClickCancelCallbackHandler, disabled: !this.exportingIsInProcess || this.noObjects }, this._componentLocale.header.cancelButton)), index.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)), index.h("div", { class: "header__bottom" }, index.h("div", { class: { "checkboxes-wrapper": true } }, index.h("gxg-form-checkbox", { label: this._componentLocale.main.addKnowledgeBaseDescription, onChange: this.addKBPropertiesCallbackHandler, part: "add-kb-checkbox" }), index.h("gxg-form-checkbox", { label: this._componentLocale.main.exportAll, part: "export-all-checkbox", ref: el => (this.exportAllCheckboxEl =
383
- el), onChange: this.exportAllChangedHandler })))), index.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()), index.h("gxg-text", { type: "button-like", part: "export-button", slot: "footer-start", onClick: this.clearButtonHandler, disabled: this.clearButtonDisabledConditions() }, this._componentLocale.footer.clearButton), index.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), index.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 ? (index.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 (index.h(index.Host, { class: "spacing-body-block-start spacing-body-inline" }, index.h("ch-theme", { model: CSS_BUNDLES }), index.h("section", { class: "section field-group" }, index.h("header", { class: "header" }, index.h("div", { class: "field field-inline export-file-name" }, index.h("label", { class: "label", htmlFor: "xpz-file" }, __classPrivateFieldGet(this, _GxIdeKbManagerExport_componentLocale, "f").header.exportFileName), index.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")) })), index.h("div", { class: "header__buttons-container" }, index.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), index.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), index.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 }, index.h("ch-image", { class: "icon-md", src: SETTINGS_ICON }))), index.h("div", { class: "header__checkboxes field-group" }, index.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")) }), index.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")) }))), index.h("div", { class: "main" }, __classPrivateFieldGet(this, _GxIdeKbManagerExport_evaluateContentToDisplay, "f").call(this), this.loader && this.exportingIsInProcess && (index.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 index.getElement(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
  };
374
+ _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) {
375
+ objectTypesArray.forEach(objectType => {
376
+ __classPrivateFieldGet(this, _GxIdeKbManagerExport_objectTypesMap, "f").set(objectType.id, objectType);
377
+ });
378
+ };
400
379
  GxIdeKbManagerExport.style = kbManagerExportCss;
401
380
 
402
381
  exports.gx_ide_kb_manager_export = GxIdeKbManagerExport;