@genexus/genexus-ide-ui 1.1.61 → 1.1.63

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 (127) hide show
  1. package/dist/cjs/{common-f2540d3e.js → common-51d68918.js} +1 -31
  2. package/dist/cjs/common-51d68918.js.map +1 -0
  3. package/dist/cjs/genexus-ide-ui.cjs.js +1 -1
  4. package/dist/cjs/gx-ide-edit-module-server.cjs.entry.js +111 -49
  5. package/dist/cjs/gx-ide-edit-module-server.cjs.entry.js.map +1 -1
  6. package/dist/cjs/gx-ide-empty-state.cjs.entry.js +1 -1
  7. package/dist/cjs/gx-ide-empty-state.cjs.entry.js.map +1 -1
  8. package/dist/cjs/gx-ide-manage-module-references.cjs.entry.js +358 -266
  9. package/dist/cjs/gx-ide-manage-module-references.cjs.entry.js.map +1 -1
  10. package/dist/cjs/gx-ide-new-environment.cjs.entry.js +1 -1
  11. package/dist/cjs/gx-ide-new-kb.cjs.entry.js +1 -1
  12. package/dist/cjs/gx-ide-progress-bar.cjs.entry.js +141 -0
  13. package/dist/cjs/gx-ide-progress-bar.cjs.entry.js.map +1 -0
  14. package/dist/cjs/gx-ide-splash.cjs.entry.js +1 -1
  15. package/dist/cjs/gx-ide-team-dev-preview.cjs.entry.js +2 -2
  16. package/dist/cjs/gx-ide-team-dev-preview.cjs.entry.js.map +1 -1
  17. package/dist/cjs/gx-ide-ww-images.cjs.entry.js +1 -1
  18. package/dist/cjs/loader.cjs.js +1 -1
  19. package/dist/collection/collection-manifest.json +1 -0
  20. package/dist/collection/common/common.js +0 -21
  21. package/dist/collection/common/common.js.map +1 -1
  22. package/dist/collection/components/_helpers/empty-state/gx-ide-empty-state.css +1 -1
  23. package/dist/collection/components/_helpers/progress-bar/gx-ide-assets/progress-bar/langs/progress-bar.lang.en.json +5 -0
  24. package/dist/collection/components/_helpers/progress-bar/gx-ide-assets/progress-bar/langs/progress-bar.lang.ja.json +5 -0
  25. package/dist/collection/components/_helpers/progress-bar/gx-ide-assets/progress-bar/langs/progress-bar.lang.zh.json +5 -0
  26. package/dist/collection/components/_helpers/progress-bar/progress-bar.css +210 -0
  27. package/dist/collection/components/_helpers/progress-bar/progress-bar.js +320 -0
  28. package/dist/collection/components/_helpers/progress-bar/progress-bar.js.map +1 -0
  29. package/dist/collection/components/modules/edit-module-server/edit-module-server.css +30 -639
  30. package/dist/collection/components/modules/edit-module-server/edit-module-server.js +179 -110
  31. package/dist/collection/components/modules/edit-module-server/edit-module-server.js.map +1 -1
  32. package/dist/collection/components/modules/edit-module-server/gx-ide-assets/edit-module-server/shortcuts.json +15 -0
  33. package/dist/collection/components/modules/edit-module-server/helpers.js +12 -0
  34. package/dist/collection/components/modules/edit-module-server/helpers.js.map +1 -0
  35. package/dist/collection/components/modules/manage-module-references/gx-ide-assets/manage-module-references/langs/manage-module-references.lang.en.json +6 -2
  36. package/dist/collection/components/modules/manage-module-references/gx-ide-assets/manage-module-references/langs/manage-module-references.lang.ja.json +6 -2
  37. package/dist/collection/components/modules/manage-module-references/gx-ide-assets/manage-module-references/langs/manage-module-references.lang.zh.json +6 -2
  38. package/dist/collection/components/modules/manage-module-references/helpers.js +32 -0
  39. package/dist/collection/components/modules/manage-module-references/helpers.js.map +1 -0
  40. package/dist/collection/components/modules/manage-module-references/manage-module-references.css +116 -789
  41. package/dist/collection/components/modules/manage-module-references/manage-module-references.js +378 -373
  42. package/dist/collection/components/modules/manage-module-references/manage-module-references.js.map +1 -1
  43. package/dist/collection/components/team-dev/preview/team-dev-preview.css +1 -1
  44. package/dist/collection/components/team-dev/preview/team-dev-preview.js +1 -1
  45. package/dist/collection/components/team-dev/preview/team-dev-preview.js.map +1 -1
  46. package/dist/collection/testing/locale.e2e.js +1 -0
  47. package/dist/collection/testing/locale.e2e.js.map +1 -1
  48. package/dist/components/common.js +1 -30
  49. package/dist/components/common.js.map +1 -1
  50. package/dist/components/gx-ide-edit-module-server.js +118 -68
  51. package/dist/components/gx-ide-edit-module-server.js.map +1 -1
  52. package/dist/components/gx-ide-empty-state2.js +1 -1
  53. package/dist/components/gx-ide-empty-state2.js.map +1 -1
  54. package/dist/components/gx-ide-manage-module-references.js +384 -291
  55. package/dist/components/gx-ide-manage-module-references.js.map +1 -1
  56. package/dist/components/gx-ide-progress-bar.d.ts +11 -0
  57. package/dist/components/gx-ide-progress-bar.js +8 -0
  58. package/dist/components/gx-ide-progress-bar.js.map +1 -0
  59. package/dist/components/gx-ide-team-dev-preview.js +2 -2
  60. package/dist/components/gx-ide-team-dev-preview.js.map +1 -1
  61. package/dist/components/gx-ide-ww-images.js +1 -1
  62. package/dist/components/progress-bar.js +166 -0
  63. package/dist/components/progress-bar.js.map +1 -0
  64. package/dist/esm/{common-b811a822.js → common-dc966e64.js} +2 -31
  65. package/dist/esm/common-dc966e64.js.map +1 -0
  66. package/dist/esm/genexus-ide-ui.js +1 -1
  67. package/dist/esm/gx-ide-edit-module-server.entry.js +112 -50
  68. package/dist/esm/gx-ide-edit-module-server.entry.js.map +1 -1
  69. package/dist/esm/gx-ide-empty-state.entry.js +1 -1
  70. package/dist/esm/gx-ide-empty-state.entry.js.map +1 -1
  71. package/dist/esm/gx-ide-manage-module-references.entry.js +359 -267
  72. package/dist/esm/gx-ide-manage-module-references.entry.js.map +1 -1
  73. package/dist/esm/gx-ide-new-environment.entry.js +1 -1
  74. package/dist/esm/gx-ide-new-kb.entry.js +1 -1
  75. package/dist/esm/gx-ide-progress-bar.entry.js +137 -0
  76. package/dist/esm/gx-ide-progress-bar.entry.js.map +1 -0
  77. package/dist/esm/gx-ide-splash.entry.js +1 -1
  78. package/dist/esm/gx-ide-team-dev-preview.entry.js +2 -2
  79. package/dist/esm/gx-ide-team-dev-preview.entry.js.map +1 -1
  80. package/dist/esm/gx-ide-ww-images.entry.js +1 -1
  81. package/dist/esm/loader.js +1 -1
  82. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js +1 -1
  83. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js.map +1 -1
  84. package/dist/genexus-ide-ui/gx-ide-assets/edit-module-server/shortcuts.json +15 -0
  85. package/dist/genexus-ide-ui/gx-ide-assets/manage-module-references/langs/manage-module-references.lang.en.json +6 -2
  86. package/dist/genexus-ide-ui/gx-ide-assets/manage-module-references/langs/manage-module-references.lang.ja.json +6 -2
  87. package/dist/genexus-ide-ui/gx-ide-assets/manage-module-references/langs/manage-module-references.lang.zh.json +6 -2
  88. package/dist/genexus-ide-ui/gx-ide-assets/progress-bar/langs/progress-bar.lang.en.json +5 -0
  89. package/dist/genexus-ide-ui/gx-ide-assets/progress-bar/langs/progress-bar.lang.ja.json +5 -0
  90. package/dist/genexus-ide-ui/gx-ide-assets/progress-bar/langs/progress-bar.lang.zh.json +5 -0
  91. package/dist/genexus-ide-ui/p-29ac6b13.entry.js +582 -0
  92. package/dist/genexus-ide-ui/p-29ac6b13.entry.js.map +1 -0
  93. package/dist/genexus-ide-ui/p-3a22af5d.entry.js +249 -0
  94. package/dist/genexus-ide-ui/p-3a22af5d.entry.js.map +1 -0
  95. package/dist/genexus-ide-ui/p-45d9dcbc.entry.js +166 -0
  96. package/dist/genexus-ide-ui/p-45d9dcbc.entry.js.map +1 -0
  97. package/dist/genexus-ide-ui/{p-84d39fc6.entry.js → p-5f7de718.entry.js} +2 -2
  98. package/dist/genexus-ide-ui/{p-84d39fc6.entry.js.map → p-5f7de718.entry.js.map} +1 -1
  99. package/dist/genexus-ide-ui/{p-f5734cc7.entry.js → p-630581df.entry.js} +2 -2
  100. package/dist/genexus-ide-ui/{p-d41d52f6.entry.js → p-70038e09.entry.js} +2 -2
  101. package/dist/genexus-ide-ui/{p-b5aadc8d.entry.js → p-8f2f8995.entry.js} +2 -2
  102. package/dist/genexus-ide-ui/{p-ae33da9a.entry.js → p-9606ebed.entry.js} +19 -19
  103. package/dist/genexus-ide-ui/{p-ef6a6401.entry.js → p-966f80c1.entry.js} +15 -14
  104. package/dist/genexus-ide-ui/p-966f80c1.entry.js.map +1 -0
  105. package/dist/genexus-ide-ui/p-97bbd54c.js +132 -0
  106. package/dist/genexus-ide-ui/p-97bbd54c.js.map +1 -0
  107. package/dist/types/common/common.d.ts +0 -2
  108. package/dist/types/components/_helpers/progress-bar/progress-bar.d.ts +61 -0
  109. package/dist/types/components/modules/edit-module-server/edit-module-server.d.ts +15 -30
  110. package/dist/types/components/modules/edit-module-server/helpers.d.ts +3 -0
  111. package/dist/types/components/modules/manage-module-references/helpers.d.ts +5 -0
  112. package/dist/types/components/modules/manage-module-references/manage-module-references.d.ts +43 -88
  113. package/dist/types/components.d.ts +109 -42
  114. package/package.json +1 -1
  115. package/dist/cjs/common-f2540d3e.js.map +0 -1
  116. package/dist/esm/common-b811a822.js.map +0 -1
  117. package/dist/genexus-ide-ui/p-67e3486a.entry.js +0 -498
  118. package/dist/genexus-ide-ui/p-67e3486a.entry.js.map +0 -1
  119. package/dist/genexus-ide-ui/p-714b37c0.js +0 -159
  120. package/dist/genexus-ide-ui/p-714b37c0.js.map +0 -1
  121. package/dist/genexus-ide-ui/p-e13998a5.entry.js +0 -141
  122. package/dist/genexus-ide-ui/p-e13998a5.entry.js.map +0 -1
  123. package/dist/genexus-ide-ui/p-ef6a6401.entry.js.map +0 -1
  124. /package/dist/genexus-ide-ui/{p-f5734cc7.entry.js.map → p-630581df.entry.js.map} +0 -0
  125. /package/dist/genexus-ide-ui/{p-d41d52f6.entry.js.map → p-70038e09.entry.js.map} +0 -0
  126. /package/dist/genexus-ide-ui/{p-b5aadc8d.entry.js.map → p-8f2f8995.entry.js.map} +0 -0
  127. /package/dist/genexus-ide-ui/{p-ae33da9a.entry.js.map → p-9606ebed.entry.js.map} +0 -0
@@ -1,159 +0,0 @@
1
- import { h as e } from "./p-9b9ccd0c.js";
2
-
3
- /* STENCIL IMPORTS */ const renderFormItems = (r = "gxg-combo-box-item", a, t = "undefined-group", i) => {
4
- if (a.length) {
5
- const c = [];
6
- a.forEach((a => {
7
- let n;
8
- switch (r) {
9
- case "gxg-form-checkbox":
10
- n = e("gxg-form-checkbox", {
11
- checkboxId: a.id,
12
- checked: a.checked,
13
- disabled: a.disabled,
14
- label: a.label,
15
- value: a.value,
16
- onChange: i ? i : null,
17
- iconName: a.iconName,
18
- part: `${t}-${a.id}`
19
- });
20
- c.push(n);
21
- break;
22
-
23
- case "gxg-combo-box-item":
24
- n = e("gxg-combo-box-item", {
25
- value: a.id,
26
- icon: a.iconName,
27
- part: `${t}-${a.id}`
28
- }, a.label);
29
- c.push(n);
30
- break;
31
-
32
- case "gxg-form-radio":
33
- n = e("gxg-form-radio", {
34
- radioId: a.id,
35
- checked: a.checked,
36
- disabled: a.disabled,
37
- label: a.label,
38
- value: a.value,
39
- name: t,
40
- part: `${t}-${a.id}`
41
- });
42
- c.push(n);
43
- break;
44
- }
45
- }));
46
- return c;
47
- }
48
- return null;
49
- };
50
-
51
- const renderModuleDataProperties = r => {
52
- if (r.length) {
53
- const a = [];
54
- r.forEach((r => {
55
- if (Array.isArray(r.value)) {
56
- const t = e("div", {
57
- class: "md-property__list"
58
- }, e("p", {
59
- class: "md-property__key"
60
- }, r.name, " :"), e("ul", null, r.value.map((r => e("li", null, r)))));
61
- a.push(t);
62
- } else {
63
- const t = e("div", {
64
- class: r.inline ? "md-property md-property--inline" : "md-property--block"
65
- }, e("p", {
66
- class: "md-property__key"
67
- }, r.name, " :"), e("p", {
68
- class: "md-property__value"
69
- }, r.value));
70
- a.push(t);
71
- }
72
- }));
73
- return a;
74
- }
75
- return null;
76
- };
77
-
78
- /**
79
- * @param gxOptions An array of GxOptions's
80
- * @returns The value of the selected item, or the first item, if no one is selected.
81
- */ const getSelectedItem = e => {
82
- const r = e.find((e => e.selected));
83
- if (r) {
84
- return r.id;
85
- } else {
86
- return e[0].id;
87
- }
88
- };
89
-
90
- const setSelectedItem = (e, r) => e.map((e => Object.assign(Object.assign({}, e), {
91
- selected: e.id === r
92
- })))
93
- // Dots animation used in ch-chat code-render (or other components)
94
- ;
95
-
96
- const ANIMATION_DOTS = (r = "regular", a = "primary", t = "dynamic", i = "1s") => {
97
- const c = r === "regular" ? 1.5 : 4;
98
- let n, l, o;
99
- if (a === "nexa") {
100
- n = "#5ba7ff";
101
- l = "#00CCFF";
102
- o = "#CF7AFF";
103
- } else if (a === "on-surface") {
104
- n = l = o = "var(--mer-text__on-surface)";
105
- } else {
106
- // primary
107
- n = l = o = "var(--mer-color__primary--200)";
108
- }
109
- const animateRadiusSize = (r = "0") => e("animate", {
110
- attributeName: "r",
111
- values: `${2 / c};${4 / c};${2 / c}`,
112
- dur: i,
113
- begin: r,
114
- repeatCount: "indefinite"
115
- });
116
- return e("svg", {
117
- width: 36 / c,
118
- height: 8 / c,
119
- fill: "transparent"
120
- }, e("circle", {
121
- cx: 4 / c,
122
- cy: 4 / c,
123
- r: 4 / c,
124
- opacity: "0",
125
- fill: n
126
- }, e("animate", {
127
- attributeName: "opacity",
128
- values: "0;1;0",
129
- dur: i,
130
- repeatCount: "indefinite"
131
- }), t === "dynamic" ? animateRadiusSize("0") : null), e("circle", {
132
- cx: 18 / c,
133
- cy: 4 / c,
134
- r: 4 / c,
135
- opacity: "0",
136
- fill: l
137
- }, e("animate", {
138
- attributeName: "opacity",
139
- values: "0;1;0",
140
- dur: i,
141
- begin: "0.15s",
142
- repeatCount: "indefinite"
143
- }), t === "dynamic" ? animateRadiusSize("0.33s") : null), e("circle", {
144
- cx: 32 / c,
145
- cy: 4 / c,
146
- r: 4 / c,
147
- opacity: "0",
148
- fill: o
149
- }, e("animate", {
150
- attributeName: "opacity",
151
- values: "0;1;0",
152
- dur: i,
153
- begin: "0.30s",
154
- repeatCount: "indefinite"
155
- }), t === "dynamic" ? animateRadiusSize("0.66s") : null));
156
- };
157
-
158
- export { ANIMATION_DOTS as A, renderFormItems as a, getSelectedItem as g, renderModuleDataProperties as r, setSelectedItem as s };
159
- //# sourceMappingURL=p-714b37c0.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["renderFormItems","componentType","options","group","callback","length","items","forEach","option","item","h","checkboxId","id","checked","disabled","label","value","onChange","iconName","part","push","icon","radioId","name","renderModuleDataProperties","Array","isArray","class","map","subItem","inline","getSelectedItem","gxOptions","found","find","selected","setSelectedItem","selectedItemId","Object","assign","ANIMATION_DOTS","size","color","sizeType","duration","n","colorDot1","colorDot2","colorDot3","animateRadiusSize","begin","attributeName","values","dur","repeatCount","width","height","fill","cx","cy","r","opacity"],"sources":["src/common/common.tsx"],"sourcesContent":["/* STENCIL IMPORTS */\nimport { h } from \"@stencil/core\";\n/* OTHER LIBRARIES IMPORTS */\n/* CUSTOM IMPORTS */\nimport { GxgFormItemsArray, GxOption } from \"./types\";\nimport { ModulePropertyData } from \"../components/modules/types\";\nexport const renderFormItems = (\n componentType:\n | \"gxg-combo-box-item\"\n | \"gxg-form-checkbox\"\n | \"gxg-form-radio\" = \"gxg-combo-box-item\",\n options: Array<GxOption>,\n group = \"undefined-group\",\n callback?: any\n): GxgFormItemsArray => {\n if (options.length) {\n const items: GxgFormItemsArray = [];\n options.forEach(option => {\n let item;\n switch (componentType) {\n case \"gxg-form-checkbox\":\n item = (\n <gxg-form-checkbox\n checkboxId={option.id}\n checked={option.checked}\n disabled={option.disabled}\n label={option.label}\n value={option.value}\n onChange={callback ? callback : null}\n iconName={option.iconName}\n part={`${group}-${option.id}`}\n ></gxg-form-checkbox>\n );\n items.push(item);\n break;\n case \"gxg-combo-box-item\":\n item = (\n <gxg-combo-box-item\n value={option.id}\n icon={option.iconName}\n part={`${group}-${option.id}`}\n >\n {option.label}\n </gxg-combo-box-item>\n );\n items.push(item);\n break;\n case \"gxg-form-radio\":\n item = (\n <gxg-form-radio\n radioId={option.id}\n checked={option.checked}\n disabled={option.disabled}\n label={option.label}\n value={option.value}\n name={group}\n part={`${group}-${option.id}`}\n ></gxg-form-radio>\n );\n items.push(item);\n break;\n default:\n break;\n }\n });\n return items;\n }\n return null;\n};\n\nexport const renderModuleDataProperties = (\n options: Array<ModulePropertyData>\n): ModulePropertyData[] => {\n if (options.length) {\n const items: ModulePropertyData[] = [];\n\n options.forEach(option => {\n if (Array.isArray(option.value)) {\n const item = (\n <div class=\"md-property__list\">\n <p class=\"md-property__key\">{option.name} :</p>\n <ul>\n {option.value.map(subItem => {\n return <li>{subItem}</li>;\n })}\n </ul>\n </div>\n );\n items.push(item);\n } else {\n const item = (\n <div\n class={\n option.inline\n ? \"md-property md-property--inline\"\n : \"md-property--block\"\n }\n >\n <p class=\"md-property__key\">{option.name} :</p>\n <p class=\"md-property__value\">{option.value}</p>\n </div>\n );\n items.push(item);\n }\n });\n\n return items;\n }\n return null;\n};\n\n/**\n * @param gxOptions An array of GxOptions's\n * @returns The first option in the array that is 'selected'. If no one found it returns null.\n */\nexport const getSelectedGxOption = (\n gxOptions: GxOption[],\n onlyId = true\n): GxOption | string | void => {\n if (gxOptions?.length > 0) {\n let found = null;\n for (let i = 0; i < gxOptions.length; i++) {\n if (gxOptions[i].selected) {\n found = gxOptions[i];\n break;\n }\n }\n if (found && onlyId) {\n return found.id;\n } else if (!found && onlyId) {\n return gxOptions[0].id;\n }\n return found;\n }\n};\n\n/**\n * @param gxOptions An array of GxOptions's\n * @returns The value of the selected item, or the first item, if no one is selected.\n */\nexport const getSelectedItem = (gxOptions: GxOption[]): string => {\n const found = gxOptions.find(item => item.selected);\n if (found) {\n return found.id;\n } else {\n return gxOptions[0].id;\n }\n};\n\nexport const setSelectedItem = (\n gxOptions: GxOption[],\n selectedItemId: string\n): GxOption[] =>\n gxOptions.map(item => ({\n ...item,\n selected: item.id === selectedItemId\n }));\n\nexport const getSelectedItem2 = (\n gxOptions: GxOption[] | undefined\n): string | undefined =>\n gxOptions\n ? (gxOptions.find(item => item.selected) ?? gxOptions[0]).id\n : undefined;\n\n// Dots animation used in ch-chat code-render (or other components)\nexport const ANIMATION_DOTS = (\n size: \"regular\" | \"tiny\" = \"regular\",\n color: \"primary\" | \"on-surface\" | \"nexa\" = \"primary\",\n sizeType: \"static\" | \"dynamic\" = \"dynamic\",\n duration: string = \"1s\"\n): SVGElement => {\n const n = size === \"regular\" ? 1.5 : 4;\n let colorDot1, colorDot2, colorDot3;\n if (color === \"nexa\") {\n colorDot1 = \"#5ba7ff\";\n colorDot2 = \"#00CCFF\";\n colorDot3 = \"#CF7AFF\";\n } else if (color === \"on-surface\") {\n colorDot1 = colorDot2 = colorDot3 = \"var(--mer-text__on-surface)\";\n } else {\n // primary\n colorDot1 = colorDot2 = colorDot3 = \"var(--mer-color__primary--200)\";\n }\n\n const animateRadiusSize = (begin: string = \"0\") => {\n return (\n <animate\n attributeName=\"r\"\n values={`${2 / n};${4 / n};${2 / n}`}\n dur={duration}\n begin={begin}\n repeatCount=\"indefinite\"\n />\n );\n };\n\n return (\n <svg width={36 / n} height={8 / n} fill=\"transparent\">\n <circle cx={4 / n} cy={4 / n} r={4 / n} opacity=\"0\" fill={colorDot1}>\n <animate\n attributeName=\"opacity\"\n values=\"0;1;0\"\n dur={duration}\n repeatCount=\"indefinite\"\n />\n {sizeType === \"dynamic\" ? animateRadiusSize(\"0\") : null}\n </circle>\n <circle cx={18 / n} cy={4 / n} r={4 / n} opacity=\"0\" fill={colorDot2}>\n <animate\n attributeName=\"opacity\"\n values=\"0;1;0\"\n dur={duration}\n begin=\"0.15s\"\n repeatCount=\"indefinite\"\n />\n {sizeType === \"dynamic\" ? animateRadiusSize(\"0.33s\") : null}\n </circle>\n <circle cx={32 / n} cy={4 / n} r={4 / n} opacity=\"0\" fill={colorDot3}>\n <animate\n attributeName=\"opacity\"\n values=\"0;1;0\"\n dur={duration}\n begin=\"0.30s\"\n repeatCount=\"indefinite\"\n />\n {sizeType === \"dynamic\" ? animateRadiusSize(\"0.66s\") : null}\n </circle>\n </svg>\n );\n};\n"],"mappings":"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"}
@@ -1,141 +0,0 @@
1
- import { r as e, c as r, h as t, H as a, a as o } from "./p-9b9ccd0c.js";
2
-
3
- import { L as i } from "./p-311eedf3.js";
4
-
5
- const s = ":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}.pill-tag{padding:1px 4px;border-radius:2px;min-inline-size:40px;text-align:center;margin-inline-end:10px;font-size:11px}.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)}.giu-static-pill-icon-and-text,.giu-static-pill{background-color:var(--elevation-background-color, var(--mer-surface__elevation--01));padding-inline:var(--mer-spacing--xs);color:var(--mer-text__on-elevation);font-size:var(--font-size-body-s);line-height:1.4;font-weight:var(--font-weight-regular);border-radius:var(--mer-border__width--lg);min-block-size:25px;display:inline-grid;align-items:center;pointer-events:none}.giu-static-pill-icon-and-text{display:inline-grid;grid-auto-flow:column;grid-auto-columns:max-content;gap:var(--mer-spacing--xs)}.tab-full-width-buttons::part(tab-list block-start),.tab-full-width-buttons::part(tab-list block-end){grid-auto-columns:1fr}.tab-full-width-buttons::part(tab block-start){justify-content:center}:host{display:block}.module-servers-grid-local{gap:var(--spacing-comp-03);display:grid;grid-template-columns:auto 1fr auto}.module-servers-grid-local *:nth-child(3){align-self:end}.module-servers-grid-server{gap:var(--spacing-comp-03);display:grid;grid-template-columns:auto 1fr}.module-servers-grid-server *:nth-child(3){align-self:end}.module-servers-grid-column-1{gap:var(--spacing-comp-03);display:grid;grid-template-rows:repeat(3, 1fr)}.module-servers-grid-column-2{gap:var(--spacing-comp-03);display:grid;grid-template-rows:repeat(2, 1fr)}.grid-server-auth-column-1{gap:var(--spacing-comp-03);display:grid;grid-template-rows:repeat(2, 1fr)}.grid-server-auth-column-2{gap:var(--spacing-comp-03);display:grid;grid-template-rows:repeat(2, 1fr)}";
6
-
7
- const l = class {
8
- constructor(a) {
9
- e(this, a);
10
- this.componentDidRenderFirstTime = r(this, "componentDidRenderFirstTime", 7);
11
- this.renderedFirstTime = false;
12
- // 7.LISTENERS //
13
- // 8.PUBLIC METHODS API //
14
- // 9.LOCAL METHODS //
15
- /**
16
- * Executed when user click on confirm button
17
- */ this.confirmCallbackHandler = async () => {
18
- if (this.confirmCallback) {
19
- const e = this.types.find((({type: e}) => e === this.selectedType));
20
- let r = {};
21
- if (e.type === "remote") {
22
- r = {
23
- id: e.id,
24
- name: this.nameEl.value,
25
- type: this.serverTypeEl.value,
26
- authenticated: e.authenticated,
27
- source: this.sourceEl.value,
28
- user: this.userEl.value,
29
- password: this.passwordEl.value
30
- };
31
- } else {
32
- r = {
33
- id: e.id,
34
- name: this.nameEl.value,
35
- type: this.serverTypeEl.value,
36
- authenticated: e.authenticated,
37
- source: this.sourceEl.value
38
- };
39
- }
40
- await this.confirmCallback(r);
41
- }
42
- };
43
- /**
44
- * Executed when user click on cancel button
45
- */ this.cancelCallbackHandler = async () => {
46
- await this.cancelCallback();
47
- };
48
- this.selectSourceCallbackHandle = async () => {
49
- const e = await this.selectSourceCallback();
50
- if (e) {
51
- this.sourceEl.value = e;
52
- }
53
- };
54
- // 10.LOCAL METHODS //
55
- this.renderServerOptions = () => [ t("div", {
56
- class: "grid-server-auth-column-1"
57
- }, t("gxg-label", null, this._componentLocale.user), t("gxg-label", null, this._componentLocale.password)), t("div", {
58
- class: "grid-server-auth-column-2"
59
- }, t("gxg-form-text", {
60
- placeholder: this._componentLocale.user,
61
- ref: e => this.userEl = e,
62
- part: "user"
63
- }), t("gxg-form-text", {
64
- password: true,
65
- placeholder: this._componentLocale.password,
66
- ref: e => this.passwordEl = e,
67
- part: "password"
68
- })) ];
69
- this.selectedType = "local";
70
- this.types = undefined;
71
- this.name = undefined;
72
- this.source = undefined;
73
- this.type = undefined;
74
- this.confirmCallback = undefined;
75
- this.selectSourceCallback = undefined;
76
- this.cancelCallback = undefined;
77
- }
78
- // 6.COMPONENT LIFECYCLE EVENTS //
79
- async componentWillLoad() {
80
- this._componentLocale = await i.getComponentStrings(this.el);
81
- }
82
- componentDidRender() {
83
- if (!this.renderedFirstTime) {
84
- this.componentDidRenderFirstTime.emit(this._componentLocale.componentName);
85
- this.renderedFirstTime = true;
86
- }
87
- }
88
- render() {
89
- var e;
90
- return t(a, {
91
- class: "gx-ide-component"
92
- }, t("div", {
93
- class: "gx-ide-main-wrapper gx-ide-overflow"
94
- }, t("gx-ide-container", {
95
- slimmerFooter: true
96
- }, t("div", {
97
- class: this.selectedType === "local" ? "grid module-servers-grid-local" : "grid module-servers-grid-server"
98
- }, t("div", {
99
- class: "module-servers-grid-column-1"
100
- }, t("gxg-label", null, " ", this._componentLocale.type), t("gxg-label", null, " ", this._componentLocale.name), t("gxg-label", null, " ", this._componentLocale.source)), t("div", {
101
- class: "module-servers-grid-column-2"
102
- }, t("gxg-combo-box", {
103
- value: this.type,
104
- ref: e => this.serverTypeEl = e
105
- }, (e = this.types) === null || e === void 0 ? void 0 : e.map((e => t("gxg-combo-box-item", {
106
- value: e.id,
107
- onItemSelected: e => this.selectedType = e.detail.value
108
- }, e.type)))), t("gxg-form-text", {
109
- placeholder: this._componentLocale.name,
110
- ref: e => this.nameEl = e,
111
- value: this.name,
112
- part: "name"
113
- }), t("gxg-form-text", {
114
- placeholder: this._componentLocale.source,
115
- ref: e => this.sourceEl = e,
116
- value: this.source,
117
- part: "source"
118
- })), this.selectedType === "local" && t("gxg-button", {
119
- onClick: this.selectSourceCallbackHandle
120
- }, "..."), this.selectedType === "remote" && this.renderServerOptions()), t("gxg-button", {
121
- slot: "footer-end",
122
- type: "outlined",
123
- onClick: this.cancelCallbackHandler
124
- }, this._componentLocale.footer.btnCancel), t("gxg-button", {
125
- slot: "footer-end",
126
- type: "primary-text-only",
127
- onClick: this.confirmCallbackHandler
128
- }, this._componentLocale.footer.btnConfirm))));
129
- }
130
- static get assetsDirs() {
131
- return [ "gx-ide-assets/edit-module-server" ];
132
- }
133
- get el() {
134
- return o(this);
135
- }
136
- };
137
-
138
- l.style = s;
139
-
140
- export { l as gx_ide_edit_module_server };
141
- //# sourceMappingURL=p-e13998a5.entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["editModuleServerCss","GxIdeEditModuleServer","this","renderedFirstTime","confirmCallbackHandler","async","confirmCallback","selectedTypeId","types","find","type","selectedType","data","id","name","nameEl","value","serverTypeEl","authenticated","source","sourceEl","user","userEl","password","passwordEl","cancelCallbackHandler","cancelCallback","selectSourceCallbackHandle","path","selectSourceCallback","renderServerOptions","h","class","_componentLocale","placeholder","ref","el","part","componentWillLoad","Locale","getComponentStrings","componentDidRender","componentDidRenderFirstTime","emit","componentName","render","Host","slimmerFooter","_a","map","onItemSelected","item","detail","onClick","slot","footer","btnCancel","btnConfirm"],"sources":["src/components/modules/edit-module-server/edit-module-server.scss?tag=gx-ide-edit-module-server&encapsulation=shadow","src/components/modules/edit-module-server/edit-module-server.tsx"],"sourcesContent":["@import \"../../../global/gx-ide-common.scss\";\n@import \"../../../global/gx-ide-mixins.scss\";\n\n:host {\n display: block;\n}\n.module-servers-grid-local {\n gap: var(--spacing-comp-03);\n display: grid;\n grid-template-columns: auto 1fr auto;\n\n *:nth-child(3) {\n align-self: end;\n }\n}\n.module-servers-grid-server {\n gap: var(--spacing-comp-03);\n display: grid;\n grid-template-columns: auto 1fr;\n\n *:nth-child(3) {\n align-self: end;\n }\n}\n.module-servers-grid-column-1 {\n gap: var(--spacing-comp-03);\n display: grid;\n grid-template-rows: repeat(3, 1fr);\n}\n\n.module-servers-grid-column-2 {\n gap: var(--spacing-comp-03);\n display: grid;\n grid-template-rows: repeat(2, 1fr);\n}\n.grid-server-auth-column-1 {\n gap: var(--spacing-comp-03);\n display: grid;\n grid-template-rows: repeat(2, 1fr);\n}\n\n.grid-server-auth-column-2 {\n gap: var(--spacing-comp-03);\n display: grid;\n grid-template-rows: repeat(2, 1fr);\n}\n","/* STENCIL IMPORTS */\nimport {\n Component,\n Host,\n h,\n Prop,\n Element,\n Event,\n State,\n EventEmitter\n} from \"@stencil/core\";\n\n/* OTHER LIBRARIES IMPORTS */\n/* CUSTOM IMPORTS */\nimport { Locale } from \"../../../common/locale\";\nimport {\n ModuleServerType,\n ModuleServerFullData,\n EditServerModuleResult\n} from \"../types\";\n@Component({\n tag: \"gx-ide-edit-module-server\",\n styleUrl: \"edit-module-server.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/edit-module-server\"]\n})\nexport class GxIdeEditModuleServer {\n // 1.OWN PROPERTIES | WATCH'S //\n\n /**\n * The component hard-coded strings translations.\n */\n private _componentLocale: any;\n private renderedFirstTime = false;\n\n // 2. REFERENCE TO ELEMENTS //\n\n @Element() el: HTMLGxIdeEditModuleServerElement;\n private serverTypeEl: HTMLGxgComboBoxElement;\n private nameEl: HTMLGxgFormTextElement;\n private sourceEl: HTMLGxgFormTextElement;\n private userEl: HTMLGxgFormTextElement;\n private passwordEl: HTMLGxgFormTextElement;\n\n // 3.STATE() VARIABLES //\n\n @State() selectedType: \"local\" | \"remote\" = \"local\";\n\n // 4.PUBLIC PROPERTY API //\n\n /**\n * The type of the server\n */\n @Prop() readonly types: ModuleServerType[];\n\n /**\n * The name of the server\n */\n @Prop() readonly name: string;\n\n /**\n * Disk path or server url\n */\n @Prop() readonly source: string;\n\n /**\n * Id of the currently selected server type\n */\n @Prop() readonly type: string;\n\n /**\n * Confirm callback\n */\n @Prop() readonly confirmCallback: ConfirmCallback;\n\n /**\n * Callback invoked when wants to select a local folder that have modules inside\n */\n @Prop() readonly selectSourceCallback: SelectSourceCallback;\n\n /**\n * Cancel callback\n */\n @Prop() readonly cancelCallback: CancelCallback;\n\n // 5.EVENTS (EMIT) //\n\n /**\n * This event is emitted once just after the component is fully loaded and the first render() occurs\n */\n @Event() componentDidRenderFirstTime: EventEmitter<boolean>;\n\n // 6.COMPONENT LIFECYCLE EVENTS //\n\n async componentWillLoad() {\n this._componentLocale = await Locale.getComponentStrings(this.el);\n }\n\n componentDidRender() {\n if (!this.renderedFirstTime) {\n this.componentDidRenderFirstTime.emit(\n this._componentLocale.componentName\n );\n this.renderedFirstTime = true;\n }\n }\n\n // 7.LISTENERS //\n\n // 8.PUBLIC METHODS API //\n\n // 9.LOCAL METHODS //\n\n /**\n * Executed when user click on confirm button\n */\n private confirmCallbackHandler = async () => {\n if (this.confirmCallback) {\n const selectedTypeId = this.types.find(\n ({ type }) => type === this.selectedType\n );\n let data = {} as ModuleServerFullData;\n if (selectedTypeId.type === \"remote\") {\n data = {\n id: selectedTypeId.id,\n name: this.nameEl.value,\n type: this.serverTypeEl.value,\n authenticated: selectedTypeId.authenticated,\n source: this.sourceEl.value,\n user: this.userEl.value,\n password: this.passwordEl.value\n };\n } else {\n data = {\n id: selectedTypeId.id,\n name: this.nameEl.value,\n type: this.serverTypeEl.value,\n authenticated: selectedTypeId.authenticated,\n source: this.sourceEl.value\n };\n }\n const result = await this.confirmCallback(data);\n if (result.success) {\n // display success message\n } else {\n // display error message\n }\n }\n };\n\n /**\n * Executed when user click on cancel button\n */\n private cancelCallbackHandler = async () => {\n await this.cancelCallback();\n };\n private selectSourceCallbackHandle = async () => {\n const path = await this.selectSourceCallback();\n\n if (path) {\n this.sourceEl.value = path;\n }\n };\n\n // 10.LOCAL METHODS //\n\n private renderServerOptions = (): Element[] => {\n return [\n <div class=\"grid-server-auth-column-1\">\n <gxg-label>{this._componentLocale.user}</gxg-label>\n <gxg-label>{this._componentLocale.password}</gxg-label>\n </div>,\n <div class=\"grid-server-auth-column-2\">\n <gxg-form-text\n placeholder={this._componentLocale.user}\n ref={(el: HTMLGxgFormTextElement) =>\n (this.userEl = el as HTMLGxgFormTextElement)\n }\n part=\"user\"\n ></gxg-form-text>\n <gxg-form-text\n password\n placeholder={this._componentLocale.password}\n ref={(el: HTMLGxgFormTextElement) =>\n (this.passwordEl = el as HTMLGxgFormTextElement)\n }\n part=\"password\"\n ></gxg-form-text>\n </div>\n ];\n };\n\n render() {\n return (\n <Host class=\"gx-ide-component\">\n <div class=\"gx-ide-main-wrapper gx-ide-overflow\">\n <gx-ide-container slimmerFooter>\n <div\n class={\n this.selectedType === \"local\"\n ? \"grid module-servers-grid-local\"\n : \"grid module-servers-grid-server\"\n }\n >\n <div class=\"module-servers-grid-column-1\">\n <gxg-label> {this._componentLocale.type}</gxg-label>\n <gxg-label> {this._componentLocale.name}</gxg-label>\n <gxg-label> {this._componentLocale.source}</gxg-label>\n </div>\n <div class=\"module-servers-grid-column-2\">\n <gxg-combo-box\n value={this.type}\n ref={(el: HTMLGxgComboBoxElement) =>\n (this.serverTypeEl = el as HTMLGxgComboBoxElement)\n }\n >\n {this.types?.map(type => (\n <gxg-combo-box-item\n value={type.id}\n onItemSelected={item =>\n (this.selectedType = item.detail.value)\n }\n >\n {type.type}\n </gxg-combo-box-item>\n ))}\n </gxg-combo-box>\n <gxg-form-text\n placeholder={this._componentLocale.name}\n ref={(el: HTMLGxgFormTextElement) =>\n (this.nameEl = el as HTMLGxgFormTextElement)\n }\n value={this.name}\n part=\"name\"\n ></gxg-form-text>\n <gxg-form-text\n placeholder={this._componentLocale.source}\n ref={(el: HTMLGxgFormTextElement) =>\n (this.sourceEl = el as HTMLGxgFormTextElement)\n }\n value={this.source}\n part=\"source\"\n ></gxg-form-text>\n </div>\n {this.selectedType === \"local\" && (\n <gxg-button onClick={this.selectSourceCallbackHandle}>\n ...\n </gxg-button>\n )}\n {this.selectedType === \"remote\" && this.renderServerOptions()}\n </div>\n\n <gxg-button\n slot=\"footer-end\"\n type=\"outlined\"\n onClick={this.cancelCallbackHandler}\n >\n {this._componentLocale.footer.btnCancel}\n </gxg-button>\n <gxg-button\n slot=\"footer-end\"\n type=\"primary-text-only\"\n onClick={this.confirmCallbackHandler}\n >\n {this._componentLocale.footer.btnConfirm}\n </gxg-button>\n </gx-ide-container>\n </div>\n </Host>\n );\n }\n}\nexport type ConfirmCallback = (\n data: ModuleServerFullData\n) => Promise<EditServerModuleResult>;\nexport type CancelCallback = () => Promise<void>;\nexport type SelectSourceCallback = () => Promise<string | undefined>;\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["teamDevPreviewCss","TeamDevEmptyState","CSS_BUNDLES","VERSION_ICON","getIconPath","category","name","colorType","ADD_ICON","EDITED_ICON","SUBTRACT_ICON","REFRESH_ICON","WARNING_ICON","OPEN_WINDOW_ICON","LOADER_ICON","ERROR_ICON","REMOTE_CHANGES_TAB","LOCAL_CHANGES_TAB","GxIdeTeamDevPreview","_GxIdeTeamDevPreview_componentLocale","set","this","_GxIdeTeamDevPreview_isPendingReloadLocalChanges","_GxIdeTeamDevPreview_isPendingReloadRemoteChanges","_GxIdeTeamDevPreview_commitData","_GxIdeTeamDevPreview_updateData","_GxIdeTeamDevPreview_prevVersionName","_GxIdeTeamDevPreview_isTeamDevOptionsEnabled","_GxIdeTeamDevPreview_emptyStateConfig","_GxIdeTeamDevPreview_setEmptyStateConfig","__classPrivateFieldSet","NoKBOpen","title","__classPrivateFieldGet","emptyState","noConnectedKBTitle","description","noOpenKBDescription","buttonText","buttons","createKBFromServer","buttonHandler","_GxIdeTeamDevPreview_createKBFromServerHandler","showButton","NoConnectedKB","noConnectedKBDescription","shareKBToServer","_GxIdeTeamDevPreview_shareKBToServerHandler","NoConnectedGXServer","noConnectedGXServerTitle","noConnectedGXServerDescription","reconnect","_GxIdeTeamDevPreview_reconnectHandler","NoLinkedVersion","noLinkedVersionTitle","noLinkedVersionDescription","undefined","FrozenVersion","frozenVersionTitle","frozenVersionDescription","None","_GxIdeTeamDevPreview_setTeamDevOptionsStatus","teamDevPreviewData","isKBOpen","isLinkedKB","isLinkedVersion","isFrozenVersion","existsGXServerSession","_GxIdeTeamDevPreview_loadChanges","async","type","loadingLocalChanges","loadLocalChangesCallback","_GxIdeTeamDevPreview_convertDataToTreeView","call","loadingRemoteChanges","loadRemoteChangesCallback","rootItemName","data","isLocal","pendingCommitChangesCount","_b","_a","pendingForCommit","length","captions","localChanges","pendingRemoteChangesCount","_d","_c","pendingForUpdate","remoteChanges","treeViewModel","id","caption","expanded","parts","items","map","item","startImgSrc","icon","typeIcon","endImgSrc","_GxIdeTeamDevPreview_renderIcon","state","action","leaf","localChangesTreeViewModel","_GxIdeTeamDevPreview_updateTabModel","remoteChangesTreeViewModel","_GxIdeTeamDevPreview_checkedItemsChangeHandler","event","checkedNodesIds","Array","from","detail","values","filter","node","checked","localChangesCheckedNodesIds","remoteChangesCheckedNodesIds","shareKBToServerCallback","createKBFromServerCallback","_GxIdeTeamDevPreview_openFullDialogHandler","openFullDialogCallback","_GxIdeTeamDevPreview_commitChangesHandler","committingChanges","commitCallback","commitMessage","_GxIdeTeamDevPreview_commitMessageInputHandler","_GxIdeTeamDevPreview_updateRemoteChangesHandler","updatingChanges","updateCallback","_GxIdeTeamDevPreview_tabSelectionChangedHandler","selectedTabId","newSelectedId","_GxIdeTeamDevPreview_openTeamDevInfoHandler","openTeamDevInfoCallback","reconnectCallback","value","iconMap","inserted","modified","deleted","conflicted","_GxIdeTeamDevPreview_disableConfirmButton","trim","tabId","tabModel","tab","_GxIdeTeamDevPreview_getEmptyStateTitle","getEmptyStateType","_GxIdeTeamDevPreview_getEmptyStateDescription","_GxIdeTeamDevPreview_getEmptyStateButtonText","_GxIdeTeamDevPreview_getEmptyStateButtonHandler","_GxIdeTeamDevPreview_renderEmptyStateButton","_GxIdeTeamDevPreview_renderReloadChangesButton","isLoading","isConfirmationInProcess","reloadCaption","reloadingCaption","reloadLocal","reloadingLocal","reloadRemote","reloadingRemote","h","class","onClick","disabled","src","_GxIdeTeamDevPreview_renderEmptyState","show","message","noLocalChanges","noRemoteChanges","_GxIdeTeamDevPreview_renderTreeChanges","model","Fragment","checkbox","toggleCheckboxes","onCheckedItemsChange","_GxIdeTeamDevPreview_renderConfirmButton","committing","updating","commit","update","_GxIdeTeamDevPreview_renderLocalChanges","accessibleName","accessibleNames","placeholder","placeholders","onInput","multiline","_GxIdeTeamDevPreview_renderRemoteChanges","onTeamDevPreviewDataChanged","versionName","versionChanged","reloadChanges","componentWillLoad","Locale","getComponentStrings","el","componentDidLoad","isActiveTab","render","Host","widget","isAnimated","stateIconSrc","stateTitle","stateDescription","about","teamDev","selectedId","tabListPosition","onSelectedItemChange","slot","footer","openFullDialog"],"sources":["src/components/team-dev/preview/team-dev-preview.scss?tag=gx-ide-team-dev-preview&encapsulation=shadow","src/components/team-dev/preview/team-dev-preview.tsx"],"sourcesContent":["@import \"../../../global/gx-ide-common.scss\";\n\n// Variables para gaps y tamaños\n$gap-main: 14px;\n$gap-secondary: 8px;\n$max-button-width: 300px;\n$commit-message-height: 65px;\n\n// Mixin para grid con gap\n@mixin grid-gap($gap) {\n display: grid;\n gap: $gap;\n}\n\n:host {\n display: grid;\n block-size: 100%;\n}\n\n.main-container {\n @include grid-gap($gap-main);\n grid-template-rows: max-content 1fr max-content;\n overflow: auto;\n\n .local-changes-container {\n @include grid-gap($gap-secondary);\n grid-template-rows: max-content max-content max-content 1fr;\n padding-inline: 0;\n }\n .remote-changes-container {\n @include grid-gap($gap-secondary);\n grid-template-rows: max-content max-content 1fr;\n padding-inline: 0;\n }\n}\n\n.control-footer-with-border.open-window-container {\n --control-footer-justify-content: flex-start;\n}\n\n// WA: Loader animation workaround, ideally move to mercury\n.loader-icon {\n animation: spin 1s linear infinite;\n}\n\n@keyframes spin {\n 100% {\n transform: rotate(360deg);\n }\n}\n\n// WA: Avoid scrollbar flickering for empty state\n.empty-state {\n overflow: hidden;\n}\n\n.giu-static-pill-icon-and-text {\n background-color: var(--mer-surface__elevation--02);\n}\n\n.tab {\n overflow: auto;\n row-gap: $gap-secondary;\n\n &.border-style-none {\n border-style: none;\n }\n}\n\n.empty-state-button {\n inline-size: 100%;\n max-inline-size: $max-button-width;\n}\n\n.button-tertiary {\n &.team-dev-button {\n text-decoration: underline;\n color: var(--mer-text__neutral);\n }\n\n &.refresh-button,\n &.open-full-dialog-button {\n padding-block: 0;\n justify-self: start;\n }\n}\n\n.commit-message-textarea {\n block-size: $commit-message-height;\n}\n\n.empty-state-container {\n @include grid-gap($gap-secondary);\n grid-template-rows: max-content max-content;\n}\n\n// WA: These styles display the tree as a flat list while preserving tree functionality.\n\n// Style for change-item header\nch-tree-view-render::part(change-item item__header) {\n padding-inline-start: calc(var(--ch-tree-view-item-gap) + 16px);\n}\n\n// Style for root-item header\nch-tree-view-render::part(root-item item__header) {\n padding-inline-start: 0;\n font-weight: var(--font-weight-semi-bold);\n font-size: var(--font-size-body-s);\n line-height: var(--line-height-tight);\n}\n","import {\n ChEditCustomEvent,\n TabModel,\n TabSelectedItemInfo,\n TreeViewItemModelExtended,\n TreeViewModel\n} from \"@genexus/chameleon-controls-library\";\nimport { getIconPath, MercuryBundles } from \"@genexus/mercury\";\nimport {\n Component,\n Element,\n Fragment,\n h,\n Host,\n Method,\n Prop,\n State,\n Watch\n} from \"@stencil/core\";\nimport { Locale } from \"../../../common/locale\";\nimport {\n Action,\n CommitCallback,\n CommitData,\n LoadLocalChangesCallback,\n LoadRemoteChangesCallback,\n ModifiedObject,\n ModifiedObjectData,\n ObjectState,\n UpdateCallback,\n UpdateData\n} from \"../version-control/common/types\";\n\nenum TeamDevEmptyState {\n NoKBOpen,\n NoConnectedKB,\n NoConnectedGXServer,\n NoLinkedVersion,\n FrozenVersion,\n None\n}\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"utils/form--full\",\n \"utils/layout\",\n \"utils/typography\",\n \"utils/spacing\",\n \"chameleon/scrollbar\",\n \"components/tree-view\",\n \"components/tab\"\n];\n\nconst VERSION_ICON = getIconPath({\n category: \"system\",\n name: \"version\",\n colorType: \"on-surface\"\n});\n\nconst ADD_ICON = getIconPath({\n category: \"system\",\n name: \"add\",\n colorType: \"success\"\n});\n\nconst EDITED_ICON = getIconPath({\n category: \"system\",\n name: \"edit\",\n colorType: \"warning\"\n});\n\nconst SUBTRACT_ICON = getIconPath({\n category: \"system\",\n name: \"substract\",\n colorType: \"error\"\n});\n\nconst REFRESH_ICON = getIconPath({\n category: \"system\",\n name: \"refresh\",\n colorType: \"primary\"\n});\n\nconst WARNING_ICON = getIconPath({\n category: \"system\",\n name: \"warning\",\n colorType: \"warning\"\n});\n\nconst OPEN_WINDOW_ICON = getIconPath({\n category: \"gemini-tools\",\n name: \"open-window\",\n colorType: \"on-surface\"\n});\n\nconst LOADER_ICON = getIconPath({\n category: \"system\",\n name: \"loading\",\n colorType: \"primary\"\n});\n\nconst ERROR_ICON = getIconPath({\n category: \"system\",\n name: \"error\",\n colorType: \"on-surface\"\n});\n\nconst REMOTE_CHANGES_TAB = \"remote-changes-tab\";\nconst LOCAL_CHANGES_TAB = \"local-changes-tab\";\n\n@Component({\n tag: \"gx-ide-team-dev-preview\",\n styleUrl: \"team-dev-preview.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/team-dev-preview\"]\n})\nexport class GxIdeTeamDevPreview {\n #componentLocale: any;\n #isPendingReloadLocalChanges: boolean = false;\n #isPendingReloadRemoteChanges: boolean = false;\n #commitData: CommitData;\n #updateData: UpdateData;\n #prevVersionName: string;\n #isTeamDevOptionsEnabled: boolean = false;\n #emptyStateConfig: { [key: string]: any } = {};\n\n @Element() el: HTMLGxIdeTeamDevPreviewElement;\n\n @State() loadingRemoteChanges: boolean = false;\n @State() loadingLocalChanges: boolean = true;\n @State() tabModel: TabModel = [];\n\n /**\n * Currently selected tab ID\n */\n @State() selectedTabId: string = LOCAL_CHANGES_TAB;\n\n /**\n * Number of pending commit changes\n */\n @State() pendingCommitChangesCount: number = 0;\n /**\n * Number of pending remote changes\n */\n @State() pendingRemoteChangesCount: number = 0;\n\n /**\n * Represents the tree view model for remote changes\n */\n @State() remoteChangesTreeViewModel: TreeViewModel = [];\n\n /**\n * Represents the tree view model for local changes\n */\n @State() localChangesTreeViewModel: TreeViewModel = [];\n\n /**\n * Represents the selected nodes ids from remote changes tree\n */\n @State() remoteChangesCheckedNodesIds: string[] = [];\n\n /**\n * Represents the selected nodes ids from local changes tree\n */\n @State() localChangesCheckedNodesIds: string[] = [];\n\n /**\n * Commit message entered by the user\n */\n @State() commitMessage: string = \"\";\n\n /**\n * Indicates if the commit process is ongoing\n */\n @State() committingChanges: boolean = false;\n\n /**\n * Indicates if the update process is ongoing\n */\n @State() updatingChanges: boolean = false;\n\n /**\n * Data required to render the Team Dev Preview\n */\n @Prop() readonly teamDevPreviewData: TeamDevPreviewData;\n @Watch(\"teamDevPreviewData\")\n async onTeamDevPreviewDataChanged() {\n const { versionName } = this.teamDevPreviewData;\n let versionChanged = false;\n\n this.#setTeamDevOptionsStatus();\n if (this.#prevVersionName !== versionName) {\n this.#prevVersionName = versionName;\n versionChanged = true;\n }\n\n if (this.#isTeamDevOptionsEnabled && versionChanged) {\n await this.reloadChanges(\"local\");\n await this.reloadChanges(\"remote\");\n }\n }\n\n /**\n * Invoked to return the list of remote changes\n */\n @Prop() readonly loadRemoteChangesCallback!: LoadRemoteChangesCallback;\n\n /**\n * Invoked to return the list of local changes\n */\n @Prop() readonly loadLocalChangesCallback!: LoadLocalChangesCallback;\n\n /**\n * Invoked when user starts the commit process\n */\n @Prop() readonly commitCallback!: CommitCallback;\n\n /**\n * Invoked when user starts the update process\n */\n @Prop() readonly updateCallback!: UpdateCallback;\n\n /**\n * Invoked to open the full Team Dev dialog\n */\n @Prop() readonly openFullDialogCallback!: () => Promise<void>;\n\n /**\n * Invoked to share the knowledge base to the server\n */\n @Prop() readonly shareKBToServerCallback!: () => Promise<void>;\n\n /**\n * Invoked to create a knowledge base from the server\n */\n @Prop() readonly createKBFromServerCallback!: () => Promise<void>;\n\n /**\n * Invoked to open the Team Development information\n */\n @Prop() readonly openTeamDevInfoCallback!: () => Promise<void>;\n\n /**\n * Invoked to reconnect to GeneXus Server\n */\n @Prop() readonly reconnectCallback!: () => Promise<void>;\n\n async componentWillLoad() {\n this.#setTeamDevOptionsStatus();\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n this.tabModel = [\n {\n id: LOCAL_CHANGES_TAB,\n name: `${this.#componentLocale.captions.localChanges}`\n },\n {\n id: REMOTE_CHANGES_TAB,\n name: `${this.#componentLocale.captions.remoteChanges}`\n }\n ];\n this.#setEmptyStateConfig();\n }\n\n async componentDidLoad() {\n if (this.#isTeamDevOptionsEnabled) {\n await this.#loadChanges(\"local\");\n this.#isPendingReloadRemoteChanges = true;\n }\n this.loadingLocalChanges = false;\n }\n\n /**\n * Used by the host to reload remote or local changes\n */\n @Method()\n async reloadChanges(type: TeamDevPreviewMode) {\n const isLocal = type === \"local\";\n const isActiveTab = isLocal\n ? this.selectedTabId === LOCAL_CHANGES_TAB\n : this.selectedTabId === REMOTE_CHANGES_TAB;\n\n if (!isActiveTab) {\n if (isLocal) {\n this.#isPendingReloadLocalChanges = true;\n } else {\n this.#isPendingReloadRemoteChanges = true;\n }\n return;\n }\n\n isLocal\n ? await this.#loadChanges(\"local\")\n : await this.#loadChanges(\"remote\");\n }\n\n #setEmptyStateConfig = () => {\n this.#emptyStateConfig = {\n [TeamDevEmptyState.NoKBOpen]: {\n title: this.#componentLocale.emptyState.noConnectedKBTitle,\n description: this.#componentLocale.emptyState.noOpenKBDescription,\n buttonText: this.#componentLocale.buttons.createKBFromServer,\n buttonHandler: this.#createKBFromServerHandler,\n showButton: true\n },\n [TeamDevEmptyState.NoConnectedKB]: {\n title: this.#componentLocale.emptyState.noConnectedKBTitle,\n description: this.#componentLocale.emptyState.noConnectedKBDescription,\n buttonText: this.#componentLocale.buttons.shareKBToServer,\n buttonHandler: this.#shareKBToServerHandler,\n showButton: true\n },\n [TeamDevEmptyState.NoConnectedGXServer]: {\n title: this.#componentLocale.emptyState.noConnectedGXServerTitle,\n description:\n this.#componentLocale.emptyState.noConnectedGXServerDescription,\n buttonText: this.#componentLocale.buttons.reconnect,\n buttonHandler: this.#reconnectHandler,\n showButton: true\n },\n [TeamDevEmptyState.NoLinkedVersion]: {\n title: this.#componentLocale.emptyState.noLinkedVersionTitle,\n description:\n this.#componentLocale.emptyState.noLinkedVersionDescription,\n buttonText: \"\",\n buttonHandler: undefined,\n showButton: false\n },\n [TeamDevEmptyState.FrozenVersion]: {\n title: this.#componentLocale.emptyState.frozenVersionTitle,\n description: this.#componentLocale.emptyState.frozenVersionDescription,\n buttonText: \"\",\n buttonHandler: undefined,\n showButton: false\n },\n [TeamDevEmptyState.None]: {\n title: \"\",\n description: \"\",\n buttonText: \"\",\n buttonHandler: undefined,\n showButton: false\n }\n };\n };\n\n #setTeamDevOptionsStatus = () => {\n if (\n this.teamDevPreviewData.isKBOpen &&\n this.teamDevPreviewData.isLinkedKB &&\n this.teamDevPreviewData.isLinkedVersion &&\n !this.teamDevPreviewData.isFrozenVersion &&\n this.teamDevPreviewData.existsGXServerSession\n ) {\n this.#isTeamDevOptionsEnabled = true;\n return;\n }\n this.#isTeamDevOptionsEnabled = false;\n };\n\n #loadChanges = async (type: TeamDevPreviewMode) => {\n if (type === \"local\") {\n this.loadingLocalChanges = true;\n this.#commitData = await this.loadLocalChangesCallback();\n this.#convertDataToTreeView(\"local\");\n this.loadingLocalChanges = false;\n this.#isPendingReloadLocalChanges = false;\n } else {\n this.loadingRemoteChanges = true;\n this.#updateData = await this.loadRemoteChangesCallback();\n this.#convertDataToTreeView(\"remote\");\n this.loadingRemoteChanges = false;\n this.#isPendingReloadRemoteChanges = false;\n }\n };\n\n #convertDataToTreeView = (type: TeamDevPreviewMode) => {\n let rootItemName = \"\";\n let data: ModifiedObjectData[] | ModifiedObject[];\n const isLocal = type === \"local\";\n if (isLocal) {\n this.pendingCommitChangesCount =\n this.#commitData?.pendingForCommit?.length || 0;\n rootItemName = `${this.#componentLocale.captions.localChanges} (${this.pendingCommitChangesCount})`;\n data = this.#commitData.pendingForCommit;\n } else {\n this.pendingRemoteChangesCount =\n this.#updateData?.pendingForUpdate?.length || 0;\n rootItemName = `${this.#componentLocale.captions.remoteChanges} (${this.pendingRemoteChangesCount})`;\n data = this.#updateData.pendingForUpdate;\n }\n\n const treeViewModel: TreeViewModel = [\n {\n id: \"root\",\n caption: rootItemName,\n expanded: true,\n parts: \"root-item\",\n items: data?.map(item => ({\n id: item.id,\n startImgSrc: isLocal\n ? (item as ModifiedObjectData).type.icon\n : (item as ModifiedObject).typeIcon,\n endImgSrc: isLocal\n ? this.#renderIcon((item as ModifiedObjectData).state)\n : this.#renderIcon((item as ModifiedObject).action),\n caption: item.name,\n leaf: true,\n parts: \"change-item\"\n }))\n }\n ];\n\n if (isLocal) {\n this.localChangesTreeViewModel = treeViewModel;\n this.#updateTabModel(LOCAL_CHANGES_TAB);\n } else {\n this.remoteChangesTreeViewModel = treeViewModel;\n this.#updateTabModel(REMOTE_CHANGES_TAB);\n }\n };\n\n #checkedItemsChangeHandler = async (\n event: CustomEvent<Map<string, TreeViewItemModelExtended>>,\n type: TeamDevPreviewMode\n ) => {\n const checkedNodesIds = Array.from(event.detail.values())\n .filter(node => node.item.checked && node.item.id !== \"root\")\n .map(node => node.item.id);\n\n if (type === \"local\") {\n this.localChangesCheckedNodesIds = checkedNodesIds;\n } else {\n this.remoteChangesCheckedNodesIds = checkedNodesIds;\n }\n };\n\n #shareKBToServerHandler = async () => {\n await this.shareKBToServerCallback();\n };\n\n #createKBFromServerHandler = async () => {\n await this.createKBFromServerCallback();\n };\n\n #openFullDialogHandler = async () => {\n await this.openFullDialogCallback();\n };\n\n #commitChangesHandler = async () => {\n this.committingChanges = true;\n await this.commitCallback(\n this.localChangesCheckedNodesIds,\n this.commitMessage\n );\n this.commitMessage = \"\";\n this.committingChanges = false;\n await this.#loadChanges(\"local\");\n };\n\n #commitMessageInputHandler = (\n event: ChEditCustomEvent<string> | InputEvent\n ) => {\n this.commitMessage = (event.detail as string) || \"\";\n };\n\n #updateRemoteChangesHandler = async () => {\n this.updatingChanges = true;\n await this.updateCallback(this.remoteChangesCheckedNodesIds);\n this.updatingChanges = false;\n this.remoteChangesCheckedNodesIds = [];\n await this.#loadChanges(\"remote\");\n };\n\n #tabSelectionChangedHandler = async (\n event: CustomEvent<TabSelectedItemInfo>\n ): Promise<void> => {\n this.selectedTabId = event.detail.newSelectedId;\n if (\n this.selectedTabId === LOCAL_CHANGES_TAB &&\n this.#isPendingReloadLocalChanges\n ) {\n await this.#loadChanges(\"local\");\n }\n if (\n this.selectedTabId === REMOTE_CHANGES_TAB &&\n this.#isPendingReloadRemoteChanges\n ) {\n await this.#loadChanges(\"remote\");\n }\n };\n\n #openTeamDevInfoHandler = async () => {\n await this.openTeamDevInfoCallback();\n };\n\n #reconnectHandler = async () => {\n await this.reconnectCallback();\n };\n\n #renderIcon = (value: ObjectState | Action) => {\n const iconMap = {\n \"inserted\": ADD_ICON,\n \"modified\": EDITED_ICON,\n \"deleted\": SUBTRACT_ICON,\n \"conflicted\": WARNING_ICON,\n \"modified-with-conflicts\": WARNING_ICON\n };\n return iconMap[value] || null;\n };\n\n #disableConfirmButton = (type: TeamDevPreviewMode): boolean => {\n const isLocal = type === \"local\";\n if (isLocal) {\n return (\n this.loadingLocalChanges ||\n !this.commitMessage.trim().length ||\n this.localChangesCheckedNodesIds.length === 0 ||\n this.committingChanges\n );\n } else {\n return (\n this.loadingRemoteChanges ||\n this.remoteChangesCheckedNodesIds.length === 0 ||\n this.updatingChanges\n );\n }\n };\n\n #updateTabModel = (tabId: string) => {\n this.tabModel = this.tabModel.map(tab =>\n tab.id === tabId\n ? {\n ...tab,\n name:\n tabId === LOCAL_CHANGES_TAB\n ? `${this.#componentLocale.captions.localChanges} (${this.pendingCommitChangesCount})`\n : `${this.#componentLocale.captions.remoteChanges} (${this.pendingRemoteChangesCount})`\n }\n : tab\n );\n };\n\n private getEmptyStateType(): TeamDevEmptyState {\n const {\n isFrozenVersion,\n existsGXServerSession,\n isKBOpen,\n isLinkedVersion,\n isLinkedKB\n } = this.teamDevPreviewData;\n if (!isKBOpen) {\n return TeamDevEmptyState.NoKBOpen;\n }\n if (isKBOpen && !isLinkedKB) {\n return TeamDevEmptyState.NoConnectedKB;\n }\n if (isKBOpen && isLinkedKB && !isLinkedVersion && !existsGXServerSession) {\n return TeamDevEmptyState.NoConnectedGXServer;\n }\n if (isKBOpen && isLinkedKB && !isLinkedVersion) {\n return TeamDevEmptyState.NoLinkedVersion;\n }\n if (isKBOpen && isLinkedKB && existsGXServerSession && isFrozenVersion) {\n return TeamDevEmptyState.FrozenVersion;\n }\n if (isKBOpen && isLinkedKB && !existsGXServerSession) {\n return TeamDevEmptyState.NoConnectedGXServer;\n }\n return TeamDevEmptyState.None;\n }\n\n #getEmptyStateTitle = () =>\n this.#emptyStateConfig[this.getEmptyStateType()].title;\n\n #getEmptyStateDescription = () =>\n this.#emptyStateConfig[this.getEmptyStateType()].description;\n\n #getEmptyStateButtonText = () =>\n this.#emptyStateConfig[this.getEmptyStateType()].buttonText;\n\n #getEmptyStateButtonHandler = () =>\n this.#emptyStateConfig[this.getEmptyStateType()].buttonHandler;\n\n #renderEmptyStateButton = () =>\n this.#emptyStateConfig[this.getEmptyStateType()].showButton;\n\n #renderReloadChangesButton = (type: TeamDevPreviewMode) => {\n let isLoading = false;\n let isConfirmationInProcess = false;\n let reloadCaption;\n let reloadingCaption;\n const isLocal = type === \"local\";\n\n if (isLocal) {\n isLoading = this.loadingLocalChanges;\n isConfirmationInProcess = this.committingChanges;\n reloadCaption = this.#componentLocale.buttons.reloadLocal;\n reloadingCaption = this.#componentLocale.buttons.reloadingLocal;\n } else {\n isLoading = this.loadingRemoteChanges;\n isConfirmationInProcess = this.updatingChanges;\n reloadCaption = this.#componentLocale.buttons.reloadRemote;\n reloadingCaption = this.#componentLocale.buttons.reloadingRemote;\n }\n return (\n <button\n class=\"button-tertiary button-icon-and-text body-regular-s refresh-button\"\n type=\"button\"\n onClick={\n isLocal\n ? () => this.#loadChanges(\"local\")\n : () => this.#loadChanges(\"remote\")\n }\n disabled={isLoading || isConfirmationInProcess}\n >\n <ch-image\n class={{\n \"icon-md\": true,\n \"loader-icon\": isLoading\n }}\n src={isLoading ? LOADER_ICON : REFRESH_ICON}\n type=\"mask\"\n />\n\n {isLoading ? reloadingCaption : reloadCaption}\n </button>\n );\n };\n\n #renderEmptyState = (type: TeamDevPreviewMode) => {\n let show = false;\n let message = \"\";\n\n if (type === \"local\" && this.pendingCommitChangesCount === 0) {\n show = true;\n message = this.#componentLocale.emptyState.noLocalChanges;\n } else if (type === \"remote\" && this.pendingRemoteChangesCount === 0) {\n show = true;\n message = this.#componentLocale.emptyState.noRemoteChanges;\n }\n\n return show ? (\n <div class=\"empty-state-container\">\n <p class=\"body-regular-s\">{message}</p>\n {this.#renderReloadChangesButton(type)}\n </div>\n ) : null;\n };\n\n #renderTreeChanges = (type: TeamDevPreviewMode) => {\n const isLocal = type === \"local\";\n let isLoading = false;\n let isConfirmationInProcess = false;\n let model: TreeViewModel;\n\n if (isLocal) {\n isLoading = this.loadingLocalChanges;\n isConfirmationInProcess = this.committingChanges;\n model = this.localChangesTreeViewModel;\n } else {\n isLoading = this.loadingRemoteChanges;\n isConfirmationInProcess = this.updatingChanges;\n model = this.remoteChangesTreeViewModel;\n }\n return (\n <Fragment>\n {this.#renderReloadChangesButton(type)}\n {!isLoading && !isConfirmationInProcess && (\n <ch-tree-view-render\n checkbox\n checked\n class=\"tree-view\"\n model={model}\n toggleCheckboxes\n onCheckedItemsChange={event =>\n this.#checkedItemsChangeHandler(event, type)\n }\n />\n )}\n </Fragment>\n );\n };\n\n #renderConfirmButton = (type: TeamDevPreviewMode) => {\n const isLocal = type === \"local\";\n let isConfirmationInProcess = false;\n let id = \"\";\n if (isLocal) {\n isConfirmationInProcess = this.committingChanges;\n id = \"commit-changes-button\";\n } else {\n isConfirmationInProcess = this.updatingChanges;\n id = \"update-remote-changes-button\";\n }\n return (\n <button\n id={id}\n class={{\n \"button-primary\": true,\n \"button-icon-and-text\": isConfirmationInProcess\n }}\n type=\"button\"\n disabled={this.#disableConfirmButton(type)}\n onClick={\n isLocal\n ? this.#commitChangesHandler\n : this.#updateRemoteChangesHandler\n }\n >\n {isConfirmationInProcess && (\n <ch-image class=\"icon-md loader-icon\" src={LOADER_ICON} type=\"mask\" />\n )}\n {isConfirmationInProcess\n ? isLocal\n ? this.#componentLocale.buttons.committing\n : this.#componentLocale.buttons.updating\n : isLocal\n ? this.#componentLocale.buttons.commit\n : this.#componentLocale.buttons.update}\n </button>\n );\n };\n\n #renderLocalChanges = () => {\n if (this.pendingCommitChangesCount > 0) {\n return (\n <Fragment>\n <ch-edit\n id=\"commit-message-input\"\n class=\"input commit-message-textarea\"\n value={this.commitMessage}\n accessibleName={this.#componentLocale.accessibleNames.commitMessage}\n placeholder={this.#componentLocale.placeholders.commitMessage}\n disabled={this.loadingLocalChanges}\n onInput={this.#commitMessageInputHandler}\n multiline\n />\n {this.#renderConfirmButton(\"local\")}\n {this.#renderTreeChanges(\"local\")}\n </Fragment>\n );\n }\n };\n\n #renderRemoteChanges = () => {\n if (this.pendingRemoteChangesCount > 0) {\n return (\n <Fragment>\n {this.#renderConfirmButton(\"remote\")}\n {this.#renderTreeChanges(\"remote\")}\n </Fragment>\n );\n }\n };\n\n render() {\n const { existsGXServerSession } = this.teamDevPreviewData;\n return (\n <Host\n class={{\n \"widget\": true,\n \"empty-state\": !this.#isTeamDevOptionsEnabled\n }}\n >\n <ch-theme model={CSS_BUNDLES} />\n {!this.#isTeamDevOptionsEnabled || !existsGXServerSession ? (\n <gx-ide-empty-state\n isAnimated={true}\n stateIconSrc={ERROR_ICON}\n stateTitle={this.#getEmptyStateTitle()}\n stateDescription={this.#getEmptyStateDescription()}\n >\n {this.#renderEmptyStateButton() && (\n <button\n class=\"button-primary empty-state-button\"\n onClick={this.#getEmptyStateButtonHandler()}\n >\n {this.#getEmptyStateButtonText()}\n </button>\n )}\n <div>\n <p class=\"body-regular-s\">\n {this.#componentLocale.emptyState.about}\n </p>\n <button\n class=\"button-tertiary button-icon-and-text team-dev-button body-semi-bold-s\"\n type=\"button\"\n onClick={this.#openTeamDevInfoHandler}\n >\n {this.#componentLocale.buttons.teamDev}\n <ch-image class=\"icon-md\" src={OPEN_WINDOW_ICON} type=\"mask\" />\n </button>\n </div>\n </gx-ide-empty-state>\n ) : (\n <div class=\"main-container\">\n <div>\n <p class=\"giu-static-pill-icon-and-text giu-static-pill-icon-and-text--version elevation-02\">\n <ch-image\n class=\"icon-md\"\n type=\"mask\"\n src={VERSION_ICON}\n ></ch-image>\n {this.teamDevPreviewData.versionName}\n </p>\n </div>\n <ch-tab-render\n class=\"tab tab-full-width-buttons scrollable border-style-none\"\n model={this.tabModel}\n selectedId={this.selectedTabId}\n tabListPosition=\"block-start\"\n onSelectedItemChange={this.#tabSelectionChangedHandler}\n >\n <div class=\"local-changes-container\" slot={LOCAL_CHANGES_TAB}>\n {this.#renderEmptyState(\"local\")}\n {this.#renderLocalChanges()}\n </div>\n\n <div class=\"remote-changes-container\" slot={REMOTE_CHANGES_TAB}>\n {this.#renderEmptyState(\"remote\")}\n {this.#renderRemoteChanges()}\n </div>\n </ch-tab-render>\n\n <footer class=\"control-footer-with-border open-window-container\">\n <div class=\"buttons-spacer\">\n <button\n class=\"button-tertiary button-icon-and-text open-full-dialog-button\"\n onClick={this.#openFullDialogHandler}\n >\n <ch-image\n class=\"icon-md\"\n src={OPEN_WINDOW_ICON}\n type=\"mask\"\n />\n {this.#componentLocale.footer.openFullDialog}\n </button>\n </div>\n </footer>\n </div>\n )}\n </Host>\n );\n }\n}\n\nexport type TeamDevPreviewData = {\n versionName: string;\n isFrozenVersion: boolean;\n existsGXServerSession: boolean;\n isKBOpen: boolean;\n isLinkedVersion: boolean;\n isLinkedKB: boolean;\n};\n\nexport type TeamDevPreviewMode = \"local\" | \"remote\";\n"],"mappings":"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"}