@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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solution-config-modal.js","sourceRoot":"","sources":["../../../src/components/solution-config-modal/solution-config-modal.tsx"],"names":[],"mappings":"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","sourcesContent":["/** @license\r\n * Copyright 2022 Esri\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n\r\nimport { Component, Element, Event, EventEmitter, h, Host, Prop, State, VNode, Watch } from \"@stencil/core\";\r\nimport \"@esri/calcite-components\";\r\nimport SolutionConfigModal_T9n from \"../../assets/t9n/solution-config-modal/resources.json\";\r\nimport { getLocaleComponentStrings } from \"../../utils/locale\";\r\n\r\n@Component({\r\n tag: \"solution-config-modal\",\r\n styleUrl: \"solution-config-modal.scss\",\r\n shadow: false\r\n})\r\nexport class SolutionConfigModal {\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Host element access\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n @Element() el: HTMLSolutionConfigModalElement;\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Properties (public)\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n @Prop({ mutable: true }) cacheBreaker: string;\r\n\r\n /**\r\n * Credentials for requests in a serialized form\r\n */\r\n @Prop({ mutable: true }) serializedAuthentication = \"\";\r\n\r\n @Prop({ mutable: true }) solutionTitle = \"\";\r\n\r\n /**\r\n * Contains the current solution item id\r\n */\r\n @Prop({ mutable: true }) solutionItemId: string;\r\n\r\n @Watch(\"solutionItemId\") async valueWatchHandler(): Promise<void> {\r\n console.log(\"MODAL watch \" + this.solutionItemId);//???\r\n }\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Lifecycle\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n constructor() {\r\n //console.log(\"MODAL constructor \" + this.solutionItemId);//??? + \" open:\" + this._modalIsOpen);//???\r\n\r\n window.addEventListener(\"solutionCanSave\",\r\n (evt) => {\r\n this._canSave = (evt as any).detail as boolean;\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * StencilJS: Called once just after the component is first connected to the DOM.\r\n *\r\n * @returns Promise when complete\r\n */\r\n async componentWillLoad(): Promise<void> {\r\n return this._getTranslations();\r\n }\r\n\r\n componentWillRender(): void {\r\n console.log(\"MODAL will render \" + this.solutionTitle + \" (\" + this.solutionItemId + \", \" + this.cacheBreaker + \")\");//???\r\n }\r\n\r\n /**\r\n * Renders the component.\r\n */\r\n render(): VNode {\r\n const cacheBreakerParts = this.cacheBreaker.split(\"_\");\r\n if (!this.solutionItemId && cacheBreakerParts.length === 2) {\r\n this.solutionItemId = cacheBreakerParts[0];\r\n }\r\n\r\n const modalIsOpen = !!this.solutionItemId;\r\n console.log(\"MODAL render \" + this.solutionTitle + \" (\" + this.solutionItemId + \", \" + this.cacheBreaker + \")\" + \" open:\" + modalIsOpen.toString());//???\r\n return (\r\n <Host>\r\n <calcite-modal\r\n aria-labelledby=\"solutions-modal-title\"\r\n fullscreen=\"\"\r\n intl-close={this._translations.cancel}\r\n onCalciteModalClose={() => this._cancel()}\r\n open={modalIsOpen}\r\n ref={(el) => this._modal = el}\r\n >\r\n <h3\r\n id=\"solutions-modal-title\"\r\n slot=\"header\"\r\n >\r\n {this._translations.title.replace(\"{{solutionName}}\", this.solutionTitle)}\r\n </h3>\r\n <div\r\n class=\"solutions-modal-content\"\r\n id=\"solutions-modal-content\"\r\n slot=\"content\"\r\n >\r\n <solution-configuration\r\n ref ={(el) => (this._configuration = el)}\r\n serialized-authentication={this.serializedAuthentication}\r\n solution-item-id={this.solutionItemId}\r\n />\r\n </div>\r\n <calcite-button\r\n appearance=\"outline\"\r\n disabled={!this._canSave}\r\n onClick={() => this._cancel()}\r\n ref={(el) => (this._cancelBtn = el)}\r\n slot=\"secondary\"\r\n width=\"full\"\r\n >\r\n {this._translations.cancel}\r\n </calcite-button>\r\n <calcite-button\r\n appearance=\"solid\"\r\n disabled={!this._canSave}\r\n onClick={() => this._save()}\r\n ref={(el) => (this._saveBtn = el)}\r\n slot=\"primary\"\r\n width=\"full\"\r\n >\r\n {this._translations.save}\r\n </calcite-button>\r\n </calcite-modal>\r\n </Host>\r\n );\r\n }\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Properties (protected)\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n protected _cancelBtn: HTMLCalciteButtonElement;\r\n\r\n /**\r\n * Controls enablement of Cancel and Save modal buttons\r\n */\r\n @State() protected _canSave = false;\r\n\r\n protected _configuration: HTMLSolutionConfigurationElement;\r\n\r\n protected _modal: HTMLCalciteModalElement;\r\n\r\n //@State() protected _modalIsOpen = false;\r\n\r\n protected _saveBtn: HTMLCalciteButtonElement;\r\n\r\n /**\r\n * Contains the _translations for this component.\r\n * All UI strings should be defined here.\r\n */\r\n @State() protected _translations: typeof SolutionConfigModal_T9n;\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Event Listeners\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Events\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n @Event() solutionConfigModalClosed: EventEmitter<void>;\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Public Methods (async)\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Private Methods\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n protected async _cancel(): Promise<void> {\r\n console.log(\"MODAL cancel \" + this.solutionItemId);//???\r\n this._cancelBtn.disabled = this._saveBtn.disabled = true;\r\n this._canSave\r\n ? confirm(\"Save changes?\")\r\n ? await this._saveChanges()\r\n : await this._cancelChanges()\r\n : await this._cancelChanges();\r\n this._closeModal();\r\n }\r\n\r\n protected async _cancelChanges(): Promise<void> {\r\n console.log(\"MODAL cancelChanges\");//???\r\n this._canSave = false;\r\n await this._configuration.unloadSolution();\r\n }\r\n\r\n protected _closeModal(): void {\r\n console.log(\"MODAL close\");//???\r\n this.solutionItemId = \"\";\r\n //this.solutionTitle = \"\";\r\n this.cacheBreaker = \"\";\r\n this.solutionConfigModalClosed.emit();\r\n }\r\n\r\n // Save changes and close the modal\r\n protected async _save(): Promise<void> {\r\n console.log(\"MODAL save \" + this.solutionItemId);//???\r\n this._cancelBtn.disabled = this._saveBtn.disabled = true;\r\n if (this._canSave) {\r\n await this._saveChanges();\r\n }\r\n }\r\n\r\n protected async _saveChanges(): Promise<void> {\r\n console.log(\"MODAL saveChanges\");//???\r\n try {\r\n this._canSave = false;\r\n await this._configuration.saveSolution();\r\n } catch (error) {\r\n //reportError(\"Unable to save\", error.originalMessage);\r\n console.log(\"Unable to save\", error.originalMessage);\r\n }\r\n }\r\n\r\n /**\r\n * Fetches the component's translations\r\n *\r\n * @protected\r\n */\r\n protected async _getTranslations(): Promise<void> {\r\n const translations = await getLocaleComponentStrings(this.el);\r\n this._translations = translations[0] as typeof SolutionConfigModal_T9n;\r\n }\r\n}\r\n"]}
@@ -35,7 +35,7 @@ export class SolutionConfiguration {
35
35
  this._solutionEditorHasChanges = false;
36
36
  this._solutionEditorHasErrors = false;
37
37
  this._canSave = false;
38
- this.authentication = new UserSession({});
38
+ this.serializedAuthentication = "";
39
39
  this.solutionItemId = "";
40
40
  this.showLoading = false;
41
41
  this._currentEditItemId = "";
@@ -46,6 +46,8 @@ export class SolutionConfiguration {
46
46
  this._templateHierarchy = [];
47
47
  this._translations = undefined;
48
48
  this._treeOpen = true;
49
+ this._authentication = this.serializedAuthentication ? UserSession.deserialize(this.serializedAuthentication) : new UserSession({});
50
+ console.log("CONFIG constructor " + this.solutionItemId); //???
49
51
  void this._loadSolution(this.solutionItemId);
50
52
  window.addEventListener("solutionStoreHasChanges", (evt) => {
51
53
  this._updateSaveability(this._solutionStoreHasChanges = evt.detail, this._solutionEditorHasChanges, this._solutionEditorHasErrors);
@@ -57,8 +59,11 @@ export class SolutionConfiguration {
57
59
  this._updateSaveability(this._solutionStoreHasChanges, this._solutionEditorHasChanges, this._solutionEditorHasErrors = evt.detail);
58
60
  });
59
61
  }
62
+ async serializedAuthenticationWatchHandler() {
63
+ this._authentication = this.serializedAuthentication ? UserSession.deserialize(this.serializedAuthentication) : new UserSession({});
64
+ }
60
65
  async valueWatchHandler() {
61
- console.log("update solution config " + this.solutionItemId); //???
66
+ console.log("CONFIG watch " + this.solutionItemId); //???
62
67
  await this._loadSolution(this.solutionItemId);
63
68
  }
64
69
  /**
@@ -73,17 +78,17 @@ export class SolutionConfiguration {
73
78
  * Renders the component.
74
79
  */
75
80
  render() {
76
- console.log("render solution config " + this.solutionItemId); //???
77
81
  const wkid = getProp(state.getStoreInfo("spatialReferenceInfo"), "spatialReference");
78
82
  const hasServices = state.getStoreInfo("featureServices").length > 0;
79
83
  const solutionData = state.getStoreInfo("solutionData");
80
84
  this._solutionVariables = JSON.stringify(utils.getSolutionVariables(solutionData.templates, this._translations));
81
85
  this._organizationVariables = JSON.stringify(utils.getOrganizationVariables(this._translations));
86
+ console.log("CONFIG render " + this.solutionItemId); //???
82
87
  return (h(Host, null, !this._solutionIsLoaded
83
88
  ? h("calcite-loader", { active: true, label: '' })
84
89
  : null, h("div", { class: "configuration-container" }, h("div", { class: "configuration" }, h("calcite-tabs", { class: "config-tabs" }, h("calcite-tab-nav", { slot: "tab-nav" }, h("calcite-tab-title", null, this._translations.definitionTab), hasServices ?
85
90
  h("calcite-tab-title", null, this._translations.spatialReferenceTab) :
86
- null), h("calcite-tab", { active: true, class: "config-tab" }, h("div", { class: "config-solution" }, h("div", { class: this._treeOpen ? "config-inventory" : "config-inventory-hide" }, h("solution-contents", { id: "configInventory", key: `${this.solutionItemId}-contents`, ref: (el) => (this._solutionContentsComponent = el) })), h("calcite-button", { appearance: "transparent", class: "collapse-btn", "icon-start": this._treeOpen ? "chevrons-left" : "chevrons-right", id: "collapse-vars", onClick: () => this._toggleTree(), scale: "s", title: this._treeOpen ? this._translations.collapse : this._translations.expand }), h("div", { class: "config-item" }, h("solution-item", { authentication: this.authentication, "item-id": this._currentEditItemId, key: `${this.solutionItemId}-item`, "organization-variables": this._organizationVariables, "solution-item-id": this.solutionItemId, "solution-variables": this._solutionVariables })))), hasServices
91
+ null), h("calcite-tab", { active: true, class: "config-tab" }, h("div", { class: "config-solution" }, h("div", { class: this._treeOpen ? "config-inventory" : "config-inventory-hide" }, h("solution-contents", { id: "configInventory", key: `${this.solutionItemId}-contents`, ref: (el) => (this._solutionContentsComponent = el) })), h("calcite-button", { appearance: "transparent", class: "collapse-btn", "icon-start": this._treeOpen ? "chevrons-left" : "chevrons-right", id: "collapse-vars", onClick: () => this._toggleTree(), scale: "s", title: this._treeOpen ? this._translations.collapse : this._translations.expand }), h("div", { class: "config-item" }, h("solution-item", { authentication: this._authentication, "item-id": this._currentEditItemId, key: `${this.solutionItemId}-item`, "organization-variables": this._organizationVariables, "solution-item-id": this.solutionItemId, "solution-variables": this._solutionVariables })))), hasServices
87
92
  ? h("calcite-tab", { class: "config-tab" }, h("div", { class: "config-solution" }, h("solution-spatial-ref", { defaultWkid: wkid, id: "configure-solution-spatial-ref", key: `${this.solutionItemId}-spatial-ref`, locked: !wkid, services: state.getStoreInfo("featureServices").map(fs => fs.name) })))
88
93
  : null)))));
89
94
  }
@@ -151,7 +156,7 @@ export class SolutionConfiguration {
151
156
  this.modelsSet = false;
152
157
  state.reset();
153
158
  }
154
- getModels(templates, this.authentication, this.solutionItemId).then(models => {
159
+ getModels(templates, this._authentication, this.solutionItemId).then(models => {
155
160
  state.models = models;
156
161
 
157
162
  state.featureServices = getFeatureServices(templates);
@@ -185,10 +190,6 @@ export class SolutionConfiguration {
185
190
  if (this._templateHierarchy.length > 0) {
186
191
  // Start with the first item in the contents
187
192
  firstItem = state.getItemInfo(this._templateHierarchy[0].id);
188
- console.log("init with first item " + firstItem.itemId); //???
189
- }
190
- else {
191
- console.log("no initial first item"); //???
192
193
  }
193
194
  this._currentEditItemId = firstItem ? firstItem.itemId : "";
194
195
  }
@@ -204,7 +205,7 @@ export class SolutionConfiguration {
204
205
  async _loadSolution(solutionItemId) {
205
206
  if (solutionItemId) {
206
207
  this._solutionIsLoaded = false;
207
- await state.loadSolution(solutionItemId, this.authentication);
208
+ await state.loadSolution(solutionItemId, this._authentication);
208
209
  this._initProps();
209
210
  this._solutionIsLoaded = true;
210
211
  }
@@ -267,7 +268,7 @@ export class SolutionConfiguration {
267
268
  this.solutionItemId,
268
269
  data,
269
270
  state.models,
270
- this.authentication,
271
+ this._authentication,
271
272
  this._translations
272
273
  ).then(saveResult => {
273
274
  // need to trigger re-render...and re-fetch
@@ -572,21 +573,23 @@ export class SolutionConfiguration {
572
573
  }
573
574
  static get properties() {
574
575
  return {
575
- "authentication": {
576
- "type": "unknown",
576
+ "serializedAuthentication": {
577
+ "type": "string",
577
578
  "mutable": true,
578
579
  "complexType": {
579
- "original": "UserSession",
580
- "resolved": "UserSession",
580
+ "original": "string",
581
+ "resolved": "string",
581
582
  "references": {}
582
583
  },
583
584
  "required": false,
584
585
  "optional": false,
585
586
  "docs": {
586
587
  "tags": [],
587
- "text": "Credentials for requests"
588
+ "text": "Credentials for requests in a serialized form"
588
589
  },
589
- "defaultValue": "new UserSession({})"
590
+ "attribute": "serialized-authentication",
591
+ "reflect": false,
592
+ "defaultValue": "\"\""
590
593
  },
591
594
  "solutionItemId": {
592
595
  "type": "string",
@@ -697,6 +700,9 @@ export class SolutionConfiguration {
697
700
  static get elementRef() { return "el"; }
698
701
  static get watchers() {
699
702
  return [{
703
+ "propName": "serializedAuthentication",
704
+ "methodName": "serializedAuthenticationWatchHandler"
705
+ }, {
700
706
  "propName": "solutionItemId",
701
707
  "methodName": "valueWatchHandler"
702
708
  }];
@@ -1 +1 @@
1
- {"version":3,"file":"solution-configuration.js","sourceRoot":"","sources":["../../../src/components/solution-configuration/solution-configuration.tsx"],"names":[],"mappings":"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","sourcesContent":["/** @license\r\n * Copyright 2022 Esri\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n\r\nimport { Component, Element, h, Host, Listen, Method, Prop, State, VNode, Watch } from \"@stencil/core\";\r\nimport { IInventoryItem, IItemTemplateEdit, ISolutionSpatialReferenceInfo } from \"../../utils/interfaces\";\r\nimport * as utils from \"../../utils/templates\";\r\nimport state from \"../../utils/solution-store\";\r\nimport { getProp, UserSession } from \"@esri/solution-common\";\r\nimport \"@esri/calcite-components\";\r\nimport SolutionConfiguration_T9n from \"../../assets/t9n/solution-configuration/resources.json\";\r\nimport { getLocaleComponentStrings } from \"../../utils/locale\";\r\n\r\n@Component({\r\n tag: \"solution-configuration\",\r\n styleUrl: \"solution-configuration.scss\",\r\n shadow: false\r\n})\r\nexport class SolutionConfiguration {\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Host element access\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n @Element() el: HTMLSolutionConfigurationElement;\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Properties (public)\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n /**\r\n * Credentials for requests\r\n */\r\n @Prop({ mutable: true }) authentication = new UserSession({});\r\n\r\n /**\r\n * Contains the current solution item id\r\n */\r\n @Prop({ mutable: true, reflect: true }) solutionItemId = \"\";\r\n\r\n @Watch(\"solutionItemId\") async valueWatchHandler(): Promise<void> {\r\n console.log(\"update solution config \" + this.solutionItemId);//???\r\n await this._loadSolution(this.solutionItemId);\r\n }\r\n\r\n /**\r\n * Used to show/hide loading indicator\r\n */\r\n @Prop({ mutable: true, reflect: true }) showLoading = false;\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Lifecycle\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n constructor() {\r\n void this._loadSolution(this.solutionItemId);\r\n\r\n window.addEventListener(\"solutionStoreHasChanges\",\r\n (evt) => {\r\n this._updateSaveability(\r\n this._solutionStoreHasChanges = (evt as any).detail, this._solutionEditorHasChanges, this._solutionEditorHasErrors);\r\n }\r\n );\r\n window.addEventListener(\"solutionEditorHasChanges\",\r\n (evt) => {\r\n this._updateSaveability(\r\n this._solutionStoreHasChanges, this._solutionEditorHasChanges = (evt as any).detail, this._solutionEditorHasErrors);\r\n }\r\n );\r\n window.addEventListener(\"solutionEditorHasErrors\",\r\n (evt) => {\r\n this._updateSaveability(\r\n this._solutionStoreHasChanges, this._solutionEditorHasChanges, this._solutionEditorHasErrors = (evt as any).detail);\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * StencilJS: Called once just after the component is first connected to the DOM.\r\n *\r\n * @returns Promise when complete\r\n */\r\n async componentWillLoad(): Promise<void> {\r\n return this._getTranslations();\r\n }\r\n\r\n /**\r\n * Renders the component.\r\n */\r\n render(): VNode {\r\n console.log(\"render solution config \" + this.solutionItemId);//???\r\n const wkid = getProp(state.getStoreInfo(\"spatialReferenceInfo\"), \"spatialReference\");\r\n const hasServices: boolean = state.getStoreInfo(\"featureServices\").length > 0;\r\n\r\n const solutionData = state.getStoreInfo(\"solutionData\");\r\n this._solutionVariables = JSON.stringify(utils.getSolutionVariables(solutionData.templates, this._translations));\r\n this._organizationVariables = JSON.stringify(utils.getOrganizationVariables(this._translations));\r\n\r\n return (\r\n <Host>\r\n {\r\n !this._solutionIsLoaded\r\n ? <calcite-loader active label='' />\r\n : null\r\n }\r\n <div class=\"configuration-container\">\r\n <div class=\"configuration\">\r\n <calcite-tabs class=\"config-tabs\">\r\n <calcite-tab-nav slot=\"tab-nav\">\r\n <calcite-tab-title>{this._translations.definitionTab}</calcite-tab-title>\r\n {hasServices ?\r\n <calcite-tab-title>{this._translations.spatialReferenceTab}</calcite-tab-title> :\r\n null\r\n }\r\n </calcite-tab-nav>\r\n <calcite-tab active class=\"config-tab\">\r\n <div class=\"config-solution\">\r\n <div class={this._treeOpen ? \"config-inventory\" : \"config-inventory-hide\"}>\r\n <solution-contents\r\n id=\"configInventory\"\r\n key={`${this.solutionItemId}-contents`}\r\n ref={(el) => (this._solutionContentsComponent = el)}\r\n />\r\n </div>\r\n <calcite-button\r\n appearance=\"transparent\"\r\n class=\"collapse-btn\"\r\n icon-start={this._treeOpen ? \"chevrons-left\" : \"chevrons-right\"}\r\n id=\"collapse-vars\"\r\n onClick={() => this._toggleTree()}\r\n scale=\"s\"\r\n title={this._treeOpen ? this._translations.collapse : this._translations.expand}\r\n />\r\n <div class=\"config-item\">\r\n <solution-item\r\n authentication={this.authentication}\r\n item-id={this._currentEditItemId}\r\n key={`${this.solutionItemId}-item`}\r\n organization-variables={this._organizationVariables}\r\n solution-item-id={this.solutionItemId}\r\n solution-variables={this._solutionVariables}\r\n />\r\n </div>\r\n </div>\r\n </calcite-tab>\r\n {\r\n hasServices\r\n ? <calcite-tab class=\"config-tab\">\r\n <div class=\"config-solution\">\r\n <solution-spatial-ref\r\n defaultWkid={wkid}\r\n id=\"configure-solution-spatial-ref\"\r\n key={`${this.solutionItemId}-spatial-ref`}\r\n locked={!wkid}\r\n services={state.getStoreInfo(\"featureServices\").map(fs => fs.name)}\r\n />\r\n </div>\r\n </calcite-tab>\r\n : null\r\n }\r\n </calcite-tabs>\r\n </div>\r\n </div>\r\n </Host>\r\n );\r\n }\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Properties (protected)\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n /**\r\n * Contains the current item we are working with\r\n */\r\n @State() protected _currentEditItemId = \"\";\r\n\r\n @State() protected _organizationVariables = \"\";\r\n\r\n @State() protected _solutionContentsComponent: HTMLSolutionContentsElement;\r\n\r\n @State() protected _solutionIsLoaded = false;\r\n\r\n @State() protected _solutionVariables = \"\";\r\n\r\n /**\r\n * Contains the hierarchy of template items for the current solution.\r\n */\r\n @State() protected _templateHierarchy: IInventoryItem[] = [];\r\n\r\n /**\r\n * Contains the _translations for this component.\r\n * All UI strings should be defined here.\r\n */\r\n @State() protected _translations: typeof SolutionConfiguration_T9n;\r\n\r\n /**\r\n * Used to show/hide the content tree\r\n */\r\n @State() protected _treeOpen = true;\r\n\r\n protected _solutionStoreHasChanges = false;\r\n\r\n protected _solutionEditorHasChanges = false;\r\n\r\n protected _solutionEditorHasErrors = false;\r\n\r\n protected _canSave = false;\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Event Listeners\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n @Listen(\"solutionItemSelected\", { target: \"window\" })\r\n _solutionItemSelected(event: CustomEvent): void {\r\n this._currentEditItemId = event.detail;\r\n }\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Events\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Public Methods (async)\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n /*\r\n @Method()\r\n async getEditModels(): Promise<ISolutionItems> {\r\n return Promise.resolve(state.items);\r\n }\r\n */\r\n\r\n @Method()\r\n async getSpatialReferenceInfo(): Promise<ISolutionSpatialReferenceInfo> {\r\n return Promise.resolve(state.getStoreInfo(\"spatialReferenceInfo\"));\r\n }\r\n\r\n /*\r\n @Method()\r\n async getSourceTemplates(): Promise<any> {\r\n return Promise.resolve(this._templates);\r\n }\r\n */\r\n\r\n @Method()\r\n async saveSolution(): Promise<void> {\r\n this._solutionIsLoaded = false;\r\n await state.saveSolution();\r\n this._solutionIsLoaded = true;\r\n this.solutionItemId = null;\r\n }\r\n\r\n @Method()\r\n async unloadSolution(): Promise<void> {\r\n this.solutionItemId = null;\r\n }\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Private Methods\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n /**\r\n * Update the store with the initial values\r\n *\r\n * @param templates the solution items templates\r\n * @param isReset (defaults to false) indicates if we are resetting the controls after save\r\n */\r\n /*\r\n protected _initState(\r\n templates: any[],\r\n isReset = false\r\n ): Promise<any> {\r\n return new Promise((resolve, reject) => {\r\n if (isReset) {\r\n // clear models and state so we can refresh after save\r\n this.modelsSet = false;\r\n state.reset();\r\n }\r\n getModels(templates, this.authentication, this.solutionItemId).then(models => {\r\n state.models = models;\r\n\r\n state.featureServices = getFeatureServices(templates);\r\n state.getStoreInfo(\"spatialReferenceInfo\") = getSpatialReferenceInfo(state.featureServices, this._sourceItemData);\r\n\r\n if (isReset) {\r\n // reset for undo/redo stack and diff editor tracking\r\n const jsonEditors = Array.from(this.el.getElementsByTagName(\"json-editor\"));\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n jsonEditors.forEach(e => void e.reset());\r\n }\r\n\r\n this.modelsSet = true;\r\n resolve(true);\r\n }, () => reject);\r\n });\r\n }\r\n */\r\n\r\n /**\r\n * Set Props with the initial values\r\n *\r\n * @protected\r\n */\r\n protected _initProps(): void {\r\n const solutionData = state.getStoreInfo(\"solutionData\");\r\n\r\n this._templateHierarchy = [...utils.getInventoryItems(solutionData.templates)];\r\n\r\n if (this._solutionContentsComponent) {\r\n this._solutionContentsComponent.templateHierarchy = this._templateHierarchy;\r\n }\r\n\r\n let firstItem: IItemTemplateEdit;\r\n if (this._templateHierarchy.length > 0) {\r\n // Start with the first item in the contents\r\n firstItem = state.getItemInfo(this._templateHierarchy[0].id);\r\n console.log(\"init with first item \" + firstItem.itemId);//???\r\n } else { console.log(\"no initial first item\");//???\r\n }\r\n this._currentEditItemId = firstItem ? firstItem.itemId : \"\";\r\n }\r\n\r\n /**\r\n * Loads a solution.\r\n *\r\n * @param solutionItemId AGO id of solution to load\r\n *\r\n * @returns Resolved promise when task is done\r\n *\r\n * @protected\r\n */\r\n protected async _loadSolution(solutionItemId: string): Promise<void> {\r\n if (solutionItemId) {\r\n this._solutionIsLoaded = false;\r\n await state.loadSolution(solutionItemId, this.authentication);\r\n this._initProps();\r\n this._solutionIsLoaded = true;\r\n } else {\r\n this._reset();\r\n }\r\n return Promise.resolve();\r\n }\r\n\r\n /**\r\n * Resets internal variables.\r\n *\r\n * @protected\r\n */\r\n protected _reset(): void {\r\n this._currentEditItemId = \"\";\r\n this._organizationVariables = \"\";\r\n this._solutionVariables = \"\";\r\n this._templateHierarchy = [];\r\n }\r\n\r\n /**\r\n * Toggle _treeOpen prop to show/hide content tree.\r\n *\r\n * @protected\r\n */\r\n protected _toggleTree(): void {\r\n this._treeOpen = !this._treeOpen;\r\n }\r\n\r\n /**\r\n * Dispatches an event indicating if the configuration is saveable or not. It's not saveable if there are no\r\n * changes or if there's an error in the JSON editor.\r\n *\r\n * @param solutionStoreHasChanges Are there changes in the configuration editor's internal store?\r\n * @param solutionEditorHasChanges Are there changes in the configuration editor's JSON editor?\r\n * @param solutionEditorHasErrors Are there errors in the configuration editor's JSON editor?\r\n *\r\n * @protected\r\n */\r\n protected _updateSaveability(\r\n solutionStoreHasChanges: boolean,\r\n solutionEditorHasChanges: boolean,\r\n solutionEditorHasErrors: boolean\r\n ): void {\r\n const updateSaveability = (solutionStoreHasChanges || solutionEditorHasChanges) && !solutionEditorHasErrors;\r\n\r\n if (this._canSave !== updateSaveability) {\r\n window.dispatchEvent(new CustomEvent(\"solutionCanSave\", {\r\n detail: updateSaveability,\r\n bubbles: true,\r\n cancelable: false,\r\n composed: true\r\n }));\r\n }\r\n\r\n this._canSave = updateSaveability;\r\n }\r\n\r\n /**\r\n * Save all edits from the current configuration\r\n *\r\n * @returns a response that will indicate success or failure and any associated messages\r\n */\r\n /*\r\n protected async _save() {\r\n const templateUpdates = await this._updateTemplates();\r\n const data = this._setSrInfo(templateUpdates.templates);\r\n return templateUpdates.errors.length === 0 ? save(\r\n this.solutionItemId,\r\n data,\r\n state.models,\r\n this.authentication,\r\n this._translations\r\n ).then(saveResult => {\r\n // need to trigger re-render...and re-fetch\r\n this._fetchData = true;\r\n this.modelsSet = false;\r\n return Promise.resolve(saveResult)\r\n }).catch(e => Promise.reject(e)) : Promise.reject({\r\n success: false,\r\n message: `The following templates have errors: ${templateUpdates.errors.join(\", \")}`\r\n } as IResponse);\r\n }\r\n */\r\n\r\n /**\r\n * Update the solutions templates based on the stored changes\r\n *\r\n * @returns an object that contains the updated templates as well as any errors that were found\r\n */\r\n /*\r\n protected async _updateTemplates(): Promise<IUpdateTemplateResponse> {\r\n const errors = [];\r\n const models = await this.getEditModels();\r\n let templates = this._updateGroupDependencies(models, this._templates);\r\n Object.keys(models).forEach(k => {\r\n const m = models[k];\r\n templates = templates.map(t => {\r\n if (t.itemId === m.itemId) {\r\n this._setItem(t, m);\r\n const hasDataError = this._setData(t, m);\r\n const hasPropError = this._setProps(t, m);\r\n if (hasDataError || hasPropError) {\r\n errors.push(m.itemId);\r\n }\r\n }\r\n return t;\r\n });\r\n });\r\n errors.concat(window.monaco.editor.getModelMarkers({}));\r\n return Promise.resolve({\r\n templates,\r\n errors\r\n });\r\n }\r\n */\r\n\r\n /**\r\n * Review all models and store itemIds that should be added or removed from group dependencies\r\n *\r\n * @param models the corresponding models for the current templates\r\n *\r\n * @returns group info (an object with keys of groupIds and\r\n * arrays of itemIds that should be added or removed from group dependencies)\r\n */\r\n /*\r\n protected _getGroupInfo(\r\n models: any\r\n ): any {\r\n const groupInfo = {}\r\n Object.keys(models).forEach(k => {\r\n const m = models[k];\r\n if (m.shareInfo) {\r\n const groupId = m.shareInfo.groupId;\r\n const type = m.shareInfo.shared ? \"share\" : \"unshare\";\r\n if (groupInfo[groupId]) {\r\n groupInfo[groupId][type].push(m.itemId);\r\n } else {\r\n groupInfo[groupId] = {};\r\n groupInfo[groupId][type] = [m.itemId];\r\n if (m.shareInfo.shared) {\r\n groupInfo[groupId][\"unshare\"] = [];\r\n } else {\r\n groupInfo[groupId][\"share\"] = [];\r\n }\r\n }\r\n }\r\n });\r\n return groupInfo;\r\n }\r\n */\r\n\r\n /**\r\n * Updates group dependency arrays by adding or removing itemIds\r\n *\r\n * @param templates the current templates to update\r\n * @param models the corresponding models for the current templates\r\n *\r\n * @returns updated templates array\r\n */\r\n /*\r\n protected _updateGroupDependencies(\r\n models: any,\r\n templates: any[]\r\n ): any[] {\r\n const groupInfo = this._getGroupInfo(models);\r\n Object.keys(groupInfo).forEach(k => {\r\n templates.some(t => {\r\n if (t.itemId === k) {\r\n // add share items as deps\r\n groupInfo[k].share.forEach(s => {\r\n if (t.dependencies.indexOf(s) < 0) {\r\n t.dependencies.push(s);\r\n }\r\n });\r\n\r\n // remove unshare items from deps\r\n groupInfo[k].unshare.forEach(s => {\r\n const index = t.dependencies.indexOf(s);\r\n if (index > -1) {\r\n t.dependencies.splice(index, 1);\r\n }\r\n });\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n })\r\n })\r\n return templates;\r\n }\r\n */\r\n\r\n /**\r\n * Add group IDs to items that should be shared\r\n * This function will update the provided template when shareInfo is available\r\n *\r\n * @param template the current template to update\r\n * @param shareInfo the corresponding shareInfo from the model for the current template\r\n *\r\n */\r\n /*\r\n protected _updateItemGroups(\r\n template: any,\r\n shareInfo: any\r\n ): void {\r\n if (shareInfo) {\r\n const groupIndex = template.groups.indexOf(shareInfo.groupId);\r\n if (groupIndex < 0 && shareInfo.shared) {\r\n template.groups.push(shareInfo.groupId);\r\n }\r\n if (groupIndex > -1 && !shareInfo.shared) {\r\n template.groups.splice(groupIndex, 1);\r\n }\r\n }\r\n }\r\n */\r\n\r\n /**\r\n * Set a templates data property with changes from the models\r\n *\r\n * @param template the current template to update\r\n * @param model the corresponding model for the current template (stores any user changes)\r\n *\r\n * @returns a boolean that indicates if any errors were detected\r\n */\r\n /*\r\n protected _setData(\r\n template: any,\r\n model: any\r\n ): boolean {\r\n return this._setTemplateProp(\r\n template,\r\n model.dataOriginalValue,\r\n model.dataCurrentValue,\r\n \"data\"\r\n );\r\n }\r\n */\r\n\r\n /**\r\n * Set a templates properties property with changes from the models\r\n *\r\n * @param template the current template to update\r\n * @param model the corresponding model for the current template (stores any user changes)\r\n *\r\n * @returns a boolean that indicates if any errors were detected\r\n */\r\n /*\r\n protected _setProps(\r\n template: any,\r\n model: any\r\n ): boolean {\r\n return this._setTemplateProp(\r\n template,\r\n model.propsOriginalValue,\r\n model.propsCurrentValue,\r\n \"properties\"\r\n );\r\n }\r\n */\r\n\r\n /**\r\n * Generic function used to set properties or data property on a given template\r\n *\r\n * @param template the current template to update\r\n * @param originValue the original value from the solution template\r\n * @param modelValue the current value from the model (will contain any edits that have been made)\r\n * @param path the path to the property we should update if any changes are found\r\n *\r\n * @returns a boolean that indicates if any errors were detected\r\n */\r\n /*\r\n protected _setTemplateProp(\r\n template: any,\r\n originValue: any,\r\n modelValue: any,\r\n path: string\r\n ): boolean {\r\n let hasError = false;\r\n try {\r\n const _originValue = JSON.parse(originValue);\r\n const _modelValue = JSON.parse(modelValue);\r\n\r\n if (_originValue && _modelValue && (JSON.stringify(_originValue) !== JSON.stringify(_modelValue))) {\r\n setProp(template, path, _modelValue);\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n hasError = true;\r\n }\r\n return hasError;\r\n }\r\n */\r\n\r\n /**\r\n * Set a templates item property with changes from the models\r\n *\r\n * @param template the current template to update\r\n * @param model the corresponding model for the current template (stores any user changes)\r\n *\r\n * This function will update the template argument when edits are found\r\n */\r\n /*\r\n protected _setItem(\r\n template: any,\r\n model: any\r\n ): void {\r\n this._updateItemGroups(template, model.shareInfo);\r\n if (model.updateItemValues && Object.keys(model.updateItemValues).length > 0) {\r\n Object.keys(model.updateItemValues).forEach(k => {\r\n template.item[k] = model.updateItemValues[k];\r\n });\r\n }\r\n }\r\n */\r\n\r\n /**\r\n * Set spatial reference info in the solutions data\r\n *\r\n * @param templates a list of item templates from the solution\r\n *\r\n * @returns a cloned copy of the solutions data that has been updated with spatial reference info\r\n *\r\n */\r\n /*\r\n protected _setSrInfo(\r\n templates: any[]\r\n ): any {\r\n const srInfo: any = state.getStoreInfo(\"spatialReferenceInfo\");\r\n\r\n const serviceEnabled = typeof srInfo?.services === \"undefined\" ?\r\n false : Object.keys(srInfo.services).some(k => srInfo.services[k]);\r\n\r\n const data = cloneObject(this._sourceItemData);\r\n data.templates = templates;\r\n if (srInfo && srInfo.enabled && serviceEnabled) {\r\n const wkid = srInfo.spatialReference.wkid.toString();\r\n\r\n const wkidParam = {\r\n \"label\": \"Spatial Reference\",\r\n \"default\": wkid,\r\n \"valueType\": \"spatialReference\",\r\n \"attributes\": {\r\n \"required\": \"true\"\r\n }\r\n };\r\n\r\n const params = getProp(data, \"params\");\r\n const hasWkid = params && params.wkid;\r\n setCreateProp(\r\n data,\r\n hasWkid ? \"params.wkid.default\" : \"params.wkid\",\r\n hasWkid ? wkid : params ? wkidParam : wkid\r\n );\r\n } else if (!srInfo.enabled) {\r\n if (getProp(data, \"params.wkid\")) {\r\n delete (data.params.wkid);\r\n }\r\n }\r\n return data;\r\n }\r\n */\r\n\r\n /**\r\n * Fetches the component's translations\r\n *\r\n * @protected\r\n */\r\n protected async _getTranslations(): Promise<void> {\r\n const translations = await getLocaleComponentStrings(this.el);\r\n this._translations = translations[0] as typeof SolutionConfiguration_T9n;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"solution-configuration.js","sourceRoot":"","sources":["../../../src/components/solution-configuration/solution-configuration.tsx"],"names":[],"mappings":"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","sourcesContent":["/** @license\r\n * Copyright 2022 Esri\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n\r\nimport { Component, Element, h, Host, Listen, Method, Prop, State, VNode, Watch } from \"@stencil/core\";\r\nimport { IInventoryItem, IItemTemplateEdit, ISolutionSpatialReferenceInfo } from \"../../utils/interfaces\";\r\nimport * as utils from \"../../utils/templates\";\r\nimport state from \"../../utils/solution-store\";\r\nimport { getProp, UserSession } from \"@esri/solution-common\";\r\nimport \"@esri/calcite-components\";\r\nimport SolutionConfiguration_T9n from \"../../assets/t9n/solution-configuration/resources.json\";\r\nimport { getLocaleComponentStrings } from \"../../utils/locale\";\r\n\r\n@Component({\r\n tag: \"solution-configuration\",\r\n styleUrl: \"solution-configuration.scss\",\r\n shadow: false\r\n})\r\nexport class SolutionConfiguration {\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Host element access\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n @Element() el: HTMLSolutionConfigurationElement;\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Properties (public)\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n /**\r\n * Credentials for requests in a serialized form\r\n */\r\n @Prop({ mutable: true }) serializedAuthentication = \"\";\r\n\r\n @Watch(\"serializedAuthentication\") async serializedAuthenticationWatchHandler(): Promise<void> {\r\n this._authentication = this.serializedAuthentication ? UserSession.deserialize(this.serializedAuthentication) : new UserSession({});\r\n }\r\n\r\n /**\r\n * Contains the current solution item id\r\n */\r\n @Prop({ mutable: true, reflect: true }) solutionItemId = \"\";\r\n\r\n @Watch(\"solutionItemId\") async valueWatchHandler(): Promise<void> {\r\n console.log(\"CONFIG watch \" + this.solutionItemId );//???\r\n await this._loadSolution(this.solutionItemId);\r\n }\r\n\r\n /**\r\n * Used to show/hide loading indicator\r\n */\r\n @Prop({ mutable: true, reflect: true }) showLoading = false;\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Lifecycle\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n constructor() {\r\n this._authentication = this.serializedAuthentication ? UserSession.deserialize(this.serializedAuthentication) : new UserSession({});\r\n\r\n console.log(\"CONFIG constructor \" + this.solutionItemId );//???\r\n void this._loadSolution(this.solutionItemId);\r\n\r\n window.addEventListener(\"solutionStoreHasChanges\",\r\n (evt) => {\r\n this._updateSaveability(\r\n this._solutionStoreHasChanges = (evt as any).detail, this._solutionEditorHasChanges, this._solutionEditorHasErrors);\r\n }\r\n );\r\n window.addEventListener(\"solutionEditorHasChanges\",\r\n (evt) => {\r\n this._updateSaveability(\r\n this._solutionStoreHasChanges, this._solutionEditorHasChanges = (evt as any).detail, this._solutionEditorHasErrors);\r\n }\r\n );\r\n window.addEventListener(\"solutionEditorHasErrors\",\r\n (evt) => {\r\n this._updateSaveability(\r\n this._solutionStoreHasChanges, this._solutionEditorHasChanges, this._solutionEditorHasErrors = (evt as any).detail);\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * StencilJS: Called once just after the component is first connected to the DOM.\r\n *\r\n * @returns Promise when complete\r\n */\r\n async componentWillLoad(): Promise<void> {\r\n return this._getTranslations();\r\n }\r\n\r\n /**\r\n * Renders the component.\r\n */\r\n render(): VNode {\r\n const wkid = getProp(state.getStoreInfo(\"spatialReferenceInfo\"), \"spatialReference\");\r\n const hasServices: boolean = state.getStoreInfo(\"featureServices\").length > 0;\r\n\r\n const solutionData = state.getStoreInfo(\"solutionData\");\r\n this._solutionVariables = JSON.stringify(utils.getSolutionVariables(solutionData.templates, this._translations));\r\n this._organizationVariables = JSON.stringify(utils.getOrganizationVariables(this._translations));\r\n\r\n console.log(\"CONFIG render \" + this.solutionItemId );//???\r\n return (\r\n <Host>\r\n {\r\n !this._solutionIsLoaded\r\n ? <calcite-loader active label='' />\r\n : null\r\n }\r\n <div class=\"configuration-container\">\r\n <div class=\"configuration\">\r\n <calcite-tabs class=\"config-tabs\">\r\n <calcite-tab-nav slot=\"tab-nav\">\r\n <calcite-tab-title>{this._translations.definitionTab}</calcite-tab-title>\r\n {hasServices ?\r\n <calcite-tab-title>{this._translations.spatialReferenceTab}</calcite-tab-title> :\r\n null\r\n }\r\n </calcite-tab-nav>\r\n <calcite-tab active class=\"config-tab\">\r\n <div class=\"config-solution\">\r\n <div class={this._treeOpen ? \"config-inventory\" : \"config-inventory-hide\"}>\r\n <solution-contents\r\n id=\"configInventory\"\r\n key={`${this.solutionItemId}-contents`}\r\n ref={(el) => (this._solutionContentsComponent = el)}\r\n />\r\n </div>\r\n <calcite-button\r\n appearance=\"transparent\"\r\n class=\"collapse-btn\"\r\n icon-start={this._treeOpen ? \"chevrons-left\" : \"chevrons-right\"}\r\n id=\"collapse-vars\"\r\n onClick={() => this._toggleTree()}\r\n scale=\"s\"\r\n title={this._treeOpen ? this._translations.collapse : this._translations.expand}\r\n />\r\n <div class=\"config-item\">\r\n <solution-item\r\n authentication={this._authentication}\r\n item-id={this._currentEditItemId}\r\n key={`${this.solutionItemId}-item`}\r\n organization-variables={this._organizationVariables}\r\n solution-item-id={this.solutionItemId}\r\n solution-variables={this._solutionVariables}\r\n />\r\n </div>\r\n </div>\r\n </calcite-tab>\r\n {\r\n hasServices\r\n ? <calcite-tab class=\"config-tab\">\r\n <div class=\"config-solution\">\r\n <solution-spatial-ref\r\n defaultWkid={wkid}\r\n id=\"configure-solution-spatial-ref\"\r\n key={`${this.solutionItemId}-spatial-ref`}\r\n locked={!wkid}\r\n services={state.getStoreInfo(\"featureServices\").map(fs => fs.name)}\r\n />\r\n </div>\r\n </calcite-tab>\r\n : null\r\n }\r\n </calcite-tabs>\r\n </div>\r\n </div>\r\n </Host>\r\n );\r\n }\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Properties (protected)\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n protected _authentication: UserSession;\r\n\r\n /**\r\n * Contains the current item we are working with\r\n */\r\n @State() protected _currentEditItemId = \"\";\r\n\r\n @State() protected _organizationVariables = \"\";\r\n\r\n @State() protected _solutionContentsComponent: HTMLSolutionContentsElement;\r\n\r\n @State() protected _solutionIsLoaded = false;\r\n\r\n @State() protected _solutionVariables = \"\";\r\n\r\n /**\r\n * Contains the hierarchy of template items for the current solution.\r\n */\r\n @State() protected _templateHierarchy: IInventoryItem[] = [];\r\n\r\n /**\r\n * Contains the _translations for this component.\r\n * All UI strings should be defined here.\r\n */\r\n @State() protected _translations: typeof SolutionConfiguration_T9n;\r\n\r\n /**\r\n * Used to show/hide the content tree\r\n */\r\n @State() protected _treeOpen = true;\r\n\r\n protected _solutionStoreHasChanges = false;\r\n\r\n protected _solutionEditorHasChanges = false;\r\n\r\n protected _solutionEditorHasErrors = false;\r\n\r\n protected _canSave = false;\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Event Listeners\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n @Listen(\"solutionItemSelected\", { target: \"window\" })\r\n _solutionItemSelected(event: CustomEvent): void {\r\n this._currentEditItemId = event.detail;\r\n }\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Events\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Public Methods (async)\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n /*\r\n @Method()\r\n async getEditModels(): Promise<ISolutionItems> {\r\n return Promise.resolve(state.items);\r\n }\r\n */\r\n\r\n @Method()\r\n async getSpatialReferenceInfo(): Promise<ISolutionSpatialReferenceInfo> {\r\n return Promise.resolve(state.getStoreInfo(\"spatialReferenceInfo\"));\r\n }\r\n\r\n /*\r\n @Method()\r\n async getSourceTemplates(): Promise<any> {\r\n return Promise.resolve(this._templates);\r\n }\r\n */\r\n\r\n @Method()\r\n async saveSolution(): Promise<void> {\r\n this._solutionIsLoaded = false;\r\n await state.saveSolution();\r\n this._solutionIsLoaded = true;\r\n this.solutionItemId = null;\r\n }\r\n\r\n @Method()\r\n async unloadSolution(): Promise<void> {\r\n this.solutionItemId = null;\r\n }\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Private Methods\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n /**\r\n * Update the store with the initial values\r\n *\r\n * @param templates the solution items templates\r\n * @param isReset (defaults to false) indicates if we are resetting the controls after save\r\n */\r\n /*\r\n protected _initState(\r\n templates: any[],\r\n isReset = false\r\n ): Promise<any> {\r\n return new Promise((resolve, reject) => {\r\n if (isReset) {\r\n // clear models and state so we can refresh after save\r\n this.modelsSet = false;\r\n state.reset();\r\n }\r\n getModels(templates, this._authentication, this.solutionItemId).then(models => {\r\n state.models = models;\r\n\r\n state.featureServices = getFeatureServices(templates);\r\n state.getStoreInfo(\"spatialReferenceInfo\") = getSpatialReferenceInfo(state.featureServices, this._sourceItemData);\r\n\r\n if (isReset) {\r\n // reset for undo/redo stack and diff editor tracking\r\n const jsonEditors = Array.from(this.el.getElementsByTagName(\"json-editor\"));\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n jsonEditors.forEach(e => void e.reset());\r\n }\r\n\r\n this.modelsSet = true;\r\n resolve(true);\r\n }, () => reject);\r\n });\r\n }\r\n */\r\n\r\n /**\r\n * Set Props with the initial values\r\n *\r\n * @protected\r\n */\r\n protected _initProps(): void {\r\n const solutionData = state.getStoreInfo(\"solutionData\");\r\n\r\n this._templateHierarchy = [...utils.getInventoryItems(solutionData.templates)];\r\n\r\n if (this._solutionContentsComponent) {\r\n this._solutionContentsComponent.templateHierarchy = this._templateHierarchy;\r\n }\r\n\r\n let firstItem: IItemTemplateEdit;\r\n if (this._templateHierarchy.length > 0) {\r\n // Start with the first item in the contents\r\n firstItem = state.getItemInfo(this._templateHierarchy[0].id);\r\n }\r\n this._currentEditItemId = firstItem ? firstItem.itemId : \"\";\r\n }\r\n\r\n /**\r\n * Loads a solution.\r\n *\r\n * @param solutionItemId AGO id of solution to load\r\n *\r\n * @returns Resolved promise when task is done\r\n *\r\n * @protected\r\n */\r\n protected async _loadSolution(solutionItemId: string): Promise<void> {\r\n if (solutionItemId) {\r\n this._solutionIsLoaded = false;\r\n await state.loadSolution(solutionItemId, this._authentication);\r\n this._initProps();\r\n this._solutionIsLoaded = true;\r\n } else {\r\n this._reset();\r\n }\r\n return Promise.resolve();\r\n }\r\n\r\n /**\r\n * Resets internal variables.\r\n *\r\n * @protected\r\n */\r\n protected _reset(): void {\r\n this._currentEditItemId = \"\";\r\n this._organizationVariables = \"\";\r\n this._solutionVariables = \"\";\r\n this._templateHierarchy = [];\r\n }\r\n\r\n /**\r\n * Toggle _treeOpen prop to show/hide content tree.\r\n *\r\n * @protected\r\n */\r\n protected _toggleTree(): void {\r\n this._treeOpen = !this._treeOpen;\r\n }\r\n\r\n /**\r\n * Dispatches an event indicating if the configuration is saveable or not. It's not saveable if there are no\r\n * changes or if there's an error in the JSON editor.\r\n *\r\n * @param solutionStoreHasChanges Are there changes in the configuration editor's internal store?\r\n * @param solutionEditorHasChanges Are there changes in the configuration editor's JSON editor?\r\n * @param solutionEditorHasErrors Are there errors in the configuration editor's JSON editor?\r\n *\r\n * @protected\r\n */\r\n protected _updateSaveability(\r\n solutionStoreHasChanges: boolean,\r\n solutionEditorHasChanges: boolean,\r\n solutionEditorHasErrors: boolean\r\n ): void {\r\n const updateSaveability = (solutionStoreHasChanges || solutionEditorHasChanges) && !solutionEditorHasErrors;\r\n\r\n if (this._canSave !== updateSaveability) {\r\n window.dispatchEvent(new CustomEvent(\"solutionCanSave\", {\r\n detail: updateSaveability,\r\n bubbles: true,\r\n cancelable: false,\r\n composed: true\r\n }));\r\n }\r\n\r\n this._canSave = updateSaveability;\r\n }\r\n\r\n /**\r\n * Save all edits from the current configuration\r\n *\r\n * @returns a response that will indicate success or failure and any associated messages\r\n */\r\n /*\r\n protected async _save() {\r\n const templateUpdates = await this._updateTemplates();\r\n const data = this._setSrInfo(templateUpdates.templates);\r\n return templateUpdates.errors.length === 0 ? save(\r\n this.solutionItemId,\r\n data,\r\n state.models,\r\n this._authentication,\r\n this._translations\r\n ).then(saveResult => {\r\n // need to trigger re-render...and re-fetch\r\n this._fetchData = true;\r\n this.modelsSet = false;\r\n return Promise.resolve(saveResult)\r\n }).catch(e => Promise.reject(e)) : Promise.reject({\r\n success: false,\r\n message: `The following templates have errors: ${templateUpdates.errors.join(\", \")}`\r\n } as IResponse);\r\n }\r\n */\r\n\r\n /**\r\n * Update the solutions templates based on the stored changes\r\n *\r\n * @returns an object that contains the updated templates as well as any errors that were found\r\n */\r\n /*\r\n protected async _updateTemplates(): Promise<IUpdateTemplateResponse> {\r\n const errors = [];\r\n const models = await this.getEditModels();\r\n let templates = this._updateGroupDependencies(models, this._templates);\r\n Object.keys(models).forEach(k => {\r\n const m = models[k];\r\n templates = templates.map(t => {\r\n if (t.itemId === m.itemId) {\r\n this._setItem(t, m);\r\n const hasDataError = this._setData(t, m);\r\n const hasPropError = this._setProps(t, m);\r\n if (hasDataError || hasPropError) {\r\n errors.push(m.itemId);\r\n }\r\n }\r\n return t;\r\n });\r\n });\r\n errors.concat(window.monaco.editor.getModelMarkers({}));\r\n return Promise.resolve({\r\n templates,\r\n errors\r\n });\r\n }\r\n */\r\n\r\n /**\r\n * Review all models and store itemIds that should be added or removed from group dependencies\r\n *\r\n * @param models the corresponding models for the current templates\r\n *\r\n * @returns group info (an object with keys of groupIds and\r\n * arrays of itemIds that should be added or removed from group dependencies)\r\n */\r\n /*\r\n protected _getGroupInfo(\r\n models: any\r\n ): any {\r\n const groupInfo = {}\r\n Object.keys(models).forEach(k => {\r\n const m = models[k];\r\n if (m.shareInfo) {\r\n const groupId = m.shareInfo.groupId;\r\n const type = m.shareInfo.shared ? \"share\" : \"unshare\";\r\n if (groupInfo[groupId]) {\r\n groupInfo[groupId][type].push(m.itemId);\r\n } else {\r\n groupInfo[groupId] = {};\r\n groupInfo[groupId][type] = [m.itemId];\r\n if (m.shareInfo.shared) {\r\n groupInfo[groupId][\"unshare\"] = [];\r\n } else {\r\n groupInfo[groupId][\"share\"] = [];\r\n }\r\n }\r\n }\r\n });\r\n return groupInfo;\r\n }\r\n */\r\n\r\n /**\r\n * Updates group dependency arrays by adding or removing itemIds\r\n *\r\n * @param templates the current templates to update\r\n * @param models the corresponding models for the current templates\r\n *\r\n * @returns updated templates array\r\n */\r\n /*\r\n protected _updateGroupDependencies(\r\n models: any,\r\n templates: any[]\r\n ): any[] {\r\n const groupInfo = this._getGroupInfo(models);\r\n Object.keys(groupInfo).forEach(k => {\r\n templates.some(t => {\r\n if (t.itemId === k) {\r\n // add share items as deps\r\n groupInfo[k].share.forEach(s => {\r\n if (t.dependencies.indexOf(s) < 0) {\r\n t.dependencies.push(s);\r\n }\r\n });\r\n\r\n // remove unshare items from deps\r\n groupInfo[k].unshare.forEach(s => {\r\n const index = t.dependencies.indexOf(s);\r\n if (index > -1) {\r\n t.dependencies.splice(index, 1);\r\n }\r\n });\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n })\r\n })\r\n return templates;\r\n }\r\n */\r\n\r\n /**\r\n * Add group IDs to items that should be shared\r\n * This function will update the provided template when shareInfo is available\r\n *\r\n * @param template the current template to update\r\n * @param shareInfo the corresponding shareInfo from the model for the current template\r\n *\r\n */\r\n /*\r\n protected _updateItemGroups(\r\n template: any,\r\n shareInfo: any\r\n ): void {\r\n if (shareInfo) {\r\n const groupIndex = template.groups.indexOf(shareInfo.groupId);\r\n if (groupIndex < 0 && shareInfo.shared) {\r\n template.groups.push(shareInfo.groupId);\r\n }\r\n if (groupIndex > -1 && !shareInfo.shared) {\r\n template.groups.splice(groupIndex, 1);\r\n }\r\n }\r\n }\r\n */\r\n\r\n /**\r\n * Set a templates data property with changes from the models\r\n *\r\n * @param template the current template to update\r\n * @param model the corresponding model for the current template (stores any user changes)\r\n *\r\n * @returns a boolean that indicates if any errors were detected\r\n */\r\n /*\r\n protected _setData(\r\n template: any,\r\n model: any\r\n ): boolean {\r\n return this._setTemplateProp(\r\n template,\r\n model.dataOriginalValue,\r\n model.dataCurrentValue,\r\n \"data\"\r\n );\r\n }\r\n */\r\n\r\n /**\r\n * Set a templates properties property with changes from the models\r\n *\r\n * @param template the current template to update\r\n * @param model the corresponding model for the current template (stores any user changes)\r\n *\r\n * @returns a boolean that indicates if any errors were detected\r\n */\r\n /*\r\n protected _setProps(\r\n template: any,\r\n model: any\r\n ): boolean {\r\n return this._setTemplateProp(\r\n template,\r\n model.propsOriginalValue,\r\n model.propsCurrentValue,\r\n \"properties\"\r\n );\r\n }\r\n */\r\n\r\n /**\r\n * Generic function used to set properties or data property on a given template\r\n *\r\n * @param template the current template to update\r\n * @param originValue the original value from the solution template\r\n * @param modelValue the current value from the model (will contain any edits that have been made)\r\n * @param path the path to the property we should update if any changes are found\r\n *\r\n * @returns a boolean that indicates if any errors were detected\r\n */\r\n /*\r\n protected _setTemplateProp(\r\n template: any,\r\n originValue: any,\r\n modelValue: any,\r\n path: string\r\n ): boolean {\r\n let hasError = false;\r\n try {\r\n const _originValue = JSON.parse(originValue);\r\n const _modelValue = JSON.parse(modelValue);\r\n\r\n if (_originValue && _modelValue && (JSON.stringify(_originValue) !== JSON.stringify(_modelValue))) {\r\n setProp(template, path, _modelValue);\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n hasError = true;\r\n }\r\n return hasError;\r\n }\r\n */\r\n\r\n /**\r\n * Set a templates item property with changes from the models\r\n *\r\n * @param template the current template to update\r\n * @param model the corresponding model for the current template (stores any user changes)\r\n *\r\n * This function will update the template argument when edits are found\r\n */\r\n /*\r\n protected _setItem(\r\n template: any,\r\n model: any\r\n ): void {\r\n this._updateItemGroups(template, model.shareInfo);\r\n if (model.updateItemValues && Object.keys(model.updateItemValues).length > 0) {\r\n Object.keys(model.updateItemValues).forEach(k => {\r\n template.item[k] = model.updateItemValues[k];\r\n });\r\n }\r\n }\r\n */\r\n\r\n /**\r\n * Set spatial reference info in the solutions data\r\n *\r\n * @param templates a list of item templates from the solution\r\n *\r\n * @returns a cloned copy of the solutions data that has been updated with spatial reference info\r\n *\r\n */\r\n /*\r\n protected _setSrInfo(\r\n templates: any[]\r\n ): any {\r\n const srInfo: any = state.getStoreInfo(\"spatialReferenceInfo\");\r\n\r\n const serviceEnabled = typeof srInfo?.services === \"undefined\" ?\r\n false : Object.keys(srInfo.services).some(k => srInfo.services[k]);\r\n\r\n const data = cloneObject(this._sourceItemData);\r\n data.templates = templates;\r\n if (srInfo && srInfo.enabled && serviceEnabled) {\r\n const wkid = srInfo.spatialReference.wkid.toString();\r\n\r\n const wkidParam = {\r\n \"label\": \"Spatial Reference\",\r\n \"default\": wkid,\r\n \"valueType\": \"spatialReference\",\r\n \"attributes\": {\r\n \"required\": \"true\"\r\n }\r\n };\r\n\r\n const params = getProp(data, \"params\");\r\n const hasWkid = params && params.wkid;\r\n setCreateProp(\r\n data,\r\n hasWkid ? \"params.wkid.default\" : \"params.wkid\",\r\n hasWkid ? wkid : params ? wkidParam : wkid\r\n );\r\n } else if (!srInfo.enabled) {\r\n if (getProp(data, \"params.wkid\")) {\r\n delete (data.params.wkid);\r\n }\r\n }\r\n return data;\r\n }\r\n */\r\n\r\n /**\r\n * Fetches the component's translations\r\n *\r\n * @protected\r\n */\r\n protected async _getTranslations(): Promise<void> {\r\n const translations = await getLocaleComponentStrings(this.el);\r\n this._translations = translations[0] as typeof SolutionConfiguration_T9n;\r\n }\r\n}\r\n"]}
@@ -32,7 +32,6 @@ export class SolutionItem {
32
32
  this._translations = undefined;
33
33
  }
34
34
  itemIdWatchHandler() {
35
- console.log("update item; id " + this.itemId); //???
36
35
  const itemEdit = state.getItemInfo(this.itemId);
37
36
  this.itemType = itemEdit.type;
38
37
  }
@@ -51,7 +50,6 @@ export class SolutionItem {
51
50
  * Renders the component.
52
51
  */
53
52
  render() {
54
- console.log("render item " + this.itemId); //???
55
53
  return (h(Host, null, h("div", { class: "configuration-container" }, h("div", { class: "configuration" }, this._showGroupTabs(this.itemType === "Group"), this._showItemTabs(this.itemType !== "Group")))));
56
54
  }
57
55
  //--------------------------------------------------------------------------
@@ -1 +1 @@
1
- {"version":3,"file":"solution-item.js","sourceRoot":"","sources":["../../../src/components/solution-item/solution-item.tsx"],"names":[],"mappings":"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","sourcesContent":["/** @license\r\n * Copyright 2022 Esri\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n\r\nimport { Component, Element, h, Host, Prop, State, VNode, Watch } from '@stencil/core';\r\nimport '@esri/calcite-components';\r\nimport state from \"../../utils/solution-store\";\r\nimport { UserSession } from '@esri/solution-common';\r\nimport SolutionItem_T9n from '../../assets/t9n/solution-item/resources.json';\r\nimport { getLocaleComponentStrings } from '../../utils/locale';\r\n\r\n@Component({\r\n tag: 'solution-item',\r\n styleUrl: 'solution-item.scss',\r\n shadow: false\r\n})\r\nexport class SolutionItem {\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Host element access\r\n //\r\n //--------------------------------------------------------------------------\r\n @Element() el: HTMLSolutionItemElement;\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Properties (public)\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n /**\r\n * Credentials for requests\r\n */\r\n @Prop({ mutable: true }) authentication: UserSession;\r\n\r\n /**\r\n * A template's itemId.\r\n */\r\n @Prop({ mutable: true, reflect: true }) itemId = \"\";\r\n\r\n @Watch(\"itemId\") itemIdWatchHandler(): void {\r\n console.log(\"update item; id \" + this.itemId);//???\r\n const itemEdit = state.getItemInfo(this.itemId);\r\n this.itemType = itemEdit.type;\r\n }\r\n\r\n /**\r\n * Contains the solution based variables\r\n */\r\n @Prop({ mutable: true, reflect: true }) solutionVariables = \"\";\r\n\r\n /**\r\n * Contains the organization based variables\r\n */\r\n @Prop({ mutable: true, reflect: true }) organizationVariables = \"\";\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Lifecycle\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n /**\r\n * StencilJS: Called once just after the component is first connected to the DOM.\r\n */\r\n async componentWillLoad(): Promise<void> {\r\n return this._getTranslations();\r\n }\r\n\r\n /**\r\n * Renders the component.\r\n */\r\n render(): VNode {\r\n console.log(\"render item \" + this.itemId);//???\r\n return (\r\n <Host>\r\n <div class=\"configuration-container\">\r\n <div class=\"configuration\">\r\n {/* Using this rather than ternary operator as I was getting a tabIndex error\r\n when switching between item and group type tab.\r\n It was also not a smooth transition when the 3rd tab of an item was selected and you would switch to a group.\r\n */}\r\n {this._showGroupTabs(this.itemType === \"Group\")}\r\n {this._showItemTabs(this.itemType !== \"Group\")}\r\n </div>\r\n </div>\r\n </Host>\r\n );\r\n }\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Properties (protected)\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n @State() itemType: string;\r\n\r\n /**\r\n * Contains the translations for this component.\r\n * All UI strings should be defined here.\r\n */\r\n @State() protected _translations: typeof SolutionItem_T9n;\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Event Listeners\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Events\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Public Methods (async)\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Public Methods\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n /**\r\n * Render tabs based on group item types\r\n *\r\n * @param visible Should the current tab be visible\r\n */\r\n _showGroupTabs(\r\n visible: boolean\r\n ): VNode {\r\n return <calcite-tabs class=\"config-tabs\" style={{ display: visible ? \"inherit\" : \"none\" }}>\r\n <calcite-tab-nav slot=\"tab-nav\">\r\n <calcite-tab-title>{this._translations.groupDetailsTab}</calcite-tab-title>\r\n <calcite-tab-title>{this._translations.sharingTab}</calcite-tab-title>\r\n </calcite-tab-nav>\r\n\r\n <calcite-tab active class=\"config-tab\" id=\"group-tab\">\r\n <solution-item-details\r\n item-id={this.itemId}\r\n />\r\n </calcite-tab>\r\n <calcite-tab class=\"config-tab\" id=\"share-tab\">\r\n <solution-item-sharing\r\n group-id={this.itemId}\r\n />\r\n </calcite-tab>\r\n </calcite-tabs>\r\n }\r\n\r\n /**\r\n * Render tabs based for an items details, data, and props section from a template\r\n *\r\n * @param visible Should the current tab be visible\r\n */\r\n _showItemTabs(\r\n visible: boolean\r\n ): VNode {\r\n return <calcite-tabs class=\"config-tabs\" style={{ display: visible ? \"inherit\" : \"none\" }}>\r\n <calcite-tab-nav slot=\"tab-nav\">\r\n <calcite-tab-title>{this._translations.itemDetailsTab}</calcite-tab-title>\r\n <calcite-tab-title>{this._translations.dataTab}</calcite-tab-title>\r\n <calcite-tab-title>{this._translations.propertiesTab}</calcite-tab-title>\r\n <calcite-tab-title>{this._translations.resourcesTab}</calcite-tab-title>\r\n </calcite-tab-nav>\r\n\r\n <calcite-tab active class=\"config-tab\">\r\n <solution-item-details\r\n item-id={this.itemId}\r\n />\r\n </calcite-tab>\r\n <calcite-tab class=\"config-tab\" id=\"data-tab\">\r\n <solution-template-data\r\n instanceid=\"data\"\r\n item-id={this.itemId}\r\n organization-variables={this.organizationVariables}\r\n solution-variables={this.solutionVariables}\r\n />\r\n </calcite-tab>\r\n <calcite-tab class=\"config-tab\" id=\"props-tab\">\r\n <solution-template-data\r\n instanceid=\"properties\"\r\n item-id={this.itemId}\r\n organization-variables={this.organizationVariables}\r\n solution-variables={this.solutionVariables}\r\n />\r\n </calcite-tab>\r\n <calcite-tab class=\"config-tab\" id=\"resources-tab\">\r\n <solution-resource-item\r\n authentication={this.authentication}\r\n class=\"solutions-resource-container\"\r\n item-id={this.itemId}\r\n />\r\n </calcite-tab>\r\n </calcite-tabs>\r\n }\r\n\r\n /**\r\n * Fetches the component's translations\r\n *\r\n * @protected\r\n */\r\n protected async _getTranslations(): Promise<void> {\r\n const translations = await getLocaleComponentStrings(this.el);\r\n this._translations = translations[0] as typeof SolutionItem_T9n;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"solution-item.js","sourceRoot":"","sources":["../../../src/components/solution-item/solution-item.tsx"],"names":[],"mappings":"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","sourcesContent":["/** @license\r\n * Copyright 2022 Esri\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n\r\nimport { Component, Element, h, Host, Prop, State, VNode, Watch } from '@stencil/core';\r\nimport '@esri/calcite-components';\r\nimport state from \"../../utils/solution-store\";\r\nimport { UserSession } from '@esri/solution-common';\r\nimport SolutionItem_T9n from '../../assets/t9n/solution-item/resources.json';\r\nimport { getLocaleComponentStrings } from '../../utils/locale';\r\n\r\n@Component({\r\n tag: 'solution-item',\r\n styleUrl: 'solution-item.scss',\r\n shadow: false\r\n})\r\nexport class SolutionItem {\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Host element access\r\n //\r\n //--------------------------------------------------------------------------\r\n @Element() el: HTMLSolutionItemElement;\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Properties (public)\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n /**\r\n * Credentials for requests\r\n */\r\n @Prop({ mutable: true }) authentication: UserSession;\r\n\r\n /**\r\n * A template's itemId.\r\n */\r\n @Prop({ mutable: true, reflect: true }) itemId = \"\";\r\n\r\n @Watch(\"itemId\") itemIdWatchHandler(): void {\r\n const itemEdit = state.getItemInfo(this.itemId);\r\n this.itemType = itemEdit.type;\r\n }\r\n\r\n /**\r\n * Contains the solution based variables\r\n */\r\n @Prop({ mutable: true, reflect: true }) solutionVariables = \"\";\r\n\r\n /**\r\n * Contains the organization based variables\r\n */\r\n @Prop({ mutable: true, reflect: true }) organizationVariables = \"\";\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Lifecycle\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n /**\r\n * StencilJS: Called once just after the component is first connected to the DOM.\r\n */\r\n async componentWillLoad(): Promise<void> {\r\n return this._getTranslations();\r\n }\r\n\r\n /**\r\n * Renders the component.\r\n */\r\n render(): VNode {\r\n return (\r\n <Host>\r\n <div class=\"configuration-container\">\r\n <div class=\"configuration\">\r\n {/* Using this rather than ternary operator as I was getting a tabIndex error\r\n when switching between item and group type tab.\r\n It was also not a smooth transition when the 3rd tab of an item was selected and you would switch to a group.\r\n */}\r\n {this._showGroupTabs(this.itemType === \"Group\")}\r\n {this._showItemTabs(this.itemType !== \"Group\")}\r\n </div>\r\n </div>\r\n </Host>\r\n );\r\n }\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Properties (protected)\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n @State() itemType: string;\r\n\r\n /**\r\n * Contains the translations for this component.\r\n * All UI strings should be defined here.\r\n */\r\n @State() protected _translations: typeof SolutionItem_T9n;\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Event Listeners\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Events\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Public Methods (async)\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Public Methods\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n /**\r\n * Render tabs based on group item types\r\n *\r\n * @param visible Should the current tab be visible\r\n */\r\n _showGroupTabs(\r\n visible: boolean\r\n ): VNode {\r\n return <calcite-tabs class=\"config-tabs\" style={{ display: visible ? \"inherit\" : \"none\" }}>\r\n <calcite-tab-nav slot=\"tab-nav\">\r\n <calcite-tab-title>{this._translations.groupDetailsTab}</calcite-tab-title>\r\n <calcite-tab-title>{this._translations.sharingTab}</calcite-tab-title>\r\n </calcite-tab-nav>\r\n\r\n <calcite-tab active class=\"config-tab\" id=\"group-tab\">\r\n <solution-item-details\r\n item-id={this.itemId}\r\n />\r\n </calcite-tab>\r\n <calcite-tab class=\"config-tab\" id=\"share-tab\">\r\n <solution-item-sharing\r\n group-id={this.itemId}\r\n />\r\n </calcite-tab>\r\n </calcite-tabs>\r\n }\r\n\r\n /**\r\n * Render tabs based for an items details, data, and props section from a template\r\n *\r\n * @param visible Should the current tab be visible\r\n */\r\n _showItemTabs(\r\n visible: boolean\r\n ): VNode {\r\n return <calcite-tabs class=\"config-tabs\" style={{ display: visible ? \"inherit\" : \"none\" }}>\r\n <calcite-tab-nav slot=\"tab-nav\">\r\n <calcite-tab-title>{this._translations.itemDetailsTab}</calcite-tab-title>\r\n <calcite-tab-title>{this._translations.dataTab}</calcite-tab-title>\r\n <calcite-tab-title>{this._translations.propertiesTab}</calcite-tab-title>\r\n <calcite-tab-title>{this._translations.resourcesTab}</calcite-tab-title>\r\n </calcite-tab-nav>\r\n\r\n <calcite-tab active class=\"config-tab\">\r\n <solution-item-details\r\n item-id={this.itemId}\r\n />\r\n </calcite-tab>\r\n <calcite-tab class=\"config-tab\" id=\"data-tab\">\r\n <solution-template-data\r\n instanceid=\"data\"\r\n item-id={this.itemId}\r\n organization-variables={this.organizationVariables}\r\n solution-variables={this.solutionVariables}\r\n />\r\n </calcite-tab>\r\n <calcite-tab class=\"config-tab\" id=\"props-tab\">\r\n <solution-template-data\r\n instanceid=\"properties\"\r\n item-id={this.itemId}\r\n organization-variables={this.organizationVariables}\r\n solution-variables={this.solutionVariables}\r\n />\r\n </calcite-tab>\r\n <calcite-tab class=\"config-tab\" id=\"resources-tab\">\r\n <solution-resource-item\r\n authentication={this.authentication}\r\n class=\"solutions-resource-container\"\r\n item-id={this.itemId}\r\n />\r\n </calcite-tab>\r\n </calcite-tabs>\r\n }\r\n\r\n /**\r\n * Fetches the component's translations\r\n *\r\n * @protected\r\n */\r\n protected async _getTranslations(): Promise<void> {\r\n const translations = await getLocaleComponentStrings(this.el);\r\n this._translations = translations[0] as typeof SolutionItem_T9n;\r\n }\r\n}\r\n"]}
@@ -38,9 +38,6 @@ export class SolutionItemDetails {
38
38
  this.thumbnail = undefined;
39
39
  this.thumbnailContainer = undefined;
40
40
  }
41
- itemIdWatchHandler() {
42
- console.log("update item details; id " + this.itemId); //???
43
- }
44
41
  //--------------------------------------------------------------------------
45
42
  //
46
43
  // Lifecycle
@@ -53,7 +50,6 @@ export class SolutionItemDetails {
53
50
  return this._getTranslations();
54
51
  }
55
52
  async componentWillRender() {
56
- console.log("update item details " + this.itemId); //???
57
53
  this.itemEdit = state.getItemInfo(this.itemId);
58
54
  if (this.itemEdit) {
59
55
  this.itemDetails = this.itemEdit.item;
@@ -65,9 +61,6 @@ export class SolutionItemDetails {
65
61
  * Renders the component.
66
62
  */
67
63
  render() {
68
- console.log("render item details " + this.itemId); //???
69
- console.log(" title " + this.itemDetails.title); //???
70
- console.log(" snippet " + this.itemDetails.snippet); //???
71
64
  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)));
72
65
  }
73
66
  componentDidRender() {
@@ -243,12 +236,6 @@ export class SolutionItemDetails {
243
236
  };
244
237
  }
245
238
  static get elementRef() { return "el"; }
246
- static get watchers() {
247
- return [{
248
- "propName": "itemId",
249
- "methodName": "itemIdWatchHandler"
250
- }];
251
- }
252
239
  static get listeners() {
253
240
  return [{
254
241
  "name": "calciteInputInput",
@@ -1 +1 @@
1
- {"version":3,"file":"solution-item-details.js","sourceRoot":"","sources":["../../../src/components/solution-item-details/solution-item-details.tsx"],"names":[],"mappings":"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","sourcesContent":["/** @license\r\n * Copyright 2022 Esri\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n\r\nimport { Component, Element, h, Host, Listen, Prop, State, VNode, Watch } from '@stencil/core';\r\nimport '@esri/calcite-components';\r\nimport state from \"../../utils/solution-store\";\r\nimport SolutionItemDetails_T9n from '../../assets/t9n/solution-item-details/resources.json';\r\nimport { getLocaleComponentStrings } from '../../utils/locale';\r\nimport { IItemGeneralized } from '@esri/solution-common';\r\nimport { IItemTemplateEdit } from '../../utils/interfaces';\r\n\r\n@Component({\r\n tag: 'solution-item-details',\r\n styleUrl: 'solution-item-details.scss',\r\n shadow: false,\r\n})\r\nexport class SolutionItemDetails {\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Host element access\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n @Element() el: HTMLSolutionItemDetailsElement;\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Properties (public)\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n /**\r\n * A template's itemId.\r\n */\r\n @Prop({ mutable: true, reflect: true }) itemId = \"\";\r\n\r\n @Watch(\"itemId\") itemIdWatchHandler(): void {\r\n console.log(\"update item details; id \" + this.itemId);//???\r\n }\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Lifecycle\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n /**\r\n * StencilJS: Called once just after the component is first connected to the DOM.\r\n */\r\n async componentWillLoad(): Promise<void> {\r\n return this._getTranslations();\r\n }\r\n\r\n async componentWillRender(): Promise<void> {\r\n console.log(\"update item details \" + this.itemId);//???\r\n this.itemEdit = state.getItemInfo(this.itemId);\r\n if (this.itemEdit) {\r\n this.itemDetails = this.itemEdit.item;\r\n this.itemType = this.itemDetails.type;\r\n }\r\n return Promise.resolve();\r\n }\r\n\r\n /**\r\n * Renders the component.\r\n */\r\n render(): VNode {\r\n console.log(\"render item details \" + this.itemId);//???\r\n console.log(\" title \" + this.itemDetails.title);//???\r\n console.log(\" snippet \" + this.itemDetails.snippet);//???\r\n return (\r\n <Host>\r\n <div class=\"parent-container\">\r\n <div class=\"inputBottomSeparation\">\r\n <calcite-input id=\"item-title\" value={this.itemDetails.title} />\r\n </div>\r\n\r\n <div class=\"inputBottomSeparation\">\r\n\r\n <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\" />\r\n\r\n <button class=\"font-size--3 btn-link inline-block trailer-quarter\" onClick={() => this._getThumbnail()}>\r\n <svg class=\"icon-inline icon-inline--on-left\" height=\"16\" viewBox=\"0 0 16 16\" width=\"16\">\r\n <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\" />\r\n </svg>{this._translations.editThumbnail}\r\n </button>\r\n\r\n <div class=\"flex\">\r\n <div class=\"img-container\" ref={(el) => (this.thumbnailContainer = el)}>\r\n <img class=\"scale-down\" height=\"133\" id=\"item-thumbnail\" ref={(el) => (this.thumbnail = el)} width=\"200\" />\r\n </div>\r\n <div class=\"snippet-count-container\">\r\n <calcite-input id=\"item-snippet\" maxlength={250} type=\"textarea\" value={this.itemDetails.snippet} />\r\n <label class=\"font-size--3\" id=\"item-snippet-count\" ref={(el) => (this.itemSnippetCount = el)} />\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <calcite-label>{this._translations.description}\r\n <label id=\"item-description-label\">\r\n <calcite-input id=\"item-description\" type=\"textarea\" value={this.itemDetails.description} />\r\n </label>\r\n </calcite-label>\r\n\r\n <calcite-label>{this._translations.tags}\r\n <label id=\"item-tags-label\">\r\n <calcite-input id=\"item-tags\" value={(this.itemDetails.tags && Array.isArray(this.itemDetails.tags) ? this.itemDetails.tags : [this.itemDetails.tags]).join(\",\")} />\r\n </label>\r\n </calcite-label>\r\n\r\n {this.itemType !== \"Group\" ? <calcite-label>{this._translations.credits}\r\n <label id=\"item-credits-label\">\r\n <calcite-input id=\"item-credits\" value={this.itemDetails.accessInformation} />\r\n </label>\r\n </calcite-label> : null}\r\n\r\n {this.itemType !== \"Group\" ? <calcite-label>\r\n <label id=\"item-terms-label\">{this._translations.termsOfUse}\r\n <calcite-input id=\"item-terms\" type=\"textarea\" value={this.itemDetails.licenseInfo} />\r\n </label>\r\n </calcite-label> : null}\r\n\r\n </div>\r\n </Host>\r\n );\r\n }\r\n\r\n componentDidRender(): void {\r\n this._loadThumb()\r\n }\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Properties (protected)\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n /**\r\n * Handle to the element for browsing for a file.\r\n */\r\n protected browseForThumbnail: HTMLInputElement;\r\n\r\n @State() itemDetails: IItemGeneralized = {\r\n accessInformation: \"\",\r\n description: \"\",\r\n licenseInfo: \"\",\r\n snippet: \"\",\r\n tags: [],\r\n title: \"\"\r\n } as any;\r\n\r\n @State() protected itemEdit: IItemTemplateEdit;\r\n\r\n protected itemType: string;\r\n\r\n /**\r\n * Contains the translations for this component.\r\n * All UI strings should be defined here.\r\n */\r\n @State() _translations: typeof SolutionItemDetails_T9n;\r\n\r\n /**\r\n * Handle to the snippet character-count feedback.\r\n */\r\n protected itemSnippetCount: HTMLLabelElement;\r\n\r\n /**\r\n * Handle to the thumbnail image display.\r\n */\r\n @State() protected thumbnail: HTMLImageElement;\r\n\r\n /**\r\n * Handle to the thumbnail image container.\r\n */\r\n @State() protected thumbnailContainer: HTMLElement;\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Event Listeners\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n /**\r\n * Updates the component's value with changes to the input fields.\r\n */\r\n @Listen(\"calciteInputInput\")\r\n inputReceivedHandler(event: any): void {\r\n switch (event.target.id) {\r\n case \"item-title\":\r\n this.itemDetails.title = event.target.value;\r\n this._updateStore();\r\n break;\r\n case \"item-snippet\":\r\n if (event.target.value.length > 250) {\r\n event.target.value = event.target.value.substring(0, 250);\r\n }\r\n this.itemDetails.snippet = event.target.value;\r\n this._updateLengthLabel(this.itemDetails.snippet);\r\n this._updateStore();\r\n break;\r\n case \"item-description\":\r\n this.itemDetails.description = event.target.value;\r\n this._updateStore();\r\n break;\r\n case \"item-tags\":\r\n this.itemDetails.tags = event.target.value;\r\n this._updateStore();\r\n break;\r\n case \"item-credits\":\r\n this.itemDetails.accessInformation = event.target.value;\r\n this._updateStore();\r\n break;\r\n case \"item-terms\":\r\n this.itemDetails.licenseInfo = event.target.value;\r\n this._updateStore();\r\n break;\r\n }\r\n }\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Events\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Public Methods (async)\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Private Methods\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n /**\r\n * Opens image file browse dialog.\r\n *\r\n */\r\n protected _getThumbnail(): void {\r\n this.browseForThumbnail.click();\r\n }\r\n\r\n /**\r\n * Load the templates thumbnail\r\n *\r\n */\r\n protected _loadThumb(): void {\r\n if (this.thumbnail && this.itemEdit?.thumbnail) {\r\n // Show the thumbnail\r\n this.thumbnail.src = URL.createObjectURL(this.itemEdit.thumbnail);\r\n this.thumbnailContainer.classList.remove(\"empty-box\");\r\n this.thumbnail.classList.remove(\"display-none\");\r\n } else {\r\n // Replace the thumbnail with an empty box\r\n this.thumbnailContainer.classList.add(\"empty-box\");\r\n this.thumbnail.classList.add(\"display-none\");\r\n }\r\n }\r\n\r\n /**\r\n * Updates the length label to reflect the current number of characters\r\n * relative to the max number of characters supported.\r\n *\r\n * @param phrase the current phrase from the control\r\n */\r\n protected _updateLengthLabel(phrase: string): void {\r\n this.itemSnippetCount.innerText =\r\n this._translations.snippetCountPattern.replace(\"{{n}}\", phrase.length.toString());\r\n }\r\n\r\n /**\r\n * Add or remove the value from the store\r\n */\r\n protected _updateStore(\r\n ): void {\r\n this.itemEdit = state.getItemInfo(this.itemId);\r\n this.itemEdit.item = this.itemDetails;\r\n state.setItemInfo(this.itemEdit);\r\n }\r\n\r\n /**\r\n * Gets and displays image result from browse and updates the item in the store.\r\n *\r\n * @param event The input controls event that contains the new file\r\n * @param updateStore boolean that controls if the new value is written to the store\r\n * should be false on the initial load but true the rest of the time\r\n */\r\n protected _updateThumbnail(\r\n event: any\r\n ): void {\r\n const files = event.target.files;\r\n if (files && files[0]) {\r\n if (this.thumbnail) {\r\n // Update UI\r\n this.thumbnail.src = URL.createObjectURL(files[0]);\r\n\r\n // Update info in store\r\n this.itemEdit = state.getItemInfo(this.itemId);\r\n this.itemEdit.thumbnail = files[0];\r\n state.replaceItemThumbnail(this.itemEdit);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Fetches the component's translations\r\n *\r\n * @protected\r\n */\r\n protected async _getTranslations(): Promise<void> {\r\n const translations = await getLocaleComponentStrings(this.el);\r\n this._translations = translations[0] as typeof SolutionItemDetails_T9n;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"solution-item-details.js","sourceRoot":"","sources":["../../../src/components/solution-item-details/solution-item-details.tsx"],"names":[],"mappings":"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","sourcesContent":["/** @license\r\n * Copyright 2022 Esri\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n\r\nimport { Component, Element, h, Host, Listen, Prop, State, VNode } from '@stencil/core';\r\nimport '@esri/calcite-components';\r\nimport state from \"../../utils/solution-store\";\r\nimport SolutionItemDetails_T9n from '../../assets/t9n/solution-item-details/resources.json';\r\nimport { getLocaleComponentStrings } from '../../utils/locale';\r\nimport { IItemGeneralized } from '@esri/solution-common';\r\nimport { IItemTemplateEdit } from '../../utils/interfaces';\r\n\r\n@Component({\r\n tag: 'solution-item-details',\r\n styleUrl: 'solution-item-details.scss',\r\n shadow: false,\r\n})\r\nexport class SolutionItemDetails {\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Host element access\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n @Element() el: HTMLSolutionItemDetailsElement;\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Properties (public)\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n /**\r\n * A template's itemId.\r\n */\r\n @Prop({ mutable: true, reflect: true }) itemId = \"\";\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Lifecycle\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n /**\r\n * StencilJS: Called once just after the component is first connected to the DOM.\r\n */\r\n async componentWillLoad(): Promise<void> {\r\n return this._getTranslations();\r\n }\r\n\r\n async componentWillRender(): Promise<void> {\r\n this.itemEdit = state.getItemInfo(this.itemId);\r\n if (this.itemEdit) {\r\n this.itemDetails = this.itemEdit.item;\r\n this.itemType = this.itemDetails.type;\r\n }\r\n return Promise.resolve();\r\n }\r\n\r\n /**\r\n * Renders the component.\r\n */\r\n render(): VNode {\r\n return (\r\n <Host>\r\n <div class=\"parent-container\">\r\n <div class=\"inputBottomSeparation\">\r\n <calcite-input id=\"item-title\" value={this.itemDetails.title} />\r\n </div>\r\n\r\n <div class=\"inputBottomSeparation\">\r\n\r\n <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\" />\r\n\r\n <button class=\"font-size--3 btn-link inline-block trailer-quarter\" onClick={() => this._getThumbnail()}>\r\n <svg class=\"icon-inline icon-inline--on-left\" height=\"16\" viewBox=\"0 0 16 16\" width=\"16\">\r\n <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\" />\r\n </svg>{this._translations.editThumbnail}\r\n </button>\r\n\r\n <div class=\"flex\">\r\n <div class=\"img-container\" ref={(el) => (this.thumbnailContainer = el)}>\r\n <img class=\"scale-down\" height=\"133\" id=\"item-thumbnail\" ref={(el) => (this.thumbnail = el)} width=\"200\" />\r\n </div>\r\n <div class=\"snippet-count-container\">\r\n <calcite-input id=\"item-snippet\" maxlength={250} type=\"textarea\" value={this.itemDetails.snippet} />\r\n <label class=\"font-size--3\" id=\"item-snippet-count\" ref={(el) => (this.itemSnippetCount = el)} />\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <calcite-label>{this._translations.description}\r\n <label id=\"item-description-label\">\r\n <calcite-input id=\"item-description\" type=\"textarea\" value={this.itemDetails.description} />\r\n </label>\r\n </calcite-label>\r\n\r\n <calcite-label>{this._translations.tags}\r\n <label id=\"item-tags-label\">\r\n <calcite-input id=\"item-tags\" value={(this.itemDetails.tags && Array.isArray(this.itemDetails.tags) ? this.itemDetails.tags : [this.itemDetails.tags]).join(\",\")} />\r\n </label>\r\n </calcite-label>\r\n\r\n {this.itemType !== \"Group\" ? <calcite-label>{this._translations.credits}\r\n <label id=\"item-credits-label\">\r\n <calcite-input id=\"item-credits\" value={this.itemDetails.accessInformation} />\r\n </label>\r\n </calcite-label> : null}\r\n\r\n {this.itemType !== \"Group\" ? <calcite-label>\r\n <label id=\"item-terms-label\">{this._translations.termsOfUse}\r\n <calcite-input id=\"item-terms\" type=\"textarea\" value={this.itemDetails.licenseInfo} />\r\n </label>\r\n </calcite-label> : null}\r\n\r\n </div>\r\n </Host>\r\n );\r\n }\r\n\r\n componentDidRender(): void {\r\n this._loadThumb();\r\n }\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Properties (protected)\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n /**\r\n * Handle to the element for browsing for a file.\r\n */\r\n protected browseForThumbnail: HTMLInputElement;\r\n\r\n @State() itemDetails: IItemGeneralized = {\r\n accessInformation: \"\",\r\n description: \"\",\r\n licenseInfo: \"\",\r\n snippet: \"\",\r\n tags: [],\r\n title: \"\"\r\n } as any;\r\n\r\n @State() protected itemEdit: IItemTemplateEdit;\r\n\r\n protected itemType: string;\r\n\r\n /**\r\n * Contains the translations for this component.\r\n * All UI strings should be defined here.\r\n */\r\n @State() _translations: typeof SolutionItemDetails_T9n;\r\n\r\n /**\r\n * Handle to the snippet character-count feedback.\r\n */\r\n protected itemSnippetCount: HTMLLabelElement;\r\n\r\n /**\r\n * Handle to the thumbnail image display.\r\n */\r\n @State() protected thumbnail: HTMLImageElement;\r\n\r\n /**\r\n * Handle to the thumbnail image container.\r\n */\r\n @State() protected thumbnailContainer: HTMLElement;\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Event Listeners\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n /**\r\n * Updates the component's value with changes to the input fields.\r\n */\r\n @Listen(\"calciteInputInput\")\r\n inputReceivedHandler(event: any): void {\r\n switch (event.target.id) {\r\n case \"item-title\":\r\n this.itemDetails.title = event.target.value;\r\n this._updateStore();\r\n break;\r\n case \"item-snippet\":\r\n if (event.target.value.length > 250) {\r\n event.target.value = event.target.value.substring(0, 250);\r\n }\r\n this.itemDetails.snippet = event.target.value;\r\n this._updateLengthLabel(this.itemDetails.snippet);\r\n this._updateStore();\r\n break;\r\n case \"item-description\":\r\n this.itemDetails.description = event.target.value;\r\n this._updateStore();\r\n break;\r\n case \"item-tags\":\r\n this.itemDetails.tags = event.target.value;\r\n this._updateStore();\r\n break;\r\n case \"item-credits\":\r\n this.itemDetails.accessInformation = event.target.value;\r\n this._updateStore();\r\n break;\r\n case \"item-terms\":\r\n this.itemDetails.licenseInfo = event.target.value;\r\n this._updateStore();\r\n break;\r\n }\r\n }\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Events\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Public Methods (async)\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Private Methods\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n /**\r\n * Opens image file browse dialog.\r\n *\r\n */\r\n protected _getThumbnail(): void {\r\n this.browseForThumbnail.click();\r\n }\r\n\r\n /**\r\n * Load the templates thumbnail\r\n *\r\n */\r\n protected _loadThumb(): void {\r\n if (this.thumbnail && this.itemEdit?.thumbnail) {\r\n // Show the thumbnail\r\n this.thumbnail.src = URL.createObjectURL(this.itemEdit.thumbnail);\r\n this.thumbnailContainer.classList.remove(\"empty-box\");\r\n this.thumbnail.classList.remove(\"display-none\");\r\n } else {\r\n // Replace the thumbnail with an empty box\r\n this.thumbnailContainer.classList.add(\"empty-box\");\r\n this.thumbnail.classList.add(\"display-none\");\r\n }\r\n }\r\n\r\n /**\r\n * Updates the length label to reflect the current number of characters\r\n * relative to the max number of characters supported.\r\n *\r\n * @param phrase the current phrase from the control\r\n */\r\n protected _updateLengthLabel(phrase: string): void {\r\n this.itemSnippetCount.innerText =\r\n this._translations.snippetCountPattern.replace(\"{{n}}\", phrase.length.toString());\r\n }\r\n\r\n /**\r\n * Add or remove the value from the store\r\n */\r\n protected _updateStore(\r\n ): void {\r\n this.itemEdit = state.getItemInfo(this.itemId);\r\n this.itemEdit.item = this.itemDetails;\r\n state.setItemInfo(this.itemEdit);\r\n }\r\n\r\n /**\r\n * Gets and displays image result from browse and updates the item in the store.\r\n *\r\n * @param event The input controls event that contains the new file\r\n * @param updateStore boolean that controls if the new value is written to the store\r\n * should be false on the initial load but true the rest of the time\r\n */\r\n protected _updateThumbnail(\r\n event: any\r\n ): void {\r\n const files = event.target.files;\r\n if (files && files[0]) {\r\n if (this.thumbnail) {\r\n // Update UI\r\n this.thumbnail.src = URL.createObjectURL(files[0]);\r\n\r\n // Update info in store\r\n this.itemEdit = state.getItemInfo(this.itemId);\r\n this.itemEdit.thumbnail = files[0];\r\n state.replaceItemThumbnail(this.itemEdit);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Fetches the component's translations\r\n *\r\n * @protected\r\n */\r\n protected async _getTranslations(): Promise<void> {\r\n const translations = await getLocaleComponentStrings(this.el);\r\n this._translations = translations[0] as typeof SolutionItemDetails_T9n;\r\n }\r\n}\r\n"]}
@@ -59,7 +59,6 @@ class SolutionStore {
59
59
  * @returns Item information or `undefined` if not found
60
60
  */
61
61
  getItemInfo(itemId) {
62
- console.log("getItemInfo for " + itemId); //???
63
62
  const templates = this._store.get("solutionData").templates;
64
63
  let template;
65
64
  templates.some((t) => {
@@ -91,7 +90,6 @@ class SolutionStore {
91
90
  */
92
91
  async loadSolution(solutionItemId, authentication) {
93
92
  this._authentication = authentication;
94
- console.log("load solution " + solutionItemId); //???
95
93
  const solutionData = await getItemDataAsJson(solutionItemId, authentication);
96
94
  if (solutionData) {
97
95
  const defaultWkid = getProp(solutionData, "params.wkid.default");
@@ -505,9 +503,9 @@ class SolutionStore {
505
503
  }
506
504
  return Promise.resolve();
507
505
  });
508
- delete t.resourceFilePaths;
509
- delete t.thumbnail;
510
- delete t.groupDetails;
506
+ //???delete t.resourceFilePaths;
507
+ //???delete t.thumbnail;
508
+ //???delete t.groupDetails;
511
509
  });
512
510
  // Update the resources
513
511
  return Promise.all(pendingTasks)