@esri/solutions-components 0.2.2 → 0.2.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (131) hide show
  1. package/dist/assets/t9n/solution-config-modal/resources.json +22 -0
  2. package/dist/assets/t9n/solution-config-modal/resources_en.json +22 -0
  3. package/dist/cjs/calcite-action-menu_2.cjs.entry.js +18 -401
  4. package/dist/cjs/calcite-action-menu_2.cjs.entry.js.map +1 -1
  5. package/dist/cjs/calcite-action_2.cjs.entry.js +423 -71
  6. package/dist/cjs/calcite-action_2.cjs.entry.js.map +1 -1
  7. package/dist/cjs/calcite-loader.cjs.entry.js +97 -0
  8. package/dist/cjs/calcite-loader.cjs.entry.js.map +1 -0
  9. package/dist/cjs/{solution-configuration.cjs.entry.js → calcite-modal_2.cjs.entry.js} +451 -13
  10. package/dist/cjs/calcite-modal_2.cjs.entry.js.map +1 -0
  11. package/dist/cjs/{calcite-shell-panel_14.cjs.entry.js → calcite-panel_12.cjs.entry.js} +455 -709
  12. package/dist/cjs/calcite-panel_12.cjs.entry.js.map +1 -0
  13. package/dist/cjs/loader.cjs.js +1 -1
  14. package/dist/cjs/solution-config-modal.cjs.entry.js +131 -0
  15. package/dist/cjs/solution-config-modal.cjs.entry.js.map +1 -0
  16. package/dist/cjs/{solution-contents_3.cjs.entry.js → solution-contents_7.cjs.entry.js} +664 -5
  17. package/dist/cjs/solution-contents_7.cjs.entry.js.map +1 -0
  18. package/dist/cjs/{solution-store-893499a5.js → solution-store-09b3fc53.js} +4 -6
  19. package/dist/cjs/solution-store-09b3fc53.js.map +1 -0
  20. package/dist/cjs/solutions-components.cjs.js +1 -1
  21. package/dist/collection/collection-manifest.json +1 -0
  22. package/dist/collection/components/solution-config-modal/solution-config-modal.css +91 -0
  23. package/dist/collection/components/solution-config-modal/solution-config-modal.js +245 -0
  24. package/dist/collection/components/solution-config-modal/solution-config-modal.js.map +1 -0
  25. package/dist/collection/components/solution-configuration/solution-configuration.js +23 -17
  26. package/dist/collection/components/solution-configuration/solution-configuration.js.map +1 -1
  27. package/dist/collection/components/solution-item/solution-item.js +0 -2
  28. package/dist/collection/components/solution-item/solution-item.js.map +1 -1
  29. package/dist/collection/components/solution-item-details/solution-item-details.js +0 -13
  30. package/dist/collection/components/solution-item-details/solution-item-details.js.map +1 -1
  31. package/dist/collection/utils/solution-store.js +3 -5
  32. package/dist/collection/utils/solution-store.js.map +1 -1
  33. package/dist/collection/utils/solution-store.ts +3 -5
  34. package/dist/esm/buffer-tools_6.entry.js +2 -2
  35. package/dist/esm/calcite-action-bar_6.entry.js +2 -2
  36. package/dist/esm/calcite-action-menu_2.entry.js +20 -403
  37. package/dist/esm/calcite-action-menu_2.entry.js.map +1 -1
  38. package/dist/esm/calcite-action_2.entry.js +424 -72
  39. package/dist/esm/calcite-action_2.entry.js.map +1 -1
  40. package/dist/esm/calcite-combobox_3.entry.js +2 -2
  41. package/dist/esm/calcite-loader.entry.js +93 -0
  42. package/dist/esm/calcite-loader.entry.js.map +1 -0
  43. package/dist/esm/{solution-configuration.entry.js → calcite-modal_2.entry.js} +453 -16
  44. package/dist/esm/calcite-modal_2.entry.js.map +1 -0
  45. package/dist/esm/{calcite-shell-panel_14.entry.js → calcite-panel_12.entry.js} +454 -706
  46. package/dist/esm/calcite-panel_12.entry.js.map +1 -0
  47. package/dist/esm/config-layer-picker.entry.js +2 -2
  48. package/dist/esm/{interfaces-e2a2064d.js → interfaces-1bdfc3a8.js} +2 -2
  49. package/dist/esm/{interfaces-e2a2064d.js.map → interfaces-1bdfc3a8.js.map} +1 -1
  50. package/dist/esm/loader.js +1 -1
  51. package/dist/esm/{mapViewUtils-09f1e7bd.js → mapViewUtils-809947c8.js} +2 -2
  52. package/dist/esm/{mapViewUtils-09f1e7bd.js.map → mapViewUtils-809947c8.js.map} +1 -1
  53. package/dist/esm/public-notification.entry.js +2 -2
  54. package/dist/esm/solution-config-modal.entry.js +127 -0
  55. package/dist/esm/solution-config-modal.entry.js.map +1 -0
  56. package/dist/esm/{solution-contents_3.entry.js → solution-contents_7.entry.js} +661 -6
  57. package/dist/esm/solution-contents_7.entry.js.map +1 -0
  58. package/dist/esm/{solution-store-0c58c852.js → solution-store-d8519c64.js} +5 -7
  59. package/dist/esm/solution-store-d8519c64.js.map +1 -0
  60. package/dist/esm/solutions-components.js +1 -1
  61. package/dist/solutions-components/{p-be1ed982.entry.js → p-11068040.entry.js} +3 -3
  62. package/dist/solutions-components/{p-be1ed982.entry.js.map → p-11068040.entry.js.map} +0 -0
  63. package/dist/solutions-components/{p-659edb14.js → p-2910dd9e.js} +5 -7
  64. package/dist/{cjs/solution-store-893499a5.js.map → solutions-components/p-2910dd9e.js.map} +1 -1
  65. package/dist/solutions-components/{p-291fd295.entry.js → p-30810b45.entry.js} +3 -3
  66. package/dist/solutions-components/{p-291fd295.entry.js.map → p-30810b45.entry.js.map} +0 -0
  67. package/dist/solutions-components/p-38ddadf2.entry.js +342 -0
  68. package/dist/solutions-components/p-38ddadf2.entry.js.map +1 -0
  69. package/dist/solutions-components/{p-77c75f3a.entry.js → p-5b20090f.entry.js} +661 -6
  70. package/dist/solutions-components/p-5b20090f.entry.js.map +1 -0
  71. package/dist/solutions-components/{p-9393631c.entry.js → p-9ef1328a.entry.js} +3 -3
  72. package/dist/solutions-components/{p-9393631c.entry.js.map → p-9ef1328a.entry.js.map} +0 -0
  73. package/dist/solutions-components/{p-984cb687.entry.js → p-a1786d11.entry.js} +454 -706
  74. package/dist/solutions-components/p-a1786d11.entry.js.map +1 -0
  75. package/dist/solutions-components/{p-fe0fdd8b.js → p-c20bd963.js} +2 -2
  76. package/dist/solutions-components/{p-fe0fdd8b.js.map → p-c20bd963.js.map} +1 -1
  77. package/dist/solutions-components/p-c5721b0f.entry.js +127 -0
  78. package/dist/solutions-components/p-c5721b0f.entry.js.map +1 -0
  79. package/dist/solutions-components/{p-24d75151.entry.js → p-c818e661.entry.js} +3 -3
  80. package/dist/solutions-components/{p-24d75151.entry.js.map → p-c818e661.entry.js.map} +0 -0
  81. package/dist/solutions-components/{p-90629c1d.entry.js → p-cf59eb16.entry.js} +453 -16
  82. package/dist/solutions-components/p-cf59eb16.entry.js.map +1 -0
  83. package/dist/solutions-components/p-e405ebe8.entry.js +93 -0
  84. package/dist/solutions-components/p-e405ebe8.entry.js.map +1 -0
  85. package/dist/solutions-components/{p-77e6b03c.entry.js → p-e6fb9cde.entry.js} +3 -3
  86. package/dist/solutions-components/{p-77e6b03c.entry.js.map → p-e6fb9cde.entry.js.map} +0 -0
  87. package/dist/solutions-components/{p-97c4a268.entry.js → p-ef6f9e24.entry.js} +113 -229
  88. package/dist/solutions-components/p-ef6f9e24.entry.js.map +1 -0
  89. package/dist/solutions-components/{p-6b9dc092.js → p-f04fdb9a.js} +2 -2
  90. package/dist/solutions-components/{p-6b9dc092.js.map → p-f04fdb9a.js.map} +1 -1
  91. package/dist/solutions-components/solutions-components.esm.js +1 -1
  92. package/dist/solutions-components/utils/solution-store.ts +3 -5
  93. package/dist/solutions-components_commit.txt +8 -8
  94. package/dist/types/components/solution-config-modal/solution-config-modal.d.ts +69 -0
  95. package/dist/types/components/solution-configuration/solution-configuration.d.ts +4 -2
  96. package/dist/types/components/solution-item-details/solution-item-details.d.ts +0 -1
  97. package/dist/types/components.d.ts +43 -5
  98. package/dist/types/preact.d.ts +4 -0
  99. package/package.json +1 -1
  100. package/dist/cjs/calcite-modal.cjs.entry.js +0 -449
  101. package/dist/cjs/calcite-modal.cjs.entry.js.map +0 -1
  102. package/dist/cjs/calcite-panel_2.cjs.entry.js +0 -439
  103. package/dist/cjs/calcite-panel_2.cjs.entry.js.map +0 -1
  104. package/dist/cjs/calcite-scrim.cjs.entry.js +0 -64
  105. package/dist/cjs/calcite-scrim.cjs.entry.js.map +0 -1
  106. package/dist/cjs/calcite-shell-panel_14.cjs.entry.js.map +0 -1
  107. package/dist/cjs/solution-configuration.cjs.entry.js.map +0 -1
  108. package/dist/cjs/solution-contents_3.cjs.entry.js.map +0 -1
  109. package/dist/esm/calcite-modal.entry.js +0 -445
  110. package/dist/esm/calcite-modal.entry.js.map +0 -1
  111. package/dist/esm/calcite-panel_2.entry.js +0 -434
  112. package/dist/esm/calcite-panel_2.entry.js.map +0 -1
  113. package/dist/esm/calcite-scrim.entry.js +0 -60
  114. package/dist/esm/calcite-scrim.entry.js.map +0 -1
  115. package/dist/esm/calcite-shell-panel_14.entry.js.map +0 -1
  116. package/dist/esm/solution-configuration.entry.js.map +0 -1
  117. package/dist/esm/solution-contents_3.entry.js.map +0 -1
  118. package/dist/esm/solution-store-0c58c852.js.map +0 -1
  119. package/dist/solutions-components/p-0fda7d9e.entry.js +0 -434
  120. package/dist/solutions-components/p-0fda7d9e.entry.js.map +0 -1
  121. package/dist/solutions-components/p-2ff754ce.entry.js +0 -257
  122. package/dist/solutions-components/p-2ff754ce.entry.js.map +0 -1
  123. package/dist/solutions-components/p-30a6199a.entry.js +0 -445
  124. package/dist/solutions-components/p-30a6199a.entry.js.map +0 -1
  125. package/dist/solutions-components/p-659edb14.js.map +0 -1
  126. package/dist/solutions-components/p-77c75f3a.entry.js.map +0 -1
  127. package/dist/solutions-components/p-90629c1d.entry.js.map +0 -1
  128. package/dist/solutions-components/p-97c4a268.entry.js.map +0 -1
  129. package/dist/solutions-components/p-984cb687.entry.js.map +0 -1
  130. package/dist/solutions-components/p-f5268b4f.entry.js +0 -60
  131. package/dist/solutions-components/p-f5268b4f.entry.js.map +0 -1
@@ -4,9 +4,9 @@
4
4
  * http://www.apache.org/licenses/LICENSE-2.0
5
5
  */
6
6
  import { r as registerInstance, c as createEvent, h, H as Host, g as getElement } from './index-15022d11.js';
7
- import { s as state } from './solution-store-0c58c852.js';
7
+ import { s as state, E as EFileType } from './solution-store-d8519c64.js';
8
8
  import { g as getLocaleComponentStrings } from './locale-0e10d7e5.js';
9
- import './interfaces-e2a2064d.js';
9
+ import { e as EUpdateType } from './interfaces-1bdfc3a8.js';
10
10
  import './index-9c882a6e.js';
11
11
  import './_commonjsHelpers-8fd39c50.js';
12
12
 
@@ -95,7 +95,6 @@ const SolutionItem = class {
95
95
  this._translations = undefined;
96
96
  }
97
97
  itemIdWatchHandler() {
98
- console.log("update item; id " + this.itemId); //???
99
98
  const itemEdit = state.getItemInfo(this.itemId);
100
99
  this.itemType = itemEdit.type;
101
100
  }
@@ -114,7 +113,6 @@ const SolutionItem = class {
114
113
  * Renders the component.
115
114
  */
116
115
  render() {
117
- console.log("render item " + this.itemId); //???
118
116
  return (h(Host, null, h("div", { class: "configuration-container" }, h("div", { class: "configuration" }, this._showGroupTabs(this.itemType === "Group"), this._showItemTabs(this.itemType !== "Group")))));
119
117
  }
120
118
  //--------------------------------------------------------------------------
@@ -169,6 +167,565 @@ const SolutionItem = class {
169
167
  };
170
168
  SolutionItem.style = solutionItemCss;
171
169
 
170
+ const solutionItemDetailsCss = ".inputBottomSeparation{margin-left:0px;margin-right:0px;margin-top:0px;margin-bottom:1.5rem}.icon-inline--on-left,.icon-inline--on-right{display:inline;vertical-align:middle;-webkit-margin-end:0.375rem;margin-inline-end:0.375rem;fill:#0079c1}.scale-down{-o-object-fit:scale-down;object-fit:scale-down}.img-container{display:inline;-webkit-margin-end:1rem;margin-inline-end:1rem;max-width:363px}.summary-count-container{display:inline;flex-grow:1;-webkit-margin-start:0.75rem;margin-inline-start:0.75rem}.snippet-count-container{width:calc(100vw - 363px)}.parent-container{max-width:100%;padding:1rem}label{position:relative;margin-left:0px;margin-right:0px;margin-top:0px;margin-bottom:1.5rem;display:block;min-width:-moz-min-content;min-width:min-content;box-sizing:border-box;margin-left:0.75rem;margin-right:0.75rem;min-width:0;flex-grow:0;flex-shrink:1}label-group-1-up>.block{flex-basis:calc(100% - 1.5rem);width:calc(100% - 1.5rem)}label-group-2-up>.block{flex-basis:calc(50% - 1.5rem);width:calc(50% - 1.5rem)}label-group-3-up>.block{flex-basis:calc(33.33333% - 1.5rem);width:calc(33.33333% - 1.5rem)}label-group-4-up>.block{flex-basis:calc(25% - 1.5rem);width:calc(25% - 1.5rem)}label-group-5-up>.block{flex-basis:calc(20% - 1.5rem);width:calc(20% - 1.5rem)}label-group-6-up>.block{flex-basis:calc(16.66666% - 1.5rem);width:calc(16.66666% - 1.5rem)}label-group-7-up>.block{flex-basis:calc(14.2857% - 1.5rem);width:calc(14.2857% - 1.5rem)}label-group-8-up>.block{flex-basis:calc(12.5% - 1.5rem);width:calc(12.5% - 1.5rem)}.tablet-block-group-1-up>label{flex-basis:calc(100% - 1.5rem);width:calc(100% - 1.5rem)}.tablet-block-group-2-up>label{flex-basis:calc(50% - 1.5rem);width:calc(50% - 1.5rem)}.tablet-block-group-3-up>label{flex-basis:calc(33.33333% - 1.5rem);width:calc(33.33333% - 1.5rem)}.tablet-block-group-4-up>label{flex-basis:calc(25% - 1.5rem);width:calc(25% - 1.5rem)}.tablet-block-group-5-up>label{flex-basis:calc(20% - 1.5rem);width:calc(20% - 1.5rem)}.tablet-block-group-6-up>label{flex-basis:calc(16.66666% - 1.5rem);width:calc(16.66666% - 1.5rem)}.tablet-block-group-7-up>label{flex-basis:calc(14.2857% - 1.5rem);width:calc(14.2857% - 1.5rem)}.tablet-block-group-8-up>label{flex-basis:calc(12.5% - 1.5rem);width:calc(12.5% - 1.5rem)}.phone-block-group-1-up>label{flex-basis:calc(100% - 1.5rem);width:calc(100% - 1.5rem)}.phone-block-group-2-up>label{flex-basis:calc(50% - 1.5rem);width:calc(50% - 1.5rem)}.phone-block-group-3-up>label{flex-basis:calc(33.33333% - 1.5rem);width:calc(33.33333% - 1.5rem)}.phone-block-group-4-up>label{flex-basis:calc(25% - 1.5rem);width:calc(25% - 1.5rem)}.phone-block-group-5-up>label{flex-basis:calc(20% - 1.5rem);width:calc(20% - 1.5rem)}.phone-block-group-6-up>label{flex-basis:calc(16.66666% - 1.5rem);width:calc(16.66666% - 1.5rem)}.phone-block-group-7-up>label{flex-basis:calc(14.2857% - 1.5rem);width:calc(14.2857% - 1.5rem)}.phone-block-group-8-up>label{flex-basis:calc(12.5% - 1.5rem);width:calc(12.5% - 1.5rem)}.code-face label{letter-spacing:0em;font-family:\"Consolas\", \"Andale Mono\", \"Lucida Console\", \"Monaco\", monospace;font-weight:400;font-style:normal}.code-face label b,.code-face label strong{font-weight:400}.code-italic label{letter-spacing:0em;font-family:\"Consolas\", \"Andale Mono\", \"Lucida Console\", \"Monaco\", monospace;font-weight:400;font-style:italic}.code-italic label b,.code-italic label strong{font-weight:400}";
171
+
172
+ const SolutionItemDetails = class {
173
+ constructor(hostRef) {
174
+ registerInstance(this, hostRef);
175
+ this.itemId = "";
176
+ this.itemDetails = {
177
+ accessInformation: "",
178
+ description: "",
179
+ licenseInfo: "",
180
+ snippet: "",
181
+ tags: [],
182
+ title: ""
183
+ };
184
+ this.itemEdit = undefined;
185
+ this._translations = undefined;
186
+ this.thumbnail = undefined;
187
+ this.thumbnailContainer = undefined;
188
+ }
189
+ //--------------------------------------------------------------------------
190
+ //
191
+ // Lifecycle
192
+ //
193
+ //--------------------------------------------------------------------------
194
+ /**
195
+ * StencilJS: Called once just after the component is first connected to the DOM.
196
+ */
197
+ async componentWillLoad() {
198
+ return this._getTranslations();
199
+ }
200
+ async componentWillRender() {
201
+ this.itemEdit = state.getItemInfo(this.itemId);
202
+ if (this.itemEdit) {
203
+ this.itemDetails = this.itemEdit.item;
204
+ this.itemType = this.itemDetails.type;
205
+ }
206
+ return Promise.resolve();
207
+ }
208
+ /**
209
+ * Renders the component.
210
+ */
211
+ render() {
212
+ return (h(Host, null, h("div", { class: "parent-container" }, h("div", { class: "inputBottomSeparation" }, h("calcite-input", { id: "item-title", value: this.itemDetails.title })), h("div", { class: "inputBottomSeparation" }, h("input", { accept: ".jpg,.gif,.png,image/jpg,image/gif,image/png", class: "display-none", onChange: (event) => (this._updateThumbnail(event)), ref: (el) => (this.browseForThumbnail = el), type: "file" }), h("button", { class: "font-size--3 btn-link inline-block trailer-quarter", onClick: () => this._getThumbnail() }, h("svg", { class: "icon-inline icon-inline--on-left", height: "16", viewBox: "0 0 16 16", width: "16" }, h("path", { d: "M14.792 2.666l-1.414-1.413a.965.965 0 0 0-1.385-.03l-1.444 1.444-8.763 8.72L.03 15.481a.371.371 0 0 0 .488.488l4.096-1.756 8.763-8.72-.001-.001.002.002 1.443-1.444a.965.965 0 0 0-.03-1.385zM1.569 14.431l.554-1.293.74.739zm2.338-.924l-1.414-1.414 7.963-7.92 1.414 1.415zm8.67-8.626l-1.413-1.414 1.29-1.29a.306.306 0 0 1 .433 0l.981.98a.306.306 0 0 1 0 .433z" })), this._translations.editThumbnail), h("div", { class: "flex" }, h("div", { class: "img-container", ref: (el) => (this.thumbnailContainer = el) }, h("img", { class: "scale-down", height: "133", id: "item-thumbnail", ref: (el) => (this.thumbnail = el), width: "200" })), h("div", { class: "snippet-count-container" }, h("calcite-input", { id: "item-snippet", maxlength: 250, type: "textarea", value: this.itemDetails.snippet }), h("label", { class: "font-size--3", id: "item-snippet-count", ref: (el) => (this.itemSnippetCount = el) })))), h("calcite-label", null, this._translations.description, h("label", { id: "item-description-label" }, h("calcite-input", { id: "item-description", type: "textarea", value: this.itemDetails.description }))), h("calcite-label", null, this._translations.tags, h("label", { id: "item-tags-label" }, h("calcite-input", { id: "item-tags", value: (this.itemDetails.tags && Array.isArray(this.itemDetails.tags) ? this.itemDetails.tags : [this.itemDetails.tags]).join(",") }))), this.itemType !== "Group" ? h("calcite-label", null, this._translations.credits, h("label", { id: "item-credits-label" }, h("calcite-input", { id: "item-credits", value: this.itemDetails.accessInformation }))) : null, this.itemType !== "Group" ? h("calcite-label", null, h("label", { id: "item-terms-label" }, this._translations.termsOfUse, h("calcite-input", { id: "item-terms", type: "textarea", value: this.itemDetails.licenseInfo }))) : null)));
213
+ }
214
+ componentDidRender() {
215
+ this._loadThumb();
216
+ }
217
+ //--------------------------------------------------------------------------
218
+ //
219
+ // Event Listeners
220
+ //
221
+ //--------------------------------------------------------------------------
222
+ /**
223
+ * Updates the component's value with changes to the input fields.
224
+ */
225
+ inputReceivedHandler(event) {
226
+ switch (event.target.id) {
227
+ case "item-title":
228
+ this.itemDetails.title = event.target.value;
229
+ this._updateStore();
230
+ break;
231
+ case "item-snippet":
232
+ if (event.target.value.length > 250) {
233
+ event.target.value = event.target.value.substring(0, 250);
234
+ }
235
+ this.itemDetails.snippet = event.target.value;
236
+ this._updateLengthLabel(this.itemDetails.snippet);
237
+ this._updateStore();
238
+ break;
239
+ case "item-description":
240
+ this.itemDetails.description = event.target.value;
241
+ this._updateStore();
242
+ break;
243
+ case "item-tags":
244
+ this.itemDetails.tags = event.target.value;
245
+ this._updateStore();
246
+ break;
247
+ case "item-credits":
248
+ this.itemDetails.accessInformation = event.target.value;
249
+ this._updateStore();
250
+ break;
251
+ case "item-terms":
252
+ this.itemDetails.licenseInfo = event.target.value;
253
+ this._updateStore();
254
+ break;
255
+ }
256
+ }
257
+ //--------------------------------------------------------------------------
258
+ //
259
+ // Events
260
+ //
261
+ //--------------------------------------------------------------------------
262
+ //--------------------------------------------------------------------------
263
+ //
264
+ // Public Methods (async)
265
+ //
266
+ //--------------------------------------------------------------------------
267
+ //--------------------------------------------------------------------------
268
+ //
269
+ // Private Methods
270
+ //
271
+ //--------------------------------------------------------------------------
272
+ /**
273
+ * Opens image file browse dialog.
274
+ *
275
+ */
276
+ _getThumbnail() {
277
+ this.browseForThumbnail.click();
278
+ }
279
+ /**
280
+ * Load the templates thumbnail
281
+ *
282
+ */
283
+ _loadThumb() {
284
+ var _a;
285
+ if (this.thumbnail && ((_a = this.itemEdit) === null || _a === void 0 ? void 0 : _a.thumbnail)) {
286
+ // Show the thumbnail
287
+ this.thumbnail.src = URL.createObjectURL(this.itemEdit.thumbnail);
288
+ this.thumbnailContainer.classList.remove("empty-box");
289
+ this.thumbnail.classList.remove("display-none");
290
+ }
291
+ else {
292
+ // Replace the thumbnail with an empty box
293
+ this.thumbnailContainer.classList.add("empty-box");
294
+ this.thumbnail.classList.add("display-none");
295
+ }
296
+ }
297
+ /**
298
+ * Updates the length label to reflect the current number of characters
299
+ * relative to the max number of characters supported.
300
+ *
301
+ * @param phrase the current phrase from the control
302
+ */
303
+ _updateLengthLabel(phrase) {
304
+ this.itemSnippetCount.innerText =
305
+ this._translations.snippetCountPattern.replace("{{n}}", phrase.length.toString());
306
+ }
307
+ /**
308
+ * Add or remove the value from the store
309
+ */
310
+ _updateStore() {
311
+ this.itemEdit = state.getItemInfo(this.itemId);
312
+ this.itemEdit.item = this.itemDetails;
313
+ state.setItemInfo(this.itemEdit);
314
+ }
315
+ /**
316
+ * Gets and displays image result from browse and updates the item in the store.
317
+ *
318
+ * @param event The input controls event that contains the new file
319
+ * @param updateStore boolean that controls if the new value is written to the store
320
+ * should be false on the initial load but true the rest of the time
321
+ */
322
+ _updateThumbnail(event) {
323
+ const files = event.target.files;
324
+ if (files && files[0]) {
325
+ if (this.thumbnail) {
326
+ // Update UI
327
+ this.thumbnail.src = URL.createObjectURL(files[0]);
328
+ // Update info in store
329
+ this.itemEdit = state.getItemInfo(this.itemId);
330
+ this.itemEdit.thumbnail = files[0];
331
+ state.replaceItemThumbnail(this.itemEdit);
332
+ }
333
+ }
334
+ }
335
+ /**
336
+ * Fetches the component's translations
337
+ *
338
+ * @protected
339
+ */
340
+ async _getTranslations() {
341
+ const translations = await getLocaleComponentStrings(this.el);
342
+ this._translations = translations[0];
343
+ }
344
+ get el() { return getElement(this); }
345
+ };
346
+ SolutionItemDetails.style = solutionItemDetailsCss;
347
+
348
+ const solutionItemSharingCss = ":host{display:block;box-sizing:border-box;margin-left:0.75rem;margin-right:0.75rem;min-width:0;flex-grow:0;flex-shrink:1}:host-group-1-up>.block{flex-basis:calc(100% - 1.5rem);width:calc(100% - 1.5rem)}:host-group-2-up>.block{flex-basis:calc(50% - 1.5rem);width:calc(50% - 1.5rem)}:host-group-3-up>.block{flex-basis:calc(33.33333% - 1.5rem);width:calc(33.33333% - 1.5rem)}:host-group-4-up>.block{flex-basis:calc(25% - 1.5rem);width:calc(25% - 1.5rem)}:host-group-5-up>.block{flex-basis:calc(20% - 1.5rem);width:calc(20% - 1.5rem)}:host-group-6-up>.block{flex-basis:calc(16.66666% - 1.5rem);width:calc(16.66666% - 1.5rem)}:host-group-7-up>.block{flex-basis:calc(14.2857% - 1.5rem);width:calc(14.2857% - 1.5rem)}:host-group-8-up>.block{flex-basis:calc(12.5% - 1.5rem);width:calc(12.5% - 1.5rem)}.tablet-block-group-1-up>:host{flex-basis:calc(100% - 1.5rem);width:calc(100% - 1.5rem)}.tablet-block-group-2-up>:host{flex-basis:calc(50% - 1.5rem);width:calc(50% - 1.5rem)}.tablet-block-group-3-up>:host{flex-basis:calc(33.33333% - 1.5rem);width:calc(33.33333% - 1.5rem)}.tablet-block-group-4-up>:host{flex-basis:calc(25% - 1.5rem);width:calc(25% - 1.5rem)}.tablet-block-group-5-up>:host{flex-basis:calc(20% - 1.5rem);width:calc(20% - 1.5rem)}.tablet-block-group-6-up>:host{flex-basis:calc(16.66666% - 1.5rem);width:calc(16.66666% - 1.5rem)}.tablet-block-group-7-up>:host{flex-basis:calc(14.2857% - 1.5rem);width:calc(14.2857% - 1.5rem)}.tablet-block-group-8-up>:host{flex-basis:calc(12.5% - 1.5rem);width:calc(12.5% - 1.5rem)}.phone-block-group-1-up>:host{flex-basis:calc(100% - 1.5rem);width:calc(100% - 1.5rem)}.phone-block-group-2-up>:host{flex-basis:calc(50% - 1.5rem);width:calc(50% - 1.5rem)}.phone-block-group-3-up>:host{flex-basis:calc(33.33333% - 1.5rem);width:calc(33.33333% - 1.5rem)}.phone-block-group-4-up>:host{flex-basis:calc(25% - 1.5rem);width:calc(25% - 1.5rem)}.phone-block-group-5-up>:host{flex-basis:calc(20% - 1.5rem);width:calc(20% - 1.5rem)}.phone-block-group-6-up>:host{flex-basis:calc(16.66666% - 1.5rem);width:calc(16.66666% - 1.5rem)}.phone-block-group-7-up>:host{flex-basis:calc(14.2857% - 1.5rem);width:calc(14.2857% - 1.5rem)}.phone-block-group-8-up>:host{flex-basis:calc(12.5% - 1.5rem);width:calc(12.5% - 1.5rem)}.code-face :host{letter-spacing:0em;font-family:\"Consolas\", \"Andale Mono\", \"Lucida Console\", \"Monaco\", monospace;font-weight:400;font-style:normal}.code-face :host b,.code-face :host strong{font-weight:400}.code-italic :host{letter-spacing:0em;font-family:\"Consolas\", \"Andale Mono\", \"Lucida Console\", \"Monaco\", monospace;font-weight:400;font-style:italic}.code-italic :host b,.code-italic :host strong{font-weight:400}.container-border{padding:1rem}.icon-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}";
349
+
350
+ const SolutionItemSharing = class {
351
+ constructor(hostRef) {
352
+ registerInstance(this, hostRef);
353
+ this.groupId = "";
354
+ this._translations = undefined;
355
+ this.sharing = [];
356
+ }
357
+ itemIdWatchHandler() {
358
+ const itemEdit = state.getItemInfo(this.groupId);
359
+ this.sharing = itemEdit.groupDetails;
360
+ }
361
+ //--------------------------------------------------------------------------
362
+ //
363
+ // Lifecycle
364
+ //
365
+ //--------------------------------------------------------------------------
366
+ /**
367
+ * StencilJS: Called once just after the component is first connected to the DOM.
368
+ */
369
+ async componentWillLoad() {
370
+ return this._getTranslations();
371
+ }
372
+ /**
373
+ * Renders the component.
374
+ */
375
+ render() {
376
+ return (h(Host, null, h("div", { class: "container-border" }, h("calcite-label", null, this._translations.groupInfo), this._renderItems(this.sharing))));
377
+ }
378
+ //--------------------------------------------------------------------------
379
+ //
380
+ // Event Listeners
381
+ //
382
+ //--------------------------------------------------------------------------
383
+ //--------------------------------------------------------------------------
384
+ //
385
+ // Events
386
+ //
387
+ //--------------------------------------------------------------------------
388
+ //--------------------------------------------------------------------------
389
+ //
390
+ // Public Methods (async)
391
+ //
392
+ //--------------------------------------------------------------------------
393
+ async getShareInfo() {
394
+ return this.sharing;
395
+ }
396
+ //--------------------------------------------------------------------------
397
+ //
398
+ // Private Methods
399
+ //
400
+ //--------------------------------------------------------------------------
401
+ /**
402
+ * Render share options based on the list of share details
403
+ *
404
+ * @param objs list of IItemShare objects that are used to expose and store share info for the solutions items
405
+ */
406
+ _renderItems(objs) {
407
+ return objs && objs.length > 0
408
+ ? objs.map(item => {
409
+ return (h("calcite-label", { layout: "inline" }, h("calcite-switch", { id: item.id, name: "setting", onCalciteSwitchChange: (event) => this._updateItem(event), scale: "m", switched: item.shareItem, value: "enabled" }), h("solution-item-icon", { type: item.type, typeKeywords: item.typeKeywords }), h("span", { class: "icon-text", title: item.title }, item.title)));
410
+ })
411
+ : null;
412
+ }
413
+ /**
414
+ * Update the items share prop based on the switch state
415
+ *
416
+ * @param event onCalciteSwitchChange event
417
+ */
418
+ // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
419
+ _updateItem(event) {
420
+ const id = event.target.id;
421
+ this.sharing = this.sharing.map((itemShare) => {
422
+ if (itemShare.id === id) {
423
+ // update the item
424
+ itemShare.shareItem = event.detail.switched;
425
+ // update the item in the store
426
+ const itemEdit = state.getItemInfo(id);
427
+ if (itemShare.shareItem) {
428
+ // Add the group to the item if it's not already there
429
+ if (!itemEdit.groups) {
430
+ itemEdit.groups = [this.groupId];
431
+ }
432
+ else if (itemEdit.groups.indexOf(this.groupId) < 0) {
433
+ itemEdit.groups.push(this.groupId);
434
+ }
435
+ }
436
+ else {
437
+ // Remove the group from the item if it's there
438
+ if (itemEdit.groups) {
439
+ const i = itemEdit.groups.indexOf(this.groupId);
440
+ if (i > -1) {
441
+ itemEdit.groups.splice(i, 1);
442
+ }
443
+ }
444
+ }
445
+ state.setItemInfo(itemEdit);
446
+ }
447
+ return itemShare;
448
+ });
449
+ }
450
+ /**
451
+ * Fetches the component's translations
452
+ *
453
+ * @protected
454
+ */
455
+ async _getTranslations() {
456
+ const translations = await getLocaleComponentStrings(this.el);
457
+ this._translations = translations[0];
458
+ }
459
+ get el() { return getElement(this); }
460
+ static get watchers() { return {
461
+ "groupId": ["itemIdWatchHandler"]
462
+ }; }
463
+ };
464
+ SolutionItemSharing.style = solutionItemSharingCss;
465
+
466
+ const solutionResourceItemCss = ":host{display:block;box-sizing:border-box;margin-left:0.75rem;margin-right:0.75rem;min-width:0;flex-grow:0;flex-shrink:1}:host-group-1-up>.block{flex-basis:calc(100% - 1.5rem);width:calc(100% - 1.5rem)}:host-group-2-up>.block{flex-basis:calc(50% - 1.5rem);width:calc(50% - 1.5rem)}:host-group-3-up>.block{flex-basis:calc(33.33333% - 1.5rem);width:calc(33.33333% - 1.5rem)}:host-group-4-up>.block{flex-basis:calc(25% - 1.5rem);width:calc(25% - 1.5rem)}:host-group-5-up>.block{flex-basis:calc(20% - 1.5rem);width:calc(20% - 1.5rem)}:host-group-6-up>.block{flex-basis:calc(16.66666% - 1.5rem);width:calc(16.66666% - 1.5rem)}:host-group-7-up>.block{flex-basis:calc(14.2857% - 1.5rem);width:calc(14.2857% - 1.5rem)}:host-group-8-up>.block{flex-basis:calc(12.5% - 1.5rem);width:calc(12.5% - 1.5rem)}.tablet-block-group-1-up>:host{flex-basis:calc(100% - 1.5rem);width:calc(100% - 1.5rem)}.tablet-block-group-2-up>:host{flex-basis:calc(50% - 1.5rem);width:calc(50% - 1.5rem)}.tablet-block-group-3-up>:host{flex-basis:calc(33.33333% - 1.5rem);width:calc(33.33333% - 1.5rem)}.tablet-block-group-4-up>:host{flex-basis:calc(25% - 1.5rem);width:calc(25% - 1.5rem)}.tablet-block-group-5-up>:host{flex-basis:calc(20% - 1.5rem);width:calc(20% - 1.5rem)}.tablet-block-group-6-up>:host{flex-basis:calc(16.66666% - 1.5rem);width:calc(16.66666% - 1.5rem)}.tablet-block-group-7-up>:host{flex-basis:calc(14.2857% - 1.5rem);width:calc(14.2857% - 1.5rem)}.tablet-block-group-8-up>:host{flex-basis:calc(12.5% - 1.5rem);width:calc(12.5% - 1.5rem)}.phone-block-group-1-up>:host{flex-basis:calc(100% - 1.5rem);width:calc(100% - 1.5rem)}.phone-block-group-2-up>:host{flex-basis:calc(50% - 1.5rem);width:calc(50% - 1.5rem)}.phone-block-group-3-up>:host{flex-basis:calc(33.33333% - 1.5rem);width:calc(33.33333% - 1.5rem)}.phone-block-group-4-up>:host{flex-basis:calc(25% - 1.5rem);width:calc(25% - 1.5rem)}.phone-block-group-5-up>:host{flex-basis:calc(20% - 1.5rem);width:calc(20% - 1.5rem)}.phone-block-group-6-up>:host{flex-basis:calc(16.66666% - 1.5rem);width:calc(16.66666% - 1.5rem)}.phone-block-group-7-up>:host{flex-basis:calc(14.2857% - 1.5rem);width:calc(14.2857% - 1.5rem)}.phone-block-group-8-up>:host{flex-basis:calc(12.5% - 1.5rem);width:calc(12.5% - 1.5rem)}.code-face :host{letter-spacing:0em;font-family:\"Consolas\", \"Andale Mono\", \"Lucida Console\", \"Monaco\", monospace;font-weight:400;font-style:normal}.code-face :host b,.code-face :host strong{font-weight:400}.code-italic :host{letter-spacing:0em;font-family:\"Consolas\", \"Andale Mono\", \"Lucida Console\", \"Monaco\", monospace;font-weight:400;font-style:italic}.code-italic :host b,.code-italic :host strong{font-weight:400}.resource-item{padding:1rem}.resource-button{-webkit-margin-end:1rem;margin-inline-end:1rem}.resource-progress{padding-top:1rem}.resources-container{border:1px #808080 solid}.margin-bottom-1{margin-bottom:1rem}";
467
+
468
+ const SolutionResourceItem = class {
469
+ constructor(hostRef) {
470
+ registerInstance(this, hostRef);
471
+ this._removedResources = {};
472
+ this.authentication = undefined;
473
+ this.itemId = "";
474
+ this.resourceFilePaths = [];
475
+ this.resources = [];
476
+ this._translations = undefined;
477
+ }
478
+ itemIdWatchHandler() {
479
+ const item = state.getItemInfo(this.itemId);
480
+ this.resourceFilePaths = item.resourceFilePaths;
481
+ this.resources = item.resources.map(
482
+ // False linting error
483
+ // eslint-disable-next-line @typescript-eslint/restrict-plus-operands
484
+ (path) => path.substring(path.lastIndexOf("/") + 1));
485
+ }
486
+ //--------------------------------------------------------------------------
487
+ //
488
+ // Lifecycle
489
+ //
490
+ //--------------------------------------------------------------------------
491
+ /**
492
+ * StencilJS: Called once just after the component is first connected to the DOM.
493
+ */
494
+ componentWillLoad() {
495
+ return this._getTranslations();
496
+ }
497
+ /**
498
+ * Renders the component.
499
+ */
500
+ render() {
501
+ const hasValidResources = this._hasValidResources();
502
+ return (h(Host, null, h("div", { class: "resource-item" }, h("div", { class: "margin-bottom-1" }, h("calcite-button", { appearance: "solid", class: "resource-button", color: "blue", onClick: () => this._addNewResource() }, this._translations.addResource), h("calcite-button", { appearance: "solid", color: "blue", disabled: !hasValidResources, onClick: () => this._downloadAll() }, this._translations.downloadAll)), h("div", { class: "resources-container", style: { display: hasValidResources ? "inherit" : "none" } }, this._renderResourceList()))));
503
+ }
504
+ //--------------------------------------------------------------------------
505
+ //
506
+ // Event Listeners
507
+ //
508
+ //--------------------------------------------------------------------------
509
+ //--------------------------------------------------------------------------
510
+ //
511
+ // Events
512
+ //
513
+ //--------------------------------------------------------------------------
514
+ //--------------------------------------------------------------------------
515
+ //
516
+ // Public Methods (async)
517
+ //
518
+ //--------------------------------------------------------------------------
519
+ //--------------------------------------------------------------------------
520
+ //
521
+ // Private Methods
522
+ //
523
+ //--------------------------------------------------------------------------
524
+ /**
525
+ * Render resources while avoiding thumbnail resoures that are managed by solution-item
526
+ *
527
+ */
528
+ _renderResourceList() {
529
+ return (h("calcite-value-list", { multiple: true }, this.resourceFilePaths.reduce((prev, cur) => {
530
+ if (cur.type !== EFileType.Thumbnail) {
531
+ prev.push(this._renderResource(cur));
532
+ }
533
+ return prev;
534
+ }, [])));
535
+ }
536
+ /**
537
+ * Render the resource and supporting actions for download/update/delete/(reset..if deleted)
538
+ *
539
+ * @param resource the filename and url used to interact with the resource
540
+ */
541
+ _renderResource(resource) {
542
+ const resettable = resource.updateType === EUpdateType.Remove;
543
+ const fullname = resource.folder ? resource.folder + "/" + resource.filename : resource.filename;
544
+ return (h("calcite-value-list-item", { class: resettable ? "disabled" : "", label: fullname, nonInteractive: true, value: resource.url }, h("calcite-action-group", { "expand-disabled": "true", layout: "horizontal", slot: "actions-end" }, h("calcite-action", { disabled: resettable, icon: "download", label: this._translations.download, onClick: () => this._download(resource.url, resource.filename), scale: "m", text: this._translations.download, title: this._translations.download }), h("calcite-action", { disabled: resettable, icon: "upload-to", label: this._translations.update, onClick: () => this._upload(resource), scale: "m", text: this._translations.update, title: this._translations.update }), h("calcite-action", { disabled: resettable, icon: "trash", label: this._translations.delete, onClick: () => this._delete(resource), scale: "m", text: this._translations.delete, title: this._translations.delete }), resettable ? h("calcite-action", { icon: "reset", label: this._translations.reset, onClick: () => this._reset(resource.filename), scale: "m", text: this._translations.reset, title: this._translations.reset }) : h("div", { class: "display-none" }))));
545
+ }
546
+ /**
547
+ * Adds the name to the deleted array so it will be skipped while rendering
548
+ * but still exist if the user chooses to reset
549
+ *
550
+ * @param resource the resource to be updated
551
+ */
552
+ _delete(resource) {
553
+ resource.updateType = EUpdateType.Remove;
554
+ this.resourceFilePaths = [...this.resourceFilePaths]; // to trigger refresh
555
+ this._updateStore();
556
+ }
557
+ /**
558
+ * Remove the name from the deleted array so it will again be rendered
559
+ *
560
+ * @param name the name to be added to the deleted array
561
+ */
562
+ _reset(name) {
563
+ // need to make sure I know if this reset is from the source or a new one
564
+ // Because the item's `resources` array is not updated until (and if) the solution is saved,
565
+ // we can use it for the reset info
566
+ this.resources.some(resourceName => resourceName === name) ?
567
+ // Undo removing an existing resource
568
+ this.resourceFilePaths = this.resourceFilePaths.map(p => {
569
+ if (p.filename === name) {
570
+ p.updateType = EUpdateType.None;
571
+ }
572
+ return p;
573
+ }) :
574
+ // Undo cancelling the adding of a resource
575
+ this.resourceFilePaths = this.resourceFilePaths.map(p => {
576
+ if (p.filename === name) {
577
+ p.updateType = EUpdateType.Add;
578
+ }
579
+ return p;
580
+ });
581
+ this._updateStore();
582
+ }
583
+ /**
584
+ * Download all of the templates resources
585
+ *
586
+ */
587
+ _downloadAll() {
588
+ this.resourceFilePaths.forEach((resource) => {
589
+ this._download(resource.url, resource.filename);
590
+ });
591
+ }
592
+ /**
593
+ * Download the current resource
594
+ *
595
+ * @param url the resource url
596
+ * @param name the resource name
597
+ */
598
+ _download(url, name) {
599
+ // files that have been added manually do not need to be requested from the item
600
+ if (url.startsWith("blob")) {
601
+ this.downloadFile(url, name);
602
+ }
603
+ else {
604
+ const _url = `${url}?token=${this.authentication.token}`;
605
+ void this.fetchAndDownload(_url, name);
606
+ }
607
+ }
608
+ /**
609
+ * Dynamically creates an anchor and downloads the file
610
+ *
611
+ * @param url the url of the resource
612
+ * @param name the name of the resource
613
+ */
614
+ downloadFile(url, name) {
615
+ const link = document.createElement("a");
616
+ link.href = url;
617
+ link.download = name;
618
+ link.target = "_blank";
619
+ link.click();
620
+ }
621
+ /**
622
+ * Check if the template resources have any non-thumbnail resources
623
+ *
624
+ * @returns true if we have data resources and false if only thumbnail
625
+ */
626
+ _hasValidResources() {
627
+ return this.resourceFilePaths.some(r => r.url.indexOf("_info_thumbnail") < 0);
628
+ }
629
+ /**
630
+ * Fetches and downloads the resource from the solution
631
+ *
632
+ * @param url the url of the resource
633
+ * @param name the name of the resource
634
+ */
635
+ async fetchAndDownload(url, name) {
636
+ const image = await fetch(url);
637
+ const b = await image.blob();
638
+ const bURL = URL.createObjectURL(b);
639
+ this.downloadFile(bURL, name);
640
+ }
641
+ /**
642
+ * Create an input element to support the uploading of the resource and upload the resource
643
+ *
644
+ * @param resource the resource to be updated
645
+ */
646
+ _upload(resource) {
647
+ const _input = document.createElement("input");
648
+ _input.classList.add("display-none");
649
+ _input.onchange = this._updateResource.bind(this, resource);
650
+ _input.type = "file";
651
+ _input.click();
652
+ }
653
+ /**
654
+ * Create an input element to support the uploading of a resource and add the new resource
655
+ *
656
+ */
657
+ _addNewResource() {
658
+ const _input = document.createElement("input");
659
+ _input.classList.add("display-none");
660
+ _input.onchange = this._add.bind(this);
661
+ _input.type = "file";
662
+ _input.click();
663
+ }
664
+ /**
665
+ * Replace the resource file path when update action is used
666
+ *
667
+ * @param resourcePath the resource to be updated
668
+ * @param event the input event that contains the file
669
+ */
670
+ _updateResource(resourcePath, event) {
671
+ const files = event.target.files;
672
+ if (files && files[0]) {
673
+ resourcePath.blob = files[0];
674
+ resourcePath.updateType = EUpdateType.Update;
675
+ this._updateStore();
676
+ }
677
+ }
678
+ /**
679
+ * Add the new resource to the resource file paths
680
+ *
681
+ * @param event the inputs event that contains the new file
682
+ */
683
+ _add(event) {
684
+ const files = event.target.files;
685
+ if (files && files[0]) {
686
+ const url = URL.createObjectURL(files[0]);
687
+ const filename = files[0].name;
688
+ // Add the item if it's not already in the resource file paths list
689
+ if (!this.resourceFilePaths.some(r => r.filename === filename && r.url === url)) {
690
+ this.resourceFilePaths = [
691
+ ...this.resourceFilePaths,
692
+ {
693
+ url,
694
+ type: EFileType.Data,
695
+ folder: undefined,
696
+ filename,
697
+ blob: files[0],
698
+ updateType: EUpdateType.Add
699
+ }
700
+ ];
701
+ this._updateStore();
702
+ }
703
+ }
704
+ }
705
+ /**
706
+ * Add or remove the value from the store
707
+ */
708
+ _updateStore() {
709
+ const item = state.getItemInfo(this.itemId);
710
+ item.resourceFilePaths = this.resourceFilePaths;
711
+ state.setItemInfo(item);
712
+ }
713
+ /**
714
+ * Fetches the component's translations
715
+ *
716
+ * @protected
717
+ */
718
+ async _getTranslations() {
719
+ const translations = await getLocaleComponentStrings(this.el);
720
+ this._translations = translations[0];
721
+ }
722
+ get el() { return getElement(this); }
723
+ static get watchers() { return {
724
+ "itemId": ["itemIdWatchHandler"]
725
+ }; }
726
+ };
727
+ SolutionResourceItem.style = solutionResourceItemCss;
728
+
172
729
  /** @license
173
730
  * Copyright 2022 Esri
174
731
  *
@@ -21529,6 +22086,104 @@ const SolutionSpatialRef = class {
21529
22086
  };
21530
22087
  SolutionSpatialRef.style = solutionSpatialRefCss;
21531
22088
 
21532
- export { SolutionContents as solution_contents, SolutionItem as solution_item, SolutionSpatialRef as solution_spatial_ref };
22089
+ const solutionTemplateDataCss = ":host{display:flexbox}.solution-data-container{position:absolute;height:-moz-available;height:calc(100% - 48px);height:-webkit-fill-available;height:stretch;width:-moz-available;width:100%;width:-webkit-fill-available;width:stretch}.solution-data-child-container{display:flex;height:100%;width:100%;flex-direction:column;overflow-y:auto}.solution-data-editor-container{height:100%}.solution-data-child-container-collapsed{display:flex;height:100%;flex-direction:column;overflow:auto;width:50px}.inputBottomSeparation{margin-left:0px;margin-right:0px;margin-top:0px;margin-bottom:1.5rem}.json-editor{margin:1rem;width:auto;width:-webkit-fill-available -moz-available}.collapse-btn{padding-left:1rem;padding-right:1rem;padding-top:1rem;padding-bottom:0px}.org-vars{padding-left:1rem;padding-right:1rem;padding-top:1rem;padding-bottom:0px}.sol-vars{padding-top:0px;padding-bottom:0px;padding-left:1rem;padding-right:1rem;min-height:45%}.padding-1{padding:1rem}.light{background-color:#F4F4F4}";
22090
+
22091
+ const SolutionTemplateData = class {
22092
+ //--------------------------------------------------------------------------
22093
+ //
22094
+ // Lifecycle
22095
+ //
22096
+ //--------------------------------------------------------------------------
22097
+ constructor(hostRef) {
22098
+ registerInstance(this, hostRef);
22099
+ this._initializing = false;
22100
+ this.instanceid = "";
22101
+ this.itemId = "";
22102
+ this.organizationVariables = "";
22103
+ this.solutionVariables = "";
22104
+ this.varsOpen = true;
22105
+ this._translations = undefined;
22106
+ this.value = "";
22107
+ window.addEventListener("solutionEditorContentChanged", (evt) => {
22108
+ if (this.itemId) {
22109
+ const { id, contents } = evt.detail;
22110
+ const [itemId, instanceId] = id.split("|");
22111
+ if (itemId == this.itemId && instanceId === this.instanceid) {
22112
+ if (!this._initializing && contents.length > 0) {
22113
+ const itemEdit = state.getItemInfo(itemId);
22114
+ if (instanceId === "data") {
22115
+ itemEdit.data = JSON.parse(contents);
22116
+ }
22117
+ else {
22118
+ itemEdit.properties = JSON.parse(contents);
22119
+ }
22120
+ state.setItemInfo(itemEdit);
22121
+ }
22122
+ this._initializing = false;
22123
+ }
22124
+ }
22125
+ });
22126
+ }
22127
+ itemIdWatchHandler() {
22128
+ this._initializing = true;
22129
+ this.value = JSON.stringify(this.instanceid === "data"
22130
+ ? state.getItemInfo(this.itemId).data
22131
+ : state.getItemInfo(this.itemId).properties, null, 2);
22132
+ }
22133
+ /**
22134
+ * StencilJS: Called once just after the component is first connected to the DOM.
22135
+ */
22136
+ componentWillLoad() {
22137
+ return this._getTranslations();
22138
+ }
22139
+ /**
22140
+ * Renders the component.
22141
+ */
22142
+ render() {
22143
+ return (h(Host, null, h("div", { class: "solution-data-container" }, h("calcite-shell", { class: "light var-container", dir: "ltr" }, h("calcite-panel", { class: "json-editor" }, h("div", { class: "solution-data-child-container calcite-match-height" }, h("json-editor", { class: "solution-data-editor-container", instanceid: this.itemId + "|" + this.instanceid, value: this.value }))), h("calcite-shell-panel", { "height-scale": "l", position: "end", slot: "contextual-panel", "width-scale": "xs" }, h("div", { class: this.varsOpen ? "solution-data-child-container" : "solution-data-child-container-collapsed" }, h("calcite-button", { appearance: "transparent", class: "collapse-btn", "icon-start": this.varsOpen ? "chevrons-right" : "chevrons-left", id: "collapse-vars", onClick: () => this._toggleVars(), scale: "s", title: this.varsOpen ? this._translations.collapse : this._translations.expand }), h("div", { class: this.varsOpen ? "org-vars" : "org-vars display-none", id: "orgVars" }, h("solution-organization-variables", { value: this.organizationVariables })), h("div", { class: this.varsOpen ? "sol-vars" : "sol-vars display-none", id: "solVars" }, h("solution-variables", { value: this.solutionVariables }))))))));
22144
+ }
22145
+ //--------------------------------------------------------------------------
22146
+ //
22147
+ // Event Listeners
22148
+ //
22149
+ //--------------------------------------------------------------------------
22150
+ //--------------------------------------------------------------------------
22151
+ //
22152
+ // Events
22153
+ //
22154
+ //--------------------------------------------------------------------------
22155
+ //--------------------------------------------------------------------------
22156
+ //
22157
+ // Public Methods (async)
22158
+ //
22159
+ //--------------------------------------------------------------------------
22160
+ //--------------------------------------------------------------------------
22161
+ //
22162
+ // Private Methods
22163
+ //
22164
+ //--------------------------------------------------------------------------
22165
+ /**
22166
+ * Toggle varsOpen prop to show/hide variable containers
22167
+ */
22168
+ _toggleVars() {
22169
+ this.varsOpen = !this.varsOpen;
22170
+ }
22171
+ /**
22172
+ * Fetches the component's translations
22173
+ *
22174
+ * @protected
22175
+ */
22176
+ async _getTranslations() {
22177
+ const translations = await getLocaleComponentStrings(this.el);
22178
+ this._translations = translations[0];
22179
+ }
22180
+ get el() { return getElement(this); }
22181
+ static get watchers() { return {
22182
+ "itemId": ["itemIdWatchHandler"]
22183
+ }; }
22184
+ };
22185
+ SolutionTemplateData.style = solutionTemplateDataCss;
22186
+
22187
+ export { SolutionContents as solution_contents, SolutionItem as solution_item, SolutionItemDetails as solution_item_details, SolutionItemSharing as solution_item_sharing, SolutionResourceItem as solution_resource_item, SolutionSpatialRef as solution_spatial_ref, SolutionTemplateData as solution_template_data };
21533
22188
 
21534
- //# sourceMappingURL=solution-contents_3.entry.js.map
22189
+ //# sourceMappingURL=solution-contents_7.entry.js.map