@esri/solutions-components 0.2.3 → 0.2.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (989) 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/ExpandToggle-73df0d51.js +2 -0
  4. package/dist/cjs/ExpandToggle-73df0d51.js.map +1 -0
  5. package/dist/cjs/Heading-6b7b374c.js +2 -0
  6. package/dist/cjs/Heading-6b7b374c.js.map +1 -0
  7. package/dist/cjs/_commonjsHelpers-6aafa5de.js +2 -0
  8. package/dist/cjs/_commonjsHelpers-6aafa5de.js.map +1 -0
  9. package/dist/cjs/app-globals-2f48e57e.js +2 -0
  10. package/dist/cjs/app-globals-2f48e57e.js.map +1 -0
  11. package/dist/cjs/array-ace6d4b5.js +2 -0
  12. package/dist/cjs/array-ace6d4b5.js.map +1 -0
  13. package/dist/cjs/buffer-tools_6.cjs.entry.js +2 -0
  14. package/dist/cjs/buffer-tools_6.cjs.entry.js.map +1 -0
  15. package/dist/cjs/calcite-accordion-item.cjs.entry.js +2 -0
  16. package/dist/cjs/calcite-accordion-item.cjs.entry.js.map +1 -0
  17. package/dist/cjs/calcite-accordion.cjs.entry.js +2 -0
  18. package/dist/cjs/calcite-accordion.cjs.entry.js.map +1 -0
  19. package/dist/cjs/calcite-action-bar_6.cjs.entry.js +2 -0
  20. package/dist/cjs/calcite-action-bar_6.cjs.entry.js.map +1 -0
  21. package/dist/cjs/calcite-action-group.cjs.entry.js +2 -0
  22. package/dist/cjs/calcite-action-group.cjs.entry.js.map +1 -0
  23. package/dist/cjs/calcite-action-menu_2.cjs.entry.js +20 -401
  24. package/dist/cjs/calcite-action-menu_2.cjs.entry.js.map +1 -0
  25. package/dist/cjs/calcite-action-pad.cjs.entry.js +2 -0
  26. package/dist/cjs/calcite-action-pad.cjs.entry.js.map +1 -0
  27. package/dist/cjs/calcite-action_2.cjs.entry.js +425 -71
  28. package/dist/cjs/calcite-action_2.cjs.entry.js.map +1 -0
  29. package/dist/cjs/calcite-alert.cjs.entry.js +2 -0
  30. package/dist/cjs/calcite-alert.cjs.entry.js.map +1 -0
  31. package/dist/cjs/calcite-avatar.cjs.entry.js +2 -0
  32. package/dist/cjs/calcite-avatar.cjs.entry.js.map +1 -0
  33. package/dist/cjs/calcite-block-section.cjs.entry.js +2 -0
  34. package/dist/cjs/calcite-block-section.cjs.entry.js.map +1 -0
  35. package/dist/cjs/calcite-block.cjs.entry.js +2 -0
  36. package/dist/cjs/calcite-block.cjs.entry.js.map +1 -0
  37. package/dist/cjs/calcite-button.cjs.entry.js +2 -0
  38. package/dist/cjs/calcite-button.cjs.entry.js.map +1 -0
  39. package/dist/cjs/calcite-card.cjs.entry.js +2 -0
  40. package/dist/cjs/calcite-card.cjs.entry.js.map +1 -0
  41. package/dist/cjs/calcite-checkbox.cjs.entry.js +2 -0
  42. package/dist/cjs/calcite-checkbox.cjs.entry.js.map +1 -0
  43. package/dist/cjs/calcite-chip.cjs.entry.js +2 -0
  44. package/dist/cjs/calcite-chip.cjs.entry.js.map +1 -0
  45. package/dist/cjs/calcite-color-picker-hex-input.cjs.entry.js +2 -0
  46. package/dist/cjs/calcite-color-picker-hex-input.cjs.entry.js.map +1 -0
  47. package/dist/cjs/calcite-color-picker-swatch.cjs.entry.js +2 -0
  48. package/dist/cjs/calcite-color-picker-swatch.cjs.entry.js.map +1 -0
  49. package/dist/cjs/calcite-color-picker.cjs.entry.js +2 -0
  50. package/dist/cjs/calcite-color-picker.cjs.entry.js.map +1 -0
  51. package/dist/cjs/calcite-combobox-item-group.cjs.entry.js +2 -0
  52. package/dist/cjs/calcite-combobox-item-group.cjs.entry.js.map +1 -0
  53. package/dist/cjs/calcite-combobox_3.cjs.entry.js +2 -0
  54. package/dist/cjs/calcite-combobox_3.cjs.entry.js.map +1 -0
  55. package/dist/cjs/calcite-date-picker-day_3.cjs.entry.js +2 -0
  56. package/dist/cjs/calcite-date-picker-day_3.cjs.entry.js.map +1 -0
  57. package/dist/cjs/calcite-date-picker.cjs.entry.js +2 -0
  58. package/dist/cjs/calcite-date-picker.cjs.entry.js.map +1 -0
  59. package/dist/cjs/calcite-dropdown-group.cjs.entry.js +2 -0
  60. package/dist/cjs/calcite-dropdown-group.cjs.entry.js.map +1 -0
  61. package/dist/cjs/calcite-dropdown-item.cjs.entry.js +2 -0
  62. package/dist/cjs/calcite-dropdown-item.cjs.entry.js.map +1 -0
  63. package/dist/cjs/calcite-dropdown.cjs.entry.js +2 -0
  64. package/dist/cjs/calcite-dropdown.cjs.entry.js.map +1 -0
  65. package/dist/cjs/calcite-fab.cjs.entry.js +2 -0
  66. package/dist/cjs/calcite-fab.cjs.entry.js.map +1 -0
  67. package/dist/cjs/calcite-filter.cjs.entry.js +2 -0
  68. package/dist/cjs/calcite-filter.cjs.entry.js.map +1 -0
  69. package/dist/cjs/calcite-flow-item.cjs.entry.js +2 -0
  70. package/dist/cjs/calcite-flow-item.cjs.entry.js.map +1 -0
  71. package/dist/cjs/calcite-flow.cjs.entry.js +2 -0
  72. package/dist/cjs/calcite-flow.cjs.entry.js.map +1 -0
  73. package/dist/cjs/calcite-graph.cjs.entry.js +2 -0
  74. package/dist/cjs/calcite-graph.cjs.entry.js.map +1 -0
  75. package/dist/cjs/calcite-handle.cjs.entry.js +2 -0
  76. package/dist/cjs/calcite-handle.cjs.entry.js.map +1 -0
  77. package/dist/cjs/calcite-icon.cjs.entry.js +2 -0
  78. package/dist/cjs/calcite-icon.cjs.entry.js.map +1 -0
  79. package/dist/cjs/calcite-inline-editable.cjs.entry.js +2 -0
  80. package/dist/cjs/calcite-inline-editable.cjs.entry.js.map +1 -0
  81. package/dist/cjs/calcite-input-date-picker.cjs.entry.js +2 -0
  82. package/dist/cjs/calcite-input-date-picker.cjs.entry.js.map +1 -0
  83. package/dist/cjs/calcite-input-number.cjs.entry.js +2 -0
  84. package/dist/cjs/calcite-input-number.cjs.entry.js.map +1 -0
  85. package/dist/cjs/calcite-input-text.cjs.entry.js +2 -0
  86. package/dist/cjs/calcite-input-text.cjs.entry.js.map +1 -0
  87. package/dist/cjs/calcite-input-time-picker.cjs.entry.js +2 -0
  88. package/dist/cjs/calcite-input-time-picker.cjs.entry.js.map +1 -0
  89. package/dist/cjs/calcite-input_2.cjs.entry.js +2 -0
  90. package/dist/cjs/calcite-input_2.cjs.entry.js.map +1 -0
  91. package/dist/cjs/calcite-label.cjs.entry.js +2 -0
  92. package/dist/cjs/calcite-label.cjs.entry.js.map +1 -0
  93. package/dist/cjs/calcite-link.cjs.entry.js +2 -0
  94. package/dist/cjs/calcite-link.cjs.entry.js.map +1 -0
  95. package/dist/cjs/calcite-list-item-group.cjs.entry.js +2 -0
  96. package/dist/cjs/calcite-list-item-group.cjs.entry.js.map +1 -0
  97. package/dist/cjs/calcite-list_2.cjs.entry.js +2 -0
  98. package/dist/cjs/calcite-list_2.cjs.entry.js.map +1 -0
  99. package/dist/cjs/calcite-loader.cjs.entry.js +97 -0
  100. package/dist/cjs/calcite-loader.cjs.entry.js.map +1 -0
  101. package/dist/cjs/{solution-configuration.cjs.entry.js → calcite-modal_2.cjs.entry.js} +452 -6
  102. package/dist/cjs/calcite-modal_2.cjs.entry.js.map +1 -0
  103. package/dist/cjs/calcite-option-group.cjs.entry.js +2 -0
  104. package/dist/cjs/calcite-option-group.cjs.entry.js.map +1 -0
  105. package/dist/cjs/calcite-option_2.cjs.entry.js +2 -0
  106. package/dist/cjs/calcite-option_2.cjs.entry.js.map +1 -0
  107. package/dist/cjs/calcite-pagination.cjs.entry.js +2 -0
  108. package/dist/cjs/calcite-pagination.cjs.entry.js.map +1 -0
  109. package/dist/cjs/{calcite-shell-panel_14.cjs.entry.js → calcite-panel_12.cjs.entry.js} +469 -711
  110. package/dist/cjs/calcite-panel_12.cjs.entry.js.map +1 -0
  111. package/dist/cjs/calcite-pick-list-group.cjs.entry.js +2 -0
  112. package/dist/cjs/calcite-pick-list-group.cjs.entry.js.map +1 -0
  113. package/dist/cjs/calcite-pick-list-item.cjs.entry.js +2 -0
  114. package/dist/cjs/calcite-pick-list-item.cjs.entry.js.map +1 -0
  115. package/dist/cjs/calcite-pick-list.cjs.entry.js +2 -0
  116. package/dist/cjs/calcite-pick-list.cjs.entry.js.map +1 -0
  117. package/dist/cjs/calcite-popover-manager.cjs.entry.js +2 -0
  118. package/dist/cjs/calcite-popover-manager.cjs.entry.js.map +1 -0
  119. package/dist/cjs/calcite-radio-button-group.cjs.entry.js +2 -0
  120. package/dist/cjs/calcite-radio-button-group.cjs.entry.js.map +1 -0
  121. package/dist/cjs/calcite-radio-button.cjs.entry.js +2 -0
  122. package/dist/cjs/calcite-radio-button.cjs.entry.js.map +1 -0
  123. package/dist/cjs/calcite-rating.cjs.entry.js +2 -0
  124. package/dist/cjs/calcite-rating.cjs.entry.js.map +1 -0
  125. package/dist/cjs/calcite-shell-center-row.cjs.entry.js +2 -0
  126. package/dist/cjs/calcite-shell-center-row.cjs.entry.js.map +1 -0
  127. package/dist/cjs/calcite-sortable-list.cjs.entry.js +2 -0
  128. package/dist/cjs/calcite-sortable-list.cjs.entry.js.map +1 -0
  129. package/dist/cjs/calcite-split-button.cjs.entry.js +2 -0
  130. package/dist/cjs/calcite-split-button.cjs.entry.js.map +1 -0
  131. package/dist/cjs/calcite-stepper-item.cjs.entry.js +2 -0
  132. package/dist/cjs/calcite-stepper-item.cjs.entry.js.map +1 -0
  133. package/dist/cjs/calcite-stepper.cjs.entry.js +2 -0
  134. package/dist/cjs/calcite-stepper.cjs.entry.js.map +1 -0
  135. package/dist/cjs/calcite-switch.cjs.entry.js +2 -0
  136. package/dist/cjs/calcite-switch.cjs.entry.js.map +1 -0
  137. package/dist/cjs/calcite-tile-select-group.cjs.entry.js +2 -0
  138. package/dist/cjs/calcite-tile-select-group.cjs.entry.js.map +1 -0
  139. package/dist/cjs/calcite-tile-select.cjs.entry.js +2 -0
  140. package/dist/cjs/calcite-tile-select.cjs.entry.js.map +1 -0
  141. package/dist/cjs/calcite-tile.cjs.entry.js +2 -0
  142. package/dist/cjs/calcite-tile.cjs.entry.js.map +1 -0
  143. package/dist/cjs/calcite-time-picker.cjs.entry.js +2 -0
  144. package/dist/cjs/calcite-time-picker.cjs.entry.js.map +1 -0
  145. package/dist/cjs/calcite-tip-group.cjs.entry.js +2 -0
  146. package/dist/cjs/calcite-tip-group.cjs.entry.js.map +1 -0
  147. package/dist/cjs/calcite-tip-manager.cjs.entry.js +2 -0
  148. package/dist/cjs/calcite-tip-manager.cjs.entry.js.map +1 -0
  149. package/dist/cjs/calcite-tip.cjs.entry.js +2 -0
  150. package/dist/cjs/calcite-tip.cjs.entry.js.map +1 -0
  151. package/dist/cjs/calcite-tooltip-manager.cjs.entry.js +2 -0
  152. package/dist/cjs/calcite-tooltip-manager.cjs.entry.js.map +1 -0
  153. package/dist/cjs/calcite-tooltip.cjs.entry.js +2 -0
  154. package/dist/cjs/calcite-tooltip.cjs.entry.js.map +1 -0
  155. package/dist/cjs/calcite-tree_3.cjs.entry.js +2 -0
  156. package/dist/cjs/calcite-tree_3.cjs.entry.js.map +1 -0
  157. package/dist/cjs/check-list.cjs.entry.js +2 -0
  158. package/dist/cjs/check-list.cjs.entry.js.map +1 -0
  159. package/dist/cjs/conditionalSlot-2defe83d.js +2 -0
  160. package/dist/cjs/conditionalSlot-2defe83d.js.map +1 -0
  161. package/dist/cjs/config-buffer-tools.cjs.entry.js +2 -0
  162. package/dist/cjs/config-buffer-tools.cjs.entry.js.map +1 -0
  163. package/dist/cjs/config-draw-tools.cjs.entry.js +2 -0
  164. package/dist/cjs/config-draw-tools.cjs.entry.js.map +1 -0
  165. package/dist/cjs/config-layer-picker.cjs.entry.js +2 -0
  166. package/dist/cjs/config-layer-picker.cjs.entry.js.map +1 -0
  167. package/dist/cjs/config-pdf-download.cjs.entry.js +2 -0
  168. package/dist/cjs/config-pdf-download.cjs.entry.js.map +1 -0
  169. package/dist/cjs/date-e21b2052.js +2 -0
  170. package/dist/cjs/date-e21b2052.js.map +1 -0
  171. package/dist/cjs/debounce-69c3bada.js +2 -0
  172. package/dist/cjs/debounce-69c3bada.js.map +1 -0
  173. package/dist/cjs/dom-4a580af6.js +2 -0
  174. package/dist/cjs/dom-4a580af6.js.map +1 -0
  175. package/dist/cjs/filter-325f654f.js +2 -0
  176. package/dist/cjs/filter-325f654f.js.map +1 -0
  177. package/dist/cjs/floating-ui-ca1bcead.js +2 -0
  178. package/dist/cjs/floating-ui-ca1bcead.js.map +1 -0
  179. package/dist/cjs/form-45849654.js +2 -0
  180. package/dist/cjs/form-45849654.js.map +1 -0
  181. package/dist/cjs/guid-84ac4d91.js +2 -0
  182. package/dist/cjs/guid-84ac4d91.js.map +1 -0
  183. package/dist/cjs/index-7af21b6f.js +2 -0
  184. package/dist/cjs/index-7af21b6f.js.map +1 -0
  185. package/dist/cjs/index-a86078a0.js +2 -0
  186. package/dist/cjs/index-a86078a0.js.map +1 -0
  187. package/dist/cjs/index-d7f9770d.js +2 -0
  188. package/dist/cjs/index-d7f9770d.js.map +1 -0
  189. package/dist/cjs/index.cjs.js +2 -0
  190. package/dist/cjs/index.cjs.js.map +1 -0
  191. package/dist/cjs/interactive-0a68ab99.js +2 -0
  192. package/dist/cjs/interactive-0a68ab99.js.map +1 -0
  193. package/dist/cjs/interfaces-ab603e16.js +2 -0
  194. package/dist/cjs/interfaces-ab603e16.js.map +1 -0
  195. package/dist/cjs/interfaces-e76f31e9.js +2 -0
  196. package/dist/cjs/interfaces-e76f31e9.js.map +1 -0
  197. package/dist/cjs/key-55aca5c0.js +2 -0
  198. package/dist/cjs/key-55aca5c0.js.map +1 -0
  199. package/dist/cjs/label-24fcd8a5.js +2 -0
  200. package/dist/cjs/label-24fcd8a5.js.map +1 -0
  201. package/dist/cjs/labelFormats-3236d2e0.js +2 -0
  202. package/dist/cjs/labelFormats-3236d2e0.js.map +1 -0
  203. package/dist/cjs/loadModules-38269f99.js +2 -0
  204. package/dist/cjs/loadModules-38269f99.js.map +1 -0
  205. package/dist/cjs/loader.cjs.js +3 -1
  206. package/dist/cjs/loader.cjs.js.map +1 -0
  207. package/dist/cjs/locale-73cab8e8.js +2 -0
  208. package/dist/cjs/locale-73cab8e8.js.map +1 -0
  209. package/dist/cjs/locale-746a095d.js +2 -0
  210. package/dist/cjs/locale-746a095d.js.map +1 -0
  211. package/dist/cjs/map-search.cjs.entry.js +2 -0
  212. package/dist/cjs/map-search.cjs.entry.js.map +1 -0
  213. package/dist/cjs/mapViewUtils-67cfc412.js +2 -0
  214. package/dist/cjs/mapViewUtils-67cfc412.js.map +1 -0
  215. package/dist/cjs/math-460fffaf.js +2 -0
  216. package/dist/cjs/math-460fffaf.js.map +1 -0
  217. package/dist/cjs/nonChromiumPlatformUtils-7a6a84d2.js +2 -0
  218. package/dist/cjs/nonChromiumPlatformUtils-7a6a84d2.js.map +1 -0
  219. package/dist/cjs/observers-5311faf8.js +2 -0
  220. package/dist/cjs/observers-5311faf8.js.map +1 -0
  221. package/dist/cjs/openCloseComponent-bf986132.js +2 -0
  222. package/dist/cjs/openCloseComponent-bf986132.js.map +1 -0
  223. package/dist/cjs/public-notification.cjs.entry.js +2 -0
  224. package/dist/cjs/public-notification.cjs.entry.js.map +1 -0
  225. package/dist/cjs/publicNotificationStore-6a3d40b3.js +2 -0
  226. package/dist/cjs/publicNotificationStore-6a3d40b3.js.map +1 -0
  227. package/dist/cjs/publicNotificationUtils-9d585d8d.js +2 -0
  228. package/dist/cjs/publicNotificationUtils-9d585d8d.js.map +1 -0
  229. package/dist/cjs/resources-1f785471.js +2 -0
  230. package/dist/cjs/resources-1f785471.js.map +1 -0
  231. package/dist/cjs/resources-2260d186.js +2 -0
  232. package/dist/cjs/resources-2260d186.js.map +1 -0
  233. package/dist/cjs/resources-2a9862c7.js +2 -0
  234. package/dist/cjs/resources-2a9862c7.js.map +1 -0
  235. package/dist/cjs/resources-308edbd8.js +2 -0
  236. package/dist/cjs/resources-308edbd8.js.map +1 -0
  237. package/dist/cjs/resources-6152b073.js +2 -0
  238. package/dist/cjs/resources-6152b073.js.map +1 -0
  239. package/dist/cjs/resources-808cfca8.js +2 -0
  240. package/dist/cjs/resources-808cfca8.js.map +1 -0
  241. package/dist/cjs/resources-9c55e05c.js +2 -0
  242. package/dist/cjs/resources-9c55e05c.js.map +1 -0
  243. package/dist/cjs/resources-aa19bf8c.js +2 -0
  244. package/dist/cjs/resources-aa19bf8c.js.map +1 -0
  245. package/dist/cjs/resources-b56bce71.js +2 -0
  246. package/dist/cjs/resources-b56bce71.js.map +1 -0
  247. package/dist/cjs/resources-cc7f63b0.js +2 -0
  248. package/dist/cjs/resources-cc7f63b0.js.map +1 -0
  249. package/dist/cjs/shared-list-render-4c7d84bf.js +2 -0
  250. package/dist/cjs/shared-list-render-4c7d84bf.js.map +1 -0
  251. package/dist/cjs/solution-config-modal.cjs.entry.js +131 -0
  252. package/dist/cjs/solution-config-modal.cjs.entry.js.map +1 -0
  253. package/dist/cjs/{solution-contents_3.cjs.entry.js → solution-contents_7.cjs.entry.js} +665 -2
  254. package/dist/cjs/solution-contents_7.cjs.entry.js.map +1 -0
  255. package/dist/cjs/{solution-store-e2fc11ac.js → solution-store-09b3fc53.js} +5 -3
  256. package/dist/cjs/solution-store-09b3fc53.js.map +1 -0
  257. package/dist/cjs/solutions-components.cjs.js +3 -1
  258. package/dist/cjs/solutions-components.cjs.js.map +1 -0
  259. package/dist/cjs/sortable.esm-bf47019d.js +2 -0
  260. package/dist/cjs/sortable.esm-bf47019d.js.map +1 -0
  261. package/dist/cjs/store-manager.cjs.entry.js +2 -0
  262. package/dist/cjs/store-manager.cjs.entry.js.map +1 -0
  263. package/dist/cjs/time-3f5577cb.js +2 -0
  264. package/dist/cjs/time-3f5577cb.js.map +1 -0
  265. package/dist/cjs/utils-120bbbeb.js +2 -0
  266. package/dist/cjs/utils-120bbbeb.js.map +1 -0
  267. package/dist/cjs/utils-b4236001.js +2 -0
  268. package/dist/cjs/utils-b4236001.js.map +1 -0
  269. package/dist/collection/collection-manifest.json +1 -0
  270. package/dist/collection/components/buffer-tools/buffer-tools.js +1 -0
  271. package/dist/collection/components/buffer-tools/buffer-tools.js.map +1 -0
  272. package/dist/collection/components/check-list/check-list.js +1 -0
  273. package/dist/collection/components/check-list/check-list.js.map +1 -0
  274. package/dist/collection/components/config-buffer-tools/config-buffer-tools.js +1 -0
  275. package/dist/collection/components/config-buffer-tools/config-buffer-tools.js.map +1 -0
  276. package/dist/collection/components/config-draw-tools/config-draw-tools.js +1 -0
  277. package/dist/collection/components/config-draw-tools/config-draw-tools.js.map +1 -0
  278. package/dist/collection/components/config-layer-picker/config-layer-picker.js +1 -0
  279. package/dist/collection/components/config-layer-picker/config-layer-picker.js.map +1 -0
  280. package/dist/collection/components/config-pdf-download/config-pdf-download.js +1 -0
  281. package/dist/collection/components/config-pdf-download/config-pdf-download.js.map +1 -0
  282. package/dist/collection/components/json-editor/json-editor.js +1 -0
  283. package/dist/collection/components/json-editor/json-editor.js.map +1 -0
  284. package/dist/collection/components/map-draw-tools/map-draw-tools.js +1 -0
  285. package/dist/collection/components/map-draw-tools/map-draw-tools.js.map +1 -0
  286. package/dist/collection/components/map-layer-picker/map-layer-picker.js +1 -0
  287. package/dist/collection/components/map-layer-picker/map-layer-picker.js.map +1 -0
  288. package/dist/collection/components/map-search/map-search.js +1 -0
  289. package/dist/collection/components/map-search/map-search.js.map +1 -0
  290. package/dist/collection/components/map-select-tools/map-select-tools.js +1 -0
  291. package/dist/collection/components/map-select-tools/map-select-tools.js.map +1 -0
  292. package/dist/collection/components/pdf-download/pdf-download.js +1 -0
  293. package/dist/collection/components/pdf-download/pdf-download.js.map +1 -0
  294. package/dist/collection/components/public-notification/public-notification.js +1 -0
  295. package/dist/collection/components/public-notification/public-notification.js.map +1 -0
  296. package/dist/collection/components/refine-selection/refine-selection.js +1 -0
  297. package/dist/collection/components/refine-selection/refine-selection.js.map +1 -0
  298. package/dist/collection/components/refine-selection-tools/refine-selection-tools.js +1 -0
  299. package/dist/collection/components/refine-selection-tools/refine-selection-tools.js.map +1 -0
  300. package/dist/collection/components/solution-config-modal/solution-config-modal.css +91 -0
  301. package/dist/collection/components/solution-config-modal/solution-config-modal.js +245 -0
  302. package/dist/collection/components/solution-config-modal/solution-config-modal.js.map +1 -0
  303. package/dist/collection/components/solution-configuration/solution-configuration.js +24 -11
  304. package/dist/collection/components/solution-configuration/solution-configuration.js.map +1 -0
  305. package/dist/collection/components/solution-contents/solution-contents.js +1 -0
  306. package/dist/collection/components/solution-contents/solution-contents.js.map +1 -0
  307. package/dist/collection/components/solution-item/solution-item.js +1 -0
  308. package/dist/collection/components/solution-item/solution-item.js.map +1 -0
  309. package/dist/collection/components/solution-item-details/solution-item-details.js +1 -0
  310. package/dist/collection/components/solution-item-details/solution-item-details.js.map +1 -0
  311. package/dist/collection/components/solution-item-icon/solution-item-icon.js +1 -0
  312. package/dist/collection/components/solution-item-icon/solution-item-icon.js.map +1 -0
  313. package/dist/collection/components/solution-item-sharing/solution-item-sharing.js +1 -0
  314. package/dist/collection/components/solution-item-sharing/solution-item-sharing.js.map +1 -0
  315. package/dist/collection/components/solution-organization-variables/solution-organization-variables.js +1 -0
  316. package/dist/collection/components/solution-organization-variables/solution-organization-variables.js.map +1 -0
  317. package/dist/collection/components/solution-resource-item/solution-resource-item.js +1 -0
  318. package/dist/collection/components/solution-resource-item/solution-resource-item.js.map +1 -0
  319. package/dist/collection/components/solution-spatial-ref/solution-spatial-ref.js +1 -0
  320. package/dist/collection/components/solution-spatial-ref/solution-spatial-ref.js.map +1 -0
  321. package/dist/collection/components/solution-spatial-ref/spatialreferences.js +1 -0
  322. package/dist/collection/components/solution-spatial-ref/spatialreferences.js.map +1 -0
  323. package/dist/collection/components/solution-template-data/solution-template-data.js +1 -0
  324. package/dist/collection/components/solution-template-data/solution-template-data.js.map +1 -0
  325. package/dist/collection/components/solution-variables/solution-variables.js +1 -0
  326. package/dist/collection/components/solution-variables/solution-variables.js.map +1 -0
  327. package/dist/collection/components/store-manager/store-manager.js +1 -0
  328. package/dist/collection/components/store-manager/store-manager.js.map +1 -0
  329. package/dist/collection/index.js +1 -0
  330. package/dist/collection/index.js.map +1 -0
  331. package/dist/collection/utils/common.js +1 -0
  332. package/dist/collection/utils/common.js.map +1 -0
  333. package/dist/collection/utils/csvUtils.js +1 -0
  334. package/dist/collection/utils/csvUtils.js.map +1 -0
  335. package/dist/collection/utils/interfaces.js +1 -0
  336. package/dist/collection/utils/interfaces.js.map +1 -0
  337. package/dist/collection/utils/languageUtil.js +1 -0
  338. package/dist/collection/utils/languageUtil.js.map +1 -0
  339. package/dist/collection/utils/loadModules.js +1 -0
  340. package/dist/collection/utils/loadModules.js.map +1 -0
  341. package/dist/collection/utils/locale.js +1 -0
  342. package/dist/collection/utils/locale.js.map +1 -0
  343. package/dist/collection/utils/mapViewUtils.js +1 -0
  344. package/dist/collection/utils/mapViewUtils.js.map +1 -0
  345. package/dist/collection/utils/publicNotificationStore.js +1 -0
  346. package/dist/collection/utils/publicNotificationStore.js.map +1 -0
  347. package/dist/collection/utils/publicNotificationUtils.js +1 -0
  348. package/dist/collection/utils/publicNotificationUtils.js.map +1 -0
  349. package/dist/collection/utils/queryUtils.js +1 -0
  350. package/dist/collection/utils/queryUtils.js.map +1 -0
  351. package/dist/collection/utils/solution-store.js +4 -3
  352. package/dist/collection/utils/solution-store.js.map +1 -0
  353. package/dist/collection/utils/solution-store.ts +3 -3
  354. package/dist/collection/utils/templates.js +1 -0
  355. package/dist/collection/utils/templates.js.map +1 -0
  356. package/dist/collection/utils/test/testUtils.js +1 -0
  357. package/dist/collection/utils/test/testUtils.js.map +1 -0
  358. package/dist/collection/utils/types.js +1 -0
  359. package/dist/collection/utils/types.js.map +1 -0
  360. package/dist/esm/ExpandToggle-b7d1fb3c.js +2 -0
  361. package/dist/esm/ExpandToggle-b7d1fb3c.js.map +1 -0
  362. package/dist/esm/Heading-1efb4837.js +2 -0
  363. package/dist/esm/Heading-1efb4837.js.map +1 -0
  364. package/dist/esm/_commonjsHelpers-8fd39c50.js +2 -0
  365. package/dist/esm/_commonjsHelpers-8fd39c50.js.map +1 -0
  366. package/dist/esm/app-globals-09b9efee.js +2 -0
  367. package/dist/esm/app-globals-09b9efee.js.map +1 -0
  368. package/dist/esm/array-2ab3b18f.js +2 -0
  369. package/dist/esm/array-2ab3b18f.js.map +1 -0
  370. package/dist/esm/buffer-tools_6.entry.js +4 -2
  371. package/dist/esm/buffer-tools_6.entry.js.map +1 -0
  372. package/dist/esm/calcite-accordion-item.entry.js +2 -0
  373. package/dist/esm/calcite-accordion-item.entry.js.map +1 -0
  374. package/dist/esm/calcite-accordion.entry.js +2 -0
  375. package/dist/esm/calcite-accordion.entry.js.map +1 -0
  376. package/dist/esm/calcite-action-bar_6.entry.js +4 -2
  377. package/dist/esm/calcite-action-bar_6.entry.js.map +1 -0
  378. package/dist/esm/calcite-action-group.entry.js +2 -0
  379. package/dist/esm/calcite-action-group.entry.js.map +1 -0
  380. package/dist/esm/calcite-action-menu_2.entry.js +22 -403
  381. package/dist/esm/calcite-action-menu_2.entry.js.map +1 -0
  382. package/dist/esm/calcite-action-pad.entry.js +2 -0
  383. package/dist/esm/calcite-action-pad.entry.js.map +1 -0
  384. package/dist/esm/calcite-action_2.entry.js +426 -72
  385. package/dist/esm/calcite-action_2.entry.js.map +1 -0
  386. package/dist/esm/calcite-alert.entry.js +2 -0
  387. package/dist/esm/calcite-alert.entry.js.map +1 -0
  388. package/dist/esm/calcite-avatar.entry.js +2 -0
  389. package/dist/esm/calcite-avatar.entry.js.map +1 -0
  390. package/dist/esm/calcite-block-section.entry.js +2 -0
  391. package/dist/esm/calcite-block-section.entry.js.map +1 -0
  392. package/dist/esm/calcite-block.entry.js +2 -0
  393. package/dist/esm/calcite-block.entry.js.map +1 -0
  394. package/dist/esm/calcite-button.entry.js +2 -0
  395. package/dist/esm/calcite-button.entry.js.map +1 -0
  396. package/dist/esm/calcite-card.entry.js +2 -0
  397. package/dist/esm/calcite-card.entry.js.map +1 -0
  398. package/dist/esm/calcite-checkbox.entry.js +2 -0
  399. package/dist/esm/calcite-checkbox.entry.js.map +1 -0
  400. package/dist/esm/calcite-chip.entry.js +2 -0
  401. package/dist/esm/calcite-chip.entry.js.map +1 -0
  402. package/dist/esm/calcite-color-picker-hex-input.entry.js +2 -0
  403. package/dist/esm/calcite-color-picker-hex-input.entry.js.map +1 -0
  404. package/dist/esm/calcite-color-picker-swatch.entry.js +2 -0
  405. package/dist/esm/calcite-color-picker-swatch.entry.js.map +1 -0
  406. package/dist/esm/calcite-color-picker.entry.js +2 -0
  407. package/dist/esm/calcite-color-picker.entry.js.map +1 -0
  408. package/dist/esm/calcite-combobox-item-group.entry.js +2 -0
  409. package/dist/esm/calcite-combobox-item-group.entry.js.map +1 -0
  410. package/dist/esm/calcite-combobox_3.entry.js +4 -2
  411. package/dist/esm/calcite-combobox_3.entry.js.map +1 -0
  412. package/dist/esm/calcite-date-picker-day_3.entry.js +2 -0
  413. package/dist/esm/calcite-date-picker-day_3.entry.js.map +1 -0
  414. package/dist/esm/calcite-date-picker.entry.js +2 -0
  415. package/dist/esm/calcite-date-picker.entry.js.map +1 -0
  416. package/dist/esm/calcite-dropdown-group.entry.js +2 -0
  417. package/dist/esm/calcite-dropdown-group.entry.js.map +1 -0
  418. package/dist/esm/calcite-dropdown-item.entry.js +2 -0
  419. package/dist/esm/calcite-dropdown-item.entry.js.map +1 -0
  420. package/dist/esm/calcite-dropdown.entry.js +2 -0
  421. package/dist/esm/calcite-dropdown.entry.js.map +1 -0
  422. package/dist/esm/calcite-fab.entry.js +2 -0
  423. package/dist/esm/calcite-fab.entry.js.map +1 -0
  424. package/dist/esm/calcite-filter.entry.js +2 -0
  425. package/dist/esm/calcite-filter.entry.js.map +1 -0
  426. package/dist/esm/calcite-flow-item.entry.js +2 -0
  427. package/dist/esm/calcite-flow-item.entry.js.map +1 -0
  428. package/dist/esm/calcite-flow.entry.js +2 -0
  429. package/dist/esm/calcite-flow.entry.js.map +1 -0
  430. package/dist/esm/calcite-graph.entry.js +2 -0
  431. package/dist/esm/calcite-graph.entry.js.map +1 -0
  432. package/dist/esm/calcite-handle.entry.js +2 -0
  433. package/dist/esm/calcite-handle.entry.js.map +1 -0
  434. package/dist/esm/calcite-icon.entry.js +2 -0
  435. package/dist/esm/calcite-icon.entry.js.map +1 -0
  436. package/dist/esm/calcite-inline-editable.entry.js +2 -0
  437. package/dist/esm/calcite-inline-editable.entry.js.map +1 -0
  438. package/dist/esm/calcite-input-date-picker.entry.js +2 -0
  439. package/dist/esm/calcite-input-date-picker.entry.js.map +1 -0
  440. package/dist/esm/calcite-input-number.entry.js +2 -0
  441. package/dist/esm/calcite-input-number.entry.js.map +1 -0
  442. package/dist/esm/calcite-input-text.entry.js +2 -0
  443. package/dist/esm/calcite-input-text.entry.js.map +1 -0
  444. package/dist/esm/calcite-input-time-picker.entry.js +2 -0
  445. package/dist/esm/calcite-input-time-picker.entry.js.map +1 -0
  446. package/dist/esm/calcite-input_2.entry.js +2 -0
  447. package/dist/esm/calcite-input_2.entry.js.map +1 -0
  448. package/dist/esm/calcite-label.entry.js +2 -0
  449. package/dist/esm/calcite-label.entry.js.map +1 -0
  450. package/dist/esm/calcite-link.entry.js +2 -0
  451. package/dist/esm/calcite-link.entry.js.map +1 -0
  452. package/dist/esm/calcite-list-item-group.entry.js +2 -0
  453. package/dist/esm/calcite-list-item-group.entry.js.map +1 -0
  454. package/dist/esm/calcite-list_2.entry.js +2 -0
  455. package/dist/esm/calcite-list_2.entry.js.map +1 -0
  456. package/dist/esm/calcite-loader.entry.js +93 -0
  457. package/dist/esm/calcite-loader.entry.js.map +1 -0
  458. package/dist/esm/{solution-configuration.entry.js → calcite-modal_2.entry.js} +454 -9
  459. package/dist/esm/calcite-modal_2.entry.js.map +1 -0
  460. package/dist/esm/calcite-option-group.entry.js +2 -0
  461. package/dist/esm/calcite-option-group.entry.js.map +1 -0
  462. package/dist/esm/calcite-option_2.entry.js +2 -0
  463. package/dist/esm/calcite-option_2.entry.js.map +1 -0
  464. package/dist/esm/calcite-pagination.entry.js +2 -0
  465. package/dist/esm/calcite-pagination.entry.js.map +1 -0
  466. package/dist/esm/{calcite-shell-panel_14.entry.js → calcite-panel_12.entry.js} +468 -708
  467. package/dist/esm/calcite-panel_12.entry.js.map +1 -0
  468. package/dist/esm/calcite-pick-list-group.entry.js +2 -0
  469. package/dist/esm/calcite-pick-list-group.entry.js.map +1 -0
  470. package/dist/esm/calcite-pick-list-item.entry.js +2 -0
  471. package/dist/esm/calcite-pick-list-item.entry.js.map +1 -0
  472. package/dist/esm/calcite-pick-list.entry.js +2 -0
  473. package/dist/esm/calcite-pick-list.entry.js.map +1 -0
  474. package/dist/esm/calcite-popover-manager.entry.js +2 -0
  475. package/dist/esm/calcite-popover-manager.entry.js.map +1 -0
  476. package/dist/esm/calcite-radio-button-group.entry.js +2 -0
  477. package/dist/esm/calcite-radio-button-group.entry.js.map +1 -0
  478. package/dist/esm/calcite-radio-button.entry.js +2 -0
  479. package/dist/esm/calcite-radio-button.entry.js.map +1 -0
  480. package/dist/esm/calcite-rating.entry.js +2 -0
  481. package/dist/esm/calcite-rating.entry.js.map +1 -0
  482. package/dist/esm/calcite-shell-center-row.entry.js +2 -0
  483. package/dist/esm/calcite-shell-center-row.entry.js.map +1 -0
  484. package/dist/esm/calcite-sortable-list.entry.js +2 -0
  485. package/dist/esm/calcite-sortable-list.entry.js.map +1 -0
  486. package/dist/esm/calcite-split-button.entry.js +2 -0
  487. package/dist/esm/calcite-split-button.entry.js.map +1 -0
  488. package/dist/esm/calcite-stepper-item.entry.js +2 -0
  489. package/dist/esm/calcite-stepper-item.entry.js.map +1 -0
  490. package/dist/esm/calcite-stepper.entry.js +2 -0
  491. package/dist/esm/calcite-stepper.entry.js.map +1 -0
  492. package/dist/esm/calcite-switch.entry.js +2 -0
  493. package/dist/esm/calcite-switch.entry.js.map +1 -0
  494. package/dist/esm/calcite-tile-select-group.entry.js +2 -0
  495. package/dist/esm/calcite-tile-select-group.entry.js.map +1 -0
  496. package/dist/esm/calcite-tile-select.entry.js +2 -0
  497. package/dist/esm/calcite-tile-select.entry.js.map +1 -0
  498. package/dist/esm/calcite-tile.entry.js +2 -0
  499. package/dist/esm/calcite-tile.entry.js.map +1 -0
  500. package/dist/esm/calcite-time-picker.entry.js +2 -0
  501. package/dist/esm/calcite-time-picker.entry.js.map +1 -0
  502. package/dist/esm/calcite-tip-group.entry.js +2 -0
  503. package/dist/esm/calcite-tip-group.entry.js.map +1 -0
  504. package/dist/esm/calcite-tip-manager.entry.js +2 -0
  505. package/dist/esm/calcite-tip-manager.entry.js.map +1 -0
  506. package/dist/esm/calcite-tip.entry.js +2 -0
  507. package/dist/esm/calcite-tip.entry.js.map +1 -0
  508. package/dist/esm/calcite-tooltip-manager.entry.js +2 -0
  509. package/dist/esm/calcite-tooltip-manager.entry.js.map +1 -0
  510. package/dist/esm/calcite-tooltip.entry.js +2 -0
  511. package/dist/esm/calcite-tooltip.entry.js.map +1 -0
  512. package/dist/esm/calcite-tree_3.entry.js +2 -0
  513. package/dist/esm/calcite-tree_3.entry.js.map +1 -0
  514. package/dist/esm/check-list.entry.js +2 -0
  515. package/dist/esm/check-list.entry.js.map +1 -0
  516. package/dist/esm/conditionalSlot-bb4cab11.js +2 -0
  517. package/dist/esm/conditionalSlot-bb4cab11.js.map +1 -0
  518. package/dist/esm/config-buffer-tools.entry.js +2 -0
  519. package/dist/esm/config-buffer-tools.entry.js.map +1 -0
  520. package/dist/esm/config-draw-tools.entry.js +2 -0
  521. package/dist/esm/config-draw-tools.entry.js.map +1 -0
  522. package/dist/esm/config-layer-picker.entry.js +4 -2
  523. package/dist/esm/config-layer-picker.entry.js.map +1 -0
  524. package/dist/esm/config-pdf-download.entry.js +2 -0
  525. package/dist/esm/config-pdf-download.entry.js.map +1 -0
  526. package/dist/esm/date-45de0016.js +2 -0
  527. package/dist/esm/date-45de0016.js.map +1 -0
  528. package/dist/esm/debounce-4c884e5c.js +2 -0
  529. package/dist/esm/debounce-4c884e5c.js.map +1 -0
  530. package/dist/esm/dom-e593bf85.js +2 -0
  531. package/dist/esm/dom-e593bf85.js.map +1 -0
  532. package/dist/esm/filter-82935f2d.js +2 -0
  533. package/dist/esm/filter-82935f2d.js.map +1 -0
  534. package/dist/esm/floating-ui-69a55a27.js +2 -0
  535. package/dist/esm/floating-ui-69a55a27.js.map +1 -0
  536. package/dist/esm/form-dbfde8ce.js +2 -0
  537. package/dist/esm/form-dbfde8ce.js.map +1 -0
  538. package/dist/esm/guid-15fce7c0.js +2 -0
  539. package/dist/esm/guid-15fce7c0.js.map +1 -0
  540. package/dist/esm/index-15022d11.js +2 -0
  541. package/dist/esm/index-15022d11.js.map +1 -0
  542. package/dist/esm/index-9c882a6e.js +2 -0
  543. package/dist/esm/index-9c882a6e.js.map +1 -0
  544. package/dist/esm/index-d33ebc35.js +2 -0
  545. package/dist/esm/index-d33ebc35.js.map +1 -0
  546. package/dist/esm/index.js +2 -0
  547. package/dist/esm/index.js.map +1 -0
  548. package/dist/esm/interactive-822ffed6.js +2 -0
  549. package/dist/esm/interactive-822ffed6.js.map +1 -0
  550. package/dist/esm/interfaces-1bdfc3a8.js +72 -0
  551. package/dist/esm/interfaces-1bdfc3a8.js.map +1 -0
  552. package/dist/esm/interfaces-4ae145eb.js +2 -0
  553. package/dist/esm/interfaces-4ae145eb.js.map +1 -0
  554. package/dist/esm/key-acb660e7.js +2 -0
  555. package/dist/esm/key-acb660e7.js.map +1 -0
  556. package/dist/esm/label-d411de44.js +2 -0
  557. package/dist/esm/label-d411de44.js.map +1 -0
  558. package/dist/esm/labelFormats-b37958c3.js +2 -0
  559. package/dist/esm/labelFormats-b37958c3.js.map +1 -0
  560. package/dist/esm/loadModules-d3b50f95.js +2 -0
  561. package/dist/esm/loadModules-d3b50f95.js.map +1 -0
  562. package/dist/esm/loader.js +3 -1
  563. package/dist/esm/loader.js.map +1 -0
  564. package/dist/esm/locale-0b490b02.js +2 -0
  565. package/dist/esm/locale-0b490b02.js.map +1 -0
  566. package/dist/esm/locale-0e10d7e5.js +2 -0
  567. package/dist/esm/locale-0e10d7e5.js.map +1 -0
  568. package/dist/esm/map-search.entry.js +2 -0
  569. package/dist/esm/map-search.entry.js.map +1 -0
  570. package/dist/esm/mapViewUtils-809947c8.js +284 -0
  571. package/dist/esm/mapViewUtils-809947c8.js.map +1 -0
  572. package/dist/esm/math-552c5420.js +2 -0
  573. package/dist/esm/math-552c5420.js.map +1 -0
  574. package/dist/esm/nonChromiumPlatformUtils-ee349005.js +2 -0
  575. package/dist/esm/nonChromiumPlatformUtils-ee349005.js.map +1 -0
  576. package/dist/esm/observers-31601001.js +2 -0
  577. package/dist/esm/observers-31601001.js.map +1 -0
  578. package/dist/esm/openCloseComponent-5caff873.js +2 -0
  579. package/dist/esm/openCloseComponent-5caff873.js.map +1 -0
  580. package/dist/esm/public-notification.entry.js +4 -2
  581. package/dist/esm/public-notification.entry.js.map +1 -0
  582. package/dist/esm/publicNotificationStore-060c59c8.js +2 -0
  583. package/dist/esm/publicNotificationStore-060c59c8.js.map +1 -0
  584. package/dist/esm/publicNotificationUtils-5cb5a607.js +2 -0
  585. package/dist/esm/publicNotificationUtils-5cb5a607.js.map +1 -0
  586. package/dist/esm/resources-2235e4ff.js +2 -0
  587. package/dist/esm/resources-2235e4ff.js.map +1 -0
  588. package/dist/esm/resources-3d641588.js +2 -0
  589. package/dist/esm/resources-3d641588.js.map +1 -0
  590. package/dist/esm/resources-436ae282.js +2 -0
  591. package/dist/esm/resources-436ae282.js.map +1 -0
  592. package/dist/esm/resources-4d02cb48.js +2 -0
  593. package/dist/esm/resources-4d02cb48.js.map +1 -0
  594. package/dist/esm/resources-78132e50.js +2 -0
  595. package/dist/esm/resources-78132e50.js.map +1 -0
  596. package/dist/esm/resources-7d4a587f.js +2 -0
  597. package/dist/esm/resources-7d4a587f.js.map +1 -0
  598. package/dist/esm/resources-971845d1.js +2 -0
  599. package/dist/esm/resources-971845d1.js.map +1 -0
  600. package/dist/esm/resources-9eb63965.js +2 -0
  601. package/dist/esm/resources-9eb63965.js.map +1 -0
  602. package/dist/esm/resources-d60362c3.js +2 -0
  603. package/dist/esm/resources-d60362c3.js.map +1 -0
  604. package/dist/esm/resources-e3a5cf27.js +2 -0
  605. package/dist/esm/resources-e3a5cf27.js.map +1 -0
  606. package/dist/esm/shared-list-render-4e9d47a3.js +2 -0
  607. package/dist/esm/shared-list-render-4e9d47a3.js.map +1 -0
  608. package/dist/esm/solution-config-modal.entry.js +127 -0
  609. package/dist/esm/solution-config-modal.entry.js.map +1 -0
  610. package/dist/esm/{solution-contents_3.entry.js → solution-contents_7.entry.js} +662 -3
  611. package/dist/esm/solution-contents_7.entry.js.map +1 -0
  612. package/dist/esm/{solution-store-b3c65467.js → solution-store-d8519c64.js} +6 -4
  613. package/dist/esm/solution-store-d8519c64.js.map +1 -0
  614. package/dist/esm/solutions-components.js +3 -1
  615. package/dist/esm/solutions-components.js.map +1 -0
  616. package/dist/esm/sortable.esm-3b2eaa5c.js +2 -0
  617. package/dist/esm/sortable.esm-3b2eaa5c.js.map +1 -0
  618. package/dist/esm/store-manager.entry.js +2 -0
  619. package/dist/esm/store-manager.entry.js.map +1 -0
  620. package/dist/esm/time-f014778c.js +2 -0
  621. package/dist/esm/time-f014778c.js.map +1 -0
  622. package/dist/esm/utils-3f4ee4c3.js +2 -0
  623. package/dist/esm/utils-3f4ee4c3.js.map +1 -0
  624. package/dist/esm/utils-583554bc.js +2 -0
  625. package/dist/esm/utils-583554bc.js.map +1 -0
  626. package/dist/solutions-components/index.esm.js +2 -0
  627. package/dist/solutions-components/index.esm.js.map +1 -0
  628. package/dist/solutions-components/p-06dab43c.entry.js +140 -0
  629. package/dist/solutions-components/p-06dab43c.entry.js.map +1 -0
  630. package/dist/solutions-components/p-0bbe4865.entry.js +620 -0
  631. package/dist/solutions-components/p-0bbe4865.entry.js.map +1 -0
  632. package/dist/solutions-components/p-0fddf8a4.entry.js +349 -0
  633. package/dist/solutions-components/p-0fddf8a4.entry.js.map +1 -0
  634. package/dist/solutions-components/p-11068040.entry.js +1121 -0
  635. package/dist/solutions-components/p-11068040.entry.js.map +1 -0
  636. package/dist/solutions-components/p-11bc6805.entry.js +87 -0
  637. package/dist/solutions-components/p-11bc6805.entry.js.map +1 -0
  638. package/dist/solutions-components/p-13b37f05.js +308 -3
  639. package/dist/solutions-components/p-13b37f05.js.map +1 -0
  640. package/dist/solutions-components/p-1dfb5fae.entry.js +713 -0
  641. package/dist/solutions-components/p-1dfb5fae.entry.js.map +1 -0
  642. package/dist/solutions-components/p-1e15b1a3.js +183 -2
  643. package/dist/solutions-components/p-1e15b1a3.js.map +1 -0
  644. package/dist/solutions-components/p-1e5bc9c3.entry.js +96 -0
  645. package/dist/solutions-components/p-1e5bc9c3.entry.js.map +1 -0
  646. package/dist/solutions-components/p-1ed05745.entry.js +214 -0
  647. package/dist/solutions-components/p-1ed05745.entry.js.map +1 -0
  648. package/dist/solutions-components/p-20bdf42f.js +407 -14
  649. package/dist/solutions-components/p-20bdf42f.js.map +1 -0
  650. package/dist/solutions-components/p-22574d83.entry.js +74 -0
  651. package/dist/solutions-components/p-22574d83.entry.js.map +1 -0
  652. package/dist/solutions-components/p-23904a3d.js +401 -3
  653. package/dist/solutions-components/p-23904a3d.js.map +1 -0
  654. package/dist/solutions-components/p-26484399.entry.js +108 -0
  655. package/dist/solutions-components/p-26484399.entry.js.map +1 -0
  656. package/dist/solutions-components/p-2910dd9e.js +4094 -0
  657. package/dist/solutions-components/p-2910dd9e.js.map +1 -0
  658. package/dist/solutions-components/p-29bdbd3e.entry.js +280 -0
  659. package/dist/solutions-components/p-29bdbd3e.entry.js.map +1 -0
  660. package/dist/solutions-components/p-2ac06389.js +25 -16
  661. package/dist/solutions-components/p-2ac06389.js.map +1 -0
  662. package/dist/solutions-components/p-2bce7fa2.entry.js +45 -0
  663. package/dist/solutions-components/p-2bce7fa2.entry.js.map +1 -0
  664. package/dist/solutions-components/p-2e9ed892.js +48 -1
  665. package/dist/solutions-components/p-2e9ed892.js.map +1 -0
  666. package/dist/solutions-components/p-2f12ff1b.entry.js +202 -0
  667. package/dist/solutions-components/p-2f12ff1b.entry.js.map +1 -0
  668. package/dist/solutions-components/p-30810b45.entry.js +1250 -0
  669. package/dist/solutions-components/p-30810b45.entry.js.map +1 -0
  670. package/dist/solutions-components/p-32a67cb2.js +207 -2
  671. package/dist/solutions-components/p-32a67cb2.js.map +1 -0
  672. package/dist/solutions-components/p-341ff921.entry.js +449 -0
  673. package/dist/solutions-components/p-341ff921.entry.js.map +1 -0
  674. package/dist/solutions-components/p-36ce64e4.entry.js +215 -0
  675. package/dist/solutions-components/p-36ce64e4.entry.js.map +1 -0
  676. package/dist/solutions-components/p-374a5031.js +107 -2
  677. package/dist/solutions-components/p-374a5031.js.map +1 -0
  678. package/dist/solutions-components/p-38ddadf2.entry.js +342 -0
  679. package/dist/solutions-components/p-38ddadf2.entry.js.map +1 -0
  680. package/dist/solutions-components/p-3b010ce1.js +19 -1
  681. package/dist/solutions-components/p-3b010ce1.js.map +1 -0
  682. package/dist/solutions-components/p-3f6b0af4.js +221 -2
  683. package/dist/solutions-components/p-3f6b0af4.js.map +1 -0
  684. package/dist/solutions-components/p-400e1427.entry.js +236 -0
  685. package/dist/solutions-components/p-400e1427.entry.js.map +1 -0
  686. package/dist/solutions-components/p-40d7cf01.entry.js +228 -0
  687. package/dist/solutions-components/p-40d7cf01.entry.js.map +1 -0
  688. package/dist/solutions-components/p-45556aff.entry.js +215 -0
  689. package/dist/solutions-components/p-45556aff.entry.js.map +1 -0
  690. package/dist/solutions-components/p-49aaa793.entry.js +95 -0
  691. package/dist/solutions-components/p-49aaa793.entry.js.map +1 -0
  692. package/dist/solutions-components/p-4e32bf8c.js +484 -1
  693. package/dist/solutions-components/p-4e32bf8c.js.map +1 -0
  694. package/dist/solutions-components/p-4e89b243.entry.js +479 -0
  695. package/dist/solutions-components/p-4e89b243.entry.js.map +1 -0
  696. package/dist/solutions-components/p-515637fb.entry.js +183 -0
  697. package/dist/solutions-components/p-515637fb.entry.js.map +1 -0
  698. package/dist/solutions-components/p-5243a654.entry.js +147 -0
  699. package/dist/solutions-components/p-5243a654.entry.js.map +1 -0
  700. package/dist/solutions-components/p-55673790.entry.js +82 -0
  701. package/dist/solutions-components/p-55673790.entry.js.map +1 -0
  702. package/dist/solutions-components/p-56350bff.js +173 -2
  703. package/dist/solutions-components/p-56350bff.js.map +1 -0
  704. package/dist/solutions-components/p-58b374c0.entry.js +347 -0
  705. package/dist/solutions-components/p-58b374c0.entry.js.map +1 -0
  706. package/dist/solutions-components/p-58c69df2.js +2024 -2
  707. package/dist/solutions-components/p-58c69df2.js.map +1 -0
  708. package/dist/solutions-components/p-59fd6684.entry.js +22 -0
  709. package/dist/solutions-components/p-59fd6684.entry.js.map +1 -0
  710. package/dist/solutions-components/p-5b0d7c7d.js +35 -16
  711. package/dist/solutions-components/p-5b0d7c7d.js.map +1 -0
  712. package/dist/solutions-components/p-5b20090f.entry.js +22189 -0
  713. package/dist/solutions-components/p-5b20090f.entry.js.map +1 -0
  714. package/dist/solutions-components/p-5cf33602.js +43 -2
  715. package/dist/solutions-components/p-5cf33602.js.map +1 -0
  716. package/dist/solutions-components/p-600e23c6.js +1770 -2
  717. package/dist/solutions-components/p-600e23c6.js.map +1 -0
  718. package/dist/solutions-components/p-61398a7b.entry.js +74 -0
  719. package/dist/solutions-components/p-61398a7b.entry.js.map +1 -0
  720. package/dist/solutions-components/p-63a05701.entry.js +45 -0
  721. package/dist/solutions-components/p-63a05701.entry.js.map +1 -0
  722. package/dist/solutions-components/p-63f6e8f1.js +16 -1
  723. package/dist/solutions-components/p-63f6e8f1.js.map +1 -0
  724. package/dist/solutions-components/p-64a2040e.entry.js +63 -0
  725. package/dist/solutions-components/p-64a2040e.entry.js.map +1 -0
  726. package/dist/solutions-components/p-64c63eb2.entry.js +157 -0
  727. package/dist/solutions-components/p-64c63eb2.entry.js.map +1 -0
  728. package/dist/solutions-components/p-6940e2fd.entry.js +100 -0
  729. package/dist/solutions-components/p-6940e2fd.entry.js.map +1 -0
  730. package/dist/solutions-components/p-69900b68.entry.js +152 -0
  731. package/dist/solutions-components/p-69900b68.entry.js.map +1 -0
  732. package/dist/solutions-components/p-699125b6.entry.js +44 -0
  733. package/dist/solutions-components/p-699125b6.entry.js.map +1 -0
  734. package/dist/solutions-components/p-6d0899c8.entry.js +118 -0
  735. package/dist/solutions-components/p-6d0899c8.entry.js.map +1 -0
  736. package/dist/solutions-components/p-6e0da576.js +15 -1
  737. package/dist/solutions-components/p-6e0da576.js.map +1 -0
  738. package/dist/solutions-components/p-6fe17794.js +11 -1
  739. package/dist/solutions-components/p-6fe17794.js.map +1 -0
  740. package/dist/solutions-components/p-708a63a8.js +14 -1
  741. package/dist/solutions-components/p-708a63a8.js.map +1 -0
  742. package/dist/solutions-components/p-729708a3.js +16 -1
  743. package/dist/solutions-components/p-729708a3.js.map +1 -0
  744. package/dist/solutions-components/p-73e23995.js +8 -1
  745. package/dist/solutions-components/p-73e23995.js.map +1 -0
  746. package/dist/solutions-components/p-75f54a34.entry.js +883 -0
  747. package/dist/solutions-components/p-75f54a34.entry.js.map +1 -0
  748. package/dist/solutions-components/p-77182c3a.js +3017 -1
  749. package/dist/solutions-components/p-77182c3a.js.map +1 -0
  750. package/dist/solutions-components/p-794ba85d.entry.js +175 -0
  751. package/dist/solutions-components/p-794ba85d.entry.js.map +1 -0
  752. package/dist/solutions-components/p-79cde78e.entry.js +203 -0
  753. package/dist/solutions-components/p-79cde78e.entry.js.map +1 -0
  754. package/dist/solutions-components/p-7a2c75a4.entry.js +230 -0
  755. package/dist/solutions-components/p-7a2c75a4.entry.js.map +1 -0
  756. package/dist/solutions-components/p-7daea1df.js +43 -1
  757. package/dist/solutions-components/p-7daea1df.js.map +1 -0
  758. package/dist/solutions-components/p-7de77097.entry.js +162 -0
  759. package/dist/solutions-components/p-7de77097.entry.js.map +1 -0
  760. package/dist/solutions-components/p-7f2b74a9.entry.js +56 -0
  761. package/dist/solutions-components/p-7f2b74a9.entry.js.map +1 -0
  762. package/dist/solutions-components/p-81e606c0.entry.js +915 -0
  763. package/dist/solutions-components/p-81e606c0.entry.js.map +1 -0
  764. package/dist/solutions-components/p-86908777.js +62 -3
  765. package/dist/solutions-components/p-86908777.js.map +1 -0
  766. package/dist/solutions-components/p-87a0ccb4.entry.js +254 -0
  767. package/dist/solutions-components/p-87a0ccb4.entry.js.map +1 -0
  768. package/dist/solutions-components/p-93d3119d.js +1950 -1
  769. package/dist/solutions-components/p-93d3119d.js.map +1 -0
  770. package/dist/solutions-components/p-958e2979.entry.js +111 -0
  771. package/dist/solutions-components/p-958e2979.entry.js.map +1 -0
  772. package/dist/solutions-components/p-95ddb529.entry.js +181 -0
  773. package/dist/solutions-components/p-95ddb529.entry.js.map +1 -0
  774. package/dist/solutions-components/p-991ee695.js +111 -1
  775. package/dist/solutions-components/p-991ee695.js.map +1 -0
  776. package/dist/solutions-components/p-99d9b624.entry.js +177 -0
  777. package/dist/solutions-components/p-99d9b624.entry.js.map +1 -0
  778. package/dist/solutions-components/p-9a9955db.js +43 -1
  779. package/dist/solutions-components/p-9a9955db.js.map +1 -0
  780. package/dist/solutions-components/p-9d925d5b.entry.js +233 -0
  781. package/dist/solutions-components/p-9d925d5b.entry.js.map +1 -0
  782. package/dist/solutions-components/p-9dc0210f.entry.js +125 -0
  783. package/dist/solutions-components/p-9dc0210f.entry.js.map +1 -0
  784. package/dist/solutions-components/p-9ef1328a.entry.js +542 -0
  785. package/dist/solutions-components/p-9ef1328a.entry.js.map +1 -0
  786. package/dist/solutions-components/p-9fec2884.entry.js +216 -0
  787. package/dist/solutions-components/p-9fec2884.entry.js.map +1 -0
  788. package/dist/solutions-components/p-a1786d11.entry.js +2380 -0
  789. package/dist/solutions-components/p-a1786d11.entry.js.map +1 -0
  790. package/dist/solutions-components/p-a2ada355.entry.js +135 -0
  791. package/dist/solutions-components/p-a2ada355.entry.js.map +1 -0
  792. package/dist/solutions-components/p-a57adb27.entry.js +154 -0
  793. package/dist/solutions-components/p-a57adb27.entry.js.map +1 -0
  794. package/dist/solutions-components/p-a80b3880.js +16 -1
  795. package/dist/solutions-components/p-a80b3880.js.map +1 -0
  796. package/dist/solutions-components/p-a88dd457.entry.js +123 -0
  797. package/dist/solutions-components/p-a88dd457.entry.js.map +1 -0
  798. package/dist/solutions-components/p-ac6efd19.entry.js +57 -0
  799. package/dist/solutions-components/p-ac6efd19.entry.js.map +1 -0
  800. package/dist/solutions-components/p-ae1fd76b.js +13 -1
  801. package/dist/solutions-components/p-ae1fd76b.js.map +1 -0
  802. package/dist/solutions-components/p-afffa81a.entry.js +140 -0
  803. package/dist/solutions-components/p-afffa81a.entry.js.map +1 -0
  804. package/dist/solutions-components/p-b0f3ed4d.entry.js +376 -0
  805. package/dist/solutions-components/p-b0f3ed4d.entry.js.map +1 -0
  806. package/dist/solutions-components/p-b359dc78.js +43 -1
  807. package/dist/solutions-components/p-b359dc78.js.map +1 -0
  808. package/dist/solutions-components/p-b66cba3e.entry.js +97 -0
  809. package/dist/solutions-components/p-b66cba3e.entry.js.map +1 -0
  810. package/dist/solutions-components/p-b6c2f470.entry.js +574 -0
  811. package/dist/solutions-components/p-b6c2f470.entry.js.map +1 -0
  812. package/dist/solutions-components/p-b978636e.js +16 -1
  813. package/dist/solutions-components/p-b978636e.js.map +1 -0
  814. package/dist/solutions-components/p-bd19837e.entry.js +96 -0
  815. package/dist/solutions-components/p-bd19837e.entry.js.map +1 -0
  816. package/dist/solutions-components/p-be8cc144.entry.js +567 -0
  817. package/dist/solutions-components/p-be8cc144.entry.js.map +1 -0
  818. package/dist/solutions-components/p-bfd20deb.entry.js +80 -0
  819. package/dist/solutions-components/p-bfd20deb.entry.js.map +1 -0
  820. package/dist/{esm/mapViewUtils-09f1e7bd.js → solutions-components/p-c20bd963.js} +3 -1
  821. package/dist/solutions-components/p-c20bd963.js.map +1 -0
  822. package/dist/solutions-components/p-c2c8442d.entry.js +140 -0
  823. package/dist/solutions-components/p-c2c8442d.entry.js.map +1 -0
  824. package/dist/solutions-components/p-c3f93cec.entry.js +158 -0
  825. package/dist/solutions-components/p-c3f93cec.entry.js.map +1 -0
  826. package/dist/solutions-components/p-c5721b0f.entry.js +127 -0
  827. package/dist/solutions-components/p-c5721b0f.entry.js.map +1 -0
  828. package/dist/solutions-components/p-c818e661.entry.js +107 -0
  829. package/dist/solutions-components/p-c818e661.entry.js.map +1 -0
  830. package/dist/solutions-components/p-c9870dc4.entry.js +38 -0
  831. package/dist/solutions-components/p-c9870dc4.entry.js.map +1 -0
  832. package/dist/solutions-components/p-cbd9fecf.js +500 -2
  833. package/dist/solutions-components/p-cbd9fecf.js.map +1 -0
  834. package/dist/solutions-components/p-cf59eb16.entry.js +2423 -0
  835. package/dist/solutions-components/p-cf59eb16.entry.js.map +1 -0
  836. package/dist/solutions-components/p-cfb300c6.entry.js +250 -0
  837. package/dist/solutions-components/p-cfb300c6.entry.js.map +1 -0
  838. package/dist/solutions-components/p-d48a24e6.js +756 -2
  839. package/dist/solutions-components/p-d48a24e6.js.map +1 -0
  840. package/dist/solutions-components/p-dbad98e8.js +124 -2
  841. package/dist/solutions-components/p-dbad98e8.js.map +1 -0
  842. package/dist/solutions-components/p-dd79118e.entry.js +708 -0
  843. package/dist/solutions-components/p-dd79118e.entry.js.map +1 -0
  844. package/dist/solutions-components/p-de5416e8.js +30 -1
  845. package/dist/solutions-components/p-de5416e8.js.map +1 -0
  846. package/dist/solutions-components/p-de881187.entry.js +87 -0
  847. package/dist/solutions-components/p-de881187.entry.js.map +1 -0
  848. package/dist/solutions-components/p-e1905f7b.entry.js +120 -0
  849. package/dist/solutions-components/p-e1905f7b.entry.js.map +1 -0
  850. package/dist/solutions-components/p-e405ebe8.entry.js +93 -0
  851. package/dist/solutions-components/p-e405ebe8.entry.js.map +1 -0
  852. package/dist/solutions-components/p-e515767a.entry.js +116 -0
  853. package/dist/solutions-components/p-e515767a.entry.js.map +1 -0
  854. package/dist/solutions-components/p-e611d8c8.js +30 -1
  855. package/dist/solutions-components/p-e611d8c8.js.map +1 -0
  856. package/dist/solutions-components/p-e6a695a5.js +103 -2
  857. package/dist/solutions-components/p-e6a695a5.js.map +1 -0
  858. package/dist/solutions-components/p-e6fb9cde.entry.js +1872 -0
  859. package/dist/solutions-components/p-e6fb9cde.entry.js.map +1 -0
  860. package/dist/solutions-components/p-e947d3b0.js +7 -1
  861. package/dist/solutions-components/p-e947d3b0.js.map +1 -0
  862. package/dist/solutions-components/p-e99b1247.js +207 -1
  863. package/dist/solutions-components/p-e99b1247.js.map +1 -0
  864. package/dist/solutions-components/p-eb5b78c3.entry.js +125 -0
  865. package/dist/solutions-components/p-eb5b78c3.entry.js.map +1 -0
  866. package/dist/solutions-components/p-eb976965.js +35 -3
  867. package/dist/solutions-components/p-eb976965.js.map +1 -0
  868. package/dist/solutions-components/p-ed075c2f.entry.js +186 -0
  869. package/dist/solutions-components/p-ed075c2f.entry.js.map +1 -0
  870. package/dist/solutions-components/p-eeb0321d.js +15 -2
  871. package/dist/solutions-components/p-eeb0321d.js.map +1 -0
  872. package/dist/solutions-components/p-ef6f9e24.entry.js +609 -0
  873. package/dist/solutions-components/p-ef6f9e24.entry.js.map +1 -0
  874. package/dist/solutions-components/p-f0294899.entry.js +84 -0
  875. package/dist/solutions-components/p-f0294899.entry.js.map +1 -0
  876. package/dist/{esm/interfaces-e2a2064d.js → solutions-components/p-f04fdb9a.js} +3 -1
  877. package/dist/solutions-components/p-f04fdb9a.js.map +1 -0
  878. package/dist/solutions-components/p-f477f146.entry.js +310 -0
  879. package/dist/solutions-components/p-f477f146.entry.js.map +1 -0
  880. package/dist/solutions-components/p-f48821a2.js +60 -7
  881. package/dist/solutions-components/p-f48821a2.js.map +1 -0
  882. package/dist/solutions-components/p-f496ed0c.entry.js +150 -0
  883. package/dist/solutions-components/p-f496ed0c.entry.js.map +1 -0
  884. package/dist/solutions-components/p-f759a6e7.js +196 -1
  885. package/dist/solutions-components/p-f759a6e7.js.map +1 -0
  886. package/dist/solutions-components/p-fc884dd6.js +30 -16
  887. package/dist/solutions-components/p-fc884dd6.js.map +1 -0
  888. package/dist/solutions-components/solutions-components.css +10531 -1
  889. package/dist/solutions-components/solutions-components.esm.js +22 -1
  890. package/dist/solutions-components/solutions-components.esm.js.map +1 -0
  891. package/dist/solutions-components/utils/solution-store.ts +3 -3
  892. package/dist/solutions-components_commit.txt +8 -6
  893. package/dist/types/components/solution-config-modal/solution-config-modal.d.ts +69 -0
  894. package/dist/types/components/solution-configuration/solution-configuration.d.ts +4 -2
  895. package/dist/types/components.d.ts +43 -5
  896. package/dist/types/preact.d.ts +4 -0
  897. package/package.json +1 -1
  898. package/dist/cjs/calcite-modal.cjs.entry.js +0 -447
  899. package/dist/cjs/calcite-panel_2.cjs.entry.js +0 -437
  900. package/dist/cjs/calcite-scrim.cjs.entry.js +0 -62
  901. package/dist/esm/calcite-modal.entry.js +0 -443
  902. package/dist/esm/calcite-panel_2.entry.js +0 -432
  903. package/dist/esm/calcite-scrim.entry.js +0 -58
  904. package/dist/solutions-components/p-006c6ae1.entry.js +0 -11
  905. package/dist/solutions-components/p-04a37fc0.entry.js +0 -6
  906. package/dist/solutions-components/p-062dbde8.entry.js +0 -6
  907. package/dist/solutions-components/p-0b941521.entry.js +0 -11
  908. package/dist/solutions-components/p-0c80eb51.entry.js +0 -11
  909. package/dist/solutions-components/p-10501e21.entry.js +0 -23
  910. package/dist/solutions-components/p-109e4684.entry.js +0 -6
  911. package/dist/solutions-components/p-12dfd43e.entry.js +0 -11
  912. package/dist/solutions-components/p-1c3bcd99.entry.js +0 -12
  913. package/dist/solutions-components/p-1c589630.entry.js +0 -6
  914. package/dist/solutions-components/p-1fb471cf.entry.js +0 -11
  915. package/dist/solutions-components/p-23275dbd.entry.js +0 -6
  916. package/dist/solutions-components/p-236d76e7.entry.js +0 -11
  917. package/dist/solutions-components/p-29246858.entry.js +0 -11
  918. package/dist/solutions-components/p-2af67c67.entry.js +0 -6
  919. package/dist/solutions-components/p-2bee764f.entry.js +0 -11
  920. package/dist/solutions-components/p-2f6b4f04.entry.js +0 -6
  921. package/dist/solutions-components/p-305ae3fe.entry.js +0 -11
  922. package/dist/solutions-components/p-343e325d.entry.js +0 -11
  923. package/dist/solutions-components/p-3485601e.entry.js +0 -6
  924. package/dist/solutions-components/p-395e9b6c.entry.js +0 -6
  925. package/dist/solutions-components/p-39c5f2d2.entry.js +0 -6
  926. package/dist/solutions-components/p-3c4f2257.entry.js +0 -11
  927. package/dist/solutions-components/p-3c8ec7a3.entry.js +0 -12
  928. package/dist/solutions-components/p-4130fbcd.entry.js +0 -11
  929. package/dist/solutions-components/p-421cbb15.entry.js +0 -6
  930. package/dist/solutions-components/p-43fa414d.entry.js +0 -11
  931. package/dist/solutions-components/p-4760f22a.entry.js +0 -6
  932. package/dist/solutions-components/p-4fb6d2cf.entry.js +0 -11
  933. package/dist/solutions-components/p-54384555.entry.js +0 -11
  934. package/dist/solutions-components/p-5493f036.entry.js +0 -6
  935. package/dist/solutions-components/p-551fd063.entry.js +0 -11
  936. package/dist/solutions-components/p-5a61ef0d.entry.js +0 -6
  937. package/dist/solutions-components/p-6a3ce8f6.entry.js +0 -6
  938. package/dist/solutions-components/p-6b9dc092.js +0 -21
  939. package/dist/solutions-components/p-6be581f5.entry.js +0 -6
  940. package/dist/solutions-components/p-6cf432f9.entry.js +0 -11
  941. package/dist/solutions-components/p-70368b2b.entry.js +0 -6
  942. package/dist/solutions-components/p-708ffad0.entry.js +0 -11
  943. package/dist/solutions-components/p-7321ba65.entry.js +0 -11
  944. package/dist/solutions-components/p-75b35018.entry.js +0 -11
  945. package/dist/solutions-components/p-764c0a90.entry.js +0 -11
  946. package/dist/solutions-components/p-77031b01.entry.js +0 -11
  947. package/dist/solutions-components/p-778a1b4a.entry.js +0 -11
  948. package/dist/solutions-components/p-7cdc6089.entry.js +0 -6
  949. package/dist/solutions-components/p-81467529.entry.js +0 -6
  950. package/dist/solutions-components/p-834380d6.entry.js +0 -11
  951. package/dist/solutions-components/p-89cc843b.entry.js +0 -11
  952. package/dist/solutions-components/p-8e3a2736.entry.js +0 -11
  953. package/dist/solutions-components/p-8e8b182f.entry.js +0 -12
  954. package/dist/solutions-components/p-8f052987.entry.js +0 -11
  955. package/dist/solutions-components/p-93790a9e.entry.js +0 -37
  956. package/dist/solutions-components/p-9bbee464.entry.js +0 -6
  957. package/dist/solutions-components/p-9bdd4abe.entry.js +0 -17
  958. package/dist/solutions-components/p-a4a7d49d.entry.js +0 -17
  959. package/dist/solutions-components/p-a7036d68.entry.js +0 -11
  960. package/dist/solutions-components/p-ac91cd40.entry.js +0 -11
  961. package/dist/solutions-components/p-acd0a09f.entry.js +0 -11
  962. package/dist/solutions-components/p-acd3b2bf.entry.js +0 -11
  963. package/dist/solutions-components/p-aea937fb.entry.js +0 -12
  964. package/dist/solutions-components/p-b1b36556.entry.js +0 -11
  965. package/dist/solutions-components/p-b25f6ebe.js +0 -257
  966. package/dist/solutions-components/p-b2ae8634.entry.js +0 -6
  967. package/dist/solutions-components/p-ba104266.entry.js +0 -11
  968. package/dist/solutions-components/p-bfcab358.entry.js +0 -11
  969. package/dist/solutions-components/p-c848d1bd.entry.js +0 -29
  970. package/dist/solutions-components/p-c9766584.entry.js +0 -6
  971. package/dist/solutions-components/p-d2cc1b94.entry.js +0 -12
  972. package/dist/solutions-components/p-d51a72d2.entry.js +0 -11
  973. package/dist/solutions-components/p-d88fe54b.entry.js +0 -18
  974. package/dist/solutions-components/p-daee23cc.entry.js +0 -11
  975. package/dist/solutions-components/p-db7d14d5.entry.js +0 -12
  976. package/dist/solutions-components/p-dc724c1d.entry.js +0 -11
  977. package/dist/solutions-components/p-dc7bc20f.entry.js +0 -11
  978. package/dist/solutions-components/p-de242ea9.entry.js +0 -6
  979. package/dist/solutions-components/p-e4ebb82a.entry.js +0 -11
  980. package/dist/solutions-components/p-e64c5c11.entry.js +0 -6
  981. package/dist/solutions-components/p-e9e47eab.entry.js +0 -6
  982. package/dist/solutions-components/p-eb3be6d4.entry.js +0 -6
  983. package/dist/solutions-components/p-ed27c151.entry.js +0 -6
  984. package/dist/solutions-components/p-ef170bb1.entry.js +0 -6
  985. package/dist/solutions-components/p-f044863f.entry.js +0 -16
  986. package/dist/solutions-components/p-f0bae2f0.entry.js +0 -37
  987. package/dist/solutions-components/p-f5a3b34f.entry.js +0 -23
  988. package/dist/solutions-components/p-fa2575c2.entry.js +0 -6
  989. package/dist/solutions-components/p-fe0fdd8b.js +0 -36
@@ -0,0 +1,2423 @@
1
+ /*!
2
+ * Copyright 2022 Esri
3
+ * Licensed under the Apache License, Version 2.0
4
+ * http://www.apache.org/licenses/LICENSE-2.0
5
+ */
6
+ import { r as registerInstance, c as createEvent, h, H as Host, g as getElement } from './p-58c69df2.js';
7
+ import { f as focusElement, a as getSlotted, h as ensureId, j as isCalciteFocusable } from './p-32a67cb2.js';
8
+ import { c as createObserver } from './p-9a9955db.js';
9
+ import { c as connectConditionalSlotComponent, d as disconnectConditionalSlotComponent } from './p-5cf33602.js';
10
+ import { c as connectOpenCloseComponent, d as disconnectOpenCloseComponent } from './p-2e9ed892.js';
11
+ import { r as request, N as NODEJS_DEFAULT_REFERER_HEADER, c as cleanUrl, e as encodeQueryString, A as ArcGISAuthError, g as getProp, s as state } from './p-2910dd9e.js';
12
+ import { g as getLocaleComponentStrings } from './p-20bdf42f.js';
13
+ import './p-729708a3.js';
14
+ import './p-a80b3880.js';
15
+ import './p-f759a6e7.js';
16
+ import './p-f04fdb9a.js';
17
+ import './p-3b010ce1.js';
18
+
19
+ /**
20
+ * Traverses the slots of the open shadowroots and returns all children matching the query.
21
+ * @param {ShadowRoot | HTMLElement} root
22
+ * @param skipNode
23
+ * @param isMatch
24
+ * @param {number} maxDepth
25
+ * @param {number} depth
26
+ * @returns {HTMLElement[]}
27
+ */
28
+ function queryShadowRoot(root, skipNode, isMatch, maxDepth = 20, depth = 0) {
29
+ let matches = [];
30
+ // If the depth is above the max depth, abort the searching here.
31
+ if (depth >= maxDepth) {
32
+ return matches;
33
+ }
34
+ // Traverses a slot element
35
+ const traverseSlot = ($slot) => {
36
+ // Only check nodes that are of the type Node.ELEMENT_NODE
37
+ // Read more here https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType
38
+ const assignedNodes = $slot.assignedNodes().filter(node => node.nodeType === 1);
39
+ if (assignedNodes.length > 0) {
40
+ return queryShadowRoot(assignedNodes[0].parentElement, skipNode, isMatch, maxDepth, depth + 1);
41
+ }
42
+ return [];
43
+ };
44
+ // Go through each child and continue the traversing if necessary
45
+ // Even though the typing says that children can't be undefined, Edge 15 sometimes gives an undefined value.
46
+ // Therefore we fallback to an empty array if it is undefined.
47
+ const children = Array.from(root.children || []);
48
+ for (const $child of children) {
49
+ // Check if the node and its descendants should be skipped
50
+ if (skipNode($child)) {
51
+ continue;
52
+ }
53
+ // If the child matches we always add it
54
+ if (isMatch($child)) {
55
+ matches.push($child);
56
+ }
57
+ if ($child.shadowRoot != null) {
58
+ matches.push(...queryShadowRoot($child.shadowRoot, skipNode, isMatch, maxDepth, depth + 1));
59
+ }
60
+ else if ($child.tagName === "SLOT") {
61
+ matches.push(...traverseSlot($child));
62
+ }
63
+ else {
64
+ matches.push(...queryShadowRoot($child, skipNode, isMatch, maxDepth, depth + 1));
65
+ }
66
+ }
67
+ return matches;
68
+ }
69
+
70
+ /**
71
+ * Returns whether the element is hidden.
72
+ * @param $elem
73
+ */
74
+ function isHidden($elem) {
75
+ return $elem.hasAttribute("hidden")
76
+ || ($elem.hasAttribute("aria-hidden") && $elem.getAttribute("aria-hidden") !== "false")
77
+ // A quick and dirty way to check whether the element is hidden.
78
+ // For a more fine-grained check we could use "window.getComputedStyle" but we don't because of bad performance.
79
+ // If the element has visibility set to "hidden" or "collapse", display set to "none" or opacity set to "0" through CSS
80
+ // we won't be able to catch it here. We accept it due to the huge performance benefits.
81
+ || $elem.style.display === `none`
82
+ || $elem.style.opacity === `0`
83
+ || $elem.style.visibility === `hidden`
84
+ || $elem.style.visibility === `collapse`;
85
+ // If offsetParent is null we can assume that the element is hidden
86
+ // https://stackoverflow.com/questions/306305/what-would-make-offsetparent-null
87
+ //|| $elem.offsetParent == null;
88
+ }
89
+ /**
90
+ * Returns whether the element is disabled.
91
+ * @param $elem
92
+ */
93
+ function isDisabled($elem) {
94
+ return $elem.hasAttribute("disabled")
95
+ || ($elem.hasAttribute("aria-disabled") && $elem.getAttribute("aria-disabled") !== "false");
96
+ }
97
+ /**
98
+ * Determines whether an element is focusable.
99
+ * Read more here: https://stackoverflow.com/questions/1599660/which-html-elements-can-receive-focus/1600194#1600194
100
+ * Or here: https://stackoverflow.com/questions/18261595/how-to-check-if-a-dom-element-is-focusable
101
+ * @param $elem
102
+ */
103
+ function isFocusable($elem) {
104
+ // Discard elements that are removed from the tab order.
105
+ if ($elem.getAttribute("tabindex") === "-1" || isHidden($elem) || isDisabled($elem)) {
106
+ return false;
107
+ }
108
+ return (
109
+ // At this point we know that the element can have focus (eg. won't be -1) if the tabindex attribute exists
110
+ $elem.hasAttribute("tabindex")
111
+ // Anchor tags or area tags with a href set
112
+ || ($elem instanceof HTMLAnchorElement || $elem instanceof HTMLAreaElement) && $elem.hasAttribute("href")
113
+ // Form elements which are not disabled
114
+ || ($elem instanceof HTMLButtonElement
115
+ || $elem instanceof HTMLInputElement
116
+ || $elem instanceof HTMLTextAreaElement
117
+ || $elem instanceof HTMLSelectElement)
118
+ // IFrames
119
+ || $elem instanceof HTMLIFrameElement);
120
+ }
121
+
122
+ /*!
123
+ * All material copyright ESRI, All Rights Reserved, unless otherwise specified.
124
+ * See https://github.com/Esri/calcite-components/blob/master/LICENSE.md for details.
125
+ * v1.0.0-beta.97
126
+ */
127
+ const CSS = {
128
+ modal: "modal",
129
+ modalOpen: "modal--open",
130
+ title: "title",
131
+ header: "header",
132
+ footer: "footer",
133
+ scrim: "scrim",
134
+ back: "back",
135
+ close: "close",
136
+ secondary: "secondary",
137
+ primary: "primary",
138
+ overflowHidden: "overflow-hidden",
139
+ // these classes help apply the animation in phases to only set transform on open/close
140
+ // this helps avoid a positioning issue for any floating-ui-owning children
141
+ openingIdle: "modal--opening-idle",
142
+ openingActive: "modal--opening-active",
143
+ closingIdle: "modal--closing-idle",
144
+ closingActive: "modal--closing-active"
145
+ };
146
+ const ICONS = {
147
+ close: "x"
148
+ };
149
+ const SLOTS = {
150
+ content: "content",
151
+ header: "header",
152
+ back: "back",
153
+ secondary: "secondary",
154
+ primary: "primary"
155
+ };
156
+ const TEXT = {
157
+ close: "Close"
158
+ };
159
+
160
+ const modalCss = "@keyframes in{0%{opacity:0}100%{opacity:1}}@keyframes in-down{0%{opacity:0;transform:translate3D(0, -5px, 0)}100%{opacity:1;transform:translate3D(0, 0, 0)}}@keyframes in-up{0%{opacity:0;transform:translate3D(0, 5px, 0)}100%{opacity:1;transform:translate3D(0, 0, 0)}}@keyframes in-scale{0%{opacity:0;transform:scale3D(0.95, 0.95, 1)}100%{opacity:1;transform:scale3D(1, 1, 1)}}:root{--calcite-animation-timing:calc(150ms * var(--calcite-internal-duration-factor));--calcite-internal-duration-factor:var(--calcite-duration-factor, 1);--calcite-internal-animation-timing-fast:calc(100ms * var(--calcite-internal-duration-factor));--calcite-internal-animation-timing-medium:calc(200ms * var(--calcite-internal-duration-factor));--calcite-internal-animation-timing-slow:calc(300ms * var(--calcite-internal-duration-factor))}.calcite-animate{opacity:0;animation-fill-mode:both;animation-duration:var(--calcite-animation-timing)}.calcite-animate__in{animation-name:in}.calcite-animate__in-down{animation-name:in-down}.calcite-animate__in-up{animation-name:in-up}.calcite-animate__in-scale{animation-name:in-scale}@media (prefers-reduced-motion: reduce){:root{--calcite-internal-duration-factor:0.01}}:root{--calcite-floating-ui-transition:var(--calcite-animation-timing)}:host([hidden]){display:none}:host{position:fixed;inset:0px;z-index:700;display:flex;align-items:center;justify-content:center;overflow-y:hidden;color:var(--calcite-ui-text-2);opacity:0;visibility:hidden !important;transition:visibility 0ms linear var(--calcite-internal-animation-timing-slow), opacity var(--calcite-internal-animation-timing-slow) cubic-bezier(0.215, 0.44, 0.42, 0.88)}:host([scale=s]){--calcite-modal-padding:0.75rem;--calcite-modal-padding-large:1rem;--calcite-modal-title-text:var(--calcite-font-size-1);--calcite-modal-content-text:var(--calcite-font-size--1);--calcite-modal-padding-internal:0.75rem;--calcite-modal-padding-large-internal:1rem;--calcite-modal-title-text-internal:var(--calcite-font-size-1);--calcite-modal-content-text-internal:var(--calcite-font-size--1)}:host([scale=m]){--calcite-modal-padding:1rem;--calcite-modal-padding-large:1.25rem;--calcite-modal-title-text:var(--calcite-font-size-2);--calcite-modal-content-text:var(--calcite-font-size-0);--calcite-modal-padding-internal:1rem;--calcite-modal-padding-large-internal:1.25rem;--calcite-modal-title-text-internal:var(--calcite-font-size-2);--calcite-modal-content-text-internal:var(--calcite-font-size-0)}:host([scale=l]){--calcite-modal-padding:1.25rem;--calcite-modal-padding-large:1.5rem;--calcite-modal-title-text:var(--calcite-font-size-3);--calcite-modal-content-text:var(--calcite-font-size-1);--calcite-modal-padding-internal:1.25rem;--calcite-modal-padding-large-internal:1.5rem;--calcite-modal-title-text-internal:var(--calcite-font-size-3);--calcite-modal-content-text-internal:var(--calcite-font-size-1)}.scrim{--calcite-scrim-background:rgba(0, 0, 0, 0.75);position:fixed;inset:0px;display:flex;overflow-y:hidden}.modal{pointer-events:none;z-index:800;float:none;margin:1.5rem;box-sizing:border-box;display:flex;inline-size:100%;flex-direction:column;overflow:hidden;border-radius:0.25rem;background-color:var(--calcite-ui-foreground-1);opacity:0;--tw-shadow:0 2px 12px -4px rgba(0, 0, 0, 0.2), 0 2px 4px -2px rgba(0, 0, 0, 0.16);--tw-shadow-colored:0 2px 12px -4px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);-webkit-overflow-scrolling:touch;visibility:hidden;transition:transform var(--calcite-internal-animation-timing-slow) cubic-bezier(0.215, 0.44, 0.42, 0.88), visibility 0ms linear var(--calcite-internal-animation-timing-slow), opacity var(--calcite-internal-animation-timing-slow) cubic-bezier(0.215, 0.44, 0.42, 0.88);--calcite-modal-hidden-position:translate3d(0, 20px, 0);--calcite-modal-shown-position:translate3d(0, 0, 0)}.modal--opening-idle{transform:var(--calcite-modal-hidden-position)}.modal--opening-active{transform:var(--calcite-modal-shown-position)}.modal--closing-idle{transform:var(--calcite-modal-shown-position)}.modal--closing-active{transform:var(--calcite-modal-hidden-position)}:host([open]){opacity:1;visibility:visible !important;transition-delay:0ms}:host([open]) .modal--open{pointer-events:auto;visibility:visible;opacity:1;transition:transform var(--calcite-internal-animation-timing-slow) cubic-bezier(0.215, 0.44, 0.42, 0.88), visibility 0ms linear, opacity var(--calcite-internal-animation-timing-slow) cubic-bezier(0.215, 0.44, 0.42, 0.88), max-inline-size var(--calcite-internal-animation-timing-slow) cubic-bezier(0.215, 0.44, 0.42, 0.88), max-block-size var(--calcite-internal-animation-timing-slow) cubic-bezier(0.215, 0.44, 0.42, 0.88);transition-delay:0ms}.header{z-index:400;display:flex;min-inline-size:0px;max-inline-size:100%;border-start-start-radius:0.25rem;border-start-end-radius:0.25rem;border-width:0px;border-block-end-width:1px;border-style:solid;border-color:var(--calcite-ui-border-3);background-color:var(--calcite-ui-foreground-1);flex:0 0 auto}.close{order:2;margin:0px;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-style:none;background-color:transparent;color:var(--calcite-ui-text-3);outline-color:transparent;transition:all var(--calcite-animation-timing) ease-in-out 0s, outline 0s, outline-offset 0s;border-start-end-radius:0.25rem;padding-block:var(--calcite-modal-padding, var(--calcite-modal-padding-internal));padding-inline:var(--calcite-modal-padding, var(--calcite-modal-padding-internal));flex:0 0 auto}.close calcite-icon{pointer-events:none;vertical-align:-2px}.close:focus{outline:2px solid var(--calcite-ui-brand);outline-offset:-2px}.close:hover,.close:focus,.close:active{background-color:var(--calcite-ui-foreground-2);color:var(--calcite-ui-text-1)}.title{order:1;display:flex;min-inline-size:0px;align-items:center;flex:1 1 auto;padding-block:var(--calcite-modal-padding, var(--calcite-model-padding-internal));padding-inline:var(--calcite-modal-padding-large, var(--calcite-modal-padding-large-internal))}slot[name=header]::slotted(*),*::slotted([slot=header]){margin:0px;font-weight:var(--calcite-font-weight-normal);color:var(--calcite-ui-text-1);font-size:var(--calcite-modal-title-text, var(--calcite-modal-title-text-internal))}.content{position:relative;box-sizing:border-box;display:block;block-size:100%;overflow:auto;background-color:var(--calcite-ui-foreground-1);padding:0px;max-block-size:calc(100vh - 12rem)}.content--spaced{padding:var(--calcite-modal-padding)}.content--no-footer{border-end-end-radius:0.25rem;border-end-start-radius:0.25rem}slot[name=content]::slotted(*),*::slotted([slot=content]){font-size:var(--calcite-modal-content-text, var(--calcite-modal-context-text-internal))}:host([background-color=grey]) .content{background-color:var(--calcite-ui-background)}.footer{z-index:400;-webkit-margin-before:auto;margin-block-start:auto;box-sizing:border-box;display:flex;inline-size:100%;justify-content:space-between;border-end-end-radius:0.25rem;border-end-start-radius:0.25rem;border-width:0px;border-block-start-width:1px;border-style:solid;border-color:var(--calcite-ui-border-3);background-color:var(--calcite-ui-foreground-1);flex:0 0 auto;padding-block:var(--calcite-modal-padding, var(--calcite-modal-padding-internal));padding-inline:var(--calcite-modal-padding-large, var(--calcite-modal-padding-large-internal))}.footer--hide-back .back,.footer--hide-secondary .secondary{display:none}.back{display:block;-webkit-margin-end:auto;margin-inline-end:auto}.secondary{margin-inline:0.25rem;display:block}slot[name=primary]{display:block}:host([width=small]) .modal{inline-size:auto}:host([width=s]) .modal{max-inline-size:32rem}@media screen and (max-width: 35rem){:host([width=s]) .modal{margin:0px;block-size:100%;max-block-size:100%;inline-size:100%;max-inline-size:100%;border-radius:0px}:host([width=s]) .content{flex:1 1 auto;max-block-size:unset}:host([width=s][docked]){align-items:flex-end}}:host([width=m]) .modal{max-inline-size:48rem}@media screen and (max-width: 51rem){:host([width=m]) .modal{margin:0px;block-size:100%;max-block-size:100%;inline-size:100%;max-inline-size:100%;border-radius:0px}:host([width=m]) .content{flex:1 1 auto;max-block-size:unset}:host([width=m][docked]){align-items:flex-end}}:host([width=l]) .modal{max-inline-size:94rem}@media screen and (max-width: 97rem){:host([width=l]) .modal{margin:0px;block-size:100%;max-block-size:100%;inline-size:100%;max-inline-size:100%;border-radius:0px}:host([width=l]) .content{flex:1 1 auto;max-block-size:unset}:host([width=l][docked]){align-items:flex-end}}:host([fullscreen]){background-color:transparent}:host([fullscreen]) .modal{margin:0px;block-size:100%;max-block-size:100%;inline-size:100%;max-inline-size:100%;--calcite-modal-hidden-position:translate3D(0, 20px, 0) scale(0.95);--calcite-modal-shown-position:translate3D(0, 0, 0) scale(1)}:host([fullscreen]) .content{max-block-size:100%;flex:1 1 auto}:host([open][fullscreen]) .header{border-radius:0}:host([open][fullscreen]) .footer{border-radius:0}:host([docked]) .modal{block-size:auto}:host([docked]) .content{block-size:auto;flex:1 1 auto}@media screen and (max-width: 860px){:host([docked]) .modal{border-radius:var(--calcite-border-radius) var(--calcite-border-radius) 0 0}:host([docked]) .close{border-start-end-radius:var(--calcite-border-radius)}}:host([color=red]) .modal{border-color:var(--calcite-ui-danger)}:host([color=blue]) .modal{border-color:var(--calcite-ui-info)}:host([color=red]) .modal,:host([color=blue]) .modal{border-width:0px;border-block-start-width:4px;border-style:solid}:host([color=red]) .header,:host([color=blue]) .header{border-radius:0.25rem;border-end-end-radius:0px;border-end-start-radius:0px}@media screen and (max-width: 860px){slot[name=header]::slotted(*),*::slotted([slot=header]){font-size:var(--calcite-font-size-1)}.footer{position:sticky;inset-block-end:0px}}@media screen and (max-width: 480px){.footer{flex-direction:column}.back,.secondary{margin:0px;-webkit-margin-after:0.25rem;margin-block-end:0.25rem}}";
161
+
162
+ const isFocusableExtended = (el) => {
163
+ return isCalciteFocusable(el) || isFocusable(el);
164
+ };
165
+ const getFocusableElements = (el) => {
166
+ return queryShadowRoot(el, isHidden, isFocusableExtended);
167
+ };
168
+ const Modal = class {
169
+ constructor(hostRef) {
170
+ registerInstance(this, hostRef);
171
+ this.calciteModalBeforeClose = createEvent(this, "calciteModalBeforeClose", 6);
172
+ this.calciteModalClose = createEvent(this, "calciteModalClose", 6);
173
+ this.calciteModalBeforeOpen = createEvent(this, "calciteModalBeforeOpen", 6);
174
+ this.calciteModalOpen = createEvent(this, "calciteModalOpen", 6);
175
+ //--------------------------------------------------------------------------
176
+ //
177
+ // Properties
178
+ //
179
+ //--------------------------------------------------------------------------
180
+ /**
181
+ * When `true`, the component is active.
182
+ *
183
+ * @deprecated use `open` instead.
184
+ */
185
+ this.active = false;
186
+ /** When `true`, displays and positions the component. */
187
+ this.open = false;
188
+ /** Passes a function to run before the component closes. */
189
+ this.beforeClose = () => Promise.resolve();
190
+ /** When `true`, disables the component's close button. */
191
+ this.disableCloseButton = false;
192
+ /** When `true`, disables the closing of the component when clicked outside. */
193
+ this.disableOutsideClose = false;
194
+ /** Accessible name for the component's close button. */
195
+ this.intlClose = TEXT.close;
196
+ /** When `true`, disables the default close on escape behavior. */
197
+ this.disableEscape = false;
198
+ /** Specifies the size of the component. */
199
+ this.scale = "m";
200
+ /** Specifies the width of the component. Can use scale sizes or pass a number (displays in pixels). */
201
+ this.width = "m";
202
+ /** Sets the background color of the component's content. */
203
+ this.backgroundColor = "white";
204
+ /**
205
+ * When `true`, disables spacing to the content area slot.
206
+ *
207
+ * @deprecated Use `--calcite-modal-padding` CSS variable instead.
208
+ */
209
+ this.noPadding = false;
210
+ //--------------------------------------------------------------------------
211
+ //
212
+ // Variables
213
+ //
214
+ //--------------------------------------------------------------------------
215
+ this.hasFooter = true;
216
+ /**
217
+ * We use internal variable to make sure initially open modal can transition from closed state when rendered
218
+ *
219
+ * @private
220
+ */
221
+ this.isOpen = false;
222
+ this.mutationObserver = createObserver("mutation", () => this.updateFooterVisibility());
223
+ this.openTransitionProp = "opacity";
224
+ //--------------------------------------------------------------------------
225
+ //
226
+ // Private Methods
227
+ //
228
+ //--------------------------------------------------------------------------
229
+ this.setTransitionEl = (el) => {
230
+ this.transitionEl = el;
231
+ connectOpenCloseComponent(this);
232
+ };
233
+ this.openEnd = () => {
234
+ this.setFocus();
235
+ this.el.removeEventListener("calciteModalOpen", this.openEnd);
236
+ };
237
+ this.handleOutsideClose = () => {
238
+ if (this.disableOutsideClose) {
239
+ return;
240
+ }
241
+ this.close();
242
+ };
243
+ /** Close the modal, first running the `beforeClose` method */
244
+ this.close = () => {
245
+ return this.beforeClose(this.el).then(() => {
246
+ this.open = false;
247
+ this.isOpen = false;
248
+ focusElement(this.previousActiveElement);
249
+ this.removeOverflowHiddenClass();
250
+ });
251
+ };
252
+ this.focusFirstElement = () => {
253
+ focusElement(this.disableCloseButton ? getFocusableElements(this.el)[0] : this.closeButtonEl);
254
+ };
255
+ this.focusLastElement = () => {
256
+ const focusableElements = getFocusableElements(this.el).filter((el) => !el.getAttribute("data-focus-fence"));
257
+ if (focusableElements.length > 0) {
258
+ focusElement(focusableElements[focusableElements.length - 1]);
259
+ }
260
+ else {
261
+ focusElement(this.closeButtonEl);
262
+ }
263
+ };
264
+ this.updateFooterVisibility = () => {
265
+ this.hasFooter = !!getSlotted(this.el, [SLOTS.back, SLOTS.primary, SLOTS.secondary]);
266
+ };
267
+ }
268
+ //--------------------------------------------------------------------------
269
+ //
270
+ // Lifecycle
271
+ //
272
+ //--------------------------------------------------------------------------
273
+ componentWillLoad() {
274
+ // when modal initially renders, if active was set we need to open as watcher doesn't fire
275
+ if (this.open) {
276
+ requestAnimationFrame(() => this.openModal());
277
+ }
278
+ }
279
+ connectedCallback() {
280
+ var _a;
281
+ (_a = this.mutationObserver) === null || _a === void 0 ? void 0 : _a.observe(this.el, { childList: true, subtree: true });
282
+ this.updateFooterVisibility();
283
+ connectConditionalSlotComponent(this);
284
+ connectOpenCloseComponent(this);
285
+ if (this.open) {
286
+ this.active = this.open;
287
+ }
288
+ if (this.active) {
289
+ this.activeHandler(this.active);
290
+ }
291
+ }
292
+ disconnectedCallback() {
293
+ var _a;
294
+ this.removeOverflowHiddenClass();
295
+ (_a = this.mutationObserver) === null || _a === void 0 ? void 0 : _a.disconnect();
296
+ disconnectConditionalSlotComponent(this);
297
+ disconnectOpenCloseComponent(this);
298
+ }
299
+ render() {
300
+ return (h(Host, { "aria-describedby": this.contentId, "aria-labelledby": this.titleId, "aria-modal": "true", role: "dialog" }, h("calcite-scrim", { class: CSS.scrim, onClick: this.handleOutsideClose }), this.renderStyle(), h("div", { class: {
301
+ [CSS.modal]: true,
302
+ [CSS.modalOpen]: this.isOpen
303
+ }, ref: this.setTransitionEl }, h("div", { "data-focus-fence": true, onFocus: this.focusLastElement, tabindex: "0" }), h("div", { class: CSS.header }, this.renderCloseButton(), h("header", { class: CSS.title }, h("slot", { name: CSS.header }))), h("div", { class: {
304
+ content: true,
305
+ "content--spaced": !this.noPadding,
306
+ "content--no-footer": !this.hasFooter
307
+ }, ref: (el) => (this.modalContent = el) }, h("slot", { name: SLOTS.content })), this.renderFooter(), h("div", { "data-focus-fence": true, onFocus: this.focusFirstElement, tabindex: "0" }))));
308
+ }
309
+ renderFooter() {
310
+ return this.hasFooter ? (h("div", { class: CSS.footer, key: "footer" }, h("span", { class: CSS.back }, h("slot", { name: SLOTS.back })), h("span", { class: CSS.secondary }, h("slot", { name: SLOTS.secondary })), h("span", { class: CSS.primary }, h("slot", { name: SLOTS.primary })))) : null;
311
+ }
312
+ renderCloseButton() {
313
+ return !this.disableCloseButton ? (h("button", { "aria-label": this.intlClose, class: CSS.close, key: "button", onClick: this.close, ref: (el) => (this.closeButtonEl = el), title: this.intlClose }, h("calcite-icon", { icon: ICONS.close, scale: this.scale === "s" ? "s" : this.scale === "m" ? "m" : this.scale === "l" ? "l" : null }))) : null;
314
+ }
315
+ renderStyle() {
316
+ const hasCustomWidth = !isNaN(parseInt(`${this.width}`));
317
+ return hasCustomWidth ? (h("style", null, `
318
+ .${CSS.modal} {
319
+ max-width: ${this.width}px !important;
320
+ }
321
+ @media screen and (max-width: ${this.width}px) {
322
+ .${CSS.modal} {
323
+ height: 100% !important;
324
+ max-height: 100% !important;
325
+ width: 100% !important;
326
+ max-width: 100% !important;
327
+ margin: 0 !important;
328
+ border-radius: 0 !important;
329
+ }
330
+ .content {
331
+ flex: 1 1 auto !important;
332
+ max-height: unset !important;
333
+ }
334
+ }
335
+ `)) : null;
336
+ }
337
+ //--------------------------------------------------------------------------
338
+ //
339
+ // Event Listeners
340
+ //
341
+ //--------------------------------------------------------------------------
342
+ handleEscape(event) {
343
+ if (this.open && !this.disableEscape && event.key === "Escape" && !event.defaultPrevented) {
344
+ this.close();
345
+ event.preventDefault();
346
+ }
347
+ }
348
+ //--------------------------------------------------------------------------
349
+ //
350
+ // Public Methods
351
+ //
352
+ //--------------------------------------------------------------------------
353
+ /**
354
+ * Focus the first interactive element.
355
+ *
356
+ * @param el
357
+ * @deprecated use `setFocus` instead.
358
+ */
359
+ async focusElement(el) {
360
+ if (el) {
361
+ el.focus();
362
+ }
363
+ return this.setFocus();
364
+ }
365
+ /**
366
+ * Sets focus on the component.
367
+ *
368
+ * By default, tries to focus on focusable content. If there is none, it will focus on the close button.
369
+ * To focus on the close button, use the `close-button` focus ID.
370
+ *
371
+ * @param focusId
372
+ */
373
+ async setFocus(focusId) {
374
+ const closeButton = this.closeButtonEl;
375
+ return focusElement(focusId === "close-button" ? closeButton : getFocusableElements(this.el)[0] || closeButton);
376
+ }
377
+ /**
378
+ * Sets the scroll top of the component's content.
379
+ *
380
+ * @param top
381
+ * @param left
382
+ */
383
+ async scrollContent(top = 0, left = 0) {
384
+ if (this.modalContent) {
385
+ if (this.modalContent.scrollTo) {
386
+ this.modalContent.scrollTo({ top, left, behavior: "smooth" });
387
+ }
388
+ else {
389
+ this.modalContent.scrollTop = top;
390
+ this.modalContent.scrollLeft = left;
391
+ }
392
+ }
393
+ }
394
+ onBeforeOpen() {
395
+ this.transitionEl.classList.add(CSS.openingActive);
396
+ this.calciteModalBeforeOpen.emit();
397
+ }
398
+ onOpen() {
399
+ this.transitionEl.classList.remove(CSS.openingIdle, CSS.openingActive);
400
+ this.calciteModalOpen.emit();
401
+ }
402
+ onBeforeClose() {
403
+ this.transitionEl.classList.add(CSS.closingActive);
404
+ this.calciteModalBeforeClose.emit();
405
+ }
406
+ onClose() {
407
+ this.transitionEl.classList.remove(CSS.closingIdle, CSS.closingActive);
408
+ this.calciteModalClose.emit();
409
+ }
410
+ activeHandler(value) {
411
+ this.open = value;
412
+ }
413
+ async toggleModal(value) {
414
+ var _a, _b;
415
+ this.active = value;
416
+ if (value) {
417
+ (_a = this.transitionEl) === null || _a === void 0 ? void 0 : _a.classList.add(CSS.openingIdle);
418
+ this.openModal();
419
+ }
420
+ else {
421
+ (_b = this.transitionEl) === null || _b === void 0 ? void 0 : _b.classList.add(CSS.closingIdle);
422
+ this.close();
423
+ }
424
+ }
425
+ /** Open the modal */
426
+ openModal() {
427
+ this.previousActiveElement = document.activeElement;
428
+ this.el.addEventListener("calciteModalOpen", this.openEnd);
429
+ this.open = true;
430
+ this.isOpen = true;
431
+ const titleEl = getSlotted(this.el, SLOTS.header);
432
+ const contentEl = getSlotted(this.el, SLOTS.content);
433
+ this.titleId = ensureId(titleEl);
434
+ this.contentId = ensureId(contentEl);
435
+ document.documentElement.classList.add(CSS.overflowHidden);
436
+ }
437
+ removeOverflowHiddenClass() {
438
+ document.documentElement.classList.remove(CSS.overflowHidden);
439
+ }
440
+ get el() { return getElement(this); }
441
+ static get watchers() { return {
442
+ "active": ["activeHandler"],
443
+ "open": ["toggleModal"]
444
+ }; }
445
+ };
446
+ Modal.style = modalCss;
447
+
448
+ /** @license
449
+ * Copyright 2022 Esri
450
+ *
451
+ * Licensed under the Apache License, Version 2.0 (the "License");
452
+ * you may not use this file except in compliance with the License.
453
+ * You may obtain a copy of the License at
454
+ *
455
+ * http://www.apache.org/licenses/LICENSE-2.0
456
+ *
457
+ * Unless required by applicable law or agreed to in writing, software
458
+ * distributed under the License is distributed on an "AS IS" BASIS,
459
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
460
+ * See the License for the specific language governing permissions and
461
+ * limitations under the License.
462
+ */
463
+ //--------------------------------------------------------------------------
464
+ //
465
+ // Public Functions
466
+ //
467
+ //--------------------------------------------------------------------------
468
+ /**
469
+ * Sort the solution items
470
+ *
471
+ * @param templates a list of item templates from the solution
472
+ *
473
+ * @returns a sorted list of solution items
474
+ */
475
+ function getInventoryItems(templates) {
476
+ const hierarchy = getItemHierarchy(templates);
477
+ const ids = hierarchy.reduce((prev, cur) => {
478
+ prev.push(cur.id);
479
+ return prev;
480
+ }, []);
481
+ return templates.reduce((prev, cur) => {
482
+ if (ids.indexOf(cur.itemId) > -1) {
483
+ const hierarchyItems = hierarchy.filter(hi => hi.id === cur.itemId);
484
+ prev.push(_getItemFromTemplate(cur, templates, hierarchyItems[0].dependencies));
485
+ }
486
+ return prev;
487
+ }, []);
488
+ }
489
+ /**
490
+ * Create item hierarchy that will avoid issues from cylical dependencies
491
+ *
492
+ * @param templates a list of item templates from the solution
493
+ *
494
+ * @returns a hierarchy for item and item dependency display
495
+ */
496
+ function getItemHierarchy(templates) {
497
+ const hierarchy = [];
498
+ // Get the template specified by id out of a list of templates
499
+ function getTemplateInSolution(templates, id) {
500
+ const iTemplate = templates.findIndex((template) => id === template.itemId);
501
+ return iTemplate >= 0 ? templates[iTemplate] : null;
502
+ }
503
+ // Hierarchically list the dependencies of specified node
504
+ function traceItemId(id, accumulatedHierarchy, alreadyVisitedIds = []) {
505
+ // Get the dependencies of the node
506
+ const template = getTemplateInSolution(templates, id);
507
+ /* istanbul ignore else */
508
+ if (template) {
509
+ const templateEntry = {
510
+ id,
511
+ dependencies: []
512
+ };
513
+ // Visit each dependency, but only if this template is not in the alreadyVisitedIds list to avoid infinite loops
514
+ /* istanbul ignore else */
515
+ if (alreadyVisitedIds.indexOf(id) < 0) {
516
+ // Add dependency to alreadyVisitedIds list
517
+ alreadyVisitedIds.push(id);
518
+ template.dependencies.forEach((dependencyId) => {
519
+ // Remove dependency from list of templates to visit in the top-level loop
520
+ const iDependencyTemplate = templateItemIds.indexOf(dependencyId);
521
+ /* istanbul ignore else */
522
+ if (iDependencyTemplate >= 0) {
523
+ templateItemIds.splice(iDependencyTemplate, 1);
524
+ }
525
+ traceItemId(dependencyId, templateEntry.dependencies, alreadyVisitedIds);
526
+ });
527
+ }
528
+ accumulatedHierarchy.push(templateEntry);
529
+ }
530
+ }
531
+ // Start with top-level nodes and add in the rest of the nodes to catch cycles without top-level nodes
532
+ let templateItemIds = _getTopLevelItemIds(templates);
533
+ const otherItems = templates
534
+ .filter((template) => templateItemIds.indexOf(template.itemId) < 0) // only keep non-top-level nodes
535
+ .sort((a, b) => b.dependencies.length - a.dependencies.length); // sort so that nodes with more dependencies come first--reduces stubs
536
+ templateItemIds = templateItemIds.concat(otherItems.map((template) => template.itemId));
537
+ // Step through the list of nodes; we'll also remove nodes as we visit them
538
+ let itemId = templateItemIds.shift();
539
+ while (typeof itemId !== "undefined") {
540
+ traceItemId(itemId, hierarchy);
541
+ itemId = templateItemIds.shift();
542
+ }
543
+ return hierarchy;
544
+ }
545
+ /**
546
+ * Explore the solution item templates for variables we will allow users to insert at runtime
547
+ *
548
+ * @param templates a list of item templates from the solution
549
+ * @param translations nls translation object
550
+ *
551
+ * @returns a list of variables from the solution item templates
552
+ */
553
+ function getSolutionVariables(templates, translations) {
554
+ const vars = [];
555
+ templates.forEach(t => {
556
+ const item = {
557
+ id: t.itemId,
558
+ title: t.item.title || t.item.name,
559
+ type: t.type,
560
+ value: undefined,
561
+ dependencies: [{
562
+ id: t.itemId,
563
+ title: translations.itemId,
564
+ value: `{{${t.itemId}.itemId}}`,
565
+ }]
566
+ };
567
+ if (t.item.url) {
568
+ item.dependencies.push({
569
+ id: t.itemId,
570
+ title: translations.url,
571
+ value: `{{${t.itemId}.url}}`,
572
+ });
573
+ }
574
+ if (t.type === "Feature Service") {
575
+ // TODO need to set source service name var...
576
+ // TODO need to set soure service shape field name "{{d05b3cf1ffcb4a4fa677627dfb18609e.name}}.Shape"
577
+ item.dependencies.push({
578
+ id: t.itemId,
579
+ title: translations.solutionExtent,
580
+ value: `{{${t.itemId}.solutionExtent}}`,
581
+ });
582
+ _addLayersOrTables(t.properties.layers || [], item, t, translations);
583
+ _addLayersOrTables(t.properties.tables || [], item, t, translations);
584
+ }
585
+ vars.push(item);
586
+ });
587
+ return vars;
588
+ }
589
+ /**
590
+ * Set key organization variables we will allow users to insert at runtime
591
+ *
592
+ * @param translations nls translation object
593
+ *
594
+ * @returns a list of variables for the organization
595
+ */
596
+ function getOrganizationVariables(translations) {
597
+ const orgVars = [{
598
+ id: "",
599
+ title: translations.geocodeUrl,
600
+ value: "{{organization.helperServices.geocode:getDefaultLocatorURL}}"
601
+ }, {
602
+ id: "",
603
+ title: translations.geometryUrl,
604
+ value: "{{organization.helperServices.geometry.url}}"
605
+ }, {
606
+ id: "",
607
+ title: translations.portalBaseUrl,
608
+ value: "{{portalBaseUrl}}"
609
+ }, {
610
+ id: "",
611
+ title: translations.routeUrl,
612
+ value: "{{organization.helperServices.route.url}}"
613
+ }, {
614
+ id: "",
615
+ title: translations.solutionItemExtent,
616
+ value: "{{solutionItemExtent}}"
617
+ }];
618
+ return orgVars;
619
+ }
620
+ //--------------------------------------------------------------------------
621
+ //
622
+ // Private Functions
623
+ //
624
+ //--------------------------------------------------------------------------
625
+ /**
626
+ * Explore a solution item template for variables we will allow users to insert at runtime.
627
+ * This function will update the item argument that is passed in with the var details.
628
+ *
629
+ * @param children a list of layers or tables from a template
630
+ * @param item an object that store key details for a given variable
631
+ * @param template one of the templates from the current solution
632
+ * @param translations nls translations object
633
+ *
634
+ */
635
+ function _addLayersOrTables(children, item, template, translations) {
636
+ children.forEach(l => {
637
+ const name = l.name && l.name.indexOf("||") > -1 ? l.name.split("||")[1].replace("}}", "").trim() : l.name;
638
+ item.dependencies.push({
639
+ id: template.itemId,
640
+ title: `${name} (${translations.id})`,
641
+ value: `{{${template.itemId}.layer${l.id}.id}}`,
642
+ });
643
+ item.dependencies.push({
644
+ id: template.itemId,
645
+ title: `${name} (${translations.name})`,
646
+ value: `{{${template.itemId}.layer${l.id}.name||${name}}}`,
647
+ });
648
+ });
649
+ }
650
+ /**
651
+ * Capture key details from the solution item template
652
+ *
653
+ * @param template one of the templates from the current solution
654
+ * @param templates full list of templates
655
+ * @param dependencies list of hierarchical dependencies
656
+ *
657
+ * @returns an IInventoryItem that is used by other components to work with this template
658
+ */
659
+ function _getItemFromTemplate(template, templates, dependencies) {
660
+ return {
661
+ id: template.itemId || "",
662
+ title: template.item.title || "",
663
+ dependencies: _getDependencies(dependencies, templates),
664
+ type: template.item.type || "",
665
+ typeKeywords: template.item.typeKeywords || [] /*,
666
+ solutionItem: {
667
+ itemId: template.itemId,
668
+ itemDetails: _getItemDetails(template.item, template.type === "Group"),
669
+ isResource: _getIsResource(template),
670
+ data: template.data,
671
+ properties: template.properties,
672
+ type: template.type,
673
+ groupDetails: _getGroupDetails(template, templates)
674
+ }*/
675
+ };
676
+ }
677
+ /**
678
+ * Capture key details from the solution item template
679
+ *
680
+ * @param dependencies list of dependencies from a template
681
+ * @param templates full list of templates
682
+ *
683
+ * @returns a list of IInventoryItem that are used by other components to work with the templates
684
+ */
685
+ function _getDependencies(dependencies, templates) {
686
+ const dependencyItems = [];
687
+ const depIds = dependencies.reduce((prev, cur) => {
688
+ prev.push(cur.id);
689
+ dependencyItems.push(cur);
690
+ return prev;
691
+ }, []);
692
+ return templates.reduce((prev, curr) => {
693
+ const i = depIds.indexOf(curr.itemId);
694
+ if (i > -1) {
695
+ prev.push(_getItemFromTemplate(curr, templates, dependencyItems[i].dependencies));
696
+ }
697
+ return prev;
698
+ }, []);
699
+ }
700
+ /**
701
+ * Capture the key item details for a given template
702
+ *
703
+ * @param item the templates item
704
+ * @param isGroup boolean to indicate if the item is a group
705
+ * @param itemId the item id of the template
706
+ *
707
+ * @returns a IItemDetails object for the current item
708
+ */
709
+ /*
710
+ function _getItemDetails(
711
+ item: any,
712
+ isGroup: boolean
713
+ ): IItemDetails {
714
+ return {
715
+ title: item.title || "",
716
+ snippet: item.snippet || "",
717
+ description: item.description || "",
718
+ tags: item.tags || [],
719
+ accessInformation: !isGroup ? item.accessInformation || "" : "",
720
+ licenseInfo: !isGroup ? item.licenseInfo || "" : ""
721
+ };
722
+ }
723
+ */
724
+ /**
725
+ * Capture the key item details for a given group template
726
+ *
727
+ * @param template one of the templates from the current solution
728
+ * @param templates full list of templates
729
+ *
730
+ * @returns a list of IItemShare objects
731
+ */
732
+ /*
733
+ function _getGroupDetails(
734
+ template: any,
735
+ templates: any[]
736
+ ): IItemShare[] {
737
+ return template.type === "Group" ? templates.reduce((prev, cur) => {
738
+ if (cur.itemId !== template.itemId && cur.type !== "Group") {
739
+ prev.push({
740
+ id: cur.itemId,
741
+ title: cur.item.name || cur.item.title,
742
+ isShared: (cur.groups || []).indexOf(template.itemId) > -1,
743
+ shareItem: (cur.groups || []).indexOf(template.itemId) > -1,
744
+ type: cur.type,
745
+ typeKeywords: cur.item.typeKeywords
746
+ });
747
+ }
748
+ return prev;
749
+ }, []) : [];
750
+ }
751
+ */
752
+ /**
753
+ * Used to understand if we are dealing with a binary object that will support upload/download
754
+ *
755
+ * @param template one of the templates from the current solution
756
+ *
757
+ * @returns true if this item supports upload/download
758
+ */
759
+ /*
760
+ function _getIsResource(
761
+ template: any
762
+ ): boolean {
763
+ return template.type !== "Group" && template.resources.some(r => r.indexOf("_info_thumbnail") < 0) &&
764
+ (template.data === null || JSON.stringify(template.data) === "{}");
765
+ }
766
+ */
767
+ /**
768
+ * Sort the template ids based on their dependencies
769
+ *
770
+ * @param templates full list of templates
771
+ *
772
+ * @returns a list of Itop level item ids
773
+ */
774
+ function _getTopLevelItemIds(templates) {
775
+ // Find the top-level nodes. Start with all nodes, then remove those that other nodes depend on
776
+ const topLevelItemCandidateIds = templates.map((template) => template.itemId);
777
+ templates.forEach((template) => {
778
+ (template.dependencies || []).forEach((dependencyId) => {
779
+ const iNode = topLevelItemCandidateIds.indexOf(dependencyId);
780
+ if (iNode >= 0) {
781
+ // Node is somebody's dependency, so remove the node from the list of top-level nodes
782
+ // If iNode == -1, then it's a shared dependency and it has already been removed
783
+ topLevelItemCandidateIds.splice(iNode, 1);
784
+ }
785
+ });
786
+ });
787
+ return topLevelItemCandidateIds;
788
+ }
789
+
790
+ /* Copyright (c) 2017-2020 Environmental Systems Research Institute, Inc.
791
+ * Apache-2.0 */
792
+ function decodeParam(param) {
793
+ var _a = param.split("="), key = _a[0], value = _a[1];
794
+ return { key: decodeURIComponent(key), value: decodeURIComponent(value) };
795
+ }
796
+ /**
797
+ * Decodes the passed query string as an object.
798
+ *
799
+ * @param query A string to be decoded.
800
+ * @returns A decoded query param object.
801
+ */
802
+ function decodeQueryString(query) {
803
+ return query
804
+ .replace(/^#/, "")
805
+ .split("&")
806
+ .reduce(function (acc, entry) {
807
+ var _a = decodeParam(entry), key = _a.key, value = _a.value;
808
+ acc[key] = value;
809
+ return acc;
810
+ }, {});
811
+ }
812
+
813
+ /*! *****************************************************************************
814
+ Copyright (c) Microsoft Corporation.
815
+
816
+ Permission to use, copy, modify, and/or distribute this software for any
817
+ purpose with or without fee is hereby granted.
818
+
819
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
820
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
821
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
822
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
823
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
824
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
825
+ PERFORMANCE OF THIS SOFTWARE.
826
+ ***************************************************************************** */
827
+
828
+ var __assign = function() {
829
+ __assign = Object.assign || function __assign(t) {
830
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
831
+ s = arguments[i];
832
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
833
+ }
834
+ return t;
835
+ };
836
+ return __assign.apply(this, arguments);
837
+ };
838
+
839
+ /* Copyright (c) 2017 Environmental Systems Research Institute, Inc.
840
+ * Apache-2.0 */
841
+ function fetchToken(url, requestOptions) {
842
+ var options = requestOptions;
843
+ // we generate a response, so we can't return the raw response
844
+ options.rawResponse = false;
845
+ return request(url, options).then(function (response) {
846
+ var r = {
847
+ token: response.access_token,
848
+ username: response.username,
849
+ expires: new Date(
850
+ // convert seconds in response to milliseconds and add the value to the current time to calculate a static expiration timestamp
851
+ Date.now() + (response.expires_in * 1000 - 1000)),
852
+ ssl: response.ssl === true
853
+ };
854
+ if (response.refresh_token) {
855
+ r.refreshToken = response.refresh_token;
856
+ }
857
+ return r;
858
+ });
859
+ }
860
+
861
+ /* Copyright (c) 2017-2018 Environmental Systems Research Institute, Inc.
862
+ * Apache-2.0 */
863
+ function generateToken(url, requestOptions) {
864
+ var options = requestOptions;
865
+ /* istanbul ignore else */
866
+ if (typeof window !== "undefined" &&
867
+ window.location &&
868
+ window.location.host) {
869
+ options.params.referer = window.location.host;
870
+ }
871
+ else {
872
+ options.params.referer = NODEJS_DEFAULT_REFERER_HEADER;
873
+ }
874
+ return request(url, options);
875
+ }
876
+
877
+ /**
878
+ * Used to test if a URL is an ArcGIS Online URL
879
+ */
880
+ var arcgisOnlineUrlRegex = /^https?:\/\/(\S+)\.arcgis\.com.+/;
881
+ function isOnline(url) {
882
+ return arcgisOnlineUrlRegex.test(url);
883
+ }
884
+ function normalizeOnlinePortalUrl(portalUrl) {
885
+ if (!arcgisOnlineUrlRegex.test(portalUrl)) {
886
+ return portalUrl;
887
+ }
888
+ switch (getOnlineEnvironment(portalUrl)) {
889
+ case "dev":
890
+ return "https://devext.arcgis.com/sharing/rest";
891
+ case "qa":
892
+ return "https://qaext.arcgis.com/sharing/rest";
893
+ default:
894
+ return "https://www.arcgis.com/sharing/rest";
895
+ }
896
+ }
897
+ function getOnlineEnvironment(url) {
898
+ if (!arcgisOnlineUrlRegex.test(url)) {
899
+ return null;
900
+ }
901
+ var match = url.match(arcgisOnlineUrlRegex);
902
+ var subdomain = match[1].split(".").pop();
903
+ if (subdomain.includes("dev")) {
904
+ return "dev";
905
+ }
906
+ if (subdomain.includes("qa")) {
907
+ return "qa";
908
+ }
909
+ return "production";
910
+ }
911
+ function isFederated(owningSystemUrl, portalUrl) {
912
+ var normalizedPortalUrl = cleanUrl(normalizeOnlinePortalUrl(portalUrl)).replace(/https?:\/\//, "");
913
+ var normalizedOwningSystemUrl = cleanUrl(owningSystemUrl).replace(/https?:\/\//, "");
914
+ return new RegExp(normalizedOwningSystemUrl, "i").test(normalizedPortalUrl);
915
+ }
916
+ function canUseOnlineToken(portalUrl, requestUrl) {
917
+ var portalIsOnline = isOnline(portalUrl);
918
+ var requestIsOnline = isOnline(requestUrl);
919
+ var portalEnv = getOnlineEnvironment(portalUrl);
920
+ var requestEnv = getOnlineEnvironment(requestUrl);
921
+ if (portalIsOnline && requestIsOnline && portalEnv === requestEnv) {
922
+ return true;
923
+ }
924
+ return false;
925
+ }
926
+
927
+ /* Copyright (c) 2018-2020 Environmental Systems Research Institute, Inc.
928
+ * Apache-2.0 */
929
+ /**
930
+ * Validates that the user has access to the application
931
+ * and if they user should be presented a "View Only" mode
932
+ *
933
+ * This is only needed/valid for Esri applications that are "licensed"
934
+ * and shipped in ArcGIS Online or ArcGIS Enterprise. Most custom applications
935
+ * should not need or use this.
936
+ *
937
+ * ```js
938
+ * import { validateAppAccess } from '@esri/arcgis-rest-auth';
939
+ *
940
+ * return validateAppAccess('your-token', 'theClientId')
941
+ * .then((result) => {
942
+ * if (!result.value) {
943
+ * // redirect or show some other ui
944
+ * } else {
945
+ * if (result.viewOnlyUserTypeApp) {
946
+ * // use this to inform your app to show a "View Only" mode
947
+ * }
948
+ * }
949
+ * })
950
+ * .catch((err) => {
951
+ * // two possible errors
952
+ * // invalid clientId: {"error":{"code":400,"messageCode":"GWM_0007","message":"Invalid request","details":[]}}
953
+ * // invalid token: {"error":{"code":498,"message":"Invalid token.","details":[]}}
954
+ * })
955
+ * ```
956
+ *
957
+ * Note: This is only usable by Esri applications hosted on *arcgis.com, *esri.com or within
958
+ * an ArcGIS Enterprise installation. Custom applications can not use this.
959
+ *
960
+ * @param token platform token
961
+ * @param clientId application client id
962
+ * @param portal Optional
963
+ */
964
+ function validateAppAccess(token, clientId, portal) {
965
+ if (portal === void 0) { portal = "https://www.arcgis.com/sharing/rest"; }
966
+ var url = portal + "/oauth2/validateAppAccess";
967
+ var ro = {
968
+ method: "POST",
969
+ params: {
970
+ f: "json",
971
+ client_id: clientId,
972
+ token: token,
973
+ },
974
+ };
975
+ return request(url, ro);
976
+ }
977
+
978
+ /* Copyright (c) 2017-2019 Environmental Systems Research Institute, Inc.
979
+ * Apache-2.0 */
980
+ function defer() {
981
+ var deferred = {
982
+ promise: null,
983
+ resolve: null,
984
+ reject: null,
985
+ };
986
+ deferred.promise = new Promise(function (resolve, reject) {
987
+ deferred.resolve = resolve;
988
+ deferred.reject = reject;
989
+ });
990
+ return deferred;
991
+ }
992
+ /**
993
+ * ```js
994
+ * import { UserSession } from '@esri/arcgis-rest-auth';
995
+ * UserSession.beginOAuth2({
996
+ * // register an app of your own to create a unique clientId
997
+ * clientId: "abc123",
998
+ * redirectUri: 'https://yourapp.com/authenticate.html'
999
+ * })
1000
+ * .then(session)
1001
+ * // or
1002
+ * new UserSession({
1003
+ * username: "jsmith",
1004
+ * password: "123456"
1005
+ * })
1006
+ * // or
1007
+ * UserSession.deserialize(cache)
1008
+ * ```
1009
+ * Used to authenticate both ArcGIS Online and ArcGIS Enterprise users. `UserSession` includes helper methods for [OAuth 2.0](/arcgis-rest-js/guides/browser-authentication/) in both browser and server applications.
1010
+ */
1011
+ var UserSession = /** @class */ (function () {
1012
+ function UserSession(options) {
1013
+ this.clientId = options.clientId;
1014
+ this._refreshToken = options.refreshToken;
1015
+ this._refreshTokenExpires = options.refreshTokenExpires;
1016
+ this.username = options.username;
1017
+ this.password = options.password;
1018
+ this._token = options.token;
1019
+ this._tokenExpires = options.tokenExpires;
1020
+ this.portal = options.portal
1021
+ ? cleanUrl(options.portal)
1022
+ : "https://www.arcgis.com/sharing/rest";
1023
+ this.ssl = options.ssl;
1024
+ this.provider = options.provider || "arcgis";
1025
+ this.tokenDuration = options.tokenDuration || 20160;
1026
+ this.redirectUri = options.redirectUri;
1027
+ this.refreshTokenTTL = options.refreshTokenTTL || 20160;
1028
+ this.server = options.server;
1029
+ this.federatedServers = {};
1030
+ this.trustedDomains = [];
1031
+ // if a non-federated server was passed explicitly, it should be trusted.
1032
+ if (options.server) {
1033
+ // if the url includes more than '/arcgis/', trim the rest
1034
+ var root = this.getServerRootUrl(options.server);
1035
+ this.federatedServers[root] = {
1036
+ token: options.token,
1037
+ expires: options.tokenExpires,
1038
+ };
1039
+ }
1040
+ this._pendingTokenRequests = {};
1041
+ }
1042
+ Object.defineProperty(UserSession.prototype, "token", {
1043
+ /**
1044
+ * The current ArcGIS Online or ArcGIS Enterprise `token`.
1045
+ */
1046
+ get: function () {
1047
+ return this._token;
1048
+ },
1049
+ enumerable: false,
1050
+ configurable: true
1051
+ });
1052
+ Object.defineProperty(UserSession.prototype, "tokenExpires", {
1053
+ /**
1054
+ * The expiration time of the current `token`.
1055
+ */
1056
+ get: function () {
1057
+ return this._tokenExpires;
1058
+ },
1059
+ enumerable: false,
1060
+ configurable: true
1061
+ });
1062
+ Object.defineProperty(UserSession.prototype, "refreshToken", {
1063
+ /**
1064
+ * The current token to ArcGIS Online or ArcGIS Enterprise.
1065
+ */
1066
+ get: function () {
1067
+ return this._refreshToken;
1068
+ },
1069
+ enumerable: false,
1070
+ configurable: true
1071
+ });
1072
+ Object.defineProperty(UserSession.prototype, "refreshTokenExpires", {
1073
+ /**
1074
+ * The expiration time of the current `refreshToken`.
1075
+ */
1076
+ get: function () {
1077
+ return this._refreshTokenExpires;
1078
+ },
1079
+ enumerable: false,
1080
+ configurable: true
1081
+ });
1082
+ Object.defineProperty(UserSession.prototype, "trustedServers", {
1083
+ /**
1084
+ * Deprecated, use `federatedServers` instead.
1085
+ *
1086
+ * @deprecated
1087
+ */
1088
+ get: function () {
1089
+ console.log("DEPRECATED: use federatedServers instead");
1090
+ return this.federatedServers;
1091
+ },
1092
+ enumerable: false,
1093
+ configurable: true
1094
+ });
1095
+ /**
1096
+ * Begins a new browser-based OAuth 2.0 sign in. If `options.popup` is `true` the
1097
+ * authentication window will open in a new tab/window and the function will return
1098
+ * Promise&lt;UserSession&gt;. Otherwise, the user will be redirected to the
1099
+ * authorization page in their current tab/window and the function will return `undefined`.
1100
+ *
1101
+ * @browserOnly
1102
+ */
1103
+ /* istanbul ignore next */
1104
+ UserSession.beginOAuth2 = function (options, win) {
1105
+ if (win === void 0) { win = window; }
1106
+ if (options.duration) {
1107
+ console.log("DEPRECATED: 'duration' is deprecated - use 'expiration' instead");
1108
+ }
1109
+ var _a = __assign({
1110
+ portal: "https://www.arcgis.com/sharing/rest",
1111
+ provider: "arcgis",
1112
+ expiration: 20160,
1113
+ popup: true,
1114
+ popupWindowFeatures: "height=400,width=600,menubar=no,location=yes,resizable=yes,scrollbars=yes,status=yes",
1115
+ state: options.clientId,
1116
+ locale: "",
1117
+ }, options), portal = _a.portal, provider = _a.provider, clientId = _a.clientId, expiration = _a.expiration, redirectUri = _a.redirectUri, popup = _a.popup, popupWindowFeatures = _a.popupWindowFeatures, state = _a.state, locale = _a.locale, params = _a.params;
1118
+ var url;
1119
+ if (provider === "arcgis") {
1120
+ url = portal + "/oauth2/authorize?client_id=" + clientId + "&response_type=token&expiration=" + (options.duration || expiration) + "&redirect_uri=" + encodeURIComponent(redirectUri) + "&state=" + state + "&locale=" + locale;
1121
+ }
1122
+ else {
1123
+ url = portal + "/oauth2/social/authorize?client_id=" + clientId + "&socialLoginProviderName=" + provider + "&autoAccountCreateForSocial=true&response_type=token&expiration=" + (options.duration || expiration) + "&redirect_uri=" + encodeURIComponent(redirectUri) + "&state=" + state + "&locale=" + locale;
1124
+ }
1125
+ // append additional params
1126
+ if (params) {
1127
+ url = url + "&" + encodeQueryString(params);
1128
+ }
1129
+ if (!popup) {
1130
+ win.location.href = url;
1131
+ return undefined;
1132
+ }
1133
+ var session = defer();
1134
+ win["__ESRI_REST_AUTH_HANDLER_" + clientId] = function (errorString, oauthInfoString) {
1135
+ if (errorString) {
1136
+ var error = JSON.parse(errorString);
1137
+ session.reject(new ArcGISAuthError(error.errorMessage, error.error));
1138
+ return;
1139
+ }
1140
+ if (oauthInfoString) {
1141
+ var oauthInfo = JSON.parse(oauthInfoString);
1142
+ session.resolve(new UserSession({
1143
+ clientId: clientId,
1144
+ portal: portal,
1145
+ ssl: oauthInfo.ssl,
1146
+ token: oauthInfo.token,
1147
+ tokenExpires: new Date(oauthInfo.expires),
1148
+ username: oauthInfo.username,
1149
+ }));
1150
+ }
1151
+ };
1152
+ win.open(url, "oauth-window", popupWindowFeatures);
1153
+ return session.promise;
1154
+ };
1155
+ /**
1156
+ * Completes a browser-based OAuth 2.0 sign in. If `options.popup` is `true` the user
1157
+ * will be returned to the previous window. Otherwise a new `UserSession`
1158
+ * will be returned. You must pass the same values for `options.popup` and
1159
+ * `options.portal` as you used in `beginOAuth2()`.
1160
+ *
1161
+ * @browserOnly
1162
+ */
1163
+ /* istanbul ignore next */
1164
+ UserSession.completeOAuth2 = function (options, win) {
1165
+ if (win === void 0) { win = window; }
1166
+ var _a = __assign({ portal: "https://www.arcgis.com/sharing/rest", popup: true }, options), portal = _a.portal, clientId = _a.clientId, popup = _a.popup;
1167
+ function completeSignIn(error, oauthInfo) {
1168
+ try {
1169
+ var handlerFn = void 0;
1170
+ var handlerFnName = "__ESRI_REST_AUTH_HANDLER_" + clientId;
1171
+ if (popup) {
1172
+ // Guard b/c IE does not support window.opener
1173
+ if (win.opener) {
1174
+ if (win.opener.parent && win.opener.parent[handlerFnName]) {
1175
+ handlerFn = win.opener.parent[handlerFnName];
1176
+ }
1177
+ else if (win.opener && win.opener[handlerFnName]) {
1178
+ // support pop-out oauth from within an iframe
1179
+ handlerFn = win.opener[handlerFnName];
1180
+ }
1181
+ }
1182
+ else {
1183
+ // IE
1184
+ if (win !== win.parent && win.parent && win.parent[handlerFnName]) {
1185
+ handlerFn = win.parent[handlerFnName];
1186
+ }
1187
+ }
1188
+ // if we have a handler fn, call it and close the window
1189
+ if (handlerFn) {
1190
+ handlerFn(error ? JSON.stringify(error) : undefined, JSON.stringify(oauthInfo));
1191
+ win.close();
1192
+ return undefined;
1193
+ }
1194
+ }
1195
+ }
1196
+ catch (e) {
1197
+ throw new ArcGISAuthError("Unable to complete authentication. It's possible you specified popup based oAuth2 but no handler from \"beginOAuth2()\" present. This generally happens because the \"popup\" option differs between \"beginOAuth2()\" and \"completeOAuth2()\".");
1198
+ }
1199
+ if (error) {
1200
+ throw new ArcGISAuthError(error.errorMessage, error.error);
1201
+ }
1202
+ return new UserSession({
1203
+ clientId: clientId,
1204
+ portal: portal,
1205
+ ssl: oauthInfo.ssl,
1206
+ token: oauthInfo.token,
1207
+ tokenExpires: oauthInfo.expires,
1208
+ username: oauthInfo.username,
1209
+ });
1210
+ }
1211
+ var params = decodeQueryString(win.location.hash);
1212
+ if (!params.access_token) {
1213
+ var error = void 0;
1214
+ var errorMessage = "Unknown error";
1215
+ if (params.error) {
1216
+ error = params.error;
1217
+ errorMessage = params.error_description;
1218
+ }
1219
+ return completeSignIn({ error: error, errorMessage: errorMessage });
1220
+ }
1221
+ var token = params.access_token;
1222
+ var expires = new Date(Date.now() + parseInt(params.expires_in, 10) * 1000 - 60 * 1000);
1223
+ var username = params.username;
1224
+ var ssl = params.ssl === "true";
1225
+ return completeSignIn(undefined, {
1226
+ token: token,
1227
+ expires: expires,
1228
+ ssl: ssl,
1229
+ username: username,
1230
+ });
1231
+ };
1232
+ /**
1233
+ * Request session information from the parent application
1234
+ *
1235
+ * When an application is embedded into another application via an IFrame, the embedded app can
1236
+ * use `window.postMessage` to request credentials from the host application. This function wraps
1237
+ * that behavior.
1238
+ *
1239
+ * The ArcGIS API for Javascript has this built into the Identity Manager as of the 4.19 release.
1240
+ *
1241
+ * Note: The parent application will not respond if the embedded app's origin is not:
1242
+ * - the same origin as the parent or *.arcgis.com (JSAPI)
1243
+ * - in the list of valid child origins (REST-JS)
1244
+ *
1245
+ *
1246
+ * @param parentOrigin origin of the parent frame. Passed into the embedded application as `parentOrigin` query param
1247
+ * @browserOnly
1248
+ */
1249
+ UserSession.fromParent = function (parentOrigin, win) {
1250
+ /* istanbul ignore next: must pass in a mockwindow for tests so we can't cover the other branch */
1251
+ if (!win && window) {
1252
+ win = window;
1253
+ }
1254
+ // Declare handler outside of promise scope so we can detach it
1255
+ var handler;
1256
+ // return a promise that will resolve when the handler receives
1257
+ // session information from the correct origin
1258
+ return new Promise(function (resolve, reject) {
1259
+ // create an event handler that just wraps the parentMessageHandler
1260
+ handler = function (event) {
1261
+ // ensure we only listen to events from the parent
1262
+ if (event.source === win.parent && event.data) {
1263
+ try {
1264
+ return resolve(UserSession.parentMessageHandler(event));
1265
+ }
1266
+ catch (err) {
1267
+ return reject(err);
1268
+ }
1269
+ }
1270
+ };
1271
+ // add listener
1272
+ win.addEventListener("message", handler, false);
1273
+ win.parent.postMessage({ type: "arcgis:auth:requestCredential" }, parentOrigin);
1274
+ }).then(function (session) {
1275
+ win.removeEventListener("message", handler, false);
1276
+ return session;
1277
+ });
1278
+ };
1279
+ /**
1280
+ * Begins a new server-based OAuth 2.0 sign in. This will redirect the user to
1281
+ * the ArcGIS Online or ArcGIS Enterprise authorization page.
1282
+ *
1283
+ * @nodeOnly
1284
+ */
1285
+ UserSession.authorize = function (options, response) {
1286
+ if (options.duration) {
1287
+ console.log("DEPRECATED: 'duration' is deprecated - use 'expiration' instead");
1288
+ }
1289
+ var _a = __assign({ portal: "https://arcgis.com/sharing/rest", expiration: 20160 }, options), portal = _a.portal, clientId = _a.clientId, expiration = _a.expiration, redirectUri = _a.redirectUri;
1290
+ response.writeHead(301, {
1291
+ Location: portal + "/oauth2/authorize?client_id=" + clientId + "&expiration=" + (options.duration || expiration) + "&response_type=code&redirect_uri=" + encodeURIComponent(redirectUri),
1292
+ });
1293
+ response.end();
1294
+ };
1295
+ /**
1296
+ * Completes the server-based OAuth 2.0 sign in process by exchanging the `authorizationCode`
1297
+ * for a `access_token`.
1298
+ *
1299
+ * @nodeOnly
1300
+ */
1301
+ UserSession.exchangeAuthorizationCode = function (options, authorizationCode) {
1302
+ var _a = __assign({
1303
+ portal: "https://www.arcgis.com/sharing/rest",
1304
+ refreshTokenTTL: 20160,
1305
+ }, options), portal = _a.portal, clientId = _a.clientId, redirectUri = _a.redirectUri, refreshTokenTTL = _a.refreshTokenTTL;
1306
+ return fetchToken(portal + "/oauth2/token", {
1307
+ params: {
1308
+ grant_type: "authorization_code",
1309
+ client_id: clientId,
1310
+ redirect_uri: redirectUri,
1311
+ code: authorizationCode,
1312
+ },
1313
+ }).then(function (response) {
1314
+ return new UserSession({
1315
+ clientId: clientId,
1316
+ portal: portal,
1317
+ ssl: response.ssl,
1318
+ redirectUri: redirectUri,
1319
+ refreshToken: response.refreshToken,
1320
+ refreshTokenTTL: refreshTokenTTL,
1321
+ refreshTokenExpires: new Date(Date.now() + (refreshTokenTTL - 1) * 60 * 1000),
1322
+ token: response.token,
1323
+ tokenExpires: response.expires,
1324
+ username: response.username,
1325
+ });
1326
+ });
1327
+ };
1328
+ UserSession.deserialize = function (str) {
1329
+ var options = JSON.parse(str);
1330
+ return new UserSession({
1331
+ clientId: options.clientId,
1332
+ refreshToken: options.refreshToken,
1333
+ refreshTokenExpires: new Date(options.refreshTokenExpires),
1334
+ username: options.username,
1335
+ password: options.password,
1336
+ token: options.token,
1337
+ tokenExpires: new Date(options.tokenExpires),
1338
+ portal: options.portal,
1339
+ ssl: options.ssl,
1340
+ tokenDuration: options.tokenDuration,
1341
+ redirectUri: options.redirectUri,
1342
+ refreshTokenTTL: options.refreshTokenTTL,
1343
+ });
1344
+ };
1345
+ /**
1346
+ * Translates authentication from the format used in the [ArcGIS API for JavaScript](https://developers.arcgis.com/javascript/).
1347
+ *
1348
+ * ```js
1349
+ * UserSession.fromCredential({
1350
+ * userId: "jsmith",
1351
+ * token: "secret"
1352
+ * });
1353
+ * ```
1354
+ *
1355
+ * @returns UserSession
1356
+ */
1357
+ UserSession.fromCredential = function (credential) {
1358
+ // At ArcGIS Online 9.1, credentials no longer include the ssl and expires properties
1359
+ // Here, we provide default values for them to cover this condition
1360
+ var ssl = typeof credential.ssl !== "undefined" ? credential.ssl : true;
1361
+ var expires = credential.expires || Date.now() + 7200000; /* 2 hours */
1362
+ return new UserSession({
1363
+ portal: credential.server.includes("sharing/rest")
1364
+ ? credential.server
1365
+ : credential.server + "/sharing/rest",
1366
+ ssl: ssl,
1367
+ token: credential.token,
1368
+ username: credential.userId,
1369
+ tokenExpires: new Date(expires),
1370
+ });
1371
+ };
1372
+ /**
1373
+ * Handle the response from the parent
1374
+ * @param event DOM Event
1375
+ */
1376
+ UserSession.parentMessageHandler = function (event) {
1377
+ if (event.data.type === "arcgis:auth:credential") {
1378
+ return UserSession.fromCredential(event.data.credential);
1379
+ }
1380
+ if (event.data.type === "arcgis:auth:error") {
1381
+ var err = new Error(event.data.error.message);
1382
+ err.name = event.data.error.name;
1383
+ throw err;
1384
+ }
1385
+ else {
1386
+ throw new Error("Unknown message type.");
1387
+ }
1388
+ };
1389
+ /**
1390
+ * Returns authentication in a format useable in the [ArcGIS API for JavaScript](https://developers.arcgis.com/javascript/).
1391
+ *
1392
+ * ```js
1393
+ * esriId.registerToken(session.toCredential());
1394
+ * ```
1395
+ *
1396
+ * @returns ICredential
1397
+ */
1398
+ UserSession.prototype.toCredential = function () {
1399
+ return {
1400
+ expires: this.tokenExpires.getTime(),
1401
+ server: this.portal,
1402
+ ssl: this.ssl,
1403
+ token: this.token,
1404
+ userId: this.username,
1405
+ };
1406
+ };
1407
+ /**
1408
+ * Returns information about the currently logged in [user](https://developers.arcgis.com/rest/users-groups-and-items/user.htm). Subsequent calls will *not* result in additional web traffic.
1409
+ *
1410
+ * ```js
1411
+ * session.getUser()
1412
+ * .then(response => {
1413
+ * console.log(response.role); // "org_admin"
1414
+ * })
1415
+ * ```
1416
+ *
1417
+ * @param requestOptions - Options for the request. NOTE: `rawResponse` is not supported by this operation.
1418
+ * @returns A Promise that will resolve with the data from the response.
1419
+ */
1420
+ UserSession.prototype.getUser = function (requestOptions) {
1421
+ var _this = this;
1422
+ if (this._pendingUserRequest) {
1423
+ return this._pendingUserRequest;
1424
+ }
1425
+ else if (this._user) {
1426
+ return Promise.resolve(this._user);
1427
+ }
1428
+ else {
1429
+ var url = this.portal + "/community/self";
1430
+ var options = __assign(__assign({ httpMethod: "GET", authentication: this }, requestOptions), { rawResponse: false });
1431
+ this._pendingUserRequest = request(url, options).then(function (response) {
1432
+ _this._user = response;
1433
+ _this._pendingUserRequest = null;
1434
+ return response;
1435
+ });
1436
+ return this._pendingUserRequest;
1437
+ }
1438
+ };
1439
+ /**
1440
+ * Returns information about the currently logged in user's [portal](https://developers.arcgis.com/rest/users-groups-and-items/portal-self.htm). Subsequent calls will *not* result in additional web traffic.
1441
+ *
1442
+ * ```js
1443
+ * session.getPortal()
1444
+ * .then(response => {
1445
+ * console.log(portal.name); // "City of ..."
1446
+ * })
1447
+ * ```
1448
+ *
1449
+ * @param requestOptions - Options for the request. NOTE: `rawResponse` is not supported by this operation.
1450
+ * @returns A Promise that will resolve with the data from the response.
1451
+ */
1452
+ UserSession.prototype.getPortal = function (requestOptions) {
1453
+ var _this = this;
1454
+ if (this._pendingPortalRequest) {
1455
+ return this._pendingPortalRequest;
1456
+ }
1457
+ else if (this._portalInfo) {
1458
+ return Promise.resolve(this._portalInfo);
1459
+ }
1460
+ else {
1461
+ var url = this.portal + "/portals/self";
1462
+ var options = __assign(__assign({ httpMethod: "GET", authentication: this }, requestOptions), { rawResponse: false });
1463
+ this._pendingPortalRequest = request(url, options).then(function (response) {
1464
+ _this._portalInfo = response;
1465
+ _this._pendingPortalRequest = null;
1466
+ return response;
1467
+ });
1468
+ return this._pendingPortalRequest;
1469
+ }
1470
+ };
1471
+ /**
1472
+ * Returns the username for the currently logged in [user](https://developers.arcgis.com/rest/users-groups-and-items/user.htm). Subsequent calls will *not* result in additional web traffic. This is also used internally when a username is required for some requests but is not present in the options.
1473
+ *
1474
+ * * ```js
1475
+ * session.getUsername()
1476
+ * .then(response => {
1477
+ * console.log(response); // "casey_jones"
1478
+ * })
1479
+ * ```
1480
+ */
1481
+ UserSession.prototype.getUsername = function () {
1482
+ if (this.username) {
1483
+ return Promise.resolve(this.username);
1484
+ }
1485
+ else if (this._user) {
1486
+ return Promise.resolve(this._user.username);
1487
+ }
1488
+ else {
1489
+ return this.getUser().then(function (user) {
1490
+ return user.username;
1491
+ });
1492
+ }
1493
+ };
1494
+ /**
1495
+ * Gets an appropriate token for the given URL. If `portal` is ArcGIS Online and
1496
+ * the request is to an ArcGIS Online domain `token` will be used. If the request
1497
+ * is to the current `portal` the current `token` will also be used. However if
1498
+ * the request is to an unknown server we will validate the server with a request
1499
+ * to our current `portal`.
1500
+ */
1501
+ UserSession.prototype.getToken = function (url, requestOptions) {
1502
+ if (canUseOnlineToken(this.portal, url)) {
1503
+ return this.getFreshToken(requestOptions);
1504
+ }
1505
+ else if (new RegExp(this.portal, "i").test(url)) {
1506
+ return this.getFreshToken(requestOptions);
1507
+ }
1508
+ else {
1509
+ return this.getTokenForServer(url, requestOptions);
1510
+ }
1511
+ };
1512
+ /**
1513
+ * Get application access information for the current user
1514
+ * see `validateAppAccess` function for details
1515
+ *
1516
+ * @param clientId application client id
1517
+ */
1518
+ UserSession.prototype.validateAppAccess = function (clientId) {
1519
+ return this.getToken(this.portal).then(function (token) {
1520
+ return validateAppAccess(token, clientId);
1521
+ });
1522
+ };
1523
+ UserSession.prototype.toJSON = function () {
1524
+ return {
1525
+ clientId: this.clientId,
1526
+ refreshToken: this.refreshToken,
1527
+ refreshTokenExpires: this.refreshTokenExpires,
1528
+ username: this.username,
1529
+ password: this.password,
1530
+ token: this.token,
1531
+ tokenExpires: this.tokenExpires,
1532
+ portal: this.portal,
1533
+ ssl: this.ssl,
1534
+ tokenDuration: this.tokenDuration,
1535
+ redirectUri: this.redirectUri,
1536
+ refreshTokenTTL: this.refreshTokenTTL,
1537
+ };
1538
+ };
1539
+ UserSession.prototype.serialize = function () {
1540
+ return JSON.stringify(this);
1541
+ };
1542
+ /**
1543
+ * For a "Host" app that embeds other platform apps via iframes, after authenticating the user
1544
+ * and creating a UserSession, the app can then enable "post message" style authentication by calling
1545
+ * this method.
1546
+ *
1547
+ * Internally this adds an event listener on window for the `message` event
1548
+ *
1549
+ * @param validChildOrigins Array of origins that are allowed to request authentication from the host app
1550
+ */
1551
+ UserSession.prototype.enablePostMessageAuth = function (validChildOrigins, win) {
1552
+ /* istanbul ignore next: must pass in a mockwindow for tests so we can't cover the other branch */
1553
+ if (!win && window) {
1554
+ win = window;
1555
+ }
1556
+ this._hostHandler = this.createPostMessageHandler(validChildOrigins);
1557
+ win.addEventListener("message", this._hostHandler, false);
1558
+ };
1559
+ /**
1560
+ * For a "Host" app that has embedded other platform apps via iframes, when the host needs
1561
+ * to transition routes, it should call `UserSession.disablePostMessageAuth()` to remove
1562
+ * the event listener and prevent memory leaks
1563
+ */
1564
+ UserSession.prototype.disablePostMessageAuth = function (win) {
1565
+ /* istanbul ignore next: must pass in a mockwindow for tests so we can't cover the other branch */
1566
+ if (!win && window) {
1567
+ win = window;
1568
+ }
1569
+ win.removeEventListener("message", this._hostHandler, false);
1570
+ };
1571
+ /**
1572
+ * Manually refreshes the current `token` and `tokenExpires`.
1573
+ */
1574
+ UserSession.prototype.refreshSession = function (requestOptions) {
1575
+ // make sure subsequent calls to getUser() don't returned cached metadata
1576
+ this._user = null;
1577
+ if (this.username && this.password) {
1578
+ return this.refreshWithUsernameAndPassword(requestOptions);
1579
+ }
1580
+ if (this.clientId && this.refreshToken) {
1581
+ return this.refreshWithRefreshToken();
1582
+ }
1583
+ return Promise.reject(new ArcGISAuthError("Unable to refresh token."));
1584
+ };
1585
+ /**
1586
+ * Determines the root of the ArcGIS Server or Portal for a given URL.
1587
+ *
1588
+ * @param url the URl to determine the root url for.
1589
+ */
1590
+ UserSession.prototype.getServerRootUrl = function (url) {
1591
+ var root = cleanUrl(url).split(/\/rest(\/admin)?\/services(?:\/|#|\?|$)/)[0];
1592
+ var _a = root.match(/(https?:\/\/)(.+)/), protocol = _a[1], domainAndPath = _a[2];
1593
+ var _b = domainAndPath.split("/"), domain = _b[0], path = _b.slice(1);
1594
+ // only the domain is lowercased because in some cases an org id might be
1595
+ // in the path which cannot be lowercased.
1596
+ return "" + protocol + domain.toLowerCase() + "/" + path.join("/");
1597
+ };
1598
+ /**
1599
+ * Returns the proper [`credentials`] option for `fetch` for a given domain.
1600
+ * See [trusted server](https://enterprise.arcgis.com/en/portal/latest/administer/windows/configure-security.htm#ESRI_SECTION1_70CC159B3540440AB325BE5D89DBE94A).
1601
+ * Used internally by underlying request methods to add support for specific security considerations.
1602
+ *
1603
+ * @param url The url of the request
1604
+ * @returns "include" or "same-origin"
1605
+ */
1606
+ UserSession.prototype.getDomainCredentials = function (url) {
1607
+ if (!this.trustedDomains || !this.trustedDomains.length) {
1608
+ return "same-origin";
1609
+ }
1610
+ return this.trustedDomains.some(function (domainWithProtocol) {
1611
+ return url.startsWith(domainWithProtocol);
1612
+ })
1613
+ ? "include"
1614
+ : "same-origin";
1615
+ };
1616
+ /**
1617
+ * Return a function that closes over the validOrigins array and
1618
+ * can be used as an event handler for the `message` event
1619
+ *
1620
+ * @param validOrigins Array of valid origins
1621
+ */
1622
+ UserSession.prototype.createPostMessageHandler = function (validOrigins) {
1623
+ var _this = this;
1624
+ // return a function that closes over the validOrigins and
1625
+ // has access to the credential
1626
+ return function (event) {
1627
+ // Verify that the origin is valid
1628
+ // Note: do not use regex's here. validOrigins is an array so we're checking that the event's origin
1629
+ // is in the array via exact match. More info about avoiding postMessage xss issues here
1630
+ // https://jlajara.gitlab.io/web/2020/07/17/Dom_XSS_PostMessage_2.html#tipsbypasses-in-postmessage-vulnerabilities
1631
+ var isValidOrigin = validOrigins.indexOf(event.origin) > -1;
1632
+ // JSAPI handles this slightly differently - instead of checking a list, it will respond if
1633
+ // event.origin === window.location.origin || event.origin.endsWith('.arcgis.com')
1634
+ // For Hub, and to enable cross domain debugging with port's in urls, we are opting to
1635
+ // use a list of valid origins
1636
+ // Ensure the message type is something we want to handle
1637
+ var isValidType = event.data.type === "arcgis:auth:requestCredential";
1638
+ var isTokenValid = _this.tokenExpires.getTime() > Date.now();
1639
+ if (isValidOrigin && isValidType) {
1640
+ var msg = {};
1641
+ if (isTokenValid) {
1642
+ var credential = _this.toCredential();
1643
+ // arcgis:auth:error with {name: "", message: ""}
1644
+ // the following line allows us to conform to our spec without changing other depended-on functionality
1645
+ // https://github.com/Esri/arcgis-rest-js/blob/master/packages/arcgis-rest-auth/post-message-auth-spec.md#arcgisauthcredential
1646
+ credential.server = credential.server.replace("/sharing/rest", "");
1647
+ msg = { type: "arcgis:auth:credential", credential: credential };
1648
+ }
1649
+ else {
1650
+ // Return an error
1651
+ msg = {
1652
+ type: "arcgis:auth:error",
1653
+ error: {
1654
+ name: "tokenExpiredError",
1655
+ message: "Session token was expired, and not returned to the child application",
1656
+ },
1657
+ };
1658
+ }
1659
+ event.source.postMessage(msg, event.origin);
1660
+ }
1661
+ };
1662
+ };
1663
+ /**
1664
+ * Validates that a given URL is properly federated with our current `portal`.
1665
+ * Attempts to use the internal `federatedServers` cache first.
1666
+ */
1667
+ UserSession.prototype.getTokenForServer = function (url, requestOptions) {
1668
+ var _this = this;
1669
+ // requests to /rest/services/ and /rest/admin/services/ are both valid
1670
+ // Federated servers may have inconsistent casing, so lowerCase it
1671
+ var root = this.getServerRootUrl(url);
1672
+ var existingToken = this.federatedServers[root];
1673
+ if (existingToken &&
1674
+ existingToken.expires &&
1675
+ existingToken.expires.getTime() > Date.now()) {
1676
+ return Promise.resolve(existingToken.token);
1677
+ }
1678
+ if (this._pendingTokenRequests[root]) {
1679
+ return this._pendingTokenRequests[root];
1680
+ }
1681
+ this._pendingTokenRequests[root] = this.fetchAuthorizedDomains().then(function () {
1682
+ return request(root + "/rest/info", {
1683
+ credentials: _this.getDomainCredentials(url),
1684
+ })
1685
+ .then(function (response) {
1686
+ if (response.owningSystemUrl) {
1687
+ /**
1688
+ * if this server is not owned by this portal
1689
+ * bail out with an error since we know we wont
1690
+ * be able to generate a token
1691
+ */
1692
+ if (!isFederated(response.owningSystemUrl, _this.portal)) {
1693
+ throw new ArcGISAuthError(url + " is not federated with " + _this.portal + ".", "NOT_FEDERATED");
1694
+ }
1695
+ else {
1696
+ /**
1697
+ * if the server is federated, use the relevant token endpoint.
1698
+ */
1699
+ return request(response.owningSystemUrl + "/sharing/rest/info", requestOptions);
1700
+ }
1701
+ }
1702
+ else if (response.authInfo &&
1703
+ _this.federatedServers[root] !== undefined) {
1704
+ /**
1705
+ * if its a stand-alone instance of ArcGIS Server that doesn't advertise
1706
+ * federation, but the root server url is recognized, use its built in token endpoint.
1707
+ */
1708
+ return Promise.resolve({
1709
+ authInfo: response.authInfo,
1710
+ });
1711
+ }
1712
+ else {
1713
+ throw new ArcGISAuthError(url + " is not federated with any portal and is not explicitly trusted.", "NOT_FEDERATED");
1714
+ }
1715
+ })
1716
+ .then(function (response) {
1717
+ return response.authInfo.tokenServicesUrl;
1718
+ })
1719
+ .then(function (tokenServicesUrl) {
1720
+ // an expired token cant be used to generate a new token
1721
+ if (_this.token && _this.tokenExpires.getTime() > Date.now()) {
1722
+ return generateToken(tokenServicesUrl, {
1723
+ params: {
1724
+ token: _this.token,
1725
+ serverUrl: url,
1726
+ expiration: _this.tokenDuration,
1727
+ client: "referer",
1728
+ },
1729
+ });
1730
+ // generate an entirely fresh token if necessary
1731
+ }
1732
+ else {
1733
+ return generateToken(tokenServicesUrl, {
1734
+ params: {
1735
+ username: _this.username,
1736
+ password: _this.password,
1737
+ expiration: _this.tokenDuration,
1738
+ client: "referer",
1739
+ },
1740
+ }).then(function (response) {
1741
+ _this._token = response.token;
1742
+ _this._tokenExpires = new Date(response.expires);
1743
+ return response;
1744
+ });
1745
+ }
1746
+ })
1747
+ .then(function (response) {
1748
+ _this.federatedServers[root] = {
1749
+ expires: new Date(response.expires),
1750
+ token: response.token,
1751
+ };
1752
+ delete _this._pendingTokenRequests[root];
1753
+ return response.token;
1754
+ });
1755
+ });
1756
+ return this._pendingTokenRequests[root];
1757
+ };
1758
+ /**
1759
+ * Returns an unexpired token for the current `portal`.
1760
+ */
1761
+ UserSession.prototype.getFreshToken = function (requestOptions) {
1762
+ var _this = this;
1763
+ if (this.token && !this.tokenExpires) {
1764
+ return Promise.resolve(this.token);
1765
+ }
1766
+ if (this.token &&
1767
+ this.tokenExpires &&
1768
+ this.tokenExpires.getTime() > Date.now()) {
1769
+ return Promise.resolve(this.token);
1770
+ }
1771
+ if (!this._pendingTokenRequests[this.portal]) {
1772
+ this._pendingTokenRequests[this.portal] = this.refreshSession(requestOptions).then(function (session) {
1773
+ _this._pendingTokenRequests[_this.portal] = null;
1774
+ return session.token;
1775
+ });
1776
+ }
1777
+ return this._pendingTokenRequests[this.portal];
1778
+ };
1779
+ /**
1780
+ * Refreshes the current `token` and `tokenExpires` with `username` and
1781
+ * `password`.
1782
+ */
1783
+ UserSession.prototype.refreshWithUsernameAndPassword = function (requestOptions) {
1784
+ var _this = this;
1785
+ var options = __assign({ params: {
1786
+ username: this.username,
1787
+ password: this.password,
1788
+ expiration: this.tokenDuration,
1789
+ } }, requestOptions);
1790
+ return generateToken(this.portal + "/generateToken", options).then(function (response) {
1791
+ _this._token = response.token;
1792
+ _this._tokenExpires = new Date(response.expires);
1793
+ return _this;
1794
+ });
1795
+ };
1796
+ /**
1797
+ * Refreshes the current `token` and `tokenExpires` with `refreshToken`.
1798
+ */
1799
+ UserSession.prototype.refreshWithRefreshToken = function (requestOptions) {
1800
+ var _this = this;
1801
+ if (this.refreshToken &&
1802
+ this.refreshTokenExpires &&
1803
+ this.refreshTokenExpires.getTime() < Date.now()) {
1804
+ return this.refreshRefreshToken(requestOptions);
1805
+ }
1806
+ var options = __assign({ params: {
1807
+ client_id: this.clientId,
1808
+ refresh_token: this.refreshToken,
1809
+ grant_type: "refresh_token",
1810
+ } }, requestOptions);
1811
+ return fetchToken(this.portal + "/oauth2/token", options).then(function (response) {
1812
+ _this._token = response.token;
1813
+ _this._tokenExpires = response.expires;
1814
+ return _this;
1815
+ });
1816
+ };
1817
+ /**
1818
+ * Exchanges an unexpired `refreshToken` for a new one, also updates `token` and
1819
+ * `tokenExpires`.
1820
+ */
1821
+ UserSession.prototype.refreshRefreshToken = function (requestOptions) {
1822
+ var _this = this;
1823
+ var options = __assign({ params: {
1824
+ client_id: this.clientId,
1825
+ refresh_token: this.refreshToken,
1826
+ redirect_uri: this.redirectUri,
1827
+ grant_type: "exchange_refresh_token",
1828
+ } }, requestOptions);
1829
+ return fetchToken(this.portal + "/oauth2/token", options).then(function (response) {
1830
+ _this._token = response.token;
1831
+ _this._tokenExpires = response.expires;
1832
+ _this._refreshToken = response.refreshToken;
1833
+ _this._refreshTokenExpires = new Date(Date.now() + (_this.refreshTokenTTL - 1) * 60 * 1000);
1834
+ return _this;
1835
+ });
1836
+ };
1837
+ /**
1838
+ * ensures that the authorizedCrossOriginDomains are obtained from the portal and cached
1839
+ * so we can check them later.
1840
+ *
1841
+ * @returns this
1842
+ */
1843
+ UserSession.prototype.fetchAuthorizedDomains = function () {
1844
+ var _this = this;
1845
+ // if this token is for a specific server or we don't have a portal
1846
+ // don't get the portal info because we cant get the authorizedCrossOriginDomains
1847
+ if (this.server || !this.portal) {
1848
+ return Promise.resolve(this);
1849
+ }
1850
+ return this.getPortal().then(function (portalInfo) {
1851
+ /**
1852
+ * Specific domains can be configured as secure.esri.com or https://secure.esri.com this
1853
+ * normalizes to https://secure.esri.com so we can use startsWith later.
1854
+ */
1855
+ if (portalInfo.authorizedCrossOriginDomains &&
1856
+ portalInfo.authorizedCrossOriginDomains.length) {
1857
+ _this.trustedDomains = portalInfo.authorizedCrossOriginDomains
1858
+ .filter(function (d) { return !d.startsWith("http://"); })
1859
+ .map(function (d) {
1860
+ if (d.startsWith("https://")) {
1861
+ return d;
1862
+ }
1863
+ else {
1864
+ return "https://" + d;
1865
+ }
1866
+ });
1867
+ }
1868
+ return _this;
1869
+ });
1870
+ };
1871
+ return UserSession;
1872
+ }());
1873
+
1874
+ const solutionConfigurationCss = ".configuration-container{position:relative;height:100%;width:100%}.configuration{position:absolute;top:0px;right:0px;bottom:0px;left:0px;display:flex;padding:0.5rem;border:1px #808080 solid}.config-tabs{width:100%}.config-tab{width:100%}.config-solution{position:absolute;top:3.5rem;right:-1px;bottom:-1px;left:-1px;display:flex;padding:0.5rem}.config-inventory{display:inline;max-width:-moz-min-content;max-width:min-content;flex-grow:0;overflow-y:auto}.config-inventory-hide{display:none;max-width:-moz-min-content;max-width:min-content;flex-grow:0;overflow-y:auto}.config-item{position:relative;display:inline;flex-grow:1;overflow-y:auto;-webkit-margin-start:0.5rem;margin-inline-start:0.5rem}solution-contents{position:relative;height:100%}solution-item{position:relative;height:100%}solution-spatial-ref{position:relative;height:100%;width:100%;overflow-y:auto}";
1875
+
1876
+ const SolutionConfiguration = class {
1877
+ //--------------------------------------------------------------------------
1878
+ //
1879
+ // Lifecycle
1880
+ //
1881
+ //--------------------------------------------------------------------------
1882
+ constructor(hostRef) {
1883
+ registerInstance(this, hostRef);
1884
+ this._solutionStoreHasChanges = false;
1885
+ this._solutionEditorHasChanges = false;
1886
+ this._solutionEditorHasErrors = false;
1887
+ this._canSave = false;
1888
+ this.serializedAuthentication = "";
1889
+ this.solutionItemId = "";
1890
+ this.showLoading = false;
1891
+ this._currentEditItemId = "";
1892
+ this._organizationVariables = "";
1893
+ this._solutionContentsComponent = undefined;
1894
+ this._solutionIsLoaded = false;
1895
+ this._solutionVariables = "";
1896
+ this._templateHierarchy = [];
1897
+ this._translations = undefined;
1898
+ this._treeOpen = true;
1899
+ this._authentication = this.serializedAuthentication ? UserSession.deserialize(this.serializedAuthentication) : new UserSession({});
1900
+ console.log("CONFIG constructor " + this.solutionItemId); //???
1901
+ void this._loadSolution(this.solutionItemId);
1902
+ window.addEventListener("solutionStoreHasChanges", (evt) => {
1903
+ this._updateSaveability(this._solutionStoreHasChanges = evt.detail, this._solutionEditorHasChanges, this._solutionEditorHasErrors);
1904
+ });
1905
+ window.addEventListener("solutionEditorHasChanges", (evt) => {
1906
+ this._updateSaveability(this._solutionStoreHasChanges, this._solutionEditorHasChanges = evt.detail, this._solutionEditorHasErrors);
1907
+ });
1908
+ window.addEventListener("solutionEditorHasErrors", (evt) => {
1909
+ this._updateSaveability(this._solutionStoreHasChanges, this._solutionEditorHasChanges, this._solutionEditorHasErrors = evt.detail);
1910
+ });
1911
+ }
1912
+ async serializedAuthenticationWatchHandler() {
1913
+ this._authentication = this.serializedAuthentication ? UserSession.deserialize(this.serializedAuthentication) : new UserSession({});
1914
+ }
1915
+ async valueWatchHandler() {
1916
+ console.log("CONFIG watch " + this.solutionItemId); //???
1917
+ await this._loadSolution(this.solutionItemId);
1918
+ }
1919
+ /**
1920
+ * StencilJS: Called once just after the component is first connected to the DOM.
1921
+ *
1922
+ * @returns Promise when complete
1923
+ */
1924
+ async componentWillLoad() {
1925
+ return this._getTranslations();
1926
+ }
1927
+ /**
1928
+ * Renders the component.
1929
+ */
1930
+ render() {
1931
+ const wkid = getProp(state.getStoreInfo("spatialReferenceInfo"), "spatialReference");
1932
+ const hasServices = state.getStoreInfo("featureServices").length > 0;
1933
+ const solutionData = state.getStoreInfo("solutionData");
1934
+ this._solutionVariables = JSON.stringify(getSolutionVariables(solutionData.templates, this._translations));
1935
+ this._organizationVariables = JSON.stringify(getOrganizationVariables(this._translations));
1936
+ console.log("CONFIG render " + this.solutionItemId); //???
1937
+ return (h(Host, null, !this._solutionIsLoaded
1938
+ ? h("calcite-loader", { active: true, label: '' })
1939
+ : 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 ?
1940
+ h("calcite-tab-title", null, this._translations.spatialReferenceTab) :
1941
+ 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
1942
+ ? 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) })))
1943
+ : null)))));
1944
+ }
1945
+ //--------------------------------------------------------------------------
1946
+ //
1947
+ // Event Listeners
1948
+ //
1949
+ //--------------------------------------------------------------------------
1950
+ _solutionItemSelected(event) {
1951
+ this._currentEditItemId = event.detail;
1952
+ }
1953
+ //--------------------------------------------------------------------------
1954
+ //
1955
+ // Events
1956
+ //
1957
+ //--------------------------------------------------------------------------
1958
+ //--------------------------------------------------------------------------
1959
+ //
1960
+ // Public Methods (async)
1961
+ //
1962
+ //--------------------------------------------------------------------------
1963
+ /*
1964
+ @Method()
1965
+ async getEditModels(): Promise<ISolutionItems> {
1966
+ return Promise.resolve(state.items);
1967
+ }
1968
+ */
1969
+ async getSpatialReferenceInfo() {
1970
+ return Promise.resolve(state.getStoreInfo("spatialReferenceInfo"));
1971
+ }
1972
+ /*
1973
+ @Method()
1974
+ async getSourceTemplates(): Promise<any> {
1975
+ return Promise.resolve(this._templates);
1976
+ }
1977
+ */
1978
+ async saveSolution() {
1979
+ this._solutionIsLoaded = false;
1980
+ await state.saveSolution();
1981
+ this._solutionIsLoaded = true;
1982
+ this.solutionItemId = null;
1983
+ }
1984
+ async unloadSolution() {
1985
+ this.solutionItemId = null;
1986
+ }
1987
+ //--------------------------------------------------------------------------
1988
+ //
1989
+ // Private Methods
1990
+ //
1991
+ //--------------------------------------------------------------------------
1992
+ /**
1993
+ * Update the store with the initial values
1994
+ *
1995
+ * @param templates the solution items templates
1996
+ * @param isReset (defaults to false) indicates if we are resetting the controls after save
1997
+ */
1998
+ /*
1999
+ protected _initState(
2000
+ templates: any[],
2001
+ isReset = false
2002
+ ): Promise<any> {
2003
+ return new Promise((resolve, reject) => {
2004
+ if (isReset) {
2005
+ // clear models and state so we can refresh after save
2006
+ this.modelsSet = false;
2007
+ state.reset();
2008
+ }
2009
+ getModels(templates, this._authentication, this.solutionItemId).then(models => {
2010
+ state.models = models;
2011
+
2012
+ state.featureServices = getFeatureServices(templates);
2013
+ state.getStoreInfo("spatialReferenceInfo") = getSpatialReferenceInfo(state.featureServices, this._sourceItemData);
2014
+
2015
+ if (isReset) {
2016
+ // reset for undo/redo stack and diff editor tracking
2017
+ const jsonEditors = Array.from(this.el.getElementsByTagName("json-editor"));
2018
+ // eslint-disable-next-line @typescript-eslint/no-floating-promises
2019
+ jsonEditors.forEach(e => void e.reset());
2020
+ }
2021
+
2022
+ this.modelsSet = true;
2023
+ resolve(true);
2024
+ }, () => reject);
2025
+ });
2026
+ }
2027
+ */
2028
+ /**
2029
+ * Set Props with the initial values
2030
+ *
2031
+ * @protected
2032
+ */
2033
+ _initProps() {
2034
+ const solutionData = state.getStoreInfo("solutionData");
2035
+ this._templateHierarchy = [...getInventoryItems(solutionData.templates)];
2036
+ if (this._solutionContentsComponent) {
2037
+ this._solutionContentsComponent.templateHierarchy = this._templateHierarchy;
2038
+ }
2039
+ let firstItem;
2040
+ if (this._templateHierarchy.length > 0) {
2041
+ // Start with the first item in the contents
2042
+ firstItem = state.getItemInfo(this._templateHierarchy[0].id);
2043
+ }
2044
+ this._currentEditItemId = firstItem ? firstItem.itemId : "";
2045
+ }
2046
+ /**
2047
+ * Loads a solution.
2048
+ *
2049
+ * @param solutionItemId AGO id of solution to load
2050
+ *
2051
+ * @returns Resolved promise when task is done
2052
+ *
2053
+ * @protected
2054
+ */
2055
+ async _loadSolution(solutionItemId) {
2056
+ if (solutionItemId) {
2057
+ this._solutionIsLoaded = false;
2058
+ await state.loadSolution(solutionItemId, this._authentication);
2059
+ this._initProps();
2060
+ this._solutionIsLoaded = true;
2061
+ }
2062
+ else {
2063
+ this._reset();
2064
+ }
2065
+ return Promise.resolve();
2066
+ }
2067
+ /**
2068
+ * Resets internal variables.
2069
+ *
2070
+ * @protected
2071
+ */
2072
+ _reset() {
2073
+ this._currentEditItemId = "";
2074
+ this._organizationVariables = "";
2075
+ this._solutionVariables = "";
2076
+ this._templateHierarchy = [];
2077
+ }
2078
+ /**
2079
+ * Toggle _treeOpen prop to show/hide content tree.
2080
+ *
2081
+ * @protected
2082
+ */
2083
+ _toggleTree() {
2084
+ this._treeOpen = !this._treeOpen;
2085
+ }
2086
+ /**
2087
+ * Dispatches an event indicating if the configuration is saveable or not. It's not saveable if there are no
2088
+ * changes or if there's an error in the JSON editor.
2089
+ *
2090
+ * @param solutionStoreHasChanges Are there changes in the configuration editor's internal store?
2091
+ * @param solutionEditorHasChanges Are there changes in the configuration editor's JSON editor?
2092
+ * @param solutionEditorHasErrors Are there errors in the configuration editor's JSON editor?
2093
+ *
2094
+ * @protected
2095
+ */
2096
+ _updateSaveability(solutionStoreHasChanges, solutionEditorHasChanges, solutionEditorHasErrors) {
2097
+ const updateSaveability = (solutionStoreHasChanges || solutionEditorHasChanges) && !solutionEditorHasErrors;
2098
+ if (this._canSave !== updateSaveability) {
2099
+ window.dispatchEvent(new CustomEvent("solutionCanSave", {
2100
+ detail: updateSaveability,
2101
+ bubbles: true,
2102
+ cancelable: false,
2103
+ composed: true
2104
+ }));
2105
+ }
2106
+ this._canSave = updateSaveability;
2107
+ }
2108
+ /**
2109
+ * Save all edits from the current configuration
2110
+ *
2111
+ * @returns a response that will indicate success or failure and any associated messages
2112
+ */
2113
+ /*
2114
+ protected async _save() {
2115
+ const templateUpdates = await this._updateTemplates();
2116
+ const data = this._setSrInfo(templateUpdates.templates);
2117
+ return templateUpdates.errors.length === 0 ? save(
2118
+ this.solutionItemId,
2119
+ data,
2120
+ state.models,
2121
+ this._authentication,
2122
+ this._translations
2123
+ ).then(saveResult => {
2124
+ // need to trigger re-render...and re-fetch
2125
+ this._fetchData = true;
2126
+ this.modelsSet = false;
2127
+ return Promise.resolve(saveResult)
2128
+ }).catch(e => Promise.reject(e)) : Promise.reject({
2129
+ success: false,
2130
+ message: `The following templates have errors: ${templateUpdates.errors.join(", ")}`
2131
+ } as IResponse);
2132
+ }
2133
+ */
2134
+ /**
2135
+ * Update the solutions templates based on the stored changes
2136
+ *
2137
+ * @returns an object that contains the updated templates as well as any errors that were found
2138
+ */
2139
+ /*
2140
+ protected async _updateTemplates(): Promise<IUpdateTemplateResponse> {
2141
+ const errors = [];
2142
+ const models = await this.getEditModels();
2143
+ let templates = this._updateGroupDependencies(models, this._templates);
2144
+ Object.keys(models).forEach(k => {
2145
+ const m = models[k];
2146
+ templates = templates.map(t => {
2147
+ if (t.itemId === m.itemId) {
2148
+ this._setItem(t, m);
2149
+ const hasDataError = this._setData(t, m);
2150
+ const hasPropError = this._setProps(t, m);
2151
+ if (hasDataError || hasPropError) {
2152
+ errors.push(m.itemId);
2153
+ }
2154
+ }
2155
+ return t;
2156
+ });
2157
+ });
2158
+ errors.concat(window.monaco.editor.getModelMarkers({}));
2159
+ return Promise.resolve({
2160
+ templates,
2161
+ errors
2162
+ });
2163
+ }
2164
+ */
2165
+ /**
2166
+ * Review all models and store itemIds that should be added or removed from group dependencies
2167
+ *
2168
+ * @param models the corresponding models for the current templates
2169
+ *
2170
+ * @returns group info (an object with keys of groupIds and
2171
+ * arrays of itemIds that should be added or removed from group dependencies)
2172
+ */
2173
+ /*
2174
+ protected _getGroupInfo(
2175
+ models: any
2176
+ ): any {
2177
+ const groupInfo = {}
2178
+ Object.keys(models).forEach(k => {
2179
+ const m = models[k];
2180
+ if (m.shareInfo) {
2181
+ const groupId = m.shareInfo.groupId;
2182
+ const type = m.shareInfo.shared ? "share" : "unshare";
2183
+ if (groupInfo[groupId]) {
2184
+ groupInfo[groupId][type].push(m.itemId);
2185
+ } else {
2186
+ groupInfo[groupId] = {};
2187
+ groupInfo[groupId][type] = [m.itemId];
2188
+ if (m.shareInfo.shared) {
2189
+ groupInfo[groupId]["unshare"] = [];
2190
+ } else {
2191
+ groupInfo[groupId]["share"] = [];
2192
+ }
2193
+ }
2194
+ }
2195
+ });
2196
+ return groupInfo;
2197
+ }
2198
+ */
2199
+ /**
2200
+ * Updates group dependency arrays by adding or removing itemIds
2201
+ *
2202
+ * @param templates the current templates to update
2203
+ * @param models the corresponding models for the current templates
2204
+ *
2205
+ * @returns updated templates array
2206
+ */
2207
+ /*
2208
+ protected _updateGroupDependencies(
2209
+ models: any,
2210
+ templates: any[]
2211
+ ): any[] {
2212
+ const groupInfo = this._getGroupInfo(models);
2213
+ Object.keys(groupInfo).forEach(k => {
2214
+ templates.some(t => {
2215
+ if (t.itemId === k) {
2216
+ // add share items as deps
2217
+ groupInfo[k].share.forEach(s => {
2218
+ if (t.dependencies.indexOf(s) < 0) {
2219
+ t.dependencies.push(s);
2220
+ }
2221
+ });
2222
+
2223
+ // remove unshare items from deps
2224
+ groupInfo[k].unshare.forEach(s => {
2225
+ const index = t.dependencies.indexOf(s);
2226
+ if (index > -1) {
2227
+ t.dependencies.splice(index, 1);
2228
+ }
2229
+ });
2230
+ return true;
2231
+ } else {
2232
+ return false;
2233
+ }
2234
+ })
2235
+ })
2236
+ return templates;
2237
+ }
2238
+ */
2239
+ /**
2240
+ * Add group IDs to items that should be shared
2241
+ * This function will update the provided template when shareInfo is available
2242
+ *
2243
+ * @param template the current template to update
2244
+ * @param shareInfo the corresponding shareInfo from the model for the current template
2245
+ *
2246
+ */
2247
+ /*
2248
+ protected _updateItemGroups(
2249
+ template: any,
2250
+ shareInfo: any
2251
+ ): void {
2252
+ if (shareInfo) {
2253
+ const groupIndex = template.groups.indexOf(shareInfo.groupId);
2254
+ if (groupIndex < 0 && shareInfo.shared) {
2255
+ template.groups.push(shareInfo.groupId);
2256
+ }
2257
+ if (groupIndex > -1 && !shareInfo.shared) {
2258
+ template.groups.splice(groupIndex, 1);
2259
+ }
2260
+ }
2261
+ }
2262
+ */
2263
+ /**
2264
+ * Set a templates data property with changes from the models
2265
+ *
2266
+ * @param template the current template to update
2267
+ * @param model the corresponding model for the current template (stores any user changes)
2268
+ *
2269
+ * @returns a boolean that indicates if any errors were detected
2270
+ */
2271
+ /*
2272
+ protected _setData(
2273
+ template: any,
2274
+ model: any
2275
+ ): boolean {
2276
+ return this._setTemplateProp(
2277
+ template,
2278
+ model.dataOriginalValue,
2279
+ model.dataCurrentValue,
2280
+ "data"
2281
+ );
2282
+ }
2283
+ */
2284
+ /**
2285
+ * Set a templates properties property with changes from the models
2286
+ *
2287
+ * @param template the current template to update
2288
+ * @param model the corresponding model for the current template (stores any user changes)
2289
+ *
2290
+ * @returns a boolean that indicates if any errors were detected
2291
+ */
2292
+ /*
2293
+ protected _setProps(
2294
+ template: any,
2295
+ model: any
2296
+ ): boolean {
2297
+ return this._setTemplateProp(
2298
+ template,
2299
+ model.propsOriginalValue,
2300
+ model.propsCurrentValue,
2301
+ "properties"
2302
+ );
2303
+ }
2304
+ */
2305
+ /**
2306
+ * Generic function used to set properties or data property on a given template
2307
+ *
2308
+ * @param template the current template to update
2309
+ * @param originValue the original value from the solution template
2310
+ * @param modelValue the current value from the model (will contain any edits that have been made)
2311
+ * @param path the path to the property we should update if any changes are found
2312
+ *
2313
+ * @returns a boolean that indicates if any errors were detected
2314
+ */
2315
+ /*
2316
+ protected _setTemplateProp(
2317
+ template: any,
2318
+ originValue: any,
2319
+ modelValue: any,
2320
+ path: string
2321
+ ): boolean {
2322
+ let hasError = false;
2323
+ try {
2324
+ const _originValue = JSON.parse(originValue);
2325
+ const _modelValue = JSON.parse(modelValue);
2326
+
2327
+ if (_originValue && _modelValue && (JSON.stringify(_originValue) !== JSON.stringify(_modelValue))) {
2328
+ setProp(template, path, _modelValue);
2329
+ }
2330
+ } catch (e) {
2331
+ console.error(e);
2332
+ hasError = true;
2333
+ }
2334
+ return hasError;
2335
+ }
2336
+ */
2337
+ /**
2338
+ * Set a templates item property with changes from the models
2339
+ *
2340
+ * @param template the current template to update
2341
+ * @param model the corresponding model for the current template (stores any user changes)
2342
+ *
2343
+ * This function will update the template argument when edits are found
2344
+ */
2345
+ /*
2346
+ protected _setItem(
2347
+ template: any,
2348
+ model: any
2349
+ ): void {
2350
+ this._updateItemGroups(template, model.shareInfo);
2351
+ if (model.updateItemValues && Object.keys(model.updateItemValues).length > 0) {
2352
+ Object.keys(model.updateItemValues).forEach(k => {
2353
+ template.item[k] = model.updateItemValues[k];
2354
+ });
2355
+ }
2356
+ }
2357
+ */
2358
+ /**
2359
+ * Set spatial reference info in the solutions data
2360
+ *
2361
+ * @param templates a list of item templates from the solution
2362
+ *
2363
+ * @returns a cloned copy of the solutions data that has been updated with spatial reference info
2364
+ *
2365
+ */
2366
+ /*
2367
+ protected _setSrInfo(
2368
+ templates: any[]
2369
+ ): any {
2370
+ const srInfo: any = state.getStoreInfo("spatialReferenceInfo");
2371
+
2372
+ const serviceEnabled = typeof srInfo?.services === "undefined" ?
2373
+ false : Object.keys(srInfo.services).some(k => srInfo.services[k]);
2374
+
2375
+ const data = cloneObject(this._sourceItemData);
2376
+ data.templates = templates;
2377
+ if (srInfo && srInfo.enabled && serviceEnabled) {
2378
+ const wkid = srInfo.spatialReference.wkid.toString();
2379
+
2380
+ const wkidParam = {
2381
+ "label": "Spatial Reference",
2382
+ "default": wkid,
2383
+ "valueType": "spatialReference",
2384
+ "attributes": {
2385
+ "required": "true"
2386
+ }
2387
+ };
2388
+
2389
+ const params = getProp(data, "params");
2390
+ const hasWkid = params && params.wkid;
2391
+ setCreateProp(
2392
+ data,
2393
+ hasWkid ? "params.wkid.default" : "params.wkid",
2394
+ hasWkid ? wkid : params ? wkidParam : wkid
2395
+ );
2396
+ } else if (!srInfo.enabled) {
2397
+ if (getProp(data, "params.wkid")) {
2398
+ delete (data.params.wkid);
2399
+ }
2400
+ }
2401
+ return data;
2402
+ }
2403
+ */
2404
+ /**
2405
+ * Fetches the component's translations
2406
+ *
2407
+ * @protected
2408
+ */
2409
+ async _getTranslations() {
2410
+ const translations = await getLocaleComponentStrings(this.el);
2411
+ this._translations = translations[0];
2412
+ }
2413
+ get el() { return getElement(this); }
2414
+ static get watchers() { return {
2415
+ "serializedAuthentication": ["serializedAuthenticationWatchHandler"],
2416
+ "solutionItemId": ["valueWatchHandler"]
2417
+ }; }
2418
+ };
2419
+ SolutionConfiguration.style = solutionConfigurationCss;
2420
+
2421
+ export { Modal as calcite_modal, SolutionConfiguration as solution_configuration };
2422
+
2423
+ //# sourceMappingURL=p-cf59eb16.entry.js.map