@genexus/genexus-ide-ui 1.0.4 → 1.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. package/dist/cjs/assets-manager-64c42a1e.js.map +1 -1
  2. package/dist/cjs/genexus-ide-ui.cjs.js +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-object-selector.cjs.entry.js +38 -5
  10. package/dist/cjs/gx-ide-object-selector.cjs.entry.js.map +1 -1
  11. package/dist/cjs/gx-ide-recent-news.cjs.entry.js +1 -1
  12. package/dist/cjs/gx-ide-recent-news.cjs.entry.js.map +1 -1
  13. package/dist/cjs/gx-ide-start-page.cjs.entry.js +4 -3
  14. package/dist/cjs/gx-ide-start-page.cjs.entry.js.map +1 -1
  15. package/dist/cjs/loader.cjs.js +1 -1
  16. package/dist/collection/collection-manifest.json +1 -1
  17. package/dist/collection/components/_helpers/empty-state/gx-ide-empty-state.css +5 -1
  18. package/dist/collection/components/_helpers/empty-state/gx-ide-empty-state.js +20 -1
  19. package/dist/collection/components/_helpers/empty-state/gx-ide-empty-state.js.map +1 -1
  20. package/dist/collection/components/_helpers/ide-loader/ide-loader.css +2 -2
  21. package/dist/collection/components/kb-manager-export/gx-ide-assets/kb-manager-export/langs/kb-manager-export.lang.en.json +3 -3
  22. package/dist/collection/components/kb-manager-export/gx-ide-assets/kb-manager-export/langs/kb-manager-export.lang.ja.json +4 -4
  23. package/dist/collection/components/kb-manager-export/helpers.js +64 -105
  24. package/dist/collection/components/kb-manager-export/helpers.js.map +1 -1
  25. package/dist/collection/components/kb-manager-export/kb-manager-export.css +14 -620
  26. package/dist/collection/components/kb-manager-export/kb-manager-export.js +345 -377
  27. package/dist/collection/components/kb-manager-export/kb-manager-export.js.map +1 -1
  28. package/dist/collection/components/kb-manager-export/types.js +2 -0
  29. package/dist/collection/components/kb-manager-export/types.js.map +1 -0
  30. package/dist/collection/components/object-selector/object-selector.css +4 -598
  31. package/dist/collection/components/object-selector/object-selector.js +37 -4
  32. package/dist/collection/components/object-selector/object-selector.js.map +1 -1
  33. package/dist/collection/components/start-page/recent-news.js +1 -1
  34. package/dist/collection/components/start-page/recent-news.js.map +1 -1
  35. package/dist/collection/components/start-page/start-page.js +4 -3
  36. package/dist/collection/components/start-page/start-page.js.map +1 -1
  37. package/dist/components/assets-manager.js.map +1 -1
  38. package/dist/components/gx-ide-empty-state2.js +4 -2
  39. package/dist/components/gx-ide-empty-state2.js.map +1 -1
  40. package/dist/components/gx-ide-kb-manager-export.js +294 -314
  41. package/dist/components/gx-ide-kb-manager-export.js.map +1 -1
  42. package/dist/components/gx-ide-object-selector.js +38 -5
  43. package/dist/components/gx-ide-object-selector.js.map +1 -1
  44. package/dist/components/gx-ide-start-page.js +4 -3
  45. package/dist/components/gx-ide-start-page.js.map +1 -1
  46. package/dist/components/ide-loader.js +1 -1
  47. package/dist/components/ide-loader.js.map +1 -1
  48. package/dist/components/recent-news.js +1 -1
  49. package/dist/components/recent-news.js.map +1 -1
  50. package/dist/esm/assets-manager-120996e9.js.map +1 -1
  51. package/dist/esm/genexus-ide-ui.js +1 -1
  52. package/dist/esm/gx-ide-empty-state.entry.js +3 -2
  53. package/dist/esm/gx-ide-empty-state.entry.js.map +1 -1
  54. package/dist/esm/gx-ide-kb-manager-export.entry.js +273 -294
  55. package/dist/esm/gx-ide-kb-manager-export.entry.js.map +1 -1
  56. package/dist/esm/gx-ide-loader.entry.js +1 -1
  57. package/dist/esm/gx-ide-loader.entry.js.map +1 -1
  58. package/dist/esm/gx-ide-object-selector.entry.js +38 -5
  59. package/dist/esm/gx-ide-object-selector.entry.js.map +1 -1
  60. package/dist/esm/gx-ide-recent-news.entry.js +1 -1
  61. package/dist/esm/gx-ide-recent-news.entry.js.map +1 -1
  62. package/dist/esm/gx-ide-start-page.entry.js +4 -3
  63. package/dist/esm/gx-ide-start-page.entry.js.map +1 -1
  64. package/dist/esm/loader.js +1 -1
  65. package/dist/genexus-ide-ui/genexus-ide-ui.css +7 -0
  66. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js +1 -1
  67. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js.map +1 -1
  68. package/dist/genexus-ide-ui/gx-ide-assets/kb-manager-export/langs/kb-manager-export.lang.en.json +3 -3
  69. package/dist/genexus-ide-ui/gx-ide-assets/kb-manager-export/langs/kb-manager-export.lang.ja.json +4 -4
  70. package/dist/genexus-ide-ui/p-3824978b.entry.js +525 -0
  71. package/dist/genexus-ide-ui/p-3824978b.entry.js.map +1 -0
  72. package/dist/genexus-ide-ui/{p-f924f02a.entry.js → p-64101478.entry.js} +2 -2
  73. package/dist/genexus-ide-ui/p-64101478.entry.js.map +1 -0
  74. package/dist/genexus-ide-ui/p-69e879be.entry.js +495 -0
  75. package/dist/genexus-ide-ui/p-69e879be.entry.js.map +1 -0
  76. package/dist/genexus-ide-ui/p-6df9fab1.js.map +1 -1
  77. package/dist/genexus-ide-ui/{p-f220c75a.entry.js → p-885302c2.entry.js} +11 -6
  78. package/dist/genexus-ide-ui/p-885302c2.entry.js.map +1 -0
  79. package/dist/genexus-ide-ui/{p-eb49e4f1.entry.js → p-8ff5da93.entry.js} +36 -31
  80. package/dist/genexus-ide-ui/p-8ff5da93.entry.js.map +1 -0
  81. package/dist/genexus-ide-ui/{p-dd07e68a.entry.js → p-a6b76120.entry.js} +2 -2
  82. package/dist/genexus-ide-ui/p-a6b76120.entry.js.map +1 -0
  83. package/dist/types/components/_helpers/empty-state/gx-ide-empty-state.d.ts +4 -0
  84. package/dist/types/components/kb-manager-export/helpers.d.ts +33 -5
  85. package/dist/types/components/kb-manager-export/kb-manager-export.d.ts +36 -98
  86. package/dist/types/components/kb-manager-export/types.d.ts +21 -0
  87. package/dist/types/components.d.ts +16 -40
  88. package/package.json +6 -6
  89. package/dist/genexus-ide-ui/p-b3baa3d2.entry.js +0 -491
  90. package/dist/genexus-ide-ui/p-b3baa3d2.entry.js.map +0 -1
  91. package/dist/genexus-ide-ui/p-b7384b06.entry.js +0 -507
  92. package/dist/genexus-ide-ui/p-b7384b06.entry.js.map +0 -1
  93. package/dist/genexus-ide-ui/p-dd07e68a.entry.js.map +0 -1
  94. package/dist/genexus-ide-ui/p-eb49e4f1.entry.js.map +0 -1
  95. package/dist/genexus-ide-ui/p-f220c75a.entry.js.map +0 -1
  96. package/dist/genexus-ide-ui/p-f924f02a.entry.js.map +0 -1
@@ -1,30 +1,9 @@
1
1
  export const KB_PROPERTY = "property";
2
2
  export const KB_OBJECT = "object";
3
- /*
4
- INDEX:
5
- 1. getObjectIcon
6
- 2. convertObjectTypeToTreeItem
7
- 3. convertObjectToTreeItem
8
- 4. getObjectType
9
- 5. findObjectInTree
10
- 6. findPropertyInTree
11
- 7. convertPropertyToTreeItem
12
- 8. updateTreeModelWithObjects
13
- 9. convertKbPropertiesDataToTreeItemData
14
- 10. clearKbPropertiesFromTree
15
- */
16
- /* 1.2 getIcon (for properties)*/
17
- const getPropertyIcon = (typeId, kbPropertiesTypes) => {
18
- // The object icon has to be retrieved from the ObjetTypes array, by matching the ObjectData typeId with the ObjectType id.
19
- const propertyType = kbPropertiesTypes.find(propertyType => propertyType.id === typeId);
20
- if (propertyType) {
21
- return propertyType.icon;
22
- }
23
- else {
24
- return undefined;
25
- }
26
- };
27
- /* 2. convertObjectTypeToTreeItem*/
3
+ const getPropertyIcon = (typeId, kbPropertiesTypes) =>
4
+ // The object icon has to be retrieved from the ObjectTypes array, by
5
+ // matching the ObjectData typeId with the ObjectType id
6
+ kbPropertiesTypes.find(propertyType => propertyType.id === typeId).icon;
28
7
  const convertObjectTypeToTreeItem = (objectType) => ({
29
8
  caption: objectType.name,
30
9
  id: objectType.id,
@@ -34,7 +13,6 @@ const convertObjectTypeToTreeItem = (objectType) => ({
34
13
  expanded: true,
35
14
  items: []
36
15
  });
37
- /* 3. convertObjectToTreeItem*/
38
16
  const convertObjectToTreeItem = (object, objectTypes) => ({
39
17
  caption: object.name,
40
18
  id: object.id,
@@ -43,42 +21,6 @@ const convertObjectToTreeItem = (object, objectTypes) => ({
43
21
  metadata: KB_OBJECT,
44
22
  leaf: true
45
23
  });
46
- /* 5. findObjectInTree*/
47
- const findObjectInTree = (object, actualTreeState) => {
48
- var _a;
49
- const objectTreeItemInfo = {
50
- objectExists: false,
51
- objectTypeIndex: -1
52
- };
53
- if (actualTreeState) {
54
- const objectTypeTreeItemIndex = actualTreeState.findIndex(objectTypeTreeItem => {
55
- return objectTypeTreeItem.id === object.typeId;
56
- });
57
- if (objectTypeTreeItemIndex !== -1) {
58
- objectTreeItemInfo.objectTypeIndex = objectTypeTreeItemIndex;
59
- // objectType exists as a node in the actual tree.
60
- // Now try to find the object
61
- const objectFound = (_a = actualTreeState[objectTypeTreeItemIndex].items) === null || _a === void 0 ? void 0 : _a.find(objectTreeItem => {
62
- return objectTreeItem.id === object.id;
63
- });
64
- if (objectFound) {
65
- objectTreeItemInfo.objectExists = true;
66
- }
67
- }
68
- }
69
- return objectTreeItemInfo;
70
- };
71
- /* 6. findPropertyInTree */
72
- const findPropertyInTree = (property, updatedTreeData) => {
73
- const found = updatedTreeData.find(node => {
74
- return node.id === property.id;
75
- });
76
- if (found) {
77
- return true;
78
- }
79
- return false;
80
- };
81
- /* 7. convertPropertyToTreeItem */
82
24
  const convertPropertyToTreeItem = (property, kbPropertiesTypes) => ({
83
25
  caption: property.name,
84
26
  id: property.id,
@@ -87,65 +29,82 @@ const convertPropertyToTreeItem = (property, kbPropertiesTypes) => ({
87
29
  metadata: KB_PROPERTY,
88
30
  leaf: true
89
31
  });
90
- /* 8. updateTreeModelWithObjects*/
91
- export const updateTreeModelWithObjects = (objects, objectTypes, actualTreeState) => {
92
- const updatedTreeData = [...actualTreeState];
32
+ /**
33
+ * Updates the tree model with the provided objects.
34
+ * Objects may already exist and are placed under their parent node.
35
+ * If the parent node doesn't exist (identified by typeId on ObjectTypes),
36
+ * it is created and added at the bottom.
37
+ *
38
+ * @param {ObjectData[] | undefined} objects - The array of objects to update.
39
+ * @param {Map<string, ObjectType>} objectTypesMap - A map of object types by ID.
40
+ * @param {Set<string>} objectsSet - A set of existing object IDs.
41
+ * @param {TreeViewModel} actualTreeState - The current tree state to be updated.
42
+ * @returns {TreeViewModel} - The updated tree view model.
43
+ */
44
+ export const updateObjectsTreeModel = (objects, objectTypesMap, objectsSet, actualTreeState) => {
93
45
  if (!objects) {
94
- // nothing to do
95
- return updatedTreeData;
46
+ return [...actualTreeState];
96
47
  }
48
+ const updatedTreeData = [...actualTreeState];
97
49
  objects.forEach(object => {
98
50
  // objects that already exists in the actual actualTreeState should not be added.
99
- // We can find the object in the actual actualTreeState.
100
- const objectTreeItemInfo = findObjectInTree(object, updatedTreeData);
101
- if (!objectTreeItemInfo.objectExists) {
102
- // object does not exists in actualTreeState
103
- // if the objectType tree node exists, insert inside.
104
- // if the objectType tree node does not exists, create object type node first.
105
- if (objectTreeItemInfo.objectTypeIndex === -1) {
106
- const objectType = objectTypes.get(object.typeId);
107
- if (objectType !== undefined) {
108
- const objectTypeTreeItem = convertObjectTypeToTreeItem(objectType);
109
- objectTreeItemInfo.objectTypeIndex =
110
- updatedTreeData.push(objectTypeTreeItem) - 1;
111
- }
51
+ if (objectsSet.has(object.id)) {
52
+ // object already exists
53
+ return;
54
+ }
55
+ const objectTreeItem = convertObjectToTreeItem(object, objectTypesMap);
56
+ // TODO: Improve the algorithm efficiency. This check visits potentially all nodes
57
+ // from the TreeViewModel on each iteration. Using a Map to pre-store the TreeView
58
+ // nodes would improve efficiency.
59
+ const objectTypeTreeItemIndex = updatedTreeData.findIndex(treeItem => treeItem.id === object.typeId);
60
+ if (objectTypeTreeItemIndex === -1) {
61
+ // Create and add new object type tree item
62
+ const objectType = objectTypesMap.get(object.typeId);
63
+ if (objectType) {
64
+ const objectTypeTreeItem = convertObjectTypeToTreeItem(objectType);
65
+ objectTypeTreeItem.items.push(objectTreeItem);
66
+ updatedTreeData.push(objectTypeTreeItem);
112
67
  }
113
- const objectAsTreeItem = convertObjectToTreeItem(object, objectTypes);
114
- // insert object in tree (under the object type tree node)
115
- updatedTreeData[objectTreeItemInfo.objectTypeIndex].items.push(objectAsTreeItem);
116
68
  }
69
+ else {
70
+ // objectType exists already. insert object as children of the object type tree item.
71
+ updatedTreeData[objectTypeTreeItemIndex].items.push(objectTreeItem);
72
+ }
73
+ objectsSet.add(object.id);
117
74
  });
118
75
  return updatedTreeData;
119
76
  };
120
- /* 9. convertKbPropertiesDataToTreeItemData*/
77
+ /**
78
+ * Converts an array of KB properties data into tree item data for a tree view.
79
+ *
80
+ * @param {KBPropertyData[]} properties - The array of KB property data.
81
+ * @param {KBPropertyType[]} kbPropertiesTypes - The array of KB property types.
82
+ * @param {TreeViewModel} actualTreeState - The current state of the tree.
83
+ * @returns {TreeViewModel} - The updated tree view item models.
84
+ */
121
85
  export const convertKbPropertiesDataToTreeItemData = (properties, kbPropertiesTypes, actualTreeState) => {
122
- const updatedTreeData = [...actualTreeState];
123
86
  if (!properties) {
124
- // nothing to do
125
- return updatedTreeData;
87
+ return [...actualTreeState];
126
88
  }
89
+ const updatedTreeData = [...actualTreeState];
127
90
  properties.forEach(property => {
128
91
  // properties have no parent node, and they should be added at the beginning of the tree
129
- const propertyAlreadyExists = findPropertyInTree(property, updatedTreeData);
130
- if (!propertyAlreadyExists) {
131
- const propertyTreeItem = convertPropertyToTreeItem(property, kbPropertiesTypes);
132
- updatedTreeData.unshift(propertyTreeItem);
92
+ const propertyAlreadyExists = updatedTreeData.find(node => node.id === property.id) !== undefined;
93
+ if (propertyAlreadyExists) {
94
+ return;
133
95
  }
96
+ const propertyTreeItem = convertPropertyToTreeItem(property, kbPropertiesTypes);
97
+ updatedTreeData.unshift(propertyTreeItem);
134
98
  });
135
99
  return updatedTreeData;
136
100
  };
137
- /* 10. clearKbPropertiesFromTree*/
138
- export const clearKbPropertiesFromTree = (kBPropertiesData, actualTreeState) => {
139
- if (!(actualTreeState.length > 0)) {
140
- // nothing to do.
141
- return [];
142
- }
143
- const kBPropertiesDataIds = kBPropertiesData.map(property => {
144
- return property.id;
145
- });
146
- const treeModelWithoutKbProperties = actualTreeState.filter(item => {
147
- return !kBPropertiesDataIds.includes(item.id);
148
- });
149
- return treeModelWithoutKbProperties;
150
- };
101
+ /**
102
+ * Removes properties from the tree model.
103
+ *
104
+ * @param {TreeViewModel} actualTreeState - The current state of the tree,
105
+ * containing various tree view items.
106
+ * @returns {TreeViewModel} - A new array of tree view items that excludes
107
+ * any items with metadata of type `KB_PROPERTY`.
108
+ */
109
+ export const clearKbPropertiesFromTree = (actualTreeState) => actualTreeState.filter(item => item.metadata !== KB_PROPERTY);
151
110
  //# sourceMappingURL=helpers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/components/kb-manager-export/helpers.ts"],"names":[],"mappings":"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","sourcesContent":["// /* Tree View */\nimport { TreeViewItemModel } from \"@genexus/chameleon-controls-library\";\nimport {\n ObjectData,\n KBPropertyData,\n KBPropertyType\n} from \"./kb-manager-export\";\nimport { ObjectType } from \"../../common/types\";\nexport const KB_PROPERTY = \"property\";\nexport const KB_OBJECT = \"object\";\n\n/*\nINDEX:\n1. getObjectIcon\n2. convertObjectTypeToTreeItem\n3. convertObjectToTreeItem\n4. getObjectType\n5. findObjectInTree\n6. findPropertyInTree\n7. convertPropertyToTreeItem\n8. updateTreeModelWithObjects\n9. convertKbPropertiesDataToTreeItemData\n10. clearKbPropertiesFromTree\n*/\n\n/* 1.2 getIcon (for properties)*/\nconst getPropertyIcon = (\n typeId: string,\n kbPropertiesTypes: KBPropertyType[]\n): string => {\n // The object icon has to be retrieved from the ObjetTypes array, by matching the ObjectData typeId with the ObjectType id.\n const propertyType = kbPropertiesTypes.find(\n propertyType => propertyType.id === typeId\n );\n if (propertyType) {\n return propertyType.icon;\n } else {\n return undefined;\n }\n};\n\n/* 2. convertObjectTypeToTreeItem*/\nconst convertObjectTypeToTreeItem = (\n objectType: ObjectType\n): TreeViewItemModel => ({\n caption: objectType.name,\n id: objectType.id,\n startImgSrc: objectType.icon,\n leaf: false,\n parts: \"object-type tree-view-item\",\n expanded: true,\n items: []\n});\n\n/* 3. convertObjectToTreeItem*/\nconst convertObjectToTreeItem = (\n object: ObjectData,\n objectTypes: Map<string, ObjectType>\n): TreeViewItemModel => ({\n caption: object.name,\n id: object.id,\n startImgSrc: objectTypes.get(object.typeId).icon,\n parts: \"object tree-view-item\",\n metadata: KB_OBJECT,\n leaf: true\n});\n\n/* 5. findObjectInTree*/\nconst findObjectInTree = (\n object: ObjectData,\n actualTreeState: TreeViewItemModel[]\n): ObjectTreeInfo => {\n const objectTreeItemInfo = {\n objectExists: false,\n objectTypeIndex: -1\n };\n if (actualTreeState) {\n const objectTypeTreeItemIndex = actualTreeState.findIndex(\n objectTypeTreeItem => {\n return objectTypeTreeItem.id === object.typeId;\n }\n );\n if (objectTypeTreeItemIndex !== -1) {\n objectTreeItemInfo.objectTypeIndex = objectTypeTreeItemIndex;\n // objectType exists as a node in the actual tree.\n // Now try to find the object\n const objectFound = actualTreeState[objectTypeTreeItemIndex].items?.find(\n objectTreeItem => {\n return objectTreeItem.id === object.id;\n }\n );\n if (objectFound) {\n objectTreeItemInfo.objectExists = true;\n }\n }\n }\n return objectTreeItemInfo;\n};\n\n/* 6. findPropertyInTree */\nconst findPropertyInTree = (\n property: KBPropertyData,\n updatedTreeData: TreeViewItemModel[]\n): boolean => {\n const found = updatedTreeData.find(node => {\n return node.id === property.id;\n });\n if (found) {\n return true;\n }\n return false;\n};\n\n/* 7. convertPropertyToTreeItem */\nconst convertPropertyToTreeItem = (\n property: KBPropertyData,\n kbPropertiesTypes: KBPropertyType[]\n): TreeViewItemModel => ({\n caption: property.name,\n id: property.id,\n startImgSrc: getPropertyIcon(property.typeId, kbPropertiesTypes),\n parts: \"property tree-view-item\",\n metadata: KB_PROPERTY,\n leaf: true\n});\n\n/* 8. updateTreeModelWithObjects*/\nexport const updateTreeModelWithObjects = (\n objects: ObjectData[] | undefined,\n objectTypes: Map<string, ObjectType>,\n actualTreeState: TreeViewItemModel[]\n): TreeViewItemModel[] => {\n const updatedTreeData: TreeViewItemModel[] = [...actualTreeState];\n if (!objects) {\n // nothing to do\n return updatedTreeData;\n }\n objects.forEach(object => {\n // objects that already exists in the actual actualTreeState should not be added.\n // We can find the object in the actual actualTreeState.\n const objectTreeItemInfo: ObjectTreeInfo = findObjectInTree(\n object,\n updatedTreeData\n );\n if (!objectTreeItemInfo.objectExists) {\n // object does not exists in actualTreeState\n // if the objectType tree node exists, insert inside.\n // if the objectType tree node does not exists, create object type node first.\n if (objectTreeItemInfo.objectTypeIndex === -1) {\n const objectType: ObjectType = objectTypes.get(object.typeId);\n if (objectType !== undefined) {\n const objectTypeTreeItem = convertObjectTypeToTreeItem(objectType);\n objectTreeItemInfo.objectTypeIndex =\n updatedTreeData.push(objectTypeTreeItem) - 1;\n }\n }\n const objectAsTreeItem: TreeViewItemModel = convertObjectToTreeItem(\n object,\n objectTypes\n );\n // insert object in tree (under the object type tree node)\n updatedTreeData[objectTreeItemInfo.objectTypeIndex].items.push(\n objectAsTreeItem\n );\n }\n });\n return updatedTreeData;\n};\n\n/* 9. convertKbPropertiesDataToTreeItemData*/\nexport const convertKbPropertiesDataToTreeItemData = (\n properties: KBPropertyData[],\n kbPropertiesTypes: KBPropertyType[],\n actualTreeState: TreeViewItemModel[]\n): TreeViewItemModel[] => {\n const updatedTreeData: TreeViewItemModel[] = [...actualTreeState];\n if (!properties) {\n // nothing to do\n return updatedTreeData;\n }\n properties.forEach(property => {\n // properties have no parent node, and they should be added at the beginning of the tree\n const propertyAlreadyExists = findPropertyInTree(property, updatedTreeData);\n if (!propertyAlreadyExists) {\n const propertyTreeItem = convertPropertyToTreeItem(\n property,\n kbPropertiesTypes\n );\n updatedTreeData.unshift(propertyTreeItem);\n }\n });\n return updatedTreeData;\n};\n\ntype ObjectTreeInfo = {\n objectExists: boolean;\n objectTypeIndex: number;\n};\n\n/* 10. clearKbPropertiesFromTree*/\nexport const clearKbPropertiesFromTree = (\n kBPropertiesData: KBPropertyData[],\n actualTreeState: TreeViewItemModel[]\n): TreeViewItemModel[] => {\n if (!(actualTreeState.length > 0)) {\n // nothing to do.\n return [];\n }\n const kBPropertiesDataIds: string[] = kBPropertiesData.map(property => {\n return property.id;\n });\n\n const treeModelWithoutKbProperties: TreeViewItemModel[] =\n actualTreeState.filter(item => {\n return !kBPropertiesDataIds.includes(item.id);\n });\n\n return treeModelWithoutKbProperties;\n};\n"]}
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/components/kb-manager-export/helpers.ts"],"names":[],"mappings":"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","sourcesContent":["// /* Tree View */\nimport {\n TreeViewItemModel,\n TreeViewModel\n} from \"@genexus/chameleon-controls-library\";\nimport { ObjectData, KBPropertyData, KBPropertyType } from \"./types\";\nimport { ObjectType } from \"../../common/types\";\nexport const KB_PROPERTY = \"property\";\nexport const KB_OBJECT = \"object\";\n\nconst getPropertyIcon = (\n typeId: string,\n kbPropertiesTypes: KBPropertyType[]\n): string =>\n // The object icon has to be retrieved from the ObjectTypes array, by\n // matching the ObjectData typeId with the ObjectType id\n kbPropertiesTypes.find(propertyType => propertyType.id === typeId).icon;\n\nconst convertObjectTypeToTreeItem = (\n objectType: ObjectType\n): TreeViewItemModel => ({\n caption: objectType.name,\n id: objectType.id,\n startImgSrc: objectType.icon,\n leaf: false,\n parts: \"object-type tree-view-item\",\n expanded: true,\n items: []\n});\n\nconst convertObjectToTreeItem = (\n object: ObjectData,\n objectTypes: Map<string, ObjectType>\n): TreeViewItemModel => ({\n caption: object.name,\n id: object.id,\n startImgSrc: objectTypes.get(object.typeId).icon,\n parts: \"object tree-view-item\",\n metadata: KB_OBJECT,\n leaf: true\n});\n\nconst convertPropertyToTreeItem = (\n property: KBPropertyData,\n kbPropertiesTypes: KBPropertyType[]\n): TreeViewItemModel => ({\n caption: property.name,\n id: property.id,\n startImgSrc: getPropertyIcon(property.typeId, kbPropertiesTypes),\n parts: \"property tree-view-item\",\n metadata: KB_PROPERTY,\n leaf: true\n});\n\n/**\n * Updates the tree model with the provided objects.\n * Objects may already exist and are placed under their parent node.\n * If the parent node doesn't exist (identified by typeId on ObjectTypes),\n * it is created and added at the bottom.\n *\n * @param {ObjectData[] | undefined} objects - The array of objects to update.\n * @param {Map<string, ObjectType>} objectTypesMap - A map of object types by ID.\n * @param {Set<string>} objectsSet - A set of existing object IDs.\n * @param {TreeViewModel} actualTreeState - The current tree state to be updated.\n * @returns {TreeViewModel} - The updated tree view model.\n */\nexport const updateObjectsTreeModel = (\n objects: ObjectData[] | undefined,\n objectTypesMap: Map<string, ObjectType>,\n objectsSet: Set<string>,\n actualTreeState: TreeViewModel\n): TreeViewModel => {\n if (!objects) {\n return [...actualTreeState];\n }\n\n const updatedTreeData: TreeViewModel = [...actualTreeState];\n objects.forEach(object => {\n // objects that already exists in the actual actualTreeState should not be added.\n\n if (objectsSet.has(object.id)) {\n // object already exists\n return;\n }\n\n const objectTreeItem = convertObjectToTreeItem(object, objectTypesMap);\n\n // TODO: Improve the algorithm efficiency. This check visits potentially all nodes\n // from the TreeViewModel on each iteration. Using a Map to pre-store the TreeView\n // nodes would improve efficiency.\n const objectTypeTreeItemIndex = updatedTreeData.findIndex(\n treeItem => treeItem.id === object.typeId\n );\n\n if (objectTypeTreeItemIndex === -1) {\n // Create and add new object type tree item\n const objectType = objectTypesMap.get(object.typeId);\n if (objectType) {\n const objectTypeTreeItem = convertObjectTypeToTreeItem(objectType);\n objectTypeTreeItem.items.push(objectTreeItem);\n updatedTreeData.push(objectTypeTreeItem);\n }\n } else {\n // objectType exists already. insert object as children of the object type tree item.\n updatedTreeData[objectTypeTreeItemIndex].items.push(objectTreeItem);\n }\n\n objectsSet.add(object.id);\n });\n\n return updatedTreeData;\n};\n\n/**\n * Converts an array of KB properties data into tree item data for a tree view.\n *\n * @param {KBPropertyData[]} properties - The array of KB property data.\n * @param {KBPropertyType[]} kbPropertiesTypes - The array of KB property types.\n * @param {TreeViewModel} actualTreeState - The current state of the tree.\n * @returns {TreeViewModel} - The updated tree view item models.\n */\nexport const convertKbPropertiesDataToTreeItemData = (\n properties: KBPropertyData[],\n kbPropertiesTypes: KBPropertyType[],\n actualTreeState: TreeViewModel\n): TreeViewModel => {\n if (!properties) {\n return [...actualTreeState];\n }\n\n const updatedTreeData: TreeViewModel = [...actualTreeState];\n properties.forEach(property => {\n // properties have no parent node, and they should be added at the beginning of the tree\n const propertyAlreadyExists =\n updatedTreeData.find(node => node.id === property.id) !== undefined;\n if (propertyAlreadyExists) {\n return;\n }\n const propertyTreeItem = convertPropertyToTreeItem(\n property,\n kbPropertiesTypes\n );\n updatedTreeData.unshift(propertyTreeItem);\n });\n return updatedTreeData;\n};\n\n/**\n * Removes properties from the tree model.\n *\n * @param {TreeViewModel} actualTreeState - The current state of the tree,\n * containing various tree view items.\n * @returns {TreeViewModel} - A new array of tree view items that excludes\n * any items with metadata of type `KB_PROPERTY`.\n */\nexport const clearKbPropertiesFromTree = (\n actualTreeState: TreeViewModel\n): TreeViewModel =>\n actualTreeState.filter(item => item.metadata !== KB_PROPERTY);\n"]}