@esri/solutions-components 0.0.2 → 0.0.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (892) hide show
  1. package/README.md +6 -5
  2. package/dist/cjs/CalciteExpandToggle-3e4e3b6c.js +0 -2
  3. package/dist/cjs/CalciteHeading-d765addc.js +0 -2
  4. package/dist/cjs/_commonjsHelpers-84e109b5.js +26 -0
  5. package/dist/cjs/array-cd6c0c32.js +0 -2
  6. package/dist/cjs/calcite-accordion-item.cjs.entry.js +0 -2
  7. package/dist/cjs/calcite-accordion.cjs.entry.js +0 -2
  8. package/dist/cjs/calcite-action-bar.cjs.entry.js +0 -2
  9. package/dist/cjs/calcite-action-group.cjs.entry.js +0 -2
  10. package/dist/cjs/calcite-action-menu_3.cjs.entry.js +0 -2
  11. package/dist/cjs/calcite-action-pad.cjs.entry.js +0 -2
  12. package/dist/cjs/calcite-action.cjs.entry.js +0 -2
  13. package/dist/cjs/calcite-alert.cjs.entry.js +0 -2
  14. package/dist/cjs/calcite-avatar.cjs.entry.js +0 -2
  15. package/dist/cjs/calcite-block-section.cjs.entry.js +0 -2
  16. package/dist/cjs/calcite-block.cjs.entry.js +0 -2
  17. package/dist/cjs/calcite-button.cjs.entry.js +0 -2
  18. package/dist/cjs/calcite-card.cjs.entry.js +0 -2
  19. package/dist/cjs/calcite-checkbox_4.cjs.entry.js +0 -2
  20. package/dist/cjs/calcite-chip.cjs.entry.js +0 -2
  21. package/dist/cjs/calcite-color-picker-hex-input.cjs.entry.js +3 -4
  22. package/dist/cjs/calcite-color-picker-swatch.cjs.entry.js +2 -3
  23. package/dist/cjs/calcite-color-picker.cjs.entry.js +3 -4
  24. package/dist/cjs/calcite-combobox-item-group.cjs.entry.js +0 -2
  25. package/dist/cjs/calcite-combobox-item.cjs.entry.js +0 -2
  26. package/dist/cjs/calcite-combobox.cjs.entry.js +0 -2
  27. package/dist/cjs/calcite-date-picker-day_3.cjs.entry.js +0 -2
  28. package/dist/cjs/calcite-date-picker.cjs.entry.js +0 -2
  29. package/dist/cjs/calcite-dropdown-group.cjs.entry.js +0 -2
  30. package/dist/cjs/calcite-dropdown-item.cjs.entry.js +0 -2
  31. package/dist/cjs/calcite-dropdown.cjs.entry.js +0 -2
  32. package/dist/cjs/calcite-fab.cjs.entry.js +0 -2
  33. package/dist/cjs/calcite-filter.cjs.entry.js +0 -2
  34. package/dist/cjs/calcite-flow.cjs.entry.js +0 -2
  35. package/dist/cjs/calcite-graph.cjs.entry.js +0 -2
  36. package/dist/cjs/calcite-handle.cjs.entry.js +0 -2
  37. package/dist/cjs/calcite-icon.cjs.entry.js +0 -2
  38. package/dist/cjs/calcite-inline-editable.cjs.entry.js +0 -2
  39. package/dist/cjs/calcite-input-date-picker.cjs.entry.js +0 -2
  40. package/dist/cjs/calcite-input-message.cjs.entry.js +0 -2
  41. package/dist/cjs/calcite-input-time-picker.cjs.entry.js +0 -2
  42. package/dist/cjs/calcite-input_2.cjs.entry.js +0 -2
  43. package/dist/cjs/calcite-label.cjs.entry.js +0 -2
  44. package/dist/cjs/calcite-link.cjs.entry.js +0 -2
  45. package/dist/cjs/calcite-list-item-group.cjs.entry.js +0 -2
  46. package/dist/cjs/calcite-list-item.cjs.entry.js +0 -2
  47. package/dist/cjs/calcite-list.cjs.entry.js +0 -2
  48. package/dist/cjs/calcite-loader.cjs.entry.js +0 -2
  49. package/dist/cjs/calcite-modal.cjs.entry.js +0 -2
  50. package/dist/cjs/calcite-notice.cjs.entry.js +0 -2
  51. package/dist/cjs/calcite-option-group.cjs.entry.js +0 -2
  52. package/dist/cjs/calcite-option.cjs.entry.js +0 -2
  53. package/dist/cjs/calcite-pagination.cjs.entry.js +0 -2
  54. package/dist/cjs/calcite-panel_14.cjs.entry.js +41 -8
  55. package/dist/cjs/calcite-pick-list-group.cjs.entry.js +0 -2
  56. package/dist/cjs/calcite-pick-list-item.cjs.entry.js +0 -2
  57. package/dist/cjs/calcite-pick-list.cjs.entry.js +0 -2
  58. package/dist/cjs/calcite-popover-manager.cjs.entry.js +0 -2
  59. package/dist/cjs/calcite-radio-button-group.cjs.entry.js +0 -2
  60. package/dist/cjs/calcite-radio-button.cjs.entry.js +0 -2
  61. package/dist/cjs/calcite-radio-group-item.cjs.entry.js +0 -2
  62. package/dist/cjs/calcite-radio-group.cjs.entry.js +0 -2
  63. package/dist/cjs/calcite-radio.cjs.entry.js +0 -2
  64. package/dist/cjs/calcite-rating.cjs.entry.js +0 -2
  65. package/dist/cjs/calcite-scrim.cjs.entry.js +0 -2
  66. package/dist/cjs/calcite-select.cjs.entry.js +0 -2
  67. package/dist/cjs/calcite-shell-center-row.cjs.entry.js +0 -2
  68. package/dist/cjs/calcite-slider.cjs.entry.js +0 -2
  69. package/dist/cjs/calcite-sortable-list.cjs.entry.js +0 -2
  70. package/dist/cjs/calcite-split-button.cjs.entry.js +0 -2
  71. package/dist/cjs/calcite-stepper-item.cjs.entry.js +0 -2
  72. package/dist/cjs/calcite-stepper.cjs.entry.js +0 -2
  73. package/dist/cjs/calcite-switch.cjs.entry.js +0 -2
  74. package/dist/cjs/calcite-tile-select-group.cjs.entry.js +0 -2
  75. package/dist/cjs/calcite-tile-select.cjs.entry.js +0 -2
  76. package/dist/cjs/calcite-tile.cjs.entry.js +0 -2
  77. package/dist/cjs/calcite-time-picker.cjs.entry.js +0 -2
  78. package/dist/cjs/calcite-tip-group.cjs.entry.js +0 -2
  79. package/dist/cjs/calcite-tip-manager.cjs.entry.js +0 -2
  80. package/dist/cjs/calcite-tip.cjs.entry.js +0 -2
  81. package/dist/cjs/calcite-tooltip.cjs.entry.js +0 -2
  82. package/dist/cjs/calcite-value-list-item.cjs.entry.js +0 -2
  83. package/dist/cjs/calcite-value-list.cjs.entry.js +0 -2
  84. package/dist/cjs/common-a4edb52d.js +216 -0
  85. package/dist/cjs/date-0554c4d1.js +0 -2
  86. package/dist/cjs/debounce-df22462b.js +0 -2
  87. package/dist/cjs/dom-62511f59.js +0 -2
  88. package/dist/cjs/editStore-36fc36e6.js +2024 -0
  89. package/dist/cjs/forIn-6a1c2f6d.js +0 -2
  90. package/dist/cjs/form-0b5b2d4e.js +0 -2
  91. package/dist/cjs/generalHelpers-cee7d0da.js +168 -0
  92. package/dist/cjs/guid-c6be9504.js +0 -2
  93. package/dist/cjs/{index-706750dc.js → index-69e74dd7.js} +5 -19
  94. package/dist/cjs/index-81c17948.js +0 -2
  95. package/dist/cjs/index.cjs.js +0 -2
  96. package/dist/cjs/interfaces-5ba2c1a7.js +0 -2
  97. package/dist/cjs/key-2a6290c8.js +0 -2
  98. package/dist/cjs/label-46482470.js +0 -2
  99. package/dist/cjs/loader.cjs.js +1 -3
  100. package/dist/cjs/locale-0db34680.js +0 -2
  101. package/dist/cjs/math-71f8de66.js +0 -2
  102. package/dist/cjs/number-697ce34c.js +0 -2
  103. package/dist/cjs/observers-88bbd6ef.js +0 -2
  104. package/dist/cjs/popper-8c8dc960.js +0 -2
  105. package/dist/cjs/request-6905140c.js +550 -0
  106. package/dist/cjs/resources-20f88094.js +0 -2
  107. package/dist/cjs/resources-27c22d8a.js +0 -2
  108. package/dist/cjs/{resources-369e7421.js → resources-2a401414.js} +1 -3
  109. package/dist/cjs/resources-46af0638.js +0 -2
  110. package/dist/cjs/resources-509951f9.js +0 -2
  111. package/dist/cjs/resources-5b7958e4.js +0 -2
  112. package/dist/cjs/resources-a265534b.js +0 -2
  113. package/dist/cjs/resources-e231446d.js +0 -2
  114. package/dist/cjs/resources-ef6c71a1.js +0 -2
  115. package/dist/cjs/shared-list-render-63d3ea89.js +0 -2
  116. package/dist/cjs/solution-configuration.cjs.entry.js +172 -14
  117. package/dist/cjs/solution-contents_3.cjs.entry.js +42 -68
  118. package/dist/cjs/solutions.cjs.js +1 -3
  119. package/dist/cjs/sortable.esm-14548a17.js +0 -2
  120. package/dist/cjs/store-manager.cjs.entry.js +17 -8
  121. package/dist/cjs/templates-a0242ced.js +422 -0
  122. package/dist/cjs/time-c87dc79e.js +0 -2
  123. package/dist/cjs/utils-c19d354a.js +0 -2
  124. package/dist/cjs/utils-cb7373e6.js +0 -2
  125. package/dist/collection/assets/nls/fr/strings.js +2 -0
  126. package/dist/collection/assets/nls/strings.js +2 -0
  127. package/dist/collection/collection-manifest.json +9 -9
  128. package/dist/collection/components/json-editor/json-editor.js +40 -2
  129. package/dist/collection/components/solution-configuration/solution-configuration.js +251 -24
  130. package/dist/collection/components/solution-contents/solution-contents.js +12 -3
  131. package/dist/collection/components/solution-item/solution-item.css +1 -0
  132. package/dist/collection/components/solution-item/solution-item.js +2 -2
  133. package/dist/collection/components/solution-item-details/solution-item-details.js +4 -3
  134. package/dist/collection/components/solution-item-icon/solution-item-icon.js +0 -1
  135. package/dist/collection/components/solution-item-sharing/solution-item-sharing.js +2 -2
  136. package/dist/collection/components/solution-organization-variables/solution-organization-variables.js +2 -2
  137. package/dist/collection/components/solution-resource-item/solution-resource-item.js +2 -2
  138. package/dist/collection/components/solution-spatial-ref/solution-spatial-ref.js +68 -68
  139. package/dist/collection/components/solution-spatial-ref/spatialreferences.js +0 -2
  140. package/dist/collection/components/solution-template-data/solution-template-data.js +4 -4
  141. package/dist/collection/components/solution-variables/solution-variables.js +2 -2
  142. package/dist/collection/components/store-manager/store-manager.js +49 -5
  143. package/dist/collection/demos/browse-solutions.html +136 -54
  144. package/dist/collection/demos/solution-configuration.html +139 -12
  145. package/dist/collection/demos/solution-spatial-ref.html +1 -1
  146. package/dist/collection/index.js +0 -1
  147. package/dist/collection/utils/common.js +25 -77
  148. package/dist/collection/utils/common.ts +42 -73
  149. package/dist/collection/utils/editStore.js +0 -1
  150. package/dist/{solutions/p-ecbfddde.js → collection/utils/interfaces.js} +16 -17
  151. package/dist/collection/utils/interfaces.ts +126 -0
  152. package/dist/collection/utils/templates.js +8 -6
  153. package/dist/collection/utils/templates.ts +19 -33
  154. package/dist/custom-elements/index.js +3161 -152
  155. package/dist/esm/CalciteExpandToggle-5df46988.js +0 -2
  156. package/dist/esm/CalciteHeading-79b4b347.js +0 -2
  157. package/dist/esm/_commonjsHelpers-84c626bc.js +22 -0
  158. package/dist/esm/array-71e0c501.js +0 -2
  159. package/dist/esm/calcite-accordion-item.entry.js +0 -2
  160. package/dist/esm/calcite-accordion.entry.js +0 -2
  161. package/dist/esm/calcite-action-bar.entry.js +0 -2
  162. package/dist/esm/calcite-action-group.entry.js +0 -2
  163. package/dist/esm/calcite-action-menu_3.entry.js +0 -2
  164. package/dist/esm/calcite-action-pad.entry.js +0 -2
  165. package/dist/esm/calcite-action.entry.js +0 -2
  166. package/dist/esm/calcite-alert.entry.js +0 -2
  167. package/dist/esm/calcite-avatar.entry.js +0 -2
  168. package/dist/esm/calcite-block-section.entry.js +0 -2
  169. package/dist/esm/calcite-block.entry.js +0 -2
  170. package/dist/esm/calcite-button.entry.js +0 -2
  171. package/dist/esm/calcite-card.entry.js +0 -2
  172. package/dist/esm/calcite-checkbox_4.entry.js +0 -2
  173. package/dist/esm/calcite-chip.entry.js +0 -2
  174. package/dist/esm/calcite-color-picker-hex-input.entry.js +3 -4
  175. package/dist/esm/calcite-color-picker-swatch.entry.js +2 -3
  176. package/dist/esm/calcite-color-picker.entry.js +3 -4
  177. package/dist/esm/calcite-combobox-item-group.entry.js +0 -2
  178. package/dist/esm/calcite-combobox-item.entry.js +0 -2
  179. package/dist/esm/calcite-combobox.entry.js +0 -2
  180. package/dist/esm/calcite-date-picker-day_3.entry.js +0 -2
  181. package/dist/esm/calcite-date-picker.entry.js +0 -2
  182. package/dist/esm/calcite-dropdown-group.entry.js +0 -2
  183. package/dist/esm/calcite-dropdown-item.entry.js +0 -2
  184. package/dist/esm/calcite-dropdown.entry.js +0 -2
  185. package/dist/esm/calcite-fab.entry.js +0 -2
  186. package/dist/esm/calcite-filter.entry.js +0 -2
  187. package/dist/esm/calcite-flow.entry.js +0 -2
  188. package/dist/esm/calcite-graph.entry.js +0 -2
  189. package/dist/esm/calcite-handle.entry.js +0 -2
  190. package/dist/esm/calcite-icon.entry.js +0 -2
  191. package/dist/esm/calcite-inline-editable.entry.js +0 -2
  192. package/dist/esm/calcite-input-date-picker.entry.js +0 -2
  193. package/dist/esm/calcite-input-message.entry.js +0 -2
  194. package/dist/esm/calcite-input-time-picker.entry.js +0 -2
  195. package/dist/esm/calcite-input_2.entry.js +0 -2
  196. package/dist/esm/calcite-label.entry.js +0 -2
  197. package/dist/esm/calcite-link.entry.js +0 -2
  198. package/dist/esm/calcite-list-item-group.entry.js +0 -2
  199. package/dist/esm/calcite-list-item.entry.js +0 -2
  200. package/dist/esm/calcite-list.entry.js +0 -2
  201. package/dist/esm/calcite-loader.entry.js +0 -2
  202. package/dist/esm/calcite-modal.entry.js +0 -2
  203. package/dist/esm/calcite-notice.entry.js +0 -2
  204. package/dist/esm/calcite-option-group.entry.js +0 -2
  205. package/dist/esm/calcite-option.entry.js +0 -2
  206. package/dist/esm/calcite-pagination.entry.js +0 -2
  207. package/dist/esm/calcite-panel_14.entry.js +37 -4
  208. package/dist/esm/calcite-pick-list-group.entry.js +0 -2
  209. package/dist/esm/calcite-pick-list-item.entry.js +0 -2
  210. package/dist/esm/calcite-pick-list.entry.js +0 -2
  211. package/dist/esm/calcite-popover-manager.entry.js +0 -2
  212. package/dist/esm/calcite-radio-button-group.entry.js +0 -2
  213. package/dist/esm/calcite-radio-button.entry.js +0 -2
  214. package/dist/esm/calcite-radio-group-item.entry.js +0 -2
  215. package/dist/esm/calcite-radio-group.entry.js +0 -2
  216. package/dist/esm/calcite-radio.entry.js +0 -2
  217. package/dist/esm/calcite-rating.entry.js +0 -2
  218. package/dist/esm/calcite-scrim.entry.js +0 -2
  219. package/dist/esm/calcite-select.entry.js +0 -2
  220. package/dist/esm/calcite-shell-center-row.entry.js +0 -2
  221. package/dist/esm/calcite-slider.entry.js +0 -2
  222. package/dist/esm/calcite-sortable-list.entry.js +0 -2
  223. package/dist/esm/calcite-split-button.entry.js +0 -2
  224. package/dist/esm/calcite-stepper-item.entry.js +0 -2
  225. package/dist/esm/calcite-stepper.entry.js +0 -2
  226. package/dist/esm/calcite-switch.entry.js +0 -2
  227. package/dist/esm/calcite-tile-select-group.entry.js +0 -2
  228. package/dist/esm/calcite-tile-select.entry.js +0 -2
  229. package/dist/esm/calcite-tile.entry.js +0 -2
  230. package/dist/esm/calcite-time-picker.entry.js +0 -2
  231. package/dist/esm/calcite-tip-group.entry.js +0 -2
  232. package/dist/esm/calcite-tip-manager.entry.js +0 -2
  233. package/dist/esm/calcite-tip.entry.js +0 -2
  234. package/dist/esm/calcite-tooltip.entry.js +0 -2
  235. package/dist/esm/calcite-value-list-item.entry.js +0 -2
  236. package/dist/esm/calcite-value-list.entry.js +0 -2
  237. package/dist/esm/common-70333fb9.js +213 -0
  238. package/dist/esm/date-5d75460a.js +0 -2
  239. package/dist/esm/debounce-23ad5849.js +0 -2
  240. package/dist/esm/dom-1cc617ae.js +0 -2
  241. package/dist/esm/editStore-197be454.js +2022 -0
  242. package/dist/esm/forIn-c922d47c.js +0 -2
  243. package/dist/esm/form-636dfed1.js +0 -2
  244. package/dist/esm/generalHelpers-91e92dc0.js +161 -0
  245. package/dist/esm/guid-740f1f1a.js +0 -2
  246. package/dist/esm/index-a3c3e3db.js +0 -2
  247. package/dist/esm/{index-934f242e.js → index-c1264d13.js} +3 -17
  248. package/dist/esm/index.js +0 -2
  249. package/dist/esm/interfaces-4f07beec.js +0 -2
  250. package/dist/esm/key-1748eb79.js +0 -2
  251. package/dist/esm/label-851f8926.js +0 -2
  252. package/dist/esm/loader.js +1 -3
  253. package/dist/esm/locale-31c8d43b.js +0 -2
  254. package/dist/esm/math-d8795f31.js +0 -2
  255. package/dist/esm/number-47ecb380.js +0 -2
  256. package/dist/esm/observers-b13ff24b.js +0 -2
  257. package/dist/esm/popper-25874f2f.js +0 -2
  258. package/dist/esm/request-9c2c9a49.js +548 -0
  259. package/dist/esm/resources-12c3b829.js +0 -2
  260. package/dist/esm/resources-32d7dd89.js +0 -2
  261. package/dist/esm/resources-466ccf86.js +0 -2
  262. package/dist/esm/resources-4cc0ef44.js +0 -2
  263. package/dist/esm/resources-861d0240.js +0 -2
  264. package/dist/esm/resources-b023c30a.js +0 -2
  265. package/dist/esm/{resources-c537bacb.js → resources-d7e09977.js} +1 -3
  266. package/dist/esm/resources-e56b6e53.js +0 -2
  267. package/dist/esm/resources-ec79cfd7.js +0 -2
  268. package/dist/esm/shared-list-render-b5dacd2e.js +0 -2
  269. package/dist/esm/solution-configuration.entry.js +172 -14
  270. package/dist/esm/solution-contents_3.entry.js +42 -68
  271. package/dist/esm/solutions.js +1 -3
  272. package/dist/esm/sortable.esm-7856912e.js +0 -2
  273. package/dist/esm/store-manager.entry.js +17 -8
  274. package/dist/esm/templates-c15e0de2.js +414 -0
  275. package/dist/esm/time-a3b29c35.js +0 -2
  276. package/dist/esm/utils-021cb956.js +0 -2
  277. package/dist/esm/utils-5fdd203c.js +0 -2
  278. package/dist/solutions/assets/nls/fr/strings.js +2 -0
  279. package/dist/solutions/assets/nls/strings.js +2 -0
  280. package/dist/solutions/demos/browse-solutions.html +136 -54
  281. package/dist/solutions/demos/solution-configuration.html +139 -12
  282. package/dist/solutions/demos/solution-spatial-ref.html +1 -1
  283. package/dist/solutions/index.esm.js +0 -2
  284. package/dist/solutions/p-03c9247d.entry.js +10 -0
  285. package/dist/solutions/p-03da5f23.entry.js +6 -0
  286. package/dist/solutions/p-054256c8.entry.js +10 -0
  287. package/dist/solutions/p-05c73b7d.js +1 -2
  288. package/dist/solutions/p-06c2b347.entry.js +6 -0
  289. package/dist/solutions/p-09a06209.entry.js +6 -0
  290. package/dist/solutions/p-09e5283f.entry.js +6 -0
  291. package/dist/solutions/p-0a0ca7d3.entry.js +6 -0
  292. package/dist/solutions/p-0b8525e2.js +1 -2
  293. package/dist/solutions/p-0bddf168.entry.js +10 -0
  294. package/dist/solutions/p-0dd00bd7.entry.js +6 -0
  295. package/dist/solutions/p-0f8fd0f8.entry.js +10 -0
  296. package/dist/solutions/p-1345c0c8.js +6 -0
  297. package/dist/solutions/p-1387e8ef.entry.js +10 -0
  298. package/dist/solutions/p-17195493.entry.js +6 -0
  299. package/dist/solutions/p-172b8454.js +38 -0
  300. package/dist/solutions/p-173c3a97.entry.js +10 -0
  301. package/dist/solutions/p-175fe700.entry.js +6 -0
  302. package/dist/solutions/p-17f21116.entry.js +6 -0
  303. package/dist/solutions/p-18657c74.entry.js +10 -0
  304. package/dist/solutions/p-20c8a31e.entry.js +14 -0
  305. package/dist/solutions/p-228131f3.js +3 -3
  306. package/dist/solutions/p-2480c2c3.entry.js +10 -0
  307. package/dist/solutions/p-291cbb4f.js +1 -2
  308. package/dist/solutions/p-29d230fb.entry.js +6 -0
  309. package/dist/solutions/p-2de43402.entry.js +10 -0
  310. package/dist/solutions/p-2e1cd889.js +1 -2
  311. package/dist/solutions/p-386bc1f5.entry.js +10 -0
  312. package/dist/solutions/p-3956acc6.entry.js +6 -0
  313. package/dist/solutions/p-3ce922dd.js +20 -0
  314. package/dist/solutions/p-3e67ed97.js +1 -2
  315. package/dist/solutions/p-3eac2c21.entry.js +10 -0
  316. package/dist/solutions/p-3fd65329.entry.js +6 -0
  317. package/dist/solutions/p-41c2e1cc.js +1 -2
  318. package/dist/solutions/p-42f5b6d1.entry.js +10 -0
  319. package/dist/solutions/p-44e661a2.js +1 -2
  320. package/dist/solutions/p-4847f326.entry.js +10 -0
  321. package/dist/solutions/p-4a5b86a0.entry.js +10 -0
  322. package/dist/solutions/p-4f8cae93.entry.js +10 -0
  323. package/dist/solutions/p-51c9f2db.entry.js +10 -0
  324. package/dist/solutions/p-52d835be.entry.js +10 -0
  325. package/dist/solutions/p-55dddf06.entry.js +10 -0
  326. package/dist/solutions/p-56a376ea.entry.js +6 -0
  327. package/dist/solutions/p-57e5029a.entry.js +6 -0
  328. package/dist/solutions/p-58b7f4aa.entry.js +10 -0
  329. package/dist/solutions/p-5cd9ccc3.entry.js +22 -0
  330. package/dist/solutions/p-5dd4cf97.entry.js +6 -0
  331. package/dist/solutions/p-5edf418e.entry.js +10 -0
  332. package/dist/solutions/p-64711824.entry.js +10 -0
  333. package/dist/solutions/p-68bf7243.entry.js +11 -0
  334. package/dist/solutions/p-7096464e.js +3 -4
  335. package/dist/solutions/p-720922e5.entry.js +10 -0
  336. package/dist/solutions/p-73e2d13f.js +1 -2
  337. package/dist/solutions/p-73e8d41c.entry.js +10 -0
  338. package/dist/solutions/p-7804ce97.js +1 -2
  339. package/dist/solutions/p-79064f42.entry.js +6 -0
  340. package/dist/solutions/p-7976d171.entry.js +6 -0
  341. package/dist/solutions/p-7a98627f.entry.js +10 -0
  342. package/dist/solutions/p-7aaed3f1.entry.js +10 -0
  343. package/dist/solutions/p-7cc9c6af.js +2 -7
  344. package/dist/solutions/p-7df393df.js +1 -2
  345. package/dist/solutions/p-7f93b2dd.entry.js +6 -0
  346. package/dist/solutions/p-82ab483b.entry.js +10 -0
  347. package/dist/solutions/p-8565f0c1.entry.js +10 -0
  348. package/dist/solutions/p-85cf288c.js +1 -2
  349. package/dist/solutions/p-8701d184.entry.js +10 -0
  350. package/dist/solutions/p-946521e1.js +2 -3
  351. package/dist/solutions/p-974d27a4.entry.js +10 -0
  352. package/dist/solutions/p-9c08ce38.entry.js +6 -0
  353. package/dist/solutions/p-9deb6df3.js +36 -0
  354. package/dist/solutions/p-9df9ac35.js +1 -2
  355. package/dist/solutions/p-9ed0c781.entry.js +6 -0
  356. package/dist/solutions/p-9f3fa133.entry.js +10 -0
  357. package/dist/solutions/p-a10dc180.js +1 -2
  358. package/dist/solutions/p-a201c2ea.entry.js +6 -0
  359. package/dist/solutions/p-a598cbb6.entry.js +10 -0
  360. package/dist/solutions/p-a59dfe85.entry.js +6 -0
  361. package/dist/solutions/p-a5fbf459.entry.js +11 -0
  362. package/dist/solutions/p-a6faf819.entry.js +10 -0
  363. package/dist/solutions/p-a8b4d400.entry.js +10 -0
  364. package/dist/solutions/p-a93a4772.entry.js +10 -0
  365. package/dist/solutions/{p-07099311.entry.js → p-a9dd9571.entry.js} +1 -2
  366. package/dist/solutions/p-a9df64c4.js +1 -2
  367. package/dist/solutions/p-aa11e35b.entry.js +10 -0
  368. package/dist/solutions/p-ae4a329c.entry.js +6 -0
  369. package/dist/solutions/p-af9be2ca.js +1 -2
  370. package/dist/solutions/p-b16a91ae.entry.js +6 -0
  371. package/dist/solutions/p-b5693287.entry.js +6 -0
  372. package/dist/solutions/p-b5bbe558.entry.js +10 -0
  373. package/dist/solutions/p-b81ebd54.entry.js +10 -0
  374. package/dist/solutions/p-b85c1b6a.entry.js +6 -0
  375. package/dist/solutions/p-bb3adfc7.entry.js +10 -0
  376. package/dist/solutions/p-c11b966c.entry.js +10 -0
  377. package/dist/solutions/p-c1e7f656.entry.js +6 -0
  378. package/dist/solutions/p-c27b17b8.entry.js +10 -0
  379. package/dist/solutions/p-c34e0641.js +1 -2
  380. package/dist/solutions/p-c5216bba.entry.js +10 -0
  381. package/dist/solutions/p-c8a69756.entry.js +10 -0
  382. package/dist/solutions/p-cb35cbb3.entry.js +6 -0
  383. package/dist/solutions/p-cb5cb9a8.js +1 -2
  384. package/dist/solutions/p-cef98db7.js +6 -0
  385. package/dist/solutions/p-d69bc5fd.entry.js +10 -0
  386. package/dist/solutions/p-de45b192.entry.js +6 -0
  387. package/dist/solutions/p-e4edca3b.js +1 -2
  388. package/dist/solutions/p-e581f631.js +1 -2
  389. package/dist/solutions/p-e762b2d1.js +3 -3
  390. package/dist/solutions/p-eb2efc0f.js +1 -2
  391. package/dist/solutions/p-ec178ea9.js +1 -2
  392. package/dist/solutions/p-ed17446f.entry.js +6 -0
  393. package/dist/solutions/p-edd6d948.entry.js +10 -0
  394. package/dist/solutions/p-ee6eca93.js +18 -0
  395. package/dist/solutions/{p-4573d7c2.js → p-f1867a12.js} +2 -3
  396. package/dist/solutions/p-f187755e.js +1 -2
  397. package/dist/solutions/p-f49bc4a8.js +1 -2
  398. package/dist/solutions/p-f75876eb.js +21 -0
  399. package/dist/solutions/p-f780039d.js +1 -2
  400. package/dist/solutions/p-fa58627d.entry.js +10 -0
  401. package/dist/solutions/p-fbdf3e06.js +2 -3
  402. package/dist/solutions/p-fc1c8168.js +3 -3
  403. package/dist/solutions/p-fd2712a3.entry.js +10 -0
  404. package/dist/solutions/solutions.esm.js +1 -2
  405. package/dist/solutions/utils/common.ts +42 -73
  406. package/dist/solutions/utils/interfaces.ts +126 -0
  407. package/dist/solutions/utils/templates.ts +19 -33
  408. package/dist/types/components/json-editor/json-editor.d.ts +11 -0
  409. package/dist/types/components/solution-configuration/solution-configuration.d.ts +73 -9
  410. package/dist/types/components/solution-contents/solution-contents.d.ts +2 -9
  411. package/dist/types/components/solution-item/solution-item.d.ts +1 -11
  412. package/dist/types/components/solution-item-details/solution-item-details.d.ts +1 -10
  413. package/dist/types/components/solution-item-sharing/solution-item-sharing.d.ts +1 -8
  414. package/dist/types/components/solution-organization-variables/solution-organization-variables.d.ts +1 -5
  415. package/dist/types/components/solution-resource-item/solution-resource-item.d.ts +1 -4
  416. package/dist/types/components/solution-spatial-ref/solution-spatial-ref.d.ts +14 -26
  417. package/dist/types/components/solution-spatial-ref/spatialreferences.d.ts +1 -4
  418. package/dist/types/components/solution-template-data/solution-template-data.d.ts +1 -7
  419. package/dist/types/components/solution-variables/solution-variables.d.ts +1 -7
  420. package/dist/types/components/store-manager/store-manager.d.ts +9 -0
  421. package/dist/types/components.d.ts +49 -17
  422. package/dist/types/utils/common.d.ts +13 -38
  423. package/dist/types/utils/interfaces.d.ts +111 -0
  424. package/dist/types/utils/templates.d.ts +2 -25
  425. package/package.json +4 -3
  426. package/dist/cjs/CalciteExpandToggle-3e4e3b6c.js.map +0 -1
  427. package/dist/cjs/CalciteHeading-d765addc.js.map +0 -1
  428. package/dist/cjs/array-cd6c0c32.js.map +0 -1
  429. package/dist/cjs/calcite-accordion-item.cjs.entry.js.map +0 -1
  430. package/dist/cjs/calcite-accordion.cjs.entry.js.map +0 -1
  431. package/dist/cjs/calcite-action-bar.cjs.entry.js.map +0 -1
  432. package/dist/cjs/calcite-action-group.cjs.entry.js.map +0 -1
  433. package/dist/cjs/calcite-action-menu_3.cjs.entry.js.map +0 -1
  434. package/dist/cjs/calcite-action-pad.cjs.entry.js.map +0 -1
  435. package/dist/cjs/calcite-action.cjs.entry.js.map +0 -1
  436. package/dist/cjs/calcite-alert.cjs.entry.js.map +0 -1
  437. package/dist/cjs/calcite-avatar.cjs.entry.js.map +0 -1
  438. package/dist/cjs/calcite-block-section.cjs.entry.js.map +0 -1
  439. package/dist/cjs/calcite-block.cjs.entry.js.map +0 -1
  440. package/dist/cjs/calcite-button.cjs.entry.js.map +0 -1
  441. package/dist/cjs/calcite-card.cjs.entry.js.map +0 -1
  442. package/dist/cjs/calcite-checkbox_4.cjs.entry.js.map +0 -1
  443. package/dist/cjs/calcite-chip.cjs.entry.js.map +0 -1
  444. package/dist/cjs/calcite-color-picker-hex-input.cjs.entry.js.map +0 -1
  445. package/dist/cjs/calcite-color-picker-swatch.cjs.entry.js.map +0 -1
  446. package/dist/cjs/calcite-color-picker.cjs.entry.js.map +0 -1
  447. package/dist/cjs/calcite-combobox-item-group.cjs.entry.js.map +0 -1
  448. package/dist/cjs/calcite-combobox-item.cjs.entry.js.map +0 -1
  449. package/dist/cjs/calcite-combobox.cjs.entry.js.map +0 -1
  450. package/dist/cjs/calcite-date-picker-day_3.cjs.entry.js.map +0 -1
  451. package/dist/cjs/calcite-date-picker.cjs.entry.js.map +0 -1
  452. package/dist/cjs/calcite-dropdown-group.cjs.entry.js.map +0 -1
  453. package/dist/cjs/calcite-dropdown-item.cjs.entry.js.map +0 -1
  454. package/dist/cjs/calcite-dropdown.cjs.entry.js.map +0 -1
  455. package/dist/cjs/calcite-fab.cjs.entry.js.map +0 -1
  456. package/dist/cjs/calcite-filter.cjs.entry.js.map +0 -1
  457. package/dist/cjs/calcite-flow.cjs.entry.js.map +0 -1
  458. package/dist/cjs/calcite-graph.cjs.entry.js.map +0 -1
  459. package/dist/cjs/calcite-handle.cjs.entry.js.map +0 -1
  460. package/dist/cjs/calcite-icon.cjs.entry.js.map +0 -1
  461. package/dist/cjs/calcite-inline-editable.cjs.entry.js.map +0 -1
  462. package/dist/cjs/calcite-input-date-picker.cjs.entry.js.map +0 -1
  463. package/dist/cjs/calcite-input-message.cjs.entry.js.map +0 -1
  464. package/dist/cjs/calcite-input-time-picker.cjs.entry.js.map +0 -1
  465. package/dist/cjs/calcite-input_2.cjs.entry.js.map +0 -1
  466. package/dist/cjs/calcite-label.cjs.entry.js.map +0 -1
  467. package/dist/cjs/calcite-link.cjs.entry.js.map +0 -1
  468. package/dist/cjs/calcite-list-item-group.cjs.entry.js.map +0 -1
  469. package/dist/cjs/calcite-list-item.cjs.entry.js.map +0 -1
  470. package/dist/cjs/calcite-list.cjs.entry.js.map +0 -1
  471. package/dist/cjs/calcite-loader.cjs.entry.js.map +0 -1
  472. package/dist/cjs/calcite-modal.cjs.entry.js.map +0 -1
  473. package/dist/cjs/calcite-notice.cjs.entry.js.map +0 -1
  474. package/dist/cjs/calcite-option-group.cjs.entry.js.map +0 -1
  475. package/dist/cjs/calcite-option.cjs.entry.js.map +0 -1
  476. package/dist/cjs/calcite-pagination.cjs.entry.js.map +0 -1
  477. package/dist/cjs/calcite-panel_14.cjs.entry.js.map +0 -1
  478. package/dist/cjs/calcite-pick-list-group.cjs.entry.js.map +0 -1
  479. package/dist/cjs/calcite-pick-list-item.cjs.entry.js.map +0 -1
  480. package/dist/cjs/calcite-pick-list.cjs.entry.js.map +0 -1
  481. package/dist/cjs/calcite-popover-manager.cjs.entry.js.map +0 -1
  482. package/dist/cjs/calcite-radio-button-group.cjs.entry.js.map +0 -1
  483. package/dist/cjs/calcite-radio-button.cjs.entry.js.map +0 -1
  484. package/dist/cjs/calcite-radio-group-item.cjs.entry.js.map +0 -1
  485. package/dist/cjs/calcite-radio-group.cjs.entry.js.map +0 -1
  486. package/dist/cjs/calcite-radio.cjs.entry.js.map +0 -1
  487. package/dist/cjs/calcite-rating.cjs.entry.js.map +0 -1
  488. package/dist/cjs/calcite-scrim.cjs.entry.js.map +0 -1
  489. package/dist/cjs/calcite-select.cjs.entry.js.map +0 -1
  490. package/dist/cjs/calcite-shell-center-row.cjs.entry.js.map +0 -1
  491. package/dist/cjs/calcite-slider.cjs.entry.js.map +0 -1
  492. package/dist/cjs/calcite-sortable-list.cjs.entry.js.map +0 -1
  493. package/dist/cjs/calcite-split-button.cjs.entry.js.map +0 -1
  494. package/dist/cjs/calcite-stepper-item.cjs.entry.js.map +0 -1
  495. package/dist/cjs/calcite-stepper.cjs.entry.js.map +0 -1
  496. package/dist/cjs/calcite-switch.cjs.entry.js.map +0 -1
  497. package/dist/cjs/calcite-tile-select-group.cjs.entry.js.map +0 -1
  498. package/dist/cjs/calcite-tile-select.cjs.entry.js.map +0 -1
  499. package/dist/cjs/calcite-tile.cjs.entry.js.map +0 -1
  500. package/dist/cjs/calcite-time-picker.cjs.entry.js.map +0 -1
  501. package/dist/cjs/calcite-tip-group.cjs.entry.js.map +0 -1
  502. package/dist/cjs/calcite-tip-manager.cjs.entry.js.map +0 -1
  503. package/dist/cjs/calcite-tip.cjs.entry.js.map +0 -1
  504. package/dist/cjs/calcite-tooltip.cjs.entry.js.map +0 -1
  505. package/dist/cjs/calcite-value-list-item.cjs.entry.js.map +0 -1
  506. package/dist/cjs/calcite-value-list.cjs.entry.js.map +0 -1
  507. package/dist/cjs/common-df66d950.js +0 -53
  508. package/dist/cjs/common-df66d950.js.map +0 -1
  509. package/dist/cjs/date-0554c4d1.js.map +0 -1
  510. package/dist/cjs/debounce-df22462b.js.map +0 -1
  511. package/dist/cjs/dom-62511f59.js.map +0 -1
  512. package/dist/cjs/editStore-7a250b85.js +0 -227
  513. package/dist/cjs/editStore-7a250b85.js.map +0 -1
  514. package/dist/cjs/forIn-6a1c2f6d.js.map +0 -1
  515. package/dist/cjs/form-0b5b2d4e.js.map +0 -1
  516. package/dist/cjs/guid-c6be9504.js.map +0 -1
  517. package/dist/cjs/index-706750dc.js.map +0 -1
  518. package/dist/cjs/index-81c17948.js.map +0 -1
  519. package/dist/cjs/index.cjs.js.map +0 -1
  520. package/dist/cjs/interfaces-5ba2c1a7.js.map +0 -1
  521. package/dist/cjs/key-2a6290c8.js.map +0 -1
  522. package/dist/cjs/label-46482470.js.map +0 -1
  523. package/dist/cjs/loader.cjs.js.map +0 -1
  524. package/dist/cjs/locale-0db34680.js.map +0 -1
  525. package/dist/cjs/math-71f8de66.js.map +0 -1
  526. package/dist/cjs/number-697ce34c.js.map +0 -1
  527. package/dist/cjs/observers-88bbd6ef.js.map +0 -1
  528. package/dist/cjs/popper-8c8dc960.js.map +0 -1
  529. package/dist/cjs/resources-20f88094.js.map +0 -1
  530. package/dist/cjs/resources-27c22d8a.js.map +0 -1
  531. package/dist/cjs/resources-369e7421.js.map +0 -1
  532. package/dist/cjs/resources-46af0638.js.map +0 -1
  533. package/dist/cjs/resources-509951f9.js.map +0 -1
  534. package/dist/cjs/resources-5b7958e4.js.map +0 -1
  535. package/dist/cjs/resources-a265534b.js.map +0 -1
  536. package/dist/cjs/resources-e231446d.js.map +0 -1
  537. package/dist/cjs/resources-ef6c71a1.js.map +0 -1
  538. package/dist/cjs/shared-list-render-63d3ea89.js.map +0 -1
  539. package/dist/cjs/solution-configuration.cjs.entry.js.map +0 -1
  540. package/dist/cjs/solution-contents_3.cjs.entry.js.map +0 -1
  541. package/dist/cjs/solutions.cjs.js.map +0 -1
  542. package/dist/cjs/sortable.esm-14548a17.js.map +0 -1
  543. package/dist/cjs/store-manager.cjs.entry.js.map +0 -1
  544. package/dist/cjs/templates-fe6dd431.js +0 -237
  545. package/dist/cjs/templates-fe6dd431.js.map +0 -1
  546. package/dist/cjs/time-c87dc79e.js.map +0 -1
  547. package/dist/cjs/utils-c19d354a.js.map +0 -1
  548. package/dist/cjs/utils-cb7373e6.js.map +0 -1
  549. package/dist/collection/components/json-editor/json-editor.js.map +0 -1
  550. package/dist/collection/components/solution-configuration/solution-configuration.js.map +0 -1
  551. package/dist/collection/components/solution-contents/solution-contents.js.map +0 -1
  552. package/dist/collection/components/solution-item/solution-item.js.map +0 -1
  553. package/dist/collection/components/solution-item-details/solution-item-details.js.map +0 -1
  554. package/dist/collection/components/solution-item-icon/solution-item-icon.js.map +0 -1
  555. package/dist/collection/components/solution-item-sharing/solution-item-sharing.js.map +0 -1
  556. package/dist/collection/components/solution-organization-variables/solution-organization-variables.js.map +0 -1
  557. package/dist/collection/components/solution-resource-item/solution-resource-item.js.map +0 -1
  558. package/dist/collection/components/solution-spatial-ref/solution-spatial-ref.js.map +0 -1
  559. package/dist/collection/components/solution-spatial-ref/spatialreferences.js.map +0 -1
  560. package/dist/collection/components/solution-template-data/solution-template-data.js.map +0 -1
  561. package/dist/collection/components/solution-variables/solution-variables.js.map +0 -1
  562. package/dist/collection/components/store-manager/store-manager.js.map +0 -1
  563. package/dist/collection/index.js.map +0 -1
  564. package/dist/collection/utils/common.js.map +0 -1
  565. package/dist/collection/utils/editStore.js.map +0 -1
  566. package/dist/collection/utils/templates.js.map +0 -1
  567. package/dist/custom-elements/index.js.map +0 -1
  568. package/dist/esm/CalciteExpandToggle-5df46988.js.map +0 -1
  569. package/dist/esm/CalciteHeading-79b4b347.js.map +0 -1
  570. package/dist/esm/array-71e0c501.js.map +0 -1
  571. package/dist/esm/calcite-accordion-item.entry.js.map +0 -1
  572. package/dist/esm/calcite-accordion.entry.js.map +0 -1
  573. package/dist/esm/calcite-action-bar.entry.js.map +0 -1
  574. package/dist/esm/calcite-action-group.entry.js.map +0 -1
  575. package/dist/esm/calcite-action-menu_3.entry.js.map +0 -1
  576. package/dist/esm/calcite-action-pad.entry.js.map +0 -1
  577. package/dist/esm/calcite-action.entry.js.map +0 -1
  578. package/dist/esm/calcite-alert.entry.js.map +0 -1
  579. package/dist/esm/calcite-avatar.entry.js.map +0 -1
  580. package/dist/esm/calcite-block-section.entry.js.map +0 -1
  581. package/dist/esm/calcite-block.entry.js.map +0 -1
  582. package/dist/esm/calcite-button.entry.js.map +0 -1
  583. package/dist/esm/calcite-card.entry.js.map +0 -1
  584. package/dist/esm/calcite-checkbox_4.entry.js.map +0 -1
  585. package/dist/esm/calcite-chip.entry.js.map +0 -1
  586. package/dist/esm/calcite-color-picker-hex-input.entry.js.map +0 -1
  587. package/dist/esm/calcite-color-picker-swatch.entry.js.map +0 -1
  588. package/dist/esm/calcite-color-picker.entry.js.map +0 -1
  589. package/dist/esm/calcite-combobox-item-group.entry.js.map +0 -1
  590. package/dist/esm/calcite-combobox-item.entry.js.map +0 -1
  591. package/dist/esm/calcite-combobox.entry.js.map +0 -1
  592. package/dist/esm/calcite-date-picker-day_3.entry.js.map +0 -1
  593. package/dist/esm/calcite-date-picker.entry.js.map +0 -1
  594. package/dist/esm/calcite-dropdown-group.entry.js.map +0 -1
  595. package/dist/esm/calcite-dropdown-item.entry.js.map +0 -1
  596. package/dist/esm/calcite-dropdown.entry.js.map +0 -1
  597. package/dist/esm/calcite-fab.entry.js.map +0 -1
  598. package/dist/esm/calcite-filter.entry.js.map +0 -1
  599. package/dist/esm/calcite-flow.entry.js.map +0 -1
  600. package/dist/esm/calcite-graph.entry.js.map +0 -1
  601. package/dist/esm/calcite-handle.entry.js.map +0 -1
  602. package/dist/esm/calcite-icon.entry.js.map +0 -1
  603. package/dist/esm/calcite-inline-editable.entry.js.map +0 -1
  604. package/dist/esm/calcite-input-date-picker.entry.js.map +0 -1
  605. package/dist/esm/calcite-input-message.entry.js.map +0 -1
  606. package/dist/esm/calcite-input-time-picker.entry.js.map +0 -1
  607. package/dist/esm/calcite-input_2.entry.js.map +0 -1
  608. package/dist/esm/calcite-label.entry.js.map +0 -1
  609. package/dist/esm/calcite-link.entry.js.map +0 -1
  610. package/dist/esm/calcite-list-item-group.entry.js.map +0 -1
  611. package/dist/esm/calcite-list-item.entry.js.map +0 -1
  612. package/dist/esm/calcite-list.entry.js.map +0 -1
  613. package/dist/esm/calcite-loader.entry.js.map +0 -1
  614. package/dist/esm/calcite-modal.entry.js.map +0 -1
  615. package/dist/esm/calcite-notice.entry.js.map +0 -1
  616. package/dist/esm/calcite-option-group.entry.js.map +0 -1
  617. package/dist/esm/calcite-option.entry.js.map +0 -1
  618. package/dist/esm/calcite-pagination.entry.js.map +0 -1
  619. package/dist/esm/calcite-panel_14.entry.js.map +0 -1
  620. package/dist/esm/calcite-pick-list-group.entry.js.map +0 -1
  621. package/dist/esm/calcite-pick-list-item.entry.js.map +0 -1
  622. package/dist/esm/calcite-pick-list.entry.js.map +0 -1
  623. package/dist/esm/calcite-popover-manager.entry.js.map +0 -1
  624. package/dist/esm/calcite-radio-button-group.entry.js.map +0 -1
  625. package/dist/esm/calcite-radio-button.entry.js.map +0 -1
  626. package/dist/esm/calcite-radio-group-item.entry.js.map +0 -1
  627. package/dist/esm/calcite-radio-group.entry.js.map +0 -1
  628. package/dist/esm/calcite-radio.entry.js.map +0 -1
  629. package/dist/esm/calcite-rating.entry.js.map +0 -1
  630. package/dist/esm/calcite-scrim.entry.js.map +0 -1
  631. package/dist/esm/calcite-select.entry.js.map +0 -1
  632. package/dist/esm/calcite-shell-center-row.entry.js.map +0 -1
  633. package/dist/esm/calcite-slider.entry.js.map +0 -1
  634. package/dist/esm/calcite-sortable-list.entry.js.map +0 -1
  635. package/dist/esm/calcite-split-button.entry.js.map +0 -1
  636. package/dist/esm/calcite-stepper-item.entry.js.map +0 -1
  637. package/dist/esm/calcite-stepper.entry.js.map +0 -1
  638. package/dist/esm/calcite-switch.entry.js.map +0 -1
  639. package/dist/esm/calcite-tile-select-group.entry.js.map +0 -1
  640. package/dist/esm/calcite-tile-select.entry.js.map +0 -1
  641. package/dist/esm/calcite-tile.entry.js.map +0 -1
  642. package/dist/esm/calcite-time-picker.entry.js.map +0 -1
  643. package/dist/esm/calcite-tip-group.entry.js.map +0 -1
  644. package/dist/esm/calcite-tip-manager.entry.js.map +0 -1
  645. package/dist/esm/calcite-tip.entry.js.map +0 -1
  646. package/dist/esm/calcite-tooltip.entry.js.map +0 -1
  647. package/dist/esm/calcite-value-list-item.entry.js.map +0 -1
  648. package/dist/esm/calcite-value-list.entry.js.map +0 -1
  649. package/dist/esm/common-ccccf04d.js +0 -50
  650. package/dist/esm/common-ccccf04d.js.map +0 -1
  651. package/dist/esm/date-5d75460a.js.map +0 -1
  652. package/dist/esm/debounce-23ad5849.js.map +0 -1
  653. package/dist/esm/dom-1cc617ae.js.map +0 -1
  654. package/dist/esm/editStore-30a293f5.js +0 -225
  655. package/dist/esm/editStore-30a293f5.js.map +0 -1
  656. package/dist/esm/forIn-c922d47c.js.map +0 -1
  657. package/dist/esm/form-636dfed1.js.map +0 -1
  658. package/dist/esm/guid-740f1f1a.js.map +0 -1
  659. package/dist/esm/index-934f242e.js.map +0 -1
  660. package/dist/esm/index-a3c3e3db.js.map +0 -1
  661. package/dist/esm/index.js.map +0 -1
  662. package/dist/esm/interfaces-4f07beec.js.map +0 -1
  663. package/dist/esm/key-1748eb79.js.map +0 -1
  664. package/dist/esm/label-851f8926.js.map +0 -1
  665. package/dist/esm/loader.js.map +0 -1
  666. package/dist/esm/locale-31c8d43b.js.map +0 -1
  667. package/dist/esm/math-d8795f31.js.map +0 -1
  668. package/dist/esm/number-47ecb380.js.map +0 -1
  669. package/dist/esm/observers-b13ff24b.js.map +0 -1
  670. package/dist/esm/popper-25874f2f.js.map +0 -1
  671. package/dist/esm/resources-12c3b829.js.map +0 -1
  672. package/dist/esm/resources-32d7dd89.js.map +0 -1
  673. package/dist/esm/resources-466ccf86.js.map +0 -1
  674. package/dist/esm/resources-4cc0ef44.js.map +0 -1
  675. package/dist/esm/resources-861d0240.js.map +0 -1
  676. package/dist/esm/resources-b023c30a.js.map +0 -1
  677. package/dist/esm/resources-c537bacb.js.map +0 -1
  678. package/dist/esm/resources-e56b6e53.js.map +0 -1
  679. package/dist/esm/resources-ec79cfd7.js.map +0 -1
  680. package/dist/esm/shared-list-render-b5dacd2e.js.map +0 -1
  681. package/dist/esm/solution-configuration.entry.js.map +0 -1
  682. package/dist/esm/solution-contents_3.entry.js.map +0 -1
  683. package/dist/esm/solutions.js.map +0 -1
  684. package/dist/esm/sortable.esm-7856912e.js.map +0 -1
  685. package/dist/esm/store-manager.entry.js.map +0 -1
  686. package/dist/esm/templates-3480c08e.js +0 -230
  687. package/dist/esm/templates-3480c08e.js.map +0 -1
  688. package/dist/esm/time-a3b29c35.js.map +0 -1
  689. package/dist/esm/utils-021cb956.js.map +0 -1
  690. package/dist/esm/utils-5fdd203c.js.map +0 -1
  691. package/dist/solutions/index.esm.js.map +0 -1
  692. package/dist/solutions/p-019fe34e.entry.js +0 -11
  693. package/dist/solutions/p-019fe34e.entry.js.map +0 -1
  694. package/dist/solutions/p-01d537aa.entry.js +0 -11
  695. package/dist/solutions/p-01d537aa.entry.js.map +0 -1
  696. package/dist/solutions/p-05c73b7d.js.map +0 -1
  697. package/dist/solutions/p-05da6de1.entry.js +0 -11
  698. package/dist/solutions/p-05da6de1.entry.js.map +0 -1
  699. package/dist/solutions/p-05eb87fc.entry.js +0 -11
  700. package/dist/solutions/p-05eb87fc.entry.js.map +0 -1
  701. package/dist/solutions/p-07099311.entry.js.map +0 -1
  702. package/dist/solutions/p-07f15398.entry.js +0 -7
  703. package/dist/solutions/p-07f15398.entry.js.map +0 -1
  704. package/dist/solutions/p-093edbdc.entry.js +0 -11
  705. package/dist/solutions/p-093edbdc.entry.js.map +0 -1
  706. package/dist/solutions/p-0b8525e2.js.map +0 -1
  707. package/dist/solutions/p-0c91e100.js +0 -7
  708. package/dist/solutions/p-0c91e100.js.map +0 -1
  709. package/dist/solutions/p-0fcee724.entry.js +0 -7
  710. package/dist/solutions/p-0fcee724.entry.js.map +0 -1
  711. package/dist/solutions/p-17a2150d.entry.js +0 -11
  712. package/dist/solutions/p-17a2150d.entry.js.map +0 -1
  713. package/dist/solutions/p-1aaa9800.entry.js +0 -7
  714. package/dist/solutions/p-1aaa9800.entry.js.map +0 -1
  715. package/dist/solutions/p-228131f3.js.map +0 -1
  716. package/dist/solutions/p-22d67647.entry.js +0 -11
  717. package/dist/solutions/p-22d67647.entry.js.map +0 -1
  718. package/dist/solutions/p-291cbb4f.js.map +0 -1
  719. package/dist/solutions/p-2a5c409a.entry.js +0 -7
  720. package/dist/solutions/p-2a5c409a.entry.js.map +0 -1
  721. package/dist/solutions/p-2aca233c.entry.js +0 -11
  722. package/dist/solutions/p-2aca233c.entry.js.map +0 -1
  723. package/dist/solutions/p-2b6ef800.entry.js +0 -7
  724. package/dist/solutions/p-2b6ef800.entry.js.map +0 -1
  725. package/dist/solutions/p-2bae730e.entry.js +0 -11
  726. package/dist/solutions/p-2bae730e.entry.js.map +0 -1
  727. package/dist/solutions/p-2d59c6d7.entry.js +0 -11
  728. package/dist/solutions/p-2d59c6d7.entry.js.map +0 -1
  729. package/dist/solutions/p-2e1cd889.js.map +0 -1
  730. package/dist/solutions/p-35eafdfb.entry.js +0 -11
  731. package/dist/solutions/p-35eafdfb.entry.js.map +0 -1
  732. package/dist/solutions/p-372da016.entry.js +0 -7
  733. package/dist/solutions/p-372da016.entry.js.map +0 -1
  734. package/dist/solutions/p-37407f95.entry.js +0 -7
  735. package/dist/solutions/p-37407f95.entry.js.map +0 -1
  736. package/dist/solutions/p-3ae90cbb.entry.js +0 -7
  737. package/dist/solutions/p-3ae90cbb.entry.js.map +0 -1
  738. package/dist/solutions/p-3c3ccd03.entry.js +0 -11
  739. package/dist/solutions/p-3c3ccd03.entry.js.map +0 -1
  740. package/dist/solutions/p-3e168893.entry.js +0 -11
  741. package/dist/solutions/p-3e168893.entry.js.map +0 -1
  742. package/dist/solutions/p-3e67ed97.js.map +0 -1
  743. package/dist/solutions/p-3ed5096e.entry.js +0 -11
  744. package/dist/solutions/p-3ed5096e.entry.js.map +0 -1
  745. package/dist/solutions/p-41c2e1cc.js.map +0 -1
  746. package/dist/solutions/p-44e661a2.js.map +0 -1
  747. package/dist/solutions/p-4573d7c2.js.map +0 -1
  748. package/dist/solutions/p-4635ae4a.entry.js +0 -11
  749. package/dist/solutions/p-4635ae4a.entry.js.map +0 -1
  750. package/dist/solutions/p-46bcadbd.entry.js +0 -11
  751. package/dist/solutions/p-46bcadbd.entry.js.map +0 -1
  752. package/dist/solutions/p-4b0b2534.entry.js +0 -11
  753. package/dist/solutions/p-4b0b2534.entry.js.map +0 -1
  754. package/dist/solutions/p-51e4c002.entry.js +0 -7
  755. package/dist/solutions/p-51e4c002.entry.js.map +0 -1
  756. package/dist/solutions/p-520d8443.entry.js +0 -11
  757. package/dist/solutions/p-520d8443.entry.js.map +0 -1
  758. package/dist/solutions/p-591d5666.entry.js +0 -11
  759. package/dist/solutions/p-591d5666.entry.js.map +0 -1
  760. package/dist/solutions/p-5aff6fc3.entry.js +0 -11
  761. package/dist/solutions/p-5aff6fc3.entry.js.map +0 -1
  762. package/dist/solutions/p-5c95f5ee.entry.js +0 -11
  763. package/dist/solutions/p-5c95f5ee.entry.js.map +0 -1
  764. package/dist/solutions/p-606933f1.entry.js +0 -11
  765. package/dist/solutions/p-606933f1.entry.js.map +0 -1
  766. package/dist/solutions/p-62464fb3.entry.js +0 -11
  767. package/dist/solutions/p-62464fb3.entry.js.map +0 -1
  768. package/dist/solutions/p-6e970d4c.entry.js +0 -7
  769. package/dist/solutions/p-6e970d4c.entry.js.map +0 -1
  770. package/dist/solutions/p-6f861da6.entry.js +0 -11
  771. package/dist/solutions/p-6f861da6.entry.js.map +0 -1
  772. package/dist/solutions/p-7096464e.js.map +0 -1
  773. package/dist/solutions/p-73e2d13f.js.map +0 -1
  774. package/dist/solutions/p-745f85bf.entry.js +0 -11
  775. package/dist/solutions/p-745f85bf.entry.js.map +0 -1
  776. package/dist/solutions/p-7480bdae.entry.js +0 -7
  777. package/dist/solutions/p-7480bdae.entry.js.map +0 -1
  778. package/dist/solutions/p-7611d9ad.entry.js +0 -11
  779. package/dist/solutions/p-7611d9ad.entry.js.map +0 -1
  780. package/dist/solutions/p-77b056db.entry.js +0 -7
  781. package/dist/solutions/p-77b056db.entry.js.map +0 -1
  782. package/dist/solutions/p-7804ce97.js.map +0 -1
  783. package/dist/solutions/p-7cc15662.entry.js +0 -15
  784. package/dist/solutions/p-7cc15662.entry.js.map +0 -1
  785. package/dist/solutions/p-7cc9c6af.js.map +0 -1
  786. package/dist/solutions/p-7d84c932.entry.js +0 -11
  787. package/dist/solutions/p-7d84c932.entry.js.map +0 -1
  788. package/dist/solutions/p-7df393df.js.map +0 -1
  789. package/dist/solutions/p-7f49ef40.entry.js +0 -11
  790. package/dist/solutions/p-7f49ef40.entry.js.map +0 -1
  791. package/dist/solutions/p-7f5c2987.entry.js +0 -7
  792. package/dist/solutions/p-7f5c2987.entry.js.map +0 -1
  793. package/dist/solutions/p-7fd90af2.entry.js +0 -11
  794. package/dist/solutions/p-7fd90af2.entry.js.map +0 -1
  795. package/dist/solutions/p-815449b1.entry.js +0 -11
  796. package/dist/solutions/p-815449b1.entry.js.map +0 -1
  797. package/dist/solutions/p-819aff56.entry.js +0 -11
  798. package/dist/solutions/p-819aff56.entry.js.map +0 -1
  799. package/dist/solutions/p-85cf288c.js.map +0 -1
  800. package/dist/solutions/p-87d812ce.entry.js +0 -7
  801. package/dist/solutions/p-87d812ce.entry.js.map +0 -1
  802. package/dist/solutions/p-8b616d33.entry.js +0 -7
  803. package/dist/solutions/p-8b616d33.entry.js.map +0 -1
  804. package/dist/solutions/p-8efca26d.entry.js +0 -7
  805. package/dist/solutions/p-8efca26d.entry.js.map +0 -1
  806. package/dist/solutions/p-946521e1.js.map +0 -1
  807. package/dist/solutions/p-970f1072.js +0 -22
  808. package/dist/solutions/p-970f1072.js.map +0 -1
  809. package/dist/solutions/p-9a953609.entry.js +0 -11
  810. package/dist/solutions/p-9a953609.entry.js.map +0 -1
  811. package/dist/solutions/p-9b381784.entry.js +0 -11
  812. package/dist/solutions/p-9b381784.entry.js.map +0 -1
  813. package/dist/solutions/p-9dad5583.entry.js +0 -11
  814. package/dist/solutions/p-9dad5583.entry.js.map +0 -1
  815. package/dist/solutions/p-9df9ac35.js.map +0 -1
  816. package/dist/solutions/p-9ee74ad4.entry.js +0 -7
  817. package/dist/solutions/p-9ee74ad4.entry.js.map +0 -1
  818. package/dist/solutions/p-9fab6046.entry.js +0 -22
  819. package/dist/solutions/p-9fab6046.entry.js.map +0 -1
  820. package/dist/solutions/p-9fc06fc3.entry.js +0 -15
  821. package/dist/solutions/p-9fc06fc3.entry.js.map +0 -1
  822. package/dist/solutions/p-a10dc180.js.map +0 -1
  823. package/dist/solutions/p-a1c40865.entry.js +0 -11
  824. package/dist/solutions/p-a1c40865.entry.js.map +0 -1
  825. package/dist/solutions/p-a3b16f15.entry.js +0 -7
  826. package/dist/solutions/p-a3b16f15.entry.js.map +0 -1
  827. package/dist/solutions/p-a7906d52.entry.js +0 -11
  828. package/dist/solutions/p-a7906d52.entry.js.map +0 -1
  829. package/dist/solutions/p-a8a106f7.entry.js +0 -7
  830. package/dist/solutions/p-a8a106f7.entry.js.map +0 -1
  831. package/dist/solutions/p-a8d2d1a3.entry.js +0 -7
  832. package/dist/solutions/p-a8d2d1a3.entry.js.map +0 -1
  833. package/dist/solutions/p-a98c5d29.entry.js +0 -11
  834. package/dist/solutions/p-a98c5d29.entry.js.map +0 -1
  835. package/dist/solutions/p-a9df64c4.js.map +0 -1
  836. package/dist/solutions/p-ad54d2e2.entry.js +0 -11
  837. package/dist/solutions/p-ad54d2e2.entry.js.map +0 -1
  838. package/dist/solutions/p-adf3704d.entry.js +0 -11
  839. package/dist/solutions/p-adf3704d.entry.js.map +0 -1
  840. package/dist/solutions/p-af46b00f.entry.js +0 -11
  841. package/dist/solutions/p-af46b00f.entry.js.map +0 -1
  842. package/dist/solutions/p-af9be2ca.js.map +0 -1
  843. package/dist/solutions/p-b797d79b.entry.js +0 -23
  844. package/dist/solutions/p-b797d79b.entry.js.map +0 -1
  845. package/dist/solutions/p-c09fc04d.entry.js +0 -11
  846. package/dist/solutions/p-c09fc04d.entry.js.map +0 -1
  847. package/dist/solutions/p-c11f84d9.entry.js +0 -11
  848. package/dist/solutions/p-c11f84d9.entry.js.map +0 -1
  849. package/dist/solutions/p-c195dbb7.entry.js +0 -7
  850. package/dist/solutions/p-c195dbb7.entry.js.map +0 -1
  851. package/dist/solutions/p-c34e0641.js.map +0 -1
  852. package/dist/solutions/p-c5428bbc.entry.js +0 -11
  853. package/dist/solutions/p-c5428bbc.entry.js.map +0 -1
  854. package/dist/solutions/p-cb5cb9a8.js.map +0 -1
  855. package/dist/solutions/p-ce3e9060.entry.js +0 -11
  856. package/dist/solutions/p-ce3e9060.entry.js.map +0 -1
  857. package/dist/solutions/p-d132d8ad.entry.js +0 -7
  858. package/dist/solutions/p-d132d8ad.entry.js.map +0 -1
  859. package/dist/solutions/p-d320e3a2.entry.js +0 -7
  860. package/dist/solutions/p-d320e3a2.entry.js.map +0 -1
  861. package/dist/solutions/p-d70ef015.entry.js +0 -11
  862. package/dist/solutions/p-d70ef015.entry.js.map +0 -1
  863. package/dist/solutions/p-e4edca3b.js.map +0 -1
  864. package/dist/solutions/p-e581f631.js.map +0 -1
  865. package/dist/solutions/p-e65a8700.entry.js +0 -11
  866. package/dist/solutions/p-e65a8700.entry.js.map +0 -1
  867. package/dist/solutions/p-e762b2d1.js.map +0 -1
  868. package/dist/solutions/p-eb2efc0f.js.map +0 -1
  869. package/dist/solutions/p-ec178ea9.js.map +0 -1
  870. package/dist/solutions/p-ecbfddde.js.map +0 -1
  871. package/dist/solutions/p-eceb11d1.js +0 -22
  872. package/dist/solutions/p-eceb11d1.js.map +0 -1
  873. package/dist/solutions/p-ede2beab.entry.js +0 -7
  874. package/dist/solutions/p-ede2beab.entry.js.map +0 -1
  875. package/dist/solutions/p-f0a6135d.entry.js +0 -11
  876. package/dist/solutions/p-f0a6135d.entry.js.map +0 -1
  877. package/dist/solutions/p-f187755e.js.map +0 -1
  878. package/dist/solutions/p-f3c6b68d.entry.js +0 -7
  879. package/dist/solutions/p-f3c6b68d.entry.js.map +0 -1
  880. package/dist/solutions/p-f49bc4a8.js.map +0 -1
  881. package/dist/solutions/p-f6e8ee98.entry.js +0 -7
  882. package/dist/solutions/p-f6e8ee98.entry.js.map +0 -1
  883. package/dist/solutions/p-f780039d.js.map +0 -1
  884. package/dist/solutions/p-fa40e7e7.entry.js +0 -7
  885. package/dist/solutions/p-fa40e7e7.entry.js.map +0 -1
  886. package/dist/solutions/p-fb25fc4a.entry.js +0 -7
  887. package/dist/solutions/p-fb25fc4a.entry.js.map +0 -1
  888. package/dist/solutions/p-fbdf3e06.js.map +0 -1
  889. package/dist/solutions/p-fc1c8168.js.map +0 -1
  890. package/dist/solutions/p-ff3697a9.entry.js +0 -7
  891. package/dist/solutions/p-ff3697a9.entry.js.map +0 -1
  892. package/dist/solutions/solutions.esm.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"sources":["node_modules/@esri/calcite-components/dist/collection/components/calcite-panel/resources.js","node_modules/@esri/calcite-components/dist/collection/components/calcite-panel/calcite-panel.css?tag=calcite-panel&encapsulation=shadow","node_modules/@esri/calcite-components/dist/collection/components/calcite-panel/calcite-panel.js","node_modules/@esri/calcite-components/dist/collection/components/calcite-shell/resources.js","node_modules/@esri/calcite-components/dist/collection/components/calcite-shell/calcite-shell.css?tag=calcite-shell&encapsulation=shadow","node_modules/@esri/calcite-components/dist/collection/components/calcite-shell/calcite-shell.js","node_modules/@esri/calcite-components/dist/collection/components/calcite-shell-panel/resources.js","node_modules/@esri/calcite-components/dist/collection/components/calcite-shell-panel/calcite-shell-panel.css?tag=calcite-shell-panel&encapsulation=shadow","node_modules/@esri/calcite-components/dist/collection/components/calcite-shell-panel/calcite-shell-panel.js","node_modules/@esri/calcite-components/dist/collection/components/calcite-tab/calcite-tab.css?tag=calcite-tab&encapsulation=shadow","node_modules/@esri/calcite-components/dist/collection/components/calcite-tab/calcite-tab.js","node_modules/@esri/calcite-components/dist/collection/components/calcite-tab-nav/calcite-tab-nav.css?tag=calcite-tab-nav&encapsulation=shadow","node_modules/@esri/calcite-components/dist/collection/components/calcite-tab-nav/calcite-tab-nav.js","node_modules/@esri/calcite-components/dist/collection/components/calcite-tab-title/calcite-tab-title.css?tag=calcite-tab-title&encapsulation=shadow","node_modules/@esri/calcite-components/dist/collection/components/calcite-tab-title/calcite-tab-title.js","node_modules/@esri/calcite-components/dist/collection/components/calcite-tabs/resources.js","node_modules/@esri/calcite-components/dist/collection/components/calcite-tabs/calcite-tabs.css?tag=calcite-tabs&encapsulation=shadow","node_modules/@esri/calcite-components/dist/collection/components/calcite-tabs/calcite-tabs.js","src/components/json-editor/json-editor.css?tag=json-editor","src/components/json-editor/json-editor.tsx","src/components/solution-item-details/solution-item-details.css?tag=solution-item-details","src/components/solution-item-details/solution-item-details.tsx","src/components/solution-item-sharing/solution-item-sharing.css?tag=solution-item-sharing&encapsulation=shadow","src/components/solution-item-sharing/solution-item-sharing.tsx","src/components/solution-organization-variables/solution-organization-variables.css?tag=solution-organization-variables&encapsulation=shadow","src/components/solution-organization-variables/solution-organization-variables.tsx","src/components/solution-resource-item/solution-resource-item.css?tag=solution-resource-item&encapsulation=shadow","src/components/solution-resource-item/solution-resource-item.tsx","src/components/solution-template-data/solution-template-data.css?tag=solution-template-data","src/components/solution-template-data/solution-template-data.tsx","src/components/solution-variables/solution-variables.css?tag=solution-variables&encapsulation=shadow","src/components/solution-variables/solution-variables.tsx"],"names":["CSS","backButton","container","header","heading","summary","headerContent","headerActions","headerActionsEnd","headerActionsStart","contentWrapper","contentContainer","fabContainer","footer","menuContainer","menuButton","menu","menuOpen","ICONS","close","backLeft","backRight","SLOTS","headerMenuActions","fab","footerActions","TEXT","back","open","options","HEADING_LEVEL","calcitePanelCss","CalcitePanel","[object Object]","hostRef","this","dismissed","disabled","dismissible","showBackButton","loading","setContainerRef","node","containerEl","setDismissRef","dismissButtonEl","setBackRef","backButtonEl","panelKeyUpHandler","event","key","dismiss","panelScrollHandler","calcitePanelScroll","emit","backButtonClick","calcitePanelBackClick","calcitePanelDismissedChange","focusId","_a","_b","_c","setFocus","focus","el","rtl","getElementDir","intlBack","label","icon","h","aria-label","class","onClick","ref","scale","slot","text","headingLevel","headingNode","CalciteHeading","level","summaryNode","name","hasStartActions","getSlotted","intlClose","dismissibleNode","slotNode","hasEndActions","intlOptions","hasMenuItems","flipPlacements","placement","ACTION_MENU_SLOTS","trigger","backButtonNode","renderBackButton","hasHeaderSlottedContent","headerContentNode","renderHeaderSlottedContent","renderHeaderContent","actionsNodeStart","renderHeaderStartActions","actionsNodeEnd","renderHeaderActionsEnd","headerMenuNode","renderMenu","hasFooterSlottedContent","hasFooterActions","onScroll","tabIndex","renderFab","hasFab","panelNode","aria-busy","toString","CSS_UTILITY","hidden","onKeyUp","renderHeaderNode","renderContent","renderFooterSlottedContent","renderFooterActions","Fragment","main","mainReversed","content","contentBehind","centerRow","primaryPanel","contextualPanel","calciteShellCss","CalciteShell","hasHeader","hasFooter","mainClasses","position","renderHeader","renderMain","renderFooter","contentHeader","contentBody","contentDetached","actionBar","calciteShellPanelCss","CalciteShellPanel","collapsed","detached","detachedHeightScale","widthScale","calciteShellPanelToggle","contentNode","actionBarNode","mainNodes","reverse","calciteTabCss","CalciteTab","active","guid","id","Host","aria-expanded","aria-labelledby","labeledBy","role","calciteTabRegister","closest","document","body","dispatchEvent","CustomEvent","detail","target","tab","getTabIndex","then","index","Array","prototype","indexOf","call","nodeListToArray","parentElement","children","filter","e","matches","tabIds","titleIds","calciteTabNavCss","CalciteTabNav","layout","bordered","animationActiveDuration","handleContainerScroll","activeIndicatorEl","style","transitionDuration","updateOffsetPosition","localStorage","storageId","selectedTab","undefined","setItem","JSON","stringify","calciteTabChange","selectedTabEl","getTabTitleById","updateActiveWidth","storageKey","getItem","storedTab","parse","_d","tabTitles","length","every","title","getTabIdentifier","dir","width","indicatorWidth","offset","indicatorOffset","indicatorStyle","left","right","tabNavEl","activeIndicatorContainerEl","currentIndex","getIndexOfTabTitle","enabledTabTitles","previousTab","stopPropagation","preventDefault","nextTab","syncId","_e","navWidth","offsetWidth","tabLeft","offsetLeft","tabWidth","offsetRight","scrollLeft","Promise","all","map","ids","filterDirectChildren","calciteTabTitleCss","CalciteTabTitle","mutationObserver","createObserver","updateHasText","hasText","emitActiveTab","setupTextContentObserver","parentTabNavEl","parentTabsEl","disconnect","getElementProp","Tag","showSideBorders","iconStartEl","flipRtl","iconFlipRtl","iconStart","iconEndEl","iconEnd","aria-controls","controls","tabindex","container--has-text","calciteTabTitleRegister","getKey","calciteTabsFocusNext","calciteTabsFocusPrevious","querySelectorAll","textContent","trim","observe","childList","subtree","calciteTabsActivate","tabNav","calciteTabsCss","CalciteTabs","titles","tabs","registryHandler","some","sort","a","b","localeCompare","tabDomIndexes","titleDomIndexes","reduce","indexInDOM","registryIndex","forEach","updateAriaInfo","jsonEditorCss","JsonEditor","original","translations","value","instanceid","hasErrors","_useDiffEditor","_loaded","color","appearance","undo","_undo","redo","_redo","diff","_toggleEditor","search","_search","cancelEdits","_reset","_initValueObserver","_destroyEditor","_valueObserver","MutationObserver","ml","mutation","type","attributeName","state","models","Object","keys","newValue","oldValue","_saveCurrentModel","_setEditModel","attributes","attributeOldValue","_isTabActive","_insertValue","itemId","monaco","editor","_editor","create","getElementById","model","language","readOnly","theme","minimap","enabled","automaticLayout","scrollBeyondLastLine","_currentModel","getModel","_contentChanged","onDidChangeContent","_onEditorChange","bind","_decorationsChanged","onDidChangeModelDecorations","_onDecorationsChange","_diffEditor","createDiffEditor","_setDiffModel","_toggleUndoRedo","owner","getModeId","markers","getModelMarkers","canUndo","canRedo","diffContainer","classList","remove","add","_enableButton","_disableButton","v","_getEditor","range","getSelection","pushEditOperations","forceMoveMarkers","revealRange","_searchBtnHandler","removeEventListener","_cancelEditsBtnHandler","dispose","_f","org","_getOriginalValue","createModel","setModel","_setCurrentModel","_setEditorFocus","buttonId","setAttribute","removeAttribute","_isData","saveViewState","data","dataModel","propsModel","dataOriginValue","propsOriginValue","restoreViewState","_initEditor","modified","m","serviceActive","getProp","srEnabled","propsDiffOriginValue","solutionItemDetailsCss","SolutionItemDetails","thumbnail","snippet","description","tags","accessInformation","licenseInfo","_validateValue","accept","onChange","_updateThumbnail","browseForThumbnail","_getThumbnail","height","viewBox","d","editThumbnail","maxlength","itemSnippetCount","isArray","join","credits","termsOfUse","_updateStore","_updateLengthLabel","click","phrase","innerText","snippetCountPattern","replace","files","currentTarget","reader","FileReader","onloadend","src","result","readAsDataURL","k","updateItemValues","hasOwnProperty","originalItemValues","prop","itemOriginValue","item","solutionItemSharingCss","SolutionItemSharing","renderItems","objs","onCalciteSwitchChange","_updateItem","switched","shareItem","typeKeywords","shareInfo","isShared","groupId","solutionOrganizationVariablesCss","SolutionOrganizationVariables","orgVariables","renderHierarchy","hierarchy","obj","_treeItemSelected","organizationVariableSelected","solutionResourceItemCss","SolutionResourceItem","url","oldV","fileName","_updateFile","browseForFile","download","href","downloadFile","icon-start","_downloadItem","update","r","solutionTemplateDataCss","SolutionTemplateData","isResource","itemid","solutionVariables","organizationVariables","varsOpen","renderTemplateData","_resourceData","_jsonData","height-scale","width-scale","_toggleVars","templateData","resourceItem","solutionVariablesCss","SolutionVariables","solVariables","dependencies","solutionVariableSelected"],"mappings":"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","sourcesContent":["/*!\n * All material copyright ESRI, All Rights Reserved, unless otherwise specified.\n * See https://github.com/Esri/calcite-components/blob/master/LICENSE.md for details.\n */\nexport const CSS = {\n backButton: \"back-button\",\n container: \"container\",\n header: \"header\",\n heading: \"heading\",\n summary: \"summary\",\n headerContent: \"header-content\",\n headerActions: \"header-actions\",\n headerActionsEnd: \"header-actions--end\",\n headerActionsStart: \"header-actions--start\",\n contentWrapper: \"content-wrapper\",\n contentContainer: \"content-container\",\n fabContainer: \"fab-container\",\n footer: \"footer\",\n menuContainer: \"menu-container\",\n menuButton: \"menu-button\",\n menu: \"menu\",\n menuOpen: \"menu--open\"\n};\nexport const ICONS = {\n close: \"x\",\n menu: \"ellipsis\",\n backLeft: \"chevron-left\",\n backRight: \"chevron-right\"\n};\nexport const SLOTS = {\n headerActionsStart: \"header-actions-start\",\n headerActionsEnd: \"header-actions-end\",\n headerMenuActions: \"header-menu-actions\",\n headerContent: \"header-content\",\n fab: \"fab\",\n footer: \"footer\",\n footerActions: \"footer-actions\"\n};\nexport const TEXT = {\n back: \"Back\",\n close: \"Close\",\n open: \"Open\",\n options: \"Options\"\n};\nexport const HEADING_LEVEL = 3;\n","/* mixins & extensions */\n\n@keyframes in {\n 0% {\n opacity: 0;\n }\n\n 100% {\n opacity: 1;\n }\n}\n\n@keyframes in-down {\n 0% {\n opacity: 0;\n transform: translate3D(0, -5px, 0);\n }\n\n 100% {\n opacity: 1;\n transform: translate3D(0, 0, 0);\n }\n}\n\n@keyframes in-up {\n 0% {\n opacity: 0;\n transform: translate3D(0, 5px, 0);\n }\n\n 100% {\n opacity: 1;\n transform: translate3D(0, 0, 0);\n }\n}\n\n@keyframes in-scale {\n 0% {\n opacity: 0;\n transform: scale3D(0.95, 0.95, 1);\n }\n\n 100% {\n opacity: 1;\n transform: scale3D(1, 1, 1);\n }\n}\n\n:root {\n --calcite-animation-timing: 300ms;\n}\n\n.calcite-animate {\n opacity: 0;\n animation-fill-mode: both;\n animation-duration: var(--calcite-animation-timing);\n}\n\n.calcite-animate__in {\n animation-name: in;\n}\n\n.calcite-animate__in-down {\n animation-name: in-down;\n}\n\n.calcite-animate__in-up {\n animation-name: in-up;\n}\n\n.calcite-animate__in-scale {\n animation-name: in-scale;\n}\n\n/**\n* Currently only used in Checkbox.\n*/\n\n:host {\n /* Base \":host\" styles for the component */\n box-sizing: border-box;\n background-color: var(--calcite-ui-foreground-1);\n color: var(--calcite-ui-text-2);\n font-size: var(--calcite-font-size--1);\n}\n\n:host * {\n box-sizing: border-box;\n}\n\n:root {\n --calcite-popper-transition: 150ms ease-in-out;\n}\n\n:host([hidden]) {\n display: none;\n}\n\n/**\n* CSS Custom Properties\n*\n* These properties can be overridden using the component's tag as selector.\n*\n* @prop --calcite-panel-max-height: the maximum height of the panel\n* @prop --calcite-panel-max-width: the maximum width of the panel\n* @prop --calcite-panel-min-width: the minimum width of the panel\n*/\n\n:host {\n display: flex;\n flex: 1 1 auto;\n overflow: hidden;\n position: relative;\n width: 100%;\n --calcite-min-header-height: calc(var(--calcite-icon-size) * 3);\n --calcite-panel-max-height: unset;\n --calcite-panel-width: 100%;\n --calcite-panel-min-width: unset;\n --calcite-panel-max-width: unset;\n}\n\n/* Shared styles for header elements */\n\n.header {\n margin: 0;\n display: flex;\n align-items: center;\n align-content: space-between;\n color: var(--calcite-ui-text-2);\n fill: ;\n}\n\n.heading {\n font-weight: var(--calcite-font-weight-medium);\n margin: 0;\n padding: 0;\n}\n\n.header .heading {\n flex: 1 1 auto;\n padding: 0.5rem;\n}\n\nh1.heading {\n font-size: var(--calcite-font-size-2);\n line-height: 1.5rem;\n}\n\nh2.heading {\n font-size: var(--calcite-font-size-1);\n line-height: 1.5rem;\n}\n\nh3.heading {\n font-size: var(--calcite-font-size-0);\n line-height: 1.25rem;\n}\n\nh4.heading,\nh5.heading {\n font-size: var(--calcite-font-size--1);\n line-height: 1rem;\n}\n\n.container {\n display: flex;\n flex: 1 1 auto;\n flex-direction: column;\n align-items: stretch;\n background-color: var(--calcite-ui-background);\n width: 100%;\n padding: 0;\n margin: 0;\n max-height: var(--calcite-panel-max-height);\n width: var(--calcite-panel-width);\n max-width: var(--calcite-panel-max-width);\n min-width: var(--calcite-panel-min-width);\n transition: max-height 150ms ease-in-out, width 150ms ease-in-out;\n}\n\n:host([height-scale=s]) {\n --calcite-panel-max-height: 40vh;\n}\n\n:host([height-scale=m]) {\n --calcite-panel-max-height: 60vh;\n}\n\n:host([height-scale=l]) {\n --calcite-panel-max-height: 80vh;\n}\n\n:host([width-scale=s]) {\n --calcite-panel-width: calc(var(--calcite-panel-width-multiplier) * 12vw);\n --calcite-panel-max-width: calc(var(--calcite-panel-width-multiplier) * 300px);\n --calcite-panel-min-width: calc(var(--calcite-panel-width-multiplier) * 150px);\n}\n\n:host([width-scale=m]) {\n --calcite-panel-width: calc(var(--calcite-panel-width-multiplier) * 20vw);\n --calcite-panel-max-width: calc(var(--calcite-panel-width-multiplier) * 420px);\n --calcite-panel-min-width: calc(var(--calcite-panel-width-multiplier) * 240px);\n}\n\n:host([width-scale=l]) {\n --calcite-panel-width: calc(var(--calcite-panel-width-multiplier) * 45vw);\n --calcite-panel-max-width: calc(var(--calcite-panel-width-multiplier) * 680px);\n --calcite-panel-min-width: calc(var(--calcite-panel-width-multiplier) * 340px);\n}\n\n.container[hidden] {\n display: none;\n}\n\n:host([loading]) .container,\n:host([disabled]) .container {\n position: relative;\n z-index: 1;\n}\n\n.header {\n border-bottom: 1px solid;\n align-items: stretch;\n background-color: var(--calcite-ui-foreground-1);\n justify-content: flex-start;\n position: sticky;\n top: 0;\n border-bottom-color: var(--calcite-ui-border-3);\n width: 100%;\n flex: 0 0 auto;\n min-height: 3rem;\n z-index: 2;\n}\n\n.header-content {\n overflow: hidden;\n margin-right: auto;\n padding-left: 0.75rem;\n padding-right: 0.75rem;\n padding-top: 1rem;\n padding-bottom: 1rem;\n display: flex;\n flex-direction: column;\n}\n\n.header-content .heading,\n.header-content .summary {\n padding: 0;\n display: block;\n overflow: hidden;\n white-space: nowrap;\n width: 100%;\n text-overflow: ellipsis;\n}\n\n.header-content .heading {\n font-weight: var(--calcite-font-weight-medium);\n margin-top: 0;\n margin-left: 0;\n margin-right: 0;\n margin-bottom: 0.25rem;\n font-size: var(--calcite-font-size-0);\n line-height: 1.25rem;\n}\n\n.header-content .heading:only-child {\n margin-bottom: 0;\n}\n\n.header-content .summary {\n color: var(--calcite-ui-text-2);\n font-size: var(--calcite-font-size--1);\n line-height: 1rem;\n}\n\n.back-button {\n border-color: var(--calcite-ui-border-3);\n border-style: solid;\n border-width: 0;\n border-right-width: 1px;\n}\n\n.calcite--rtl .back-button {\n border-right-width: 0;\n border-left-width: 1px;\n}\n\n.header-actions {\n display: flex;\n align-items: stretch;\n flex-direction: row;\n flex-wrap: nowrap;\n}\n\n.header-actions--end {\n margin-left: auto;\n}\n\n.menu-container:only-child {\n margin-left: auto;\n}\n\n.menu-button {\n align-self: stretch;\n flex: 0 1 auto;\n height: 100%;\n position: relative;\n}\n\n.menu {\n min-width: 10rem;\n flex-flow: column nowrap;\n}\n\n.content-wrapper {\n height: 100%;\n overflow: auto;\n}\n\n.content-container {\n align-items: stretch;\n background-color: var(--calcite-ui-background);\n display: flex;\n flex: 1 1 auto;\n flex-wrap: nowrap;\n flex-direction: column;\n}\n\n.footer {\n border-top: 1px solid;\n background-color: var(--calcite-ui-foreground-1);\n border-top-color: var(--calcite-ui-border-3);\n display: flex;\n justify-content: space-evenly;\n position: sticky;\n bottom: 0;\n width: 100%;\n flex: 0 0 auto;\n min-height: 3rem;\n padding: 0.5rem;\n}\n\n.calcite--rtl .header-content {\n margin-left: auto;\n margin-right: unset;\n}\n\n.calcite--rtl .header-actions--end {\n margin-right: auto;\n margin-left: unset;\n}\n\n.calcite--rtl .menu-container:only-child {\n margin-right: auto;\n margin-left: unset;\n}\n\n.fab-container {\n display: block;\n position: sticky;\n margin-top: 0;\n margin-bottom: 0;\n margin-left: auto;\n margin-right: auto;\n padding: 0.5rem;\n bottom: 0;\n left: 0;\n right: 0;\n width: -moz-fit-content;\n width: fit-content;\n z-index: 1;\n}","/*!\n * All material copyright ESRI, All Rights Reserved, unless otherwise specified.\n * See https://github.com/Esri/calcite-components/blob/master/LICENSE.md for details.\n */\nimport { Component, Element, Event, Method, Prop, Watch, h, Fragment } from \"@stencil/core\";\nimport { CSS, HEADING_LEVEL, ICONS, SLOTS, TEXT } from \"./resources\";\nimport { getElementDir, getSlotted } from \"../../utils/dom\";\nimport { CSS_UTILITY } from \"../../utils/resources\";\nimport { CalciteHeading } from \"../functional/CalciteHeading\";\nimport { SLOTS as ACTION_MENU_SLOTS } from \"../calcite-action-menu/resources\";\n/**\n * @slot - A slot for adding custom content.\n * @slot header-actions-start - A slot for adding actions or content to the start side of the panel header.\n * @slot header-actions-end - A slot for adding actions or content to the end side of the panel header.\n * @slot header-content - A slot for adding custom content to the header.\n * @slot header-menu-actions - A slot for adding an overflow menu with actions inside a dropdown.\n * @slot fab - A slot for adding a `calcite-fab` (floating action button) to perform an action.\n * @slot footer-actions - A slot for adding buttons to the footer.\n * @slot footer - A slot for adding custom content to the footer.\n */\nexport class CalcitePanel {\n constructor() {\n // --------------------------------------------------------------------------\n //\n // Properties\n //\n // --------------------------------------------------------------------------\n /**\n * Hides the panel.\n */\n this.dismissed = false;\n /**\n * When true, disabled prevents interaction. This state shows items with lower opacity/grayed.\n */\n this.disabled = false;\n /**\n * Displays a close button in the trailing side of the header.\n */\n this.dismissible = false;\n /**\n * Shows a back button in the header.\n */\n this.showBackButton = false;\n /**\n * When true, content is waiting to be loaded. This state shows a busy indicator.\n */\n this.loading = false;\n /**\n * Opens the action menu.\n */\n this.menuOpen = false;\n // --------------------------------------------------------------------------\n //\n // Private Methods\n //\n // --------------------------------------------------------------------------\n this.setContainerRef = (node) => {\n this.containerEl = node;\n };\n this.setDismissRef = (node) => {\n this.dismissButtonEl = node;\n };\n this.setBackRef = (node) => {\n this.backButtonEl = node;\n };\n this.panelKeyUpHandler = (event) => {\n if (event.key === \"Escape\") {\n this.dismiss();\n }\n };\n this.dismiss = () => {\n this.dismissed = true;\n };\n this.panelScrollHandler = () => {\n this.calcitePanelScroll.emit();\n };\n this.backButtonClick = () => {\n this.calcitePanelBackClick.emit();\n };\n }\n dismissedHandler() {\n this.calcitePanelDismissedChange.emit();\n }\n // --------------------------------------------------------------------------\n //\n // Methods\n //\n // --------------------------------------------------------------------------\n /** Sets focus on the component. */\n async setFocus(focusId) {\n var _a, _b, _c;\n if (focusId === \"dismiss-button\") {\n (_a = this.dismissButtonEl) === null || _a === void 0 ? void 0 : _a.setFocus();\n return;\n }\n if (focusId === \"back-button\") {\n (_b = this.backButtonEl) === null || _b === void 0 ? void 0 : _b.setFocus();\n return;\n }\n (_c = this.containerEl) === null || _c === void 0 ? void 0 : _c.focus();\n }\n // --------------------------------------------------------------------------\n //\n // Render Methods\n //\n // --------------------------------------------------------------------------\n renderBackButton() {\n const { el } = this;\n const rtl = getElementDir(el) === \"rtl\";\n const { showBackButton, intlBack, backButtonClick } = this;\n const label = intlBack || TEXT.back;\n const icon = rtl ? ICONS.backRight : ICONS.backLeft;\n return showBackButton ? (h(\"calcite-action\", { \"aria-label\": label, class: CSS.backButton, icon: icon, key: \"back-button\", onClick: backButtonClick, ref: this.setBackRef, scale: \"s\", slot: SLOTS.headerActionsStart, text: label })) : null;\n }\n renderHeaderContent() {\n const { heading, headingLevel, summary } = this;\n const headingNode = heading ? (h(CalciteHeading, { class: CSS.heading, level: headingLevel || HEADING_LEVEL }, heading)) : null;\n const summaryNode = summary ? h(\"span\", { class: CSS.summary }, summary) : null;\n return headingNode || summaryNode ? (h(\"div\", { class: CSS.headerContent, key: \"header-content\" },\n headingNode,\n summaryNode)) : null;\n }\n /**\n * Allows user to override the entire header-content node.\n */\n renderHeaderSlottedContent() {\n return (h(\"div\", { class: CSS.headerContent, key: \"header-content\" },\n h(\"slot\", { name: SLOTS.headerContent })));\n }\n renderHeaderStartActions() {\n const { el } = this;\n const hasStartActions = getSlotted(el, SLOTS.headerActionsStart);\n return hasStartActions ? (h(\"div\", { class: { [CSS.headerActionsStart]: true, [CSS.headerActions]: true }, key: \"header-actions-start\" },\n h(\"slot\", { name: SLOTS.headerActionsStart }))) : null;\n }\n renderHeaderActionsEnd() {\n const { dismiss, dismissible, el, intlClose } = this;\n const text = intlClose || TEXT.close;\n const dismissibleNode = dismissible ? (h(\"calcite-action\", { \"aria-label\": text, icon: ICONS.close, onClick: dismiss, ref: this.setDismissRef, text: text })) : null;\n const slotNode = h(\"slot\", { name: SLOTS.headerActionsEnd });\n const hasEndActions = getSlotted(el, SLOTS.headerActionsEnd);\n return hasEndActions || dismissibleNode ? (h(\"div\", { class: { [CSS.headerActionsEnd]: true, [CSS.headerActions]: true }, key: \"header-actions-end\" },\n slotNode,\n dismissibleNode)) : null;\n }\n renderMenu() {\n const { el, intlOptions, menuOpen } = this;\n const hasMenuItems = getSlotted(el, SLOTS.headerMenuActions);\n return hasMenuItems ? (h(\"calcite-action-menu\", { flipPlacements: [\"top\", \"bottom\"], label: intlOptions || TEXT.options, open: menuOpen, placement: \"bottom-end\" },\n h(\"calcite-action\", { icon: ICONS.menu, slot: ACTION_MENU_SLOTS.trigger, text: intlOptions || TEXT.options }),\n h(\"slot\", { name: SLOTS.headerMenuActions }))) : null;\n }\n renderHeaderNode() {\n const { el, showBackButton } = this;\n const backButtonNode = this.renderBackButton();\n const hasHeaderSlottedContent = getSlotted(el, SLOTS.headerContent);\n const headerContentNode = hasHeaderSlottedContent\n ? this.renderHeaderSlottedContent()\n : this.renderHeaderContent();\n const actionsNodeStart = this.renderHeaderStartActions();\n const actionsNodeEnd = this.renderHeaderActionsEnd();\n const headerMenuNode = this.renderMenu();\n return actionsNodeStart ||\n headerContentNode ||\n actionsNodeEnd ||\n headerMenuNode ||\n showBackButton ? (h(\"header\", { class: CSS.header },\n backButtonNode,\n actionsNodeStart,\n headerContentNode,\n actionsNodeEnd,\n headerMenuNode)) : null;\n }\n /**\n * Allows user to override the entire footer node.\n */\n renderFooterSlottedContent() {\n const { el } = this;\n const hasFooterSlottedContent = getSlotted(el, SLOTS.footer);\n return hasFooterSlottedContent ? (h(\"footer\", { class: CSS.footer },\n h(\"slot\", { name: SLOTS.footer }))) : null;\n }\n renderFooterActions() {\n const { el } = this;\n const hasFooterActions = getSlotted(el, SLOTS.footerActions);\n return hasFooterActions ? (h(\"footer\", { class: CSS.footer },\n h(\"slot\", { name: SLOTS.footerActions }))) : null;\n }\n renderContent() {\n return (h(\"div\", { class: CSS.contentWrapper, onScroll: this.panelScrollHandler, tabIndex: 0 },\n h(\"section\", { class: CSS.contentContainer },\n h(\"slot\", null)),\n this.renderFab()));\n }\n renderFab() {\n const { el } = this;\n const hasFab = getSlotted(el, SLOTS.fab);\n return hasFab ? (h(\"div\", { class: CSS.fabContainer },\n h(\"slot\", { name: SLOTS.fab }))) : null;\n }\n render() {\n const { dismissed, disabled, dismissible, el, loading, panelKeyUpHandler } = this;\n const rtl = getElementDir(el) === \"rtl\";\n const panelNode = (h(\"article\", { \"aria-busy\": loading.toString(), class: {\n [CSS.container]: true,\n [CSS_UTILITY.rtl]: rtl\n }, hidden: dismissible && dismissed, onKeyUp: panelKeyUpHandler, ref: this.setContainerRef, tabIndex: dismissible ? 0 : -1 },\n this.renderHeaderNode(),\n this.renderContent(),\n this.renderFooterSlottedContent() || this.renderFooterActions()));\n return (h(Fragment, null,\n loading || disabled ? h(\"calcite-scrim\", { loading: loading }) : null,\n panelNode));\n }\n static get is() { return \"calcite-panel\"; }\n static get encapsulation() { return \"shadow\"; }\n static get originalStyleUrls() { return {\n \"$\": [\"calcite-panel.scss\"]\n }; }\n static get styleUrls() { return {\n \"$\": [\"calcite-panel.css\"]\n }; }\n static get properties() { return {\n \"dismissed\": {\n \"type\": \"boolean\",\n \"mutable\": true,\n \"complexType\": {\n \"original\": \"boolean\",\n \"resolved\": \"boolean\",\n \"references\": {}\n },\n \"required\": false,\n \"optional\": false,\n \"docs\": {\n \"tags\": [],\n \"text\": \"Hides the panel.\"\n },\n \"attribute\": \"dismissed\",\n \"reflect\": true,\n \"defaultValue\": \"false\"\n },\n \"beforeBack\": {\n \"type\": \"unknown\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"() => Promise<void>\",\n \"resolved\": \"() => Promise<void>\",\n \"references\": {\n \"Promise\": {\n \"location\": \"global\"\n }\n }\n },\n \"required\": false,\n \"optional\": true,\n \"docs\": {\n \"tags\": [],\n \"text\": \"When provided, this method will be called before it is removed from the parent flow.\"\n }\n },\n \"disabled\": {\n \"type\": \"boolean\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"boolean\",\n \"resolved\": \"boolean\",\n \"references\": {}\n },\n \"required\": false,\n \"optional\": false,\n \"docs\": {\n \"tags\": [],\n \"text\": \"When true, disabled prevents interaction. This state shows items with lower opacity/grayed.\"\n },\n \"attribute\": \"disabled\",\n \"reflect\": true,\n \"defaultValue\": \"false\"\n },\n \"dismissible\": {\n \"type\": \"boolean\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"boolean\",\n \"resolved\": \"boolean\",\n \"references\": {}\n },\n \"required\": false,\n \"optional\": false,\n \"docs\": {\n \"tags\": [],\n \"text\": \"Displays a close button in the trailing side of the header.\"\n },\n \"attribute\": \"dismissible\",\n \"reflect\": true,\n \"defaultValue\": \"false\"\n },\n \"headingLevel\": {\n \"type\": \"number\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"HeadingLevel\",\n \"resolved\": \"1 | 2 | 3 | 4 | 5 | 6\",\n \"references\": {\n \"HeadingLevel\": {\n \"location\": \"import\",\n \"path\": \"../functional/CalciteHeading\"\n }\n }\n },\n \"required\": false,\n \"optional\": false,\n \"docs\": {\n \"tags\": [],\n \"text\": \"Number at which section headings should start for this component.\"\n },\n \"attribute\": \"heading-level\",\n \"reflect\": false\n },\n \"showBackButton\": {\n \"type\": \"boolean\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"boolean\",\n \"resolved\": \"boolean\",\n \"references\": {}\n },\n \"required\": false,\n \"optional\": false,\n \"docs\": {\n \"tags\": [],\n \"text\": \"Shows a back button in the header.\"\n },\n \"attribute\": \"show-back-button\",\n \"reflect\": true,\n \"defaultValue\": \"false\"\n },\n \"intlBack\": {\n \"type\": \"string\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"string\",\n \"resolved\": \"string\",\n \"references\": {}\n },\n \"required\": false,\n \"optional\": true,\n \"docs\": {\n \"tags\": [],\n \"text\": \"'Back' text string.\"\n },\n \"attribute\": \"intl-back\",\n \"reflect\": false\n },\n \"heightScale\": {\n \"type\": \"string\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"Scale\",\n \"resolved\": \"\\\"l\\\" | \\\"m\\\" | \\\"s\\\"\",\n \"references\": {\n \"Scale\": {\n \"location\": \"import\",\n \"path\": \"../interfaces\"\n }\n }\n },\n \"required\": false,\n \"optional\": false,\n \"docs\": {\n \"tags\": [],\n \"text\": \"Specifies the maxiumum height of the panel.\"\n },\n \"attribute\": \"height-scale\",\n \"reflect\": true\n },\n \"widthScale\": {\n \"type\": \"string\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"Scale\",\n \"resolved\": \"\\\"l\\\" | \\\"m\\\" | \\\"s\\\"\",\n \"references\": {\n \"Scale\": {\n \"location\": \"import\",\n \"path\": \"../interfaces\"\n }\n }\n },\n \"required\": false,\n \"optional\": true,\n \"docs\": {\n \"tags\": [],\n \"text\": \"This sets width of the panel.\"\n },\n \"attribute\": \"width-scale\",\n \"reflect\": true\n },\n \"loading\": {\n \"type\": \"boolean\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"boolean\",\n \"resolved\": \"boolean\",\n \"references\": {}\n },\n \"required\": false,\n \"optional\": false,\n \"docs\": {\n \"tags\": [],\n \"text\": \"When true, content is waiting to be loaded. This state shows a busy indicator.\"\n },\n \"attribute\": \"loading\",\n \"reflect\": true,\n \"defaultValue\": \"false\"\n },\n \"intlClose\": {\n \"type\": \"string\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"string\",\n \"resolved\": \"string\",\n \"references\": {}\n },\n \"required\": false,\n \"optional\": true,\n \"docs\": {\n \"tags\": [],\n \"text\": \"'Close' text string for the close button. The close button will only be shown when 'dismissible' is true.\"\n },\n \"attribute\": \"intl-close\",\n \"reflect\": false\n },\n \"intlOptions\": {\n \"type\": \"string\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"string\",\n \"resolved\": \"string\",\n \"references\": {}\n },\n \"required\": false,\n \"optional\": true,\n \"docs\": {\n \"tags\": [],\n \"text\": \"'Options' text string for the actions menu.\"\n },\n \"attribute\": \"intl-options\",\n \"reflect\": false\n },\n \"heading\": {\n \"type\": \"string\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"string\",\n \"resolved\": \"string\",\n \"references\": {}\n },\n \"required\": false,\n \"optional\": true,\n \"docs\": {\n \"tags\": [],\n \"text\": \"Heading text.\"\n },\n \"attribute\": \"heading\",\n \"reflect\": false\n },\n \"summary\": {\n \"type\": \"string\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"string\",\n \"resolved\": \"string\",\n \"references\": {}\n },\n \"required\": false,\n \"optional\": true,\n \"docs\": {\n \"tags\": [],\n \"text\": \"Summary text. A description displayed underneath the heading.\"\n },\n \"attribute\": \"summary\",\n \"reflect\": false\n },\n \"menuOpen\": {\n \"type\": \"boolean\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"boolean\",\n \"resolved\": \"boolean\",\n \"references\": {}\n },\n \"required\": false,\n \"optional\": false,\n \"docs\": {\n \"tags\": [],\n \"text\": \"Opens the action menu.\"\n },\n \"attribute\": \"menu-open\",\n \"reflect\": true,\n \"defaultValue\": \"false\"\n }\n }; }\n static get events() { return [{\n \"method\": \"calcitePanelDismissedChange\",\n \"name\": \"calcitePanelDismissedChange\",\n \"bubbles\": true,\n \"cancelable\": true,\n \"composed\": true,\n \"docs\": {\n \"tags\": [],\n \"text\": \"Emitted when the close button has been clicked.\"\n },\n \"complexType\": {\n \"original\": \"any\",\n \"resolved\": \"any\",\n \"references\": {}\n }\n }, {\n \"method\": \"calcitePanelScroll\",\n \"name\": \"calcitePanelScroll\",\n \"bubbles\": true,\n \"cancelable\": true,\n \"composed\": true,\n \"docs\": {\n \"tags\": [],\n \"text\": \"Emitted when the content has been scrolled.\"\n },\n \"complexType\": {\n \"original\": \"any\",\n \"resolved\": \"any\",\n \"references\": {}\n }\n }, {\n \"method\": \"calcitePanelBackClick\",\n \"name\": \"calcitePanelBackClick\",\n \"bubbles\": true,\n \"cancelable\": true,\n \"composed\": true,\n \"docs\": {\n \"tags\": [],\n \"text\": \"Emitted when the back button has been clicked.\"\n },\n \"complexType\": {\n \"original\": \"any\",\n \"resolved\": \"any\",\n \"references\": {}\n }\n }]; }\n static get methods() { return {\n \"setFocus\": {\n \"complexType\": {\n \"signature\": \"(focusId?: \\\"dismiss-button\\\" | \\\"back-button\\\") => Promise<void>\",\n \"parameters\": [{\n \"tags\": [],\n \"text\": \"\"\n }],\n \"references\": {\n \"Promise\": {\n \"location\": \"global\"\n }\n },\n \"return\": \"Promise<void>\"\n },\n \"docs\": {\n \"text\": \"Sets focus on the component.\",\n \"tags\": []\n }\n }\n }; }\n static get elementRef() { return \"el\"; }\n static get watchers() { return [{\n \"propName\": \"dismissed\",\n \"methodName\": \"dismissedHandler\"\n }]; }\n}\n","/*!\n * All material copyright ESRI, All Rights Reserved, unless otherwise specified.\n * See https://github.com/Esri/calcite-components/blob/master/LICENSE.md for details.\n */\nexport const CSS = {\n main: \"main\",\n mainReversed: \"main--reversed\",\n content: \"content\",\n contentBehind: \"content--behind\",\n footer: \"footer\"\n};\nexport const SLOTS = {\n centerRow: \"center-row\",\n primaryPanel: \"primary-panel\",\n contextualPanel: \"contextual-panel\",\n header: \"header\",\n footer: \"footer\"\n};\n","/* mixins & extensions */\n\n@keyframes in {\n 0% {\n opacity: 0;\n }\n\n 100% {\n opacity: 1;\n }\n}\n\n@keyframes in-down {\n 0% {\n opacity: 0;\n transform: translate3D(0, -5px, 0);\n }\n\n 100% {\n opacity: 1;\n transform: translate3D(0, 0, 0);\n }\n}\n\n@keyframes in-up {\n 0% {\n opacity: 0;\n transform: translate3D(0, 5px, 0);\n }\n\n 100% {\n opacity: 1;\n transform: translate3D(0, 0, 0);\n }\n}\n\n@keyframes in-scale {\n 0% {\n opacity: 0;\n transform: scale3D(0.95, 0.95, 1);\n }\n\n 100% {\n opacity: 1;\n transform: scale3D(1, 1, 1);\n }\n}\n\n:root {\n --calcite-animation-timing: 300ms;\n}\n\n.calcite-animate {\n opacity: 0;\n animation-fill-mode: both;\n animation-duration: var(--calcite-animation-timing);\n}\n\n.calcite-animate__in {\n animation-name: in;\n}\n\n.calcite-animate__in-down {\n animation-name: in-down;\n}\n\n.calcite-animate__in-up {\n animation-name: in-up;\n}\n\n.calcite-animate__in-scale {\n animation-name: in-scale;\n}\n\n/**\n* Currently only used in Checkbox.\n*/\n\n:host {\n /* Base \":host\" styles for the component */\n box-sizing: border-box;\n background-color: var(--calcite-ui-foreground-1);\n color: var(--calcite-ui-text-2);\n font-size: var(--calcite-font-size--1);\n}\n\n:host * {\n box-sizing: border-box;\n}\n\n:root {\n --calcite-popper-transition: 150ms ease-in-out;\n}\n\n:host([hidden]) {\n display: none;\n}\n\n/**\n* CSS Custom Properties\n*\n* These properties can be overridden using the component's tag as selector.\n*\n* @prop --calcite-shell-tip-spacing: the left/right positioning of the tip-manager when slotted within a shell\n*/\n\n:host {\n width: 100%;\n height: 100%;\n position: absolute;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n --calcite-shell-tip-spacing: 26vw;\n}\n\n.main {\n height: 100%;\n width: 100%;\n flex: 1 1 auto;\n display: flex;\n flex-direction: row;\n position: relative;\n justify-content: space-between;\n overflow: hidden;\n}\n\n.main--reversed {\n flex-direction: row-reverse;\n}\n\n.content {\n display: flex;\n flex-direction: column;\n flex-wrap: nowrap;\n height: 100%;\n overflow: auto;\n width: 100%;\n}\n\n.content ::slotted(calcite-shell-center-row),\n.content ::slotted(calcite-panel),\n.content ::slotted(calcite-flow) {\n align-self: stretch;\n flex: 1 1 auto;\n max-height: unset;\n}\n\n.content--behind {\n border-width: 0;\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 0;\n display: initial;\n}\n\n::slotted(calcite-shell-center-row) {\n width: unset;\n}\n\n::slotted(.header .heading) {\n font-weight: var(--calcite-font-weight-normal);\n font-size: var(--calcite-font-size--2);\n line-height: 1.375;\n}\n\n::slotted(calcite-shell-panel),\n::slotted(calcite-shell-center-row) {\n position: relative;\n z-index: 1;\n}\n\n::slotted(calcite-panel),\n::slotted(calcite-flow) {\n border-width: 1px;\n border-color: var(--calcite-ui-border-3);\n border-style: solid;\n border-left-width: 0;\n border-right-width: 0;\n}\n\nslot[name=center-row]::slotted(calcite-shell-center-row:not([detached])) {\n border-left-width: 1px;\n border-right-width: 1px;\n border-color: var(--calcite-ui-border-3);\n}\n\n::slotted(calcite-tip-manager) {\n border-radius: 0.25rem;\n box-shadow: 0 6px 20px -4px rgba(0, 0, 0, 0.1), 0 4px 12px -2px rgba(0, 0, 0, 0.08);\n position: absolute;\n animation: in-up var(--calcite-animation-timing) ease-in-out;\n box-sizing: border-box;\n bottom: 0.5rem;\n left: var(--calcite-shell-tip-spacing);\n right: var(--calcite-shell-tip-spacing);\n z-index: 2;\n}","/*!\n * All material copyright ESRI, All Rights Reserved, unless otherwise specified.\n * See https://github.com/Esri/calcite-components/blob/master/LICENSE.md for details.\n */\nimport { Component, Element, Prop, h, Fragment } from \"@stencil/core\";\nimport { CSS, SLOTS } from \"./resources\";\nimport { getSlotted } from \"../../utils/dom\";\n/**\n * @slot - A slot for adding content to the shell. This content will appear between any leading and trailing panels added to the shell. (eg. a map)\n * @slot header - A slot for adding header content. This content will be positioned at the top of the shell.\n * @slot footer - A slot for adding footer content. This content will be positioned at the bottom of the shell.\n * @slot primary-panel - A slot for adding the leading `calcite-shell-panel`.\n * @slot contextual-panel - A slot for adding the trailing `calcite-shell-panel`.\n * @slot center-row - A slot for adding custom content in the center row.\n */\nexport class CalciteShell {\n constructor() {\n // --------------------------------------------------------------------------\n //\n // Properties\n //\n // --------------------------------------------------------------------------\n /**\n * Positions the center content behind any calcite-shell-panels.\n */\n this.contentBehind = false;\n }\n // --------------------------------------------------------------------------\n //\n // Render Methods\n //\n // --------------------------------------------------------------------------\n renderHeader() {\n const hasHeader = !!getSlotted(this.el, SLOTS.header);\n return hasHeader ? h(\"slot\", { name: SLOTS.header }) : null;\n }\n renderContent() {\n const content = !!this.contentBehind\n ? [\n h(\"div\", { class: {\n [CSS.content]: true,\n [CSS.contentBehind]: !!this.contentBehind\n } },\n h(\"slot\", null)),\n h(\"slot\", { name: SLOTS.centerRow })\n ]\n : [\n h(\"div\", { class: CSS.content },\n h(\"slot\", null),\n h(\"slot\", { name: SLOTS.centerRow }))\n ];\n return content;\n }\n renderFooter() {\n const hasFooter = !!getSlotted(this.el, SLOTS.footer);\n return hasFooter ? (h(\"div\", { class: CSS.footer },\n h(\"slot\", { name: SLOTS.footer }))) : null;\n }\n renderMain() {\n const primaryPanel = getSlotted(this.el, SLOTS.primaryPanel);\n const mainClasses = {\n [CSS.main]: true,\n [CSS.mainReversed]: (primaryPanel === null || primaryPanel === void 0 ? void 0 : primaryPanel.position) === \"end\"\n };\n return (h(\"div\", { class: mainClasses },\n h(\"slot\", { name: SLOTS.primaryPanel }),\n this.renderContent(),\n h(\"slot\", { name: SLOTS.contextualPanel })));\n }\n render() {\n return (h(Fragment, null,\n this.renderHeader(),\n this.renderMain(),\n this.renderFooter()));\n }\n static get is() { return \"calcite-shell\"; }\n static get encapsulation() { return \"shadow\"; }\n static get originalStyleUrls() { return {\n \"$\": [\"calcite-shell.scss\"]\n }; }\n static get styleUrls() { return {\n \"$\": [\"calcite-shell.css\"]\n }; }\n static get properties() { return {\n \"contentBehind\": {\n \"type\": \"boolean\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"boolean\",\n \"resolved\": \"boolean\",\n \"references\": {}\n },\n \"required\": false,\n \"optional\": false,\n \"docs\": {\n \"tags\": [],\n \"text\": \"Positions the center content behind any calcite-shell-panels.\"\n },\n \"attribute\": \"content-behind\",\n \"reflect\": true,\n \"defaultValue\": \"false\"\n }\n }; }\n static get elementRef() { return \"el\"; }\n}\n","/*!\n * All material copyright ESRI, All Rights Reserved, unless otherwise specified.\n * See https://github.com/Esri/calcite-components/blob/master/LICENSE.md for details.\n */\nexport const CSS = {\n container: \"container\",\n content: \"content\",\n contentHeader: \"content__header\",\n contentBody: \"content__body\",\n contentDetached: \"content--detached\"\n};\nexport const SLOTS = {\n actionBar: \"action-bar\",\n header: \"header\"\n};\n","/* mixins & extensions */\n\n@keyframes in {\n 0% {\n opacity: 0;\n }\n\n 100% {\n opacity: 1;\n }\n}\n\n@keyframes in-down {\n 0% {\n opacity: 0;\n transform: translate3D(0, -5px, 0);\n }\n\n 100% {\n opacity: 1;\n transform: translate3D(0, 0, 0);\n }\n}\n\n@keyframes in-up {\n 0% {\n opacity: 0;\n transform: translate3D(0, 5px, 0);\n }\n\n 100% {\n opacity: 1;\n transform: translate3D(0, 0, 0);\n }\n}\n\n@keyframes in-scale {\n 0% {\n opacity: 0;\n transform: scale3D(0.95, 0.95, 1);\n }\n\n 100% {\n opacity: 1;\n transform: scale3D(1, 1, 1);\n }\n}\n\n:root {\n --calcite-animation-timing: 300ms;\n}\n\n.calcite-animate {\n opacity: 0;\n animation-fill-mode: both;\n animation-duration: var(--calcite-animation-timing);\n}\n\n.calcite-animate__in {\n animation-name: in;\n}\n\n.calcite-animate__in-down {\n animation-name: in-down;\n}\n\n.calcite-animate__in-up {\n animation-name: in-up;\n}\n\n.calcite-animate__in-scale {\n animation-name: in-scale;\n}\n\n/**\n* Currently only used in Checkbox.\n*/\n\n:root {\n --calcite-popper-transition: 150ms ease-in-out;\n}\n\n:host([hidden]) {\n display: none;\n}\n\n:host {\n display: flex;\n align-items: stretch;\n flex: 0 1 auto;\n --calcite-shell-panel-detached-max-height: unset;\n}\n\n.container {\n box-sizing: border-box;\n display: flex;\n align-items: stretch;\n background-color: transparent;\n flex: 1 1 auto;\n pointer-events: none;\n color: var(--calcite-ui-text-2);\n font-size: var(--calcite-font-size--1);\n}\n\n.container * {\n box-sizing: border-box;\n}\n\n::slotted(calcite-panel),\n::slotted(calcite-flow) {\n flex: 1 1 auto;\n height: 100%;\n width: 100%;\n max-height: unset;\n max-width: unset;\n}\n\n::slotted(.calcite-match-height) {\n display: flex;\n flex: 1 1 auto;\n overflow: hidden;\n}\n\n.content {\n align-items: stretch;\n align-self: stretch;\n background-color: var(--calcite-ui-background);\n display: flex;\n padding: 0;\n pointer-events: auto;\n flex-direction: column;\n flex-wrap: nowrap;\n width: var(--calcite-shell-panel-width);\n max-width: var(--calcite-shell-panel-max-width);\n min-width: var(--calcite-shell-panel-min-width);\n transition: max-height 150ms ease-in-out, max-width 150ms ease-in-out;\n}\n\n.content__header {\n display: flex;\n flex-direction: column;\n flex: 0 1 auto;\n flex-wrap: nowrap;\n align-items: stretch;\n}\n\n.content__body {\n display: flex;\n flex: 1 1 auto;\n flex-direction: column;\n overflow: hidden;\n}\n\n:host([width-scale=s]) .content {\n --calcite-shell-panel-width: calc(var(--calcite-panel-width-multiplier) * 12vw);\n --calcite-shell-panel-max-width: calc(var(--calcite-panel-width-multiplier) * 300px);\n --calcite-shell-panel-min-width: calc(var(--calcite-panel-width-multiplier) * 150px);\n}\n\n:host([width-scale=m]) .content {\n --calcite-shell-panel-width: calc(var(--calcite-panel-width-multiplier) * 20vw);\n --calcite-shell-panel-max-width: calc(var(--calcite-panel-width-multiplier) * 420px);\n --calcite-shell-panel-min-width: calc(var(--calcite-panel-width-multiplier) * 240px);\n}\n\n:host([width-scale=l]) .content {\n --calcite-shell-panel-width: calc(var(--calcite-panel-width-multiplier) * 45vw);\n --calcite-shell-panel-max-width: calc(var(--calcite-panel-width-multiplier) * 680px);\n --calcite-shell-panel-min-width: calc(var(--calcite-panel-width-multiplier) * 340px);\n}\n\n:host([detached-height-scale=s]) .content--detached {\n --calcite-shell-panel-detached-max-height: 40vh;\n}\n\n:host([detached-height-scale=m]) .content--detached {\n --calcite-shell-panel-detached-max-height: 60vh;\n}\n\n:host([detached-height-scale=l]) .content--detached {\n --calcite-shell-panel-detached-max-height: 80vh;\n}\n\n.content--detached {\n border-radius: 0.25rem;\n box-shadow: 0 4px 8px -1px rgba(0, 0, 0, 0.08), 0 2px 4px -1px rgba(0, 0, 0, 0.04);\n height: auto;\n overflow: hidden;\n margin-top: 0.5rem;\n margin-bottom: auto;\n margin-left: 0.5rem;\n margin-right: 0.5rem;\n max-height: var(--calcite-shell-panel-detached-max-height);\n}\n\n.content--detached ::slotted(calcite-panel),\n.content--detached ::slotted(calcite-flow) {\n max-height: unset;\n}\n\n:host([position=start]) .content--detached ::slotted(calcite-panel),\n:host([position=start]) .content--detached ::slotted(calcite-flow),\n:host([position=end]) .content--detached ::slotted(calcite-panel),\n:host([position=end]) .content--detached ::slotted(calcite-flow) {\n border-style: none;\n}\n\n.content[hidden] {\n display: none;\n}\n\nslot[name=action-bar]::slotted(calcite-action-bar),\n.content ::slotted(calcite-flow),\n.content ::slotted(calcite-panel) {\n border-width: 1px;\n border-color: var(--calcite-ui-border-3);\n border-style: solid;\n}\n\n:host([position=start]) slot[name=action-bar]::slotted(calcite-action-bar),\n:host([position=start]) .content ::slotted(calcite-flow),\n:host([position=start]) .content ::slotted(calcite-panel) {\n border-inline-start: none;\n}\n\n:host([position=end]) slot[name=action-bar]::slotted(calcite-action-bar),\n:host([position=end]) .content ::slotted(calcite-flow),\n:host([position=end]) .content ::slotted(calcite-panel) {\n border-inline-end: none;\n}","/*!\n * All material copyright ESRI, All Rights Reserved, unless otherwise specified.\n * See https://github.com/Esri/calcite-components/blob/master/LICENSE.md for details.\n */\nimport { Component, Element, Event, Prop, Watch, h } from \"@stencil/core\";\nimport { CSS, SLOTS } from \"./resources\";\nimport { getSlotted } from \"../../utils/dom\";\n/**\n * @slot - A slot for adding content to the shell panel.\n * @slot action-bar - A slot for adding a `calcite-action-bar` to the panel.\n */\nexport class CalciteShellPanel {\n constructor() {\n // --------------------------------------------------------------------------\n //\n // Properties\n //\n // --------------------------------------------------------------------------\n /**\n * Hide the content panel.\n */\n this.collapsed = false;\n /**\n * This property makes the content area appear like a \"floating\" panel.\n */\n this.detached = false;\n /**\n * Specifies the maxiumum height of the contents when detached.\n */\n this.detachedHeightScale = \"l\";\n /**\n * This sets width of the content area.\n */\n this.widthScale = \"m\";\n }\n watchHandler() {\n this.calciteShellPanelToggle.emit();\n }\n // --------------------------------------------------------------------------\n //\n // Render Methods\n //\n // --------------------------------------------------------------------------\n renderHeader() {\n const { el } = this;\n const hasHeader = getSlotted(el, SLOTS.header);\n return hasHeader ? (h(\"div\", { class: CSS.contentHeader },\n h(\"slot\", { name: SLOTS.header }))) : null;\n }\n render() {\n const { collapsed, detached, position } = this;\n const contentNode = (h(\"div\", { class: { [CSS.content]: true, [CSS.contentDetached]: detached }, hidden: collapsed },\n this.renderHeader(),\n h(\"div\", { class: CSS.contentBody },\n h(\"slot\", null))));\n const actionBarNode = h(\"slot\", { name: SLOTS.actionBar });\n const mainNodes = [actionBarNode, contentNode];\n if (position === \"end\") {\n mainNodes.reverse();\n }\n return h(\"div\", { class: { [CSS.container]: true } }, mainNodes);\n }\n static get is() { return \"calcite-shell-panel\"; }\n static get encapsulation() { return \"shadow\"; }\n static get originalStyleUrls() { return {\n \"$\": [\"calcite-shell-panel.scss\"]\n }; }\n static get styleUrls() { return {\n \"$\": [\"calcite-shell-panel.css\"]\n }; }\n static get properties() { return {\n \"collapsed\": {\n \"type\": \"boolean\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"boolean\",\n \"resolved\": \"boolean\",\n \"references\": {}\n },\n \"required\": false,\n \"optional\": false,\n \"docs\": {\n \"tags\": [],\n \"text\": \"Hide the content panel.\"\n },\n \"attribute\": \"collapsed\",\n \"reflect\": true,\n \"defaultValue\": \"false\"\n },\n \"detached\": {\n \"type\": \"boolean\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"boolean\",\n \"resolved\": \"boolean\",\n \"references\": {}\n },\n \"required\": false,\n \"optional\": false,\n \"docs\": {\n \"tags\": [],\n \"text\": \"This property makes the content area appear like a \\\"floating\\\" panel.\"\n },\n \"attribute\": \"detached\",\n \"reflect\": true,\n \"defaultValue\": \"false\"\n },\n \"detachedHeightScale\": {\n \"type\": \"string\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"Scale\",\n \"resolved\": \"\\\"l\\\" | \\\"m\\\" | \\\"s\\\"\",\n \"references\": {\n \"Scale\": {\n \"location\": \"import\",\n \"path\": \"../interfaces\"\n }\n }\n },\n \"required\": false,\n \"optional\": false,\n \"docs\": {\n \"tags\": [],\n \"text\": \"Specifies the maxiumum height of the contents when detached.\"\n },\n \"attribute\": \"detached-height-scale\",\n \"reflect\": true,\n \"defaultValue\": \"\\\"l\\\"\"\n },\n \"widthScale\": {\n \"type\": \"string\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"Scale\",\n \"resolved\": \"\\\"l\\\" | \\\"m\\\" | \\\"s\\\"\",\n \"references\": {\n \"Scale\": {\n \"location\": \"import\",\n \"path\": \"../interfaces\"\n }\n }\n },\n \"required\": false,\n \"optional\": false,\n \"docs\": {\n \"tags\": [],\n \"text\": \"This sets width of the content area.\"\n },\n \"attribute\": \"width-scale\",\n \"reflect\": true,\n \"defaultValue\": \"\\\"m\\\"\"\n },\n \"position\": {\n \"type\": \"string\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"Position\",\n \"resolved\": \"\\\"end\\\" | \\\"start\\\"\",\n \"references\": {\n \"Position\": {\n \"location\": \"import\",\n \"path\": \"../interfaces\"\n }\n }\n },\n \"required\": false,\n \"optional\": false,\n \"docs\": {\n \"tags\": [],\n \"text\": \"Arranges the component depending on the elements 'dir' property.\"\n },\n \"attribute\": \"position\",\n \"reflect\": true\n }\n }; }\n static get events() { return [{\n \"method\": \"calciteShellPanelToggle\",\n \"name\": \"calciteShellPanelToggle\",\n \"bubbles\": true,\n \"cancelable\": true,\n \"composed\": true,\n \"docs\": {\n \"tags\": [],\n \"text\": \"Emitted when collapse has been toggled.\"\n },\n \"complexType\": {\n \"original\": \"any\",\n \"resolved\": \"any\",\n \"references\": {}\n }\n }]; }\n static get elementRef() { return \"el\"; }\n static get watchers() { return [{\n \"propName\": \"collapsed\",\n \"methodName\": \"watchHandler\"\n }]; }\n}\n","/* mixins & extensions */\n\n@keyframes in {\n 0% {\n opacity: 0;\n }\n\n 100% {\n opacity: 1;\n }\n}\n\n@keyframes in-down {\n 0% {\n opacity: 0;\n transform: translate3D(0, -5px, 0);\n }\n\n 100% {\n opacity: 1;\n transform: translate3D(0, 0, 0);\n }\n}\n\n@keyframes in-up {\n 0% {\n opacity: 0;\n transform: translate3D(0, 5px, 0);\n }\n\n 100% {\n opacity: 1;\n transform: translate3D(0, 0, 0);\n }\n}\n\n@keyframes in-scale {\n 0% {\n opacity: 0;\n transform: scale3D(0.95, 0.95, 1);\n }\n\n 100% {\n opacity: 1;\n transform: scale3D(1, 1, 1);\n }\n}\n\n:root {\n --calcite-animation-timing: 300ms;\n}\n\n.calcite-animate {\n opacity: 0;\n animation-fill-mode: both;\n animation-duration: var(--calcite-animation-timing);\n}\n\n.calcite-animate__in {\n animation-name: in;\n}\n\n.calcite-animate__in-down {\n animation-name: in-down;\n}\n\n.calcite-animate__in-up {\n animation-name: in-up;\n}\n\n.calcite-animate__in-scale {\n animation-name: in-scale;\n}\n\n/**\n* Currently only used in Checkbox.\n*/\n\n:root {\n --calcite-popper-transition: 150ms ease-in-out;\n}\n\n:host([hidden]) {\n display: none;\n}\n\n:host([active]) section {\n display: block;\n}\n\n:host {\n display: none;\n color: var(--calcite-ui-text-3);\n width: 100%;\n height: 100%;\n}\n\n:host([active]) {\n display: block;\n width: 100%;\n height: 100%;\n overflow: auto;\n}\n\nsection {\n height: 100%;\n width: 100%;\n display: none;\n}\n\n:host([scale=s]) {\n font-size: var(--calcite-font-size--2);\n line-height: 1rem;\n padding-top: 0.25rem;\n padding-bottom: 0.25rem;\n}\n\n:host([scale=m]) {\n font-size: var(--calcite-font-size--1);\n line-height: 1rem;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n}\n\n:host([scale=l]) {\n font-size: var(--calcite-font-size-0);\n line-height: 1.25rem;\n padding-top: 0.75rem;\n padding-bottom: 0.75rem;\n}","/*!\n * All material copyright ESRI, All Rights Reserved, unless otherwise specified.\n * See https://github.com/Esri/calcite-components/blob/master/LICENSE.md for details.\n */\nimport { Component, Prop, Element, Listen, Method, Event, h, State, Host } from \"@stencil/core\";\nimport { guid } from \"../../utils/guid\";\nimport { nodeListToArray } from \"../../utils/dom\";\n/**\n * @slot - A slot for adding custom content.\n */\nexport class CalciteTab {\n constructor() {\n /**\n * Show this tab\n */\n this.active = false;\n /** @internal Parent tabs component scale value */\n this.scale = \"m\";\n //--------------------------------------------------------------------------\n //\n // Private State/Props\n //\n //--------------------------------------------------------------------------\n /**\n * @internal\n */\n this.guid = `calcite-tab-title-${guid()}`;\n }\n //--------------------------------------------------------------------------\n //\n // Lifecycle\n //\n //--------------------------------------------------------------------------\n render() {\n const id = this.el.id || this.guid;\n return (h(Host, { \"aria-expanded\": this.active.toString(), \"aria-labelledby\": this.labeledBy, id: id, role: \"tabpanel\" },\n h(\"section\", null,\n h(\"slot\", null))));\n }\n componentDidLoad() {\n this.calciteTabRegister.emit();\n }\n componentWillRender() {\n var _a;\n this.scale = (_a = this.el.closest(\"calcite-tabs\")) === null || _a === void 0 ? void 0 : _a.scale;\n }\n disconnectedCallback() {\n var _a;\n // Dispatching to body in order to be listened by other elements that are still connected to the DOM.\n (_a = document.body) === null || _a === void 0 ? void 0 : _a.dispatchEvent(new CustomEvent(\"calciteTabUnregister\", {\n detail: this.el\n }));\n }\n //--------------------------------------------------------------------------\n //\n // Event Listeners\n //\n //--------------------------------------------------------------------------\n tabChangeHandler(event) {\n // to allow `<calcite-tabs>` to be nested we need to make sure this\n // `calciteTabChange` event was actually fired from a title that is a\n // child of the `<calcite-tabs>` that is the a parent of this tab.\n if (event.target.closest(\"calcite-tabs\") !== this.el.closest(\"calcite-tabs\")) {\n return;\n }\n if (this.tab) {\n this.active = this.tab === event.detail.tab;\n }\n else {\n this.getTabIndex().then((index) => {\n this.active = index === event.detail.tab;\n });\n }\n }\n //--------------------------------------------------------------------------\n //\n // Public Methods\n //\n //--------------------------------------------------------------------------\n /**\n * Return the index of this tab within the tab array\n */\n async getTabIndex() {\n return Array.prototype.indexOf.call(nodeListToArray(this.el.parentElement.children).filter((e) => e.matches(\"calcite-tab\")), this.el);\n }\n //--------------------------------------------------------------------------\n //\n // Private Methods\n //\n //--------------------------------------------------------------------------\n /**\n * @internal\n */\n async updateAriaInfo(tabIds = [], titleIds = []) {\n this.labeledBy = titleIds[tabIds.indexOf(this.el.id)] || null;\n }\n static get is() { return \"calcite-tab\"; }\n static get encapsulation() { return \"shadow\"; }\n static get originalStyleUrls() { return {\n \"$\": [\"calcite-tab.scss\"]\n }; }\n static get styleUrls() { return {\n \"$\": [\"calcite-tab.css\"]\n }; }\n static get properties() { return {\n \"tab\": {\n \"type\": \"string\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"string\",\n \"resolved\": \"string\",\n \"references\": {}\n },\n \"required\": false,\n \"optional\": false,\n \"docs\": {\n \"tags\": [],\n \"text\": \"Optionally include a unique name for this tab,\\nbe sure to also set this name on the associated title.\"\n },\n \"attribute\": \"tab\",\n \"reflect\": true\n },\n \"active\": {\n \"type\": \"boolean\",\n \"mutable\": true,\n \"complexType\": {\n \"original\": \"boolean\",\n \"resolved\": \"boolean\",\n \"references\": {}\n },\n \"required\": false,\n \"optional\": false,\n \"docs\": {\n \"tags\": [],\n \"text\": \"Show this tab\"\n },\n \"attribute\": \"active\",\n \"reflect\": true,\n \"defaultValue\": \"false\"\n },\n \"scale\": {\n \"type\": \"string\",\n \"mutable\": true,\n \"complexType\": {\n \"original\": \"Scale\",\n \"resolved\": \"\\\"l\\\" | \\\"m\\\" | \\\"s\\\"\",\n \"references\": {\n \"Scale\": {\n \"location\": \"import\",\n \"path\": \"../interfaces\"\n }\n }\n },\n \"required\": false,\n \"optional\": false,\n \"docs\": {\n \"tags\": [{\n \"name\": \"internal\",\n \"text\": \"Parent tabs component scale value\"\n }],\n \"text\": \"\"\n },\n \"attribute\": \"scale\",\n \"reflect\": true,\n \"defaultValue\": \"\\\"m\\\"\"\n }\n }; }\n static get states() { return {\n \"labeledBy\": {}\n }; }\n static get events() { return [{\n \"method\": \"calciteTabRegister\",\n \"name\": \"calciteTabRegister\",\n \"bubbles\": true,\n \"cancelable\": true,\n \"composed\": true,\n \"docs\": {\n \"tags\": [{\n \"name\": \"internal\",\n \"text\": undefined\n }],\n \"text\": \"\"\n },\n \"complexType\": {\n \"original\": \"any\",\n \"resolved\": \"any\",\n \"references\": {}\n }\n }]; }\n static get methods() { return {\n \"getTabIndex\": {\n \"complexType\": {\n \"signature\": \"() => Promise<number>\",\n \"parameters\": [],\n \"references\": {\n \"Promise\": {\n \"location\": \"global\"\n }\n },\n \"return\": \"Promise<number>\"\n },\n \"docs\": {\n \"text\": \"Return the index of this tab within the tab array\",\n \"tags\": []\n }\n },\n \"updateAriaInfo\": {\n \"complexType\": {\n \"signature\": \"(tabIds?: string[], titleIds?: string[]) => Promise<void>\",\n \"parameters\": [{\n \"tags\": [],\n \"text\": \"\"\n }, {\n \"tags\": [],\n \"text\": \"\"\n }],\n \"references\": {\n \"Promise\": {\n \"location\": \"global\"\n }\n },\n \"return\": \"Promise<void>\"\n },\n \"docs\": {\n \"text\": \"\",\n \"tags\": [{\n \"name\": \"internal\",\n \"text\": undefined\n }]\n }\n }\n }; }\n static get elementRef() { return \"el\"; }\n static get listeners() { return [{\n \"name\": \"calciteTabChange\",\n \"method\": \"tabChangeHandler\",\n \"target\": \"body\",\n \"capture\": false,\n \"passive\": false\n }]; }\n}\n","/* mixins & extensions */\n\n@keyframes in {\n 0% {\n opacity: 0;\n }\n\n 100% {\n opacity: 1;\n }\n}\n\n@keyframes in-down {\n 0% {\n opacity: 0;\n transform: translate3D(0, -5px, 0);\n }\n\n 100% {\n opacity: 1;\n transform: translate3D(0, 0, 0);\n }\n}\n\n@keyframes in-up {\n 0% {\n opacity: 0;\n transform: translate3D(0, 5px, 0);\n }\n\n 100% {\n opacity: 1;\n transform: translate3D(0, 0, 0);\n }\n}\n\n@keyframes in-scale {\n 0% {\n opacity: 0;\n transform: scale3D(0.95, 0.95, 1);\n }\n\n 100% {\n opacity: 1;\n transform: scale3D(1, 1, 1);\n }\n}\n\n:root {\n --calcite-animation-timing: 300ms;\n}\n\n.calcite-animate {\n opacity: 0;\n animation-fill-mode: both;\n animation-duration: var(--calcite-animation-timing);\n}\n\n.calcite-animate__in {\n animation-name: in;\n}\n\n.calcite-animate__in-down {\n animation-name: in-down;\n}\n\n.calcite-animate__in-up {\n animation-name: in-up;\n}\n\n.calcite-animate__in-scale {\n animation-name: in-scale;\n}\n\n/**\n* Currently only used in Checkbox.\n*/\n\n:root {\n --calcite-popper-transition: 150ms ease-in-out;\n}\n\n:host([hidden]) {\n display: none;\n}\n\n:host {\n position: relative;\n display: flex;\n}\n\n:host([scale=s]) {\n min-height: 1.5rem;\n}\n\n:host([scale=m]) {\n min-height: 2rem;\n}\n\n:host([scale=l]) {\n min-height: 2.75rem;\n}\n\n.tab-nav {\n display: flex;\n width: 100%;\n overflow: auto;\n justify-content: flex-start;\n -webkit-overflow-scrolling: touch;\n padding: 0.25rem;\n margin: -0.25rem;\n}\n\n:host([layout=center]) .tab-nav {\n justify-content: center;\n}\n\n.tab-nav-active-indicator-container {\n width: 100%;\n right: 0;\n left: 0;\n bottom: 0;\n position: absolute;\n overflow: hidden;\n height: 0.125rem;\n}\n\n.tab-nav-active-indicator {\n position: absolute;\n bottom: 0;\n display: block;\n transition-property: all;\n transition-timing-function: cubic-bezier(0, 0, 0.2, 1);\n background-color: var(--calcite-ui-brand);\n height: 0.125rem;\n}\n\n:host([position=below]) .tab-nav-active-indicator {\n bottom: unset;\n top: 0;\n}\n\n:host([position=below]) .tab-nav-active-indicator-container {\n bottom: unset;\n top: 0;\n}\n\n:host([bordered]) .tab-nav-active-indicator-container {\n bottom: unset;\n}\n\n:host([bordered][position=below]) .tab-nav-active-indicator-container {\n bottom: 0;\n top: unset;\n}","/*!\n * All material copyright ESRI, All Rights Reserved, unless otherwise specified.\n * See https://github.com/Esri/calcite-components/blob/master/LICENSE.md for details.\n */\nimport { Component, Element, Event, h, Host, Listen, Prop, State, Watch } from \"@stencil/core\";\nimport { getElementDir, filterDirectChildren } from \"../../utils/dom\";\n/**\n * @slot - A slot for adding `calcite-tab-title`s.\n */\nexport class CalciteTabNav {\n constructor() {\n /** @internal Parent tabs component scale value */\n this.scale = \"m\";\n /** @internal Parent tabs component layout value */\n this.layout = \"inline\";\n /** @internal Parent tabs component position value */\n this.position = \"below\";\n /** @internal Parent tabs component bordered value when layout is \"inline\" */\n this.bordered = false;\n this.animationActiveDuration = 0.3;\n //--------------------------------------------------------------------------\n //\n // Private Methods\n //\n //--------------------------------------------------------------------------\n this.handleContainerScroll = () => {\n // remove active indicator transition duration while container is scrolling to prevent wobble\n this.activeIndicatorEl.style.transitionDuration = \"0s\";\n this.updateOffsetPosition();\n };\n }\n async selectedTabChanged() {\n if (localStorage &&\n this.storageId &&\n this.selectedTab !== undefined &&\n this.selectedTab !== null) {\n localStorage.setItem(`calcite-tab-nav-${this.storageId}`, JSON.stringify(this.selectedTab));\n }\n this.calciteTabChange.emit({\n tab: this.selectedTab\n });\n this.selectedTabEl = await this.getTabTitleById(this.selectedTab);\n }\n selectedTabElChanged() {\n this.updateOffsetPosition();\n this.updateActiveWidth();\n // reset the animation time on tab selection\n this.activeIndicatorEl.style.transitionDuration = `${this.animationActiveDuration}s`;\n }\n //--------------------------------------------------------------------------\n //\n // Lifecycle\n //\n //--------------------------------------------------------------------------\n componentWillLoad() {\n const storageKey = `calcite-tab-nav-${this.storageId}`;\n if (localStorage && this.storageId && localStorage.getItem(storageKey)) {\n const storedTab = JSON.parse(localStorage.getItem(storageKey));\n this.selectedTab = storedTab;\n this.calciteTabChange.emit({\n tab: this.selectedTab\n });\n }\n }\n componentWillRender() {\n var _a, _b, _c, _d;\n this.layout = (_a = this.el.closest(\"calcite-tabs\")) === null || _a === void 0 ? void 0 : _a.layout;\n this.position = (_b = this.el.closest(\"calcite-tabs\")) === null || _b === void 0 ? void 0 : _b.position;\n this.scale = (_c = this.el.closest(\"calcite-tabs\")) === null || _c === void 0 ? void 0 : _c.scale;\n this.bordered = (_d = this.el.closest(\"calcite-tabs\")) === null || _d === void 0 ? void 0 : _d.bordered;\n // fix issue with active tab-title not lining up with blue indicator\n if (this.selectedTabEl) {\n this.updateOffsetPosition();\n }\n }\n componentDidRender() {\n // if every tab title is active select the first tab.\n if (this.tabTitles.length &&\n this.tabTitles.every((title) => !title.active) &&\n !this.selectedTab) {\n this.tabTitles[0].getTabIdentifier().then((tab) => {\n this.calciteTabChange.emit({\n tab\n });\n });\n }\n }\n render() {\n const dir = getElementDir(this.el);\n const width = `${this.indicatorWidth}px`;\n const offset = `${this.indicatorOffset}px`;\n const indicatorStyle = dir !== \"rtl\" ? { width, left: offset } : { width, right: offset };\n return (h(Host, { role: \"tablist\" },\n h(\"div\", { class: \"tab-nav\", onScroll: this.handleContainerScroll, ref: (el) => (this.tabNavEl = el) },\n h(\"div\", { class: \"tab-nav-active-indicator-container\", ref: (el) => (this.activeIndicatorContainerEl = el) },\n h(\"div\", { class: \"tab-nav-active-indicator\", ref: (el) => (this.activeIndicatorEl = el), style: indicatorStyle })),\n h(\"slot\", null))));\n }\n //--------------------------------------------------------------------------\n //\n // Event Listeners\n //\n //--------------------------------------------------------------------------\n resizeHandler() {\n // remove active indicator transition duration during resize to prevent wobble\n this.activeIndicatorEl.style.transitionDuration = \"0s\";\n this.updateActiveWidth();\n this.updateOffsetPosition();\n }\n focusPreviousTabHandler(e) {\n const currentIndex = this.getIndexOfTabTitle(e.target, this.enabledTabTitles);\n const previousTab = this.enabledTabTitles[currentIndex - 1] ||\n this.enabledTabTitles[this.enabledTabTitles.length - 1];\n previousTab.focus();\n e.stopPropagation();\n e.preventDefault();\n }\n focusNextTabHandler(e) {\n const currentIndex = this.getIndexOfTabTitle(e.target, this.enabledTabTitles);\n const nextTab = this.enabledTabTitles[currentIndex + 1] || this.enabledTabTitles[0];\n nextTab.focus();\n e.stopPropagation();\n e.preventDefault();\n }\n activateTabHandler(e) {\n this.selectedTab = e.detail.tab\n ? e.detail.tab\n : this.getIndexOfTabTitle(e.target);\n e.stopPropagation();\n e.preventDefault();\n }\n /**\n * Check for active tabs on register and update selected\n */\n updateTabTitles(e) {\n if (e.target.active) {\n this.selectedTab = e.detail;\n }\n }\n globalTabChangeHandler(e) {\n if (this.syncId &&\n e.target !== this.el &&\n e.target.syncId === this.syncId &&\n this.selectedTab !== e.detail.tab) {\n this.selectedTab = e.detail.tab;\n }\n }\n updateOffsetPosition() {\n var _a, _b, _c, _d, _e;\n const dir = getElementDir(this.el);\n const navWidth = (_a = this.activeIndicatorContainerEl) === null || _a === void 0 ? void 0 : _a.offsetWidth;\n const tabLeft = (_b = this.selectedTabEl) === null || _b === void 0 ? void 0 : _b.offsetLeft;\n const tabWidth = (_c = this.selectedTabEl) === null || _c === void 0 ? void 0 : _c.offsetWidth;\n const offsetRight = navWidth - (tabLeft + tabWidth);\n this.indicatorOffset =\n dir !== \"rtl\" ? tabLeft - ((_d = this.tabNavEl) === null || _d === void 0 ? void 0 : _d.scrollLeft) : offsetRight + ((_e = this.tabNavEl) === null || _e === void 0 ? void 0 : _e.scrollLeft);\n }\n updateActiveWidth() {\n var _a;\n this.indicatorWidth = (_a = this.selectedTabEl) === null || _a === void 0 ? void 0 : _a.offsetWidth;\n }\n getIndexOfTabTitle(el, tabTitles = this.tabTitles) {\n // In most cases, since these indexes correlate with tab contents, we want to consider all tab titles.\n // However, when doing relative index operations, it makes sense to pass in this.enabledTabTitles as the 2nd arg.\n return tabTitles.indexOf(el);\n }\n async getTabTitleById(id) {\n return Promise.all(this.tabTitles.map((el) => el.getTabIdentifier())).then((ids) => {\n return this.tabTitles[ids.indexOf(id)];\n });\n }\n get tabTitles() {\n return filterDirectChildren(this.el, \"calcite-tab-title\");\n }\n get enabledTabTitles() {\n return filterDirectChildren(this.el, \"calcite-tab-title:not([disabled])\");\n }\n static get is() { return \"calcite-tab-nav\"; }\n static get encapsulation() { return \"shadow\"; }\n static get originalStyleUrls() { return {\n \"$\": [\"calcite-tab-nav.scss\"]\n }; }\n static get styleUrls() { return {\n \"$\": [\"calcite-tab-nav.css\"]\n }; }\n static get properties() { return {\n \"storageId\": {\n \"type\": \"string\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"string\",\n \"resolved\": \"string\",\n \"references\": {}\n },\n \"required\": false,\n \"optional\": false,\n \"docs\": {\n \"tags\": [],\n \"text\": \"Name to use when saving selected tab data to localStorage\"\n },\n \"attribute\": \"storage-id\",\n \"reflect\": false\n },\n \"syncId\": {\n \"type\": \"string\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"string\",\n \"resolved\": \"string\",\n \"references\": {}\n },\n \"required\": false,\n \"optional\": false,\n \"docs\": {\n \"tags\": [],\n \"text\": \"Pass the same string to multiple tab navs to keep them all in sync if one changes\"\n },\n \"attribute\": \"sync-id\",\n \"reflect\": false\n },\n \"scale\": {\n \"type\": \"string\",\n \"mutable\": true,\n \"complexType\": {\n \"original\": \"Scale\",\n \"resolved\": \"\\\"l\\\" | \\\"m\\\" | \\\"s\\\"\",\n \"references\": {\n \"Scale\": {\n \"location\": \"import\",\n \"path\": \"../interfaces\"\n }\n }\n },\n \"required\": false,\n \"optional\": false,\n \"docs\": {\n \"tags\": [{\n \"name\": \"internal\",\n \"text\": \"Parent tabs component scale value\"\n }],\n \"text\": \"\"\n },\n \"attribute\": \"scale\",\n \"reflect\": true,\n \"defaultValue\": \"\\\"m\\\"\"\n },\n \"layout\": {\n \"type\": \"string\",\n \"mutable\": true,\n \"complexType\": {\n \"original\": \"TabLayout\",\n \"resolved\": \"\\\"center\\\" | \\\"inline\\\"\",\n \"references\": {\n \"TabLayout\": {\n \"location\": \"import\",\n \"path\": \"../calcite-tabs/interfaces\"\n }\n }\n },\n \"required\": false,\n \"optional\": false,\n \"docs\": {\n \"tags\": [{\n \"name\": \"internal\",\n \"text\": \"Parent tabs component layout value\"\n }],\n \"text\": \"\"\n },\n \"attribute\": \"layout\",\n \"reflect\": true,\n \"defaultValue\": \"\\\"inline\\\"\"\n },\n \"position\": {\n \"type\": \"string\",\n \"mutable\": true,\n \"complexType\": {\n \"original\": \"TabPosition\",\n \"resolved\": \"\\\"above\\\" | \\\"below\\\"\",\n \"references\": {\n \"TabPosition\": {\n \"location\": \"import\",\n \"path\": \"../calcite-tabs/interfaces\"\n }\n }\n },\n \"required\": false,\n \"optional\": false,\n \"docs\": {\n \"tags\": [{\n \"name\": \"internal\",\n \"text\": \"Parent tabs component position value\"\n }],\n \"text\": \"\"\n },\n \"attribute\": \"position\",\n \"reflect\": true,\n \"defaultValue\": \"\\\"below\\\"\"\n },\n \"bordered\": {\n \"type\": \"boolean\",\n \"mutable\": true,\n \"complexType\": {\n \"original\": \"boolean\",\n \"resolved\": \"boolean\",\n \"references\": {}\n },\n \"required\": false,\n \"optional\": false,\n \"docs\": {\n \"tags\": [{\n \"name\": \"internal\",\n \"text\": \"Parent tabs component bordered value when layout is \\\"inline\\\"\"\n }],\n \"text\": \"\"\n },\n \"attribute\": \"bordered\",\n \"reflect\": true,\n \"defaultValue\": \"false\"\n },\n \"indicatorOffset\": {\n \"type\": \"number\",\n \"mutable\": true,\n \"complexType\": {\n \"original\": \"number\",\n \"resolved\": \"number\",\n \"references\": {}\n },\n \"required\": false,\n \"optional\": false,\n \"docs\": {\n \"tags\": [{\n \"name\": \"internal\",\n \"text\": undefined\n }],\n \"text\": \"\"\n },\n \"attribute\": \"indicator-offset\",\n \"reflect\": false\n },\n \"indicatorWidth\": {\n \"type\": \"number\",\n \"mutable\": true,\n \"complexType\": {\n \"original\": \"number\",\n \"resolved\": \"number\",\n \"references\": {}\n },\n \"required\": false,\n \"optional\": false,\n \"docs\": {\n \"tags\": [{\n \"name\": \"internal\",\n \"text\": undefined\n }],\n \"text\": \"\"\n },\n \"attribute\": \"indicator-width\",\n \"reflect\": false\n }\n }; }\n static get states() { return {\n \"selectedTab\": {},\n \"selectedTabEl\": {}\n }; }\n static get events() { return [{\n \"method\": \"calciteTabChange\",\n \"name\": \"calciteTabChange\",\n \"bubbles\": true,\n \"cancelable\": true,\n \"composed\": true,\n \"docs\": {\n \"tags\": [{\n \"name\": \"see\",\n \"text\": \" [TabChangeEventDetail](https://github.com/Esri/calcite-components/blob/master/src/components/calcite-tab/interfaces.ts#L1)\"\n }],\n \"text\": \"Emitted when the active tab changes\"\n },\n \"complexType\": {\n \"original\": \"TabChangeEventDetail\",\n \"resolved\": \"TabChangeEventDetail\",\n \"references\": {\n \"TabChangeEventDetail\": {\n \"location\": \"import\",\n \"path\": \"../calcite-tab/interfaces\"\n }\n }\n }\n }]; }\n static get elementRef() { return \"el\"; }\n static get watchers() { return [{\n \"propName\": \"selectedTab\",\n \"methodName\": \"selectedTabChanged\"\n }, {\n \"propName\": \"selectedTabEl\",\n \"methodName\": \"selectedTabElChanged\"\n }]; }\n static get listeners() { return [{\n \"name\": \"resize\",\n \"method\": \"resizeHandler\",\n \"target\": \"window\",\n \"capture\": false,\n \"passive\": true\n }, {\n \"name\": \"calciteTabsFocusPrevious\",\n \"method\": \"focusPreviousTabHandler\",\n \"target\": undefined,\n \"capture\": false,\n \"passive\": false\n }, {\n \"name\": \"calciteTabsFocusNext\",\n \"method\": \"focusNextTabHandler\",\n \"target\": undefined,\n \"capture\": false,\n \"passive\": false\n }, {\n \"name\": \"calciteTabsActivate\",\n \"method\": \"activateTabHandler\",\n \"target\": undefined,\n \"capture\": false,\n \"passive\": false\n }, {\n \"name\": \"calciteTabTitleRegister\",\n \"method\": \"updateTabTitles\",\n \"target\": undefined,\n \"capture\": false,\n \"passive\": false\n }, {\n \"name\": \"calciteTabChange\",\n \"method\": \"globalTabChangeHandler\",\n \"target\": \"body\",\n \"capture\": false,\n \"passive\": false\n }]; }\n}\n","/* mixins & extensions */\n\n@keyframes in {\n 0% {\n opacity: 0;\n }\n\n 100% {\n opacity: 1;\n }\n}\n\n@keyframes in-down {\n 0% {\n opacity: 0;\n transform: translate3D(0, -5px, 0);\n }\n\n 100% {\n opacity: 1;\n transform: translate3D(0, 0, 0);\n }\n}\n\n@keyframes in-up {\n 0% {\n opacity: 0;\n transform: translate3D(0, 5px, 0);\n }\n\n 100% {\n opacity: 1;\n transform: translate3D(0, 0, 0);\n }\n}\n\n@keyframes in-scale {\n 0% {\n opacity: 0;\n transform: scale3D(0.95, 0.95, 1);\n }\n\n 100% {\n opacity: 1;\n transform: scale3D(1, 1, 1);\n }\n}\n\n:root {\n --calcite-animation-timing: 300ms;\n}\n\n.calcite-animate {\n opacity: 0;\n animation-fill-mode: both;\n animation-duration: var(--calcite-animation-timing);\n}\n\n.calcite-animate__in {\n animation-name: in;\n}\n\n.calcite-animate__in-down {\n animation-name: in-down;\n}\n\n.calcite-animate__in-up {\n animation-name: in-up;\n}\n\n.calcite-animate__in-scale {\n animation-name: in-scale;\n}\n\n/**\n* Currently only used in Checkbox.\n*/\n\n:root {\n --calcite-popper-transition: 150ms ease-in-out;\n}\n\n:host([hidden]) {\n display: none;\n}\n\n:host {\n display: block;\n flex: 0 1 auto;\n outline: 2px solid transparent;\n outline-offset: 2px;\n margin-right: 1.25rem;\n margin-inline-start: 0;\n margin-inline-end: 1.25rem;\n}\n\n:host([layout=center]) {\n text-align: center;\n margin-top: 0;\n margin-bottom: 0;\n margin-left: 1.25rem;\n margin-right: 1.25rem;\n flex-basis: 12rem;\n}\n\n:host([position=below]) a {\n border-bottom-width: 0;\n border-top-width: 2px;\n border-top-color: transparent;\n border-top-style: solid;\n}\n\n:host a {\n outline-offset: 0;\n outline-color: transparent;\n transition: outline-offset 100ms ease-in-out, outline-color 100ms ease-in-out;\n}\n\n:host(:focus) a {\n outline: 2px solid var(--calcite-ui-brand);\n outline-offset: 2px;\n}\n\n:host(:active) a,\n:host(:focus) a,\n:host(:hover) a {\n text-decoration: none;\n color: var(--calcite-ui-text-1);\n border-color: var(--calcite-ui-border-2);\n}\n\n:host([active]) a {\n color: var(--calcite-ui-text-1);\n border-color: transparent;\n}\n\n:host([disabled]) {\n pointer-events: none;\n}\n\n:host([disabled]) span,\n:host([disabled]) a {\n pointer-events: none;\n opacity: 0.5;\n}\n\n:host([scale=s]) {\n margin-inline-end: 1rem;\n}\n\n:host([scale=s]) a,\n:host([scale=s]) span {\n font-size: var(--calcite-font-size--2);\n line-height: 1rem;\n padding-top: 0.25rem;\n padding-bottom: 0.25rem;\n}\n\n:host([scale=m]) a,\n:host([scale=m]) span {\n font-size: var(--calcite-font-size--1);\n line-height: 1rem;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n}\n\n:host([scale=l]) {\n margin-inline-end: 1.5rem;\n}\n\n:host([scale=l]) a,\n:host([scale=l]) span {\n font-size: var(--calcite-font-size-0);\n line-height: 1.25rem;\n padding-top: 0.75rem;\n padding-bottom: 0.75rem;\n}\n\na,\nspan {\n box-sizing: border-box;\n -webkit-appearance: none;\n appearance: none;\n cursor: pointer;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n border-bottom-width: 2px;\n border-bottom-color: transparent;\n width: 100%;\n height: 100%;\n display: flex;\n justify-content: center;\n color: var(--calcite-ui-text-3);\n font-size: var(--calcite-font-size--1);\n line-height: 1rem;\n transition-property: all;\n transition-duration: 150ms;\n transition-timing-function: ease-in-out;\n transition-delay: 0s;\n padding-left: 0;\n padding-right: 0;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n border-bottom-style: solid;\n}\n\nspan {\n cursor: default;\n}\n\n.calcite-tab-title--icon {\n display: inline-flex;\n position: relative;\n margin: 0;\n align-self: center;\n}\n\n.calcite-tab-title--icon svg {\n transition-property: all;\n transition-duration: 150ms;\n transition-timing-function: ease-in-out;\n transition-delay: 0s;\n}\n\n.container--has-text .calcite-tab-title--icon.icon-start {\n margin-right: 0.5rem;\n}\n\n.container--has-text .calcite-tab-title--icon.icon-end {\n margin-left: 0.5rem;\n}\n\n:host([icon-start][icon-end]) .calcite-tab-title--icon:first-child {\n margin-right: 0.5rem;\n}\n\n.container--has-text.calcite--rtl .calcite-tab-title--icon.icon-end {\n margin-left: 0;\n margin-right: 0.5rem;\n}\n\n.container--has-text.calcite--rtl .calcite-tab-title--icon.icon-start {\n margin-left: 0.5rem;\n margin-right: 0;\n}\n\n:host([icon-start][icon-end]) .calcite--rtl .calcite-tab-title--icon:first-child {\n margin-left: 0.5rem;\n margin-right: 0;\n}\n\n:host([bordered]) {\n margin-inline-end: 0;\n}\n\n:host([bordered][active]) {\n box-shadow: inset 0px -2px var(--calcite-ui-foreground-1);\n}\n\n:host([bordered][active][position=below]) {\n box-shadow: inset 0 2px 0 var(--calcite-ui-foreground-1);\n}\n\n:host([bordered]:hover) a,\n:host([bordered]:focus) a,\n:host([bordered]:active) a {\n position: relative;\n}\n\n:host([bordered]:hover) a {\n background-color: var(--calcite-button-transparent-hover);\n transition-property: all;\n transition-duration: 150ms;\n transition-timing-function: ease-in-out;\n transition-delay: 0s;\n}\n\n:host([bordered]) a {\n border-bottom-style: unset;\n}\n\n:host([bordered][position=below]) a {\n border-top-style: unset;\n}\n\n:host([active][bordered]) a {\n border-left: 1px solid var(--calcite-ui-border-1);\n border-right: 1px solid var(--calcite-ui-border-1);\n}\n\n:host([bordered]) a,\n:host([bordered]) span {\n padding-left: 0.75rem;\n padding-right: 0.75rem;\n}\n\n:host([bordered][scale=s]) a,\n:host([bordered][scale=s]) span {\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n}\n\n:host([bordered][scale=l]) a,\n:host([bordered][scale=l]) span {\n padding-left: 1rem;\n padding-right: 1rem;\n}","/*!\n * All material copyright ESRI, All Rights Reserved, unless otherwise specified.\n * See https://github.com/Esri/calcite-components/blob/master/LICENSE.md for details.\n */\nimport { Component, Prop, Event, Listen, Element, Method, h, Host, State, Build, Watch } from \"@stencil/core\";\nimport { guid } from \"../../utils/guid\";\nimport { getElementDir, getElementProp } from \"../../utils/dom\";\nimport { getKey } from \"../../utils/key\";\nimport { CSS_UTILITY } from \"../../utils/resources\";\nimport { createObserver } from \"../../utils/observers\";\n/**\n * @slot - A slot for adding text.\n */\nexport class CalciteTabTitle {\n constructor() {\n //--------------------------------------------------------------------------\n //\n // Properties\n //\n //--------------------------------------------------------------------------\n /** Show this tab title as selected */\n this.active = false;\n /** Disable this tab title */\n this.disabled = false;\n /** @internal Parent tabs component bordered value */\n this.bordered = false;\n //--------------------------------------------------------------------------\n //\n // Private State/Props\n //\n //--------------------------------------------------------------------------\n /** watches for changing text content **/\n this.mutationObserver = createObserver(\"mutation\", () => this.updateHasText());\n /** determine if there is slotted text for styling purposes */\n this.hasText = false;\n /**\n * @internal\n */\n this.guid = `calcite-tab-title-${guid()}`;\n }\n activeTabChanged() {\n if (this.active) {\n this.emitActiveTab();\n }\n }\n //--------------------------------------------------------------------------\n //\n // Lifecycle\n //\n //--------------------------------------------------------------------------\n connectedCallback() {\n this.setupTextContentObserver();\n this.parentTabNavEl = this.el.closest(\"calcite-tab-nav\");\n this.parentTabsEl = this.el.closest(\"calcite-tabs\");\n }\n disconnectedCallback() {\n var _a, _b;\n (_a = this.mutationObserver) === null || _a === void 0 ? void 0 : _a.disconnect();\n // Dispatching to body in order to be listened by other elements that are still connected to the DOM.\n (_b = document.body) === null || _b === void 0 ? void 0 : _b.dispatchEvent(new CustomEvent(\"calciteTabTitleUnregister\", {\n detail: this.el\n }));\n }\n componentWillLoad() {\n if (Build.isBrowser) {\n this.updateHasText();\n }\n if (this.tab && this.active) {\n this.emitActiveTab();\n }\n }\n componentWillRender() {\n if (this.parentTabsEl) {\n this.layout = this.parentTabsEl.layout;\n this.position = this.parentTabsEl.position;\n this.scale = this.parentTabsEl.scale;\n this.bordered = this.parentTabsEl.bordered;\n }\n // handle case when tab-nav is only parent\n if (!this.parentTabsEl && this.parentTabNavEl) {\n this.position = getElementProp(this.parentTabNavEl, \"position\", this.position);\n this.scale = getElementProp(this.parentTabNavEl, \"scale\", this.scale);\n }\n }\n render() {\n const dir = getElementDir(this.el);\n const id = this.el.id || this.guid;\n const Tag = this.disabled ? \"span\" : \"a\";\n const showSideBorders = this.bordered && !this.disabled && this.layout !== \"center\";\n const iconStartEl = (h(\"calcite-icon\", { class: \"calcite-tab-title--icon icon-start\", dir: dir, flipRtl: this.iconFlipRtl === \"start\" || this.iconFlipRtl === \"both\", icon: this.iconStart, scale: \"s\" }));\n const iconEndEl = (h(\"calcite-icon\", { class: \"calcite-tab-title--icon icon-end\", dir: dir, flipRtl: this.iconFlipRtl === \"end\" || this.iconFlipRtl === \"both\", icon: this.iconEnd, scale: \"s\" }));\n return (h(Host, { \"aria-controls\": this.controls, \"aria-expanded\": this.active.toString(), id: id, role: \"tab\", tabindex: this.disabled ? \"-1\" : \"0\" },\n h(Tag, { class: {\n container: true,\n \"container--has-text\": this.hasText,\n [CSS_UTILITY.rtl]: dir === \"rtl\"\n }, style: showSideBorders && { width: `${this.parentTabNavEl.indicatorWidth}px` } },\n this.iconStart ? iconStartEl : null,\n h(\"slot\", null),\n this.iconEnd ? iconEndEl : null)));\n }\n async componentDidLoad() {\n this.calciteTabTitleRegister.emit(await this.getTabIdentifier());\n }\n //--------------------------------------------------------------------------\n //\n // Event Listeners\n //\n //--------------------------------------------------------------------------\n tabChangeHandler(event) {\n if (this.parentTabNavEl === event.target) {\n if (this.tab) {\n this.active = this.tab === event.detail.tab;\n }\n else {\n this.getTabIndex().then((index) => {\n this.active = index === event.detail.tab;\n });\n }\n }\n }\n onClick() {\n this.emitActiveTab();\n }\n keyDownHandler(e) {\n switch (getKey(e.key)) {\n case \" \":\n case \"Enter\":\n this.emitActiveTab();\n e.preventDefault();\n break;\n case \"ArrowRight\":\n if (getElementDir(this.el) === \"ltr\") {\n this.calciteTabsFocusNext.emit();\n }\n else {\n this.calciteTabsFocusPrevious.emit();\n }\n break;\n case \"ArrowLeft\":\n if (getElementDir(this.el) === \"ltr\") {\n this.calciteTabsFocusPrevious.emit();\n }\n else {\n this.calciteTabsFocusNext.emit();\n }\n break;\n }\n }\n //--------------------------------------------------------------------------\n //\n // Public Methods\n //\n //--------------------------------------------------------------------------\n /**\n * Return the index of this title within the nav\n */\n async getTabIndex() {\n return Array.prototype.indexOf.call(this.el.parentElement.querySelectorAll(\"calcite-tab-title\"), this.el);\n }\n /**\n * @internal\n */\n async getTabIdentifier() {\n return this.tab ? this.tab : this.getTabIndex();\n }\n /**\n * @internal\n */\n async updateAriaInfo(tabIds = [], titleIds = []) {\n this.controls = tabIds[titleIds.indexOf(this.el.id)] || null;\n }\n updateHasText() {\n this.hasText = this.el.textContent.trim().length > 0;\n }\n setupTextContentObserver() {\n var _a;\n (_a = this.mutationObserver) === null || _a === void 0 ? void 0 : _a.observe(this.el, { childList: true, subtree: true });\n }\n emitActiveTab() {\n if (!this.disabled) {\n this.calciteTabsActivate.emit({\n tab: this.tab\n });\n }\n }\n static get is() { return \"calcite-tab-title\"; }\n static get encapsulation() { return \"shadow\"; }\n static get originalStyleUrls() { return {\n \"$\": [\"calcite-tab-title.scss\"]\n }; }\n static get styleUrls() { return {\n \"$\": [\"calcite-tab-title.css\"]\n }; }\n static get properties() { return {\n \"active\": {\n \"type\": \"boolean\",\n \"mutable\": true,\n \"complexType\": {\n \"original\": \"boolean\",\n \"resolved\": \"boolean\",\n \"references\": {}\n },\n \"required\": false,\n \"optional\": false,\n \"docs\": {\n \"tags\": [],\n \"text\": \"Show this tab title as selected\"\n },\n \"attribute\": \"active\",\n \"reflect\": true,\n \"defaultValue\": \"false\"\n },\n \"disabled\": {\n \"type\": \"boolean\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"boolean\",\n \"resolved\": \"boolean\",\n \"references\": {}\n },\n \"required\": false,\n \"optional\": false,\n \"docs\": {\n \"tags\": [],\n \"text\": \"Disable this tab title\"\n },\n \"attribute\": \"disabled\",\n \"reflect\": true,\n \"defaultValue\": \"false\"\n },\n \"iconEnd\": {\n \"type\": \"string\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"string\",\n \"resolved\": \"string\",\n \"references\": {}\n },\n \"required\": false,\n \"optional\": true,\n \"docs\": {\n \"tags\": [],\n \"text\": \"optionally pass an icon to display at the end of a tab title - accepts calcite ui icon names\"\n },\n \"attribute\": \"icon-end\",\n \"reflect\": true\n },\n \"iconFlipRtl\": {\n \"type\": \"string\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"FlipContext\",\n \"resolved\": \"\\\"both\\\" | \\\"end\\\" | \\\"start\\\"\",\n \"references\": {\n \"FlipContext\": {\n \"location\": \"import\",\n \"path\": \"../interfaces\"\n }\n }\n },\n \"required\": false,\n \"optional\": true,\n \"docs\": {\n \"tags\": [],\n \"text\": \"flip the icon(s) in rtl\"\n },\n \"attribute\": \"icon-flip-rtl\",\n \"reflect\": true\n },\n \"iconStart\": {\n \"type\": \"string\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"string\",\n \"resolved\": \"string\",\n \"references\": {}\n },\n \"required\": false,\n \"optional\": true,\n \"docs\": {\n \"tags\": [],\n \"text\": \"optionally pass an icon to display at the start of a tab title - accepts calcite ui icon names\"\n },\n \"attribute\": \"icon-start\",\n \"reflect\": true\n },\n \"layout\": {\n \"type\": \"string\",\n \"mutable\": true,\n \"complexType\": {\n \"original\": \"TabLayout\",\n \"resolved\": \"\\\"center\\\" | \\\"inline\\\"\",\n \"references\": {\n \"TabLayout\": {\n \"location\": \"import\",\n \"path\": \"../calcite-tabs/interfaces\"\n }\n }\n },\n \"required\": false,\n \"optional\": false,\n \"docs\": {\n \"tags\": [{\n \"name\": \"internal\",\n \"text\": \"Parent tabs component layout value\"\n }],\n \"text\": \"\"\n },\n \"attribute\": \"layout\",\n \"reflect\": true\n },\n \"position\": {\n \"type\": \"string\",\n \"mutable\": true,\n \"complexType\": {\n \"original\": \"TabPosition\",\n \"resolved\": \"\\\"above\\\" | \\\"below\\\"\",\n \"references\": {\n \"TabPosition\": {\n \"location\": \"import\",\n \"path\": \"../calcite-tabs/interfaces\"\n }\n }\n },\n \"required\": false,\n \"optional\": false,\n \"docs\": {\n \"tags\": [{\n \"name\": \"internal\",\n \"text\": \"Parent tabs component or parent tab-nav component's position\"\n }],\n \"text\": \"\"\n },\n \"attribute\": \"position\",\n \"reflect\": true\n },\n \"scale\": {\n \"type\": \"string\",\n \"mutable\": true,\n \"complexType\": {\n \"original\": \"Scale\",\n \"resolved\": \"\\\"l\\\" | \\\"m\\\" | \\\"s\\\"\",\n \"references\": {\n \"Scale\": {\n \"location\": \"import\",\n \"path\": \"../interfaces\"\n }\n }\n },\n \"required\": false,\n \"optional\": false,\n \"docs\": {\n \"tags\": [{\n \"name\": \"internal\",\n \"text\": \"Parent tabs component or parent tab-nav component's scale\"\n }],\n \"text\": \"\"\n },\n \"attribute\": \"scale\",\n \"reflect\": true\n },\n \"bordered\": {\n \"type\": \"boolean\",\n \"mutable\": true,\n \"complexType\": {\n \"original\": \"boolean\",\n \"resolved\": \"boolean\",\n \"references\": {}\n },\n \"required\": false,\n \"optional\": false,\n \"docs\": {\n \"tags\": [{\n \"name\": \"internal\",\n \"text\": \"Parent tabs component bordered value\"\n }],\n \"text\": \"\"\n },\n \"attribute\": \"bordered\",\n \"reflect\": true,\n \"defaultValue\": \"false\"\n },\n \"tab\": {\n \"type\": \"string\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"string\",\n \"resolved\": \"string\",\n \"references\": {}\n },\n \"required\": false,\n \"optional\": true,\n \"docs\": {\n \"tags\": [],\n \"text\": \"Optionally include a unique name for the tab title,\\nbe sure to also set this name on the associated tab.\"\n },\n \"attribute\": \"tab\",\n \"reflect\": true\n }\n }; }\n static get states() { return {\n \"controls\": {},\n \"hasText\": {}\n }; }\n static get events() { return [{\n \"method\": \"calciteTabsActivate\",\n \"name\": \"calciteTabsActivate\",\n \"bubbles\": true,\n \"cancelable\": true,\n \"composed\": true,\n \"docs\": {\n \"tags\": [{\n \"name\": \"see\",\n \"text\": \" [TabChangeEventDetail](https://github.com/Esri/calcite-components/blob/master/src/components/calcite-tab/interfaces.ts#L1)\"\n }],\n \"text\": \"Fires when a specific tab is activated (`event.details`)\"\n },\n \"complexType\": {\n \"original\": \"TabChangeEventDetail\",\n \"resolved\": \"TabChangeEventDetail\",\n \"references\": {\n \"TabChangeEventDetail\": {\n \"location\": \"import\",\n \"path\": \"../calcite-tab/interfaces\"\n }\n }\n }\n }, {\n \"method\": \"calciteTabsFocusNext\",\n \"name\": \"calciteTabsFocusNext\",\n \"bubbles\": true,\n \"cancelable\": true,\n \"composed\": true,\n \"docs\": {\n \"tags\": [{\n \"name\": \"internal\",\n \"text\": undefined\n }],\n \"text\": \"\"\n },\n \"complexType\": {\n \"original\": \"any\",\n \"resolved\": \"any\",\n \"references\": {}\n }\n }, {\n \"method\": \"calciteTabsFocusPrevious\",\n \"name\": \"calciteTabsFocusPrevious\",\n \"bubbles\": true,\n \"cancelable\": true,\n \"composed\": true,\n \"docs\": {\n \"tags\": [{\n \"name\": \"internal\",\n \"text\": undefined\n }],\n \"text\": \"\"\n },\n \"complexType\": {\n \"original\": \"any\",\n \"resolved\": \"any\",\n \"references\": {}\n }\n }, {\n \"method\": \"calciteTabTitleRegister\",\n \"name\": \"calciteTabTitleRegister\",\n \"bubbles\": true,\n \"cancelable\": true,\n \"composed\": true,\n \"docs\": {\n \"tags\": [{\n \"name\": \"internal\",\n \"text\": undefined\n }],\n \"text\": \"\"\n },\n \"complexType\": {\n \"original\": \"TabID\",\n \"resolved\": \"number | string\",\n \"references\": {\n \"TabID\": {\n \"location\": \"import\",\n \"path\": \"../calcite-tabs/interfaces\"\n }\n }\n }\n }]; }\n static get methods() { return {\n \"getTabIndex\": {\n \"complexType\": {\n \"signature\": \"() => Promise<number>\",\n \"parameters\": [],\n \"references\": {\n \"Promise\": {\n \"location\": \"global\"\n }\n },\n \"return\": \"Promise<number>\"\n },\n \"docs\": {\n \"text\": \"Return the index of this title within the nav\",\n \"tags\": []\n }\n },\n \"getTabIdentifier\": {\n \"complexType\": {\n \"signature\": \"() => Promise<TabID>\",\n \"parameters\": [],\n \"references\": {\n \"Promise\": {\n \"location\": \"global\"\n },\n \"TabID\": {\n \"location\": \"import\",\n \"path\": \"../calcite-tabs/interfaces\"\n }\n },\n \"return\": \"Promise<TabID>\"\n },\n \"docs\": {\n \"text\": \"\",\n \"tags\": [{\n \"name\": \"internal\",\n \"text\": undefined\n }]\n }\n },\n \"updateAriaInfo\": {\n \"complexType\": {\n \"signature\": \"(tabIds?: string[], titleIds?: string[]) => Promise<void>\",\n \"parameters\": [{\n \"tags\": [],\n \"text\": \"\"\n }, {\n \"tags\": [],\n \"text\": \"\"\n }],\n \"references\": {\n \"Promise\": {\n \"location\": \"global\"\n }\n },\n \"return\": \"Promise<void>\"\n },\n \"docs\": {\n \"text\": \"\",\n \"tags\": [{\n \"name\": \"internal\",\n \"text\": undefined\n }]\n }\n }\n }; }\n static get elementRef() { return \"el\"; }\n static get watchers() { return [{\n \"propName\": \"active\",\n \"methodName\": \"activeTabChanged\"\n }]; }\n static get listeners() { return [{\n \"name\": \"calciteTabChange\",\n \"method\": \"tabChangeHandler\",\n \"target\": \"body\",\n \"capture\": false,\n \"passive\": false\n }, {\n \"name\": \"click\",\n \"method\": \"onClick\",\n \"target\": undefined,\n \"capture\": false,\n \"passive\": false\n }, {\n \"name\": \"keydown\",\n \"method\": \"keyDownHandler\",\n \"target\": undefined,\n \"capture\": false,\n \"passive\": false\n }]; }\n}\n","/*!\n * All material copyright ESRI, All Rights Reserved, unless otherwise specified.\n * See https://github.com/Esri/calcite-components/blob/master/LICENSE.md for details.\n */\nexport const SLOTS = {\n tabNav: \"tab-nav\"\n};\n","/* mixins & extensions */\n\n@keyframes in {\n 0% {\n opacity: 0;\n }\n\n 100% {\n opacity: 1;\n }\n}\n\n@keyframes in-down {\n 0% {\n opacity: 0;\n transform: translate3D(0, -5px, 0);\n }\n\n 100% {\n opacity: 1;\n transform: translate3D(0, 0, 0);\n }\n}\n\n@keyframes in-up {\n 0% {\n opacity: 0;\n transform: translate3D(0, 5px, 0);\n }\n\n 100% {\n opacity: 1;\n transform: translate3D(0, 0, 0);\n }\n}\n\n@keyframes in-scale {\n 0% {\n opacity: 0;\n transform: scale3D(0.95, 0.95, 1);\n }\n\n 100% {\n opacity: 1;\n transform: scale3D(1, 1, 1);\n }\n}\n\n:root {\n --calcite-animation-timing: 300ms;\n}\n\n.calcite-animate {\n opacity: 0;\n animation-fill-mode: both;\n animation-duration: var(--calcite-animation-timing);\n}\n\n.calcite-animate__in {\n animation-name: in;\n}\n\n.calcite-animate__in-down {\n animation-name: in-down;\n}\n\n.calcite-animate__in-up {\n animation-name: in-up;\n}\n\n.calcite-animate__in-scale {\n animation-name: in-scale;\n}\n\n/**\n* Currently only used in Checkbox.\n*/\n\n:root {\n --calcite-popper-transition: 150ms ease-in-out;\n}\n\n:host([hidden]) {\n display: none;\n}\n\n:host {\n display: flex;\n flex-direction: column;\n}\n\n:host([bordered]) {\n box-shadow: inset 0 1px 0 var(--calcite-ui-border-1);\n background-color: var(--calcite-ui-foreground-1);\n}\n\n:host([bordered]:not([position=below])) ::slotted(calcite-tab-nav) {\n margin-bottom: -1px;\n}\n\n:host([bordered][position=below]) ::slotted(calcite-tab-nav) {\n margin-top: -1px;\n}\n\n:host([bordered][position=below]) {\n box-shadow: inset 0 1px 0 var(--calcite-ui-border-1), inset 0 -1px 0 var(--calcite-ui-border-1);\n}\n\n:host([bordered]) section {\n border-width: 1px;\n border-style: solid;\n border-color: var(--calcite-ui-border-1);\n}\n\n:host([bordered][scale=s]) section {\n padding: 0.75rem;\n}\n\n:host([bordered][scale=m]) section {\n padding: 0.5rem;\n}\n\n:host([bordered][scale=l]) section {\n padding: 1rem;\n}\n\n:host([position=below]) {\n flex-direction: column-reverse;\n}\n\nsection {\n display: flex;\n flex-grow: 1;\n overflow: hidden;\n border-top-width: 1px;\n border-top-color: var(--calcite-ui-border-1);\n border-top-style: solid;\n}\n\n:host([position=below]) section {\n flex-direction: column-reverse;\n border-top-width: 0;\n border-bottom-width: 1px;\n border-bottom-color: var(--calcite-ui-border-1);\n}\n\n:host([position=below]:not([bordered])) section {\n border-bottom-style: solid;\n}","/*!\n * All material copyright ESRI, All Rights Reserved, unless otherwise specified.\n * See https://github.com/Esri/calcite-components/blob/master/LICENSE.md for details.\n */\nimport { Component, Prop, h, Element, Listen, State, Fragment } from \"@stencil/core\";\nimport { SLOTS } from \"./resources\";\n/**\n * @slot - A slot for adding `calcite-tab`s.\n * @slot tab-nav - A slot for adding a tab navigation component.\n */\nexport class CalciteTabs {\n constructor() {\n //--------------------------------------------------------------------------\n //\n // Public Properties\n //\n //--------------------------------------------------------------------------\n /**\n * Align tab titles to the edge or fully justify them across the tab nav (\"center\")\n */\n this.layout = \"inline\";\n /**\n * Display the tabs above (default) or below the tab content\n */\n this.position = \"above\";\n /**\n * Specify the scale of the tabs component, defaults to m\n */\n this.scale = \"m\";\n /**\n * Optionally enable tabs to appear like a folder-style menu when its layout is \"inline\"\n */\n this.bordered = false;\n //--------------------------------------------------------------------------\n //\n // Events\n //\n //--------------------------------------------------------------------------\n //--------------------------------------------------------------------------\n //\n // Private State/Props\n //\n //--------------------------------------------------------------------------\n /**\n * @internal\n *\n * Stores an array of ids of `<calcite-tab-titles>`s to match up ARIA\n * attributes.\n */\n this.titles = [];\n /**\n * @internal\n *\n * Stores an array of ids of `<calcite-tab>`s to match up ARIA attributes.\n */\n this.tabs = [];\n }\n //--------------------------------------------------------------------------\n //\n // Lifecycle\n //\n //--------------------------------------------------------------------------\n connectedCallback() {\n if (this.layout === \"center\") {\n this.bordered = false;\n }\n }\n render() {\n return (h(Fragment, null,\n h(\"slot\", { name: SLOTS.tabNav }),\n h(\"section\", null,\n h(\"slot\", null))));\n }\n //--------------------------------------------------------------------------\n //\n // Event Listeners\n //\n //--------------------------------------------------------------------------\n /**\n * @internal\n */\n calciteTabTitleRegister(e) {\n this.titles = [...this.titles, e.target];\n this.registryHandler();\n e.stopPropagation();\n }\n /**\n * @internal\n */\n calciteTabTitleUnregister(e) {\n this.titles = this.titles.filter((el) => el !== e.detail);\n this.registryHandler();\n e.stopPropagation();\n }\n /**\n * @internal\n */\n calciteTabRegister(e) {\n this.tabs = [...this.tabs, e.target];\n this.registryHandler();\n e.stopPropagation();\n }\n /**\n * @internal\n */\n calciteTabUnregister(e) {\n this.tabs = this.tabs.filter((el) => el !== e.detail);\n this.registryHandler();\n e.stopPropagation();\n }\n //--------------------------------------------------------------------------\n //\n // Private Methods\n //\n //--------------------------------------------------------------------------\n /**\n * @internal\n *\n * Matches up elements from the internal `tabs` and `titles` to automatically\n * update the ARIA attributes and link `<calcite-tab>` and\n * `<calcite-tab-title>` components.\n */\n async registryHandler() {\n let tabIds;\n let titleIds;\n // determine if we are using `tab` based or `index` based tab identifiers.\n if (this.tabs.some((e) => e.tab) || this.titles.some((e) => e.tab)) {\n // if we are using `tab` based identifiers sort by `tab` to account for\n // possible out of order tabs and get the id of each tab\n tabIds = this.tabs.sort((a, b) => a.tab.localeCompare(b.tab)).map((e) => e.id);\n titleIds = this.titles.sort((a, b) => a.tab.localeCompare(b.tab)).map((e) => e.id);\n }\n else {\n // if we are using index based tabs then the `<calcite-tab>` and\n // `<calcite-tab-title>` might have been rendered out of order so the\n // order of `this.tabs` and `this.titles` might not reflect the DOM state,\n // and might not match each other so we need to get the index of all the\n // tabs and titles in the DOM order to match them up as a source of truth\n const tabDomIndexes = await Promise.all(this.tabs.map((el) => el.getTabIndex()));\n const titleDomIndexes = await Promise.all(this.titles.map((el) => el.getTabIndex()));\n // once we have the DOM order as a source of truth we can build the\n // matching tabIds and titleIds arrays\n tabIds = tabDomIndexes.reduce((ids, indexInDOM, registryIndex) => {\n ids[indexInDOM] = this.tabs[registryIndex].id;\n return ids;\n }, []);\n titleIds = titleDomIndexes.reduce((ids, indexInDOM, registryIndex) => {\n ids[indexInDOM] = this.titles[registryIndex].id;\n return ids;\n }, []);\n }\n // pass all our new aria information to each `<calcite-tab>` and\n // `<calcite-tab-title>` which will check if they can update their internal\n // `controlled` or `labeledBy` states and re-render if necessary\n this.tabs.forEach((el) => el.updateAriaInfo(tabIds, titleIds));\n this.titles.forEach((el) => el.updateAriaInfo(tabIds, titleIds));\n }\n static get is() { return \"calcite-tabs\"; }\n static get encapsulation() { return \"shadow\"; }\n static get originalStyleUrls() { return {\n \"$\": [\"calcite-tabs.scss\"]\n }; }\n static get styleUrls() { return {\n \"$\": [\"calcite-tabs.css\"]\n }; }\n static get properties() { return {\n \"layout\": {\n \"type\": \"string\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"TabLayout\",\n \"resolved\": \"\\\"center\\\" | \\\"inline\\\"\",\n \"references\": {\n \"TabLayout\": {\n \"location\": \"import\",\n \"path\": \"./interfaces\"\n }\n }\n },\n \"required\": false,\n \"optional\": false,\n \"docs\": {\n \"tags\": [],\n \"text\": \"Align tab titles to the edge or fully justify them across the tab nav (\\\"center\\\")\"\n },\n \"attribute\": \"layout\",\n \"reflect\": true,\n \"defaultValue\": \"\\\"inline\\\"\"\n },\n \"position\": {\n \"type\": \"string\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"TabPosition\",\n \"resolved\": \"\\\"above\\\" | \\\"below\\\"\",\n \"references\": {\n \"TabPosition\": {\n \"location\": \"import\",\n \"path\": \"./interfaces\"\n }\n }\n },\n \"required\": false,\n \"optional\": false,\n \"docs\": {\n \"tags\": [],\n \"text\": \"Display the tabs above (default) or below the tab content\"\n },\n \"attribute\": \"position\",\n \"reflect\": true,\n \"defaultValue\": \"\\\"above\\\"\"\n },\n \"scale\": {\n \"type\": \"string\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"Scale\",\n \"resolved\": \"\\\"l\\\" | \\\"m\\\" | \\\"s\\\"\",\n \"references\": {\n \"Scale\": {\n \"location\": \"import\",\n \"path\": \"../interfaces\"\n }\n }\n },\n \"required\": false,\n \"optional\": false,\n \"docs\": {\n \"tags\": [],\n \"text\": \"Specify the scale of the tabs component, defaults to m\"\n },\n \"attribute\": \"scale\",\n \"reflect\": true,\n \"defaultValue\": \"\\\"m\\\"\"\n },\n \"bordered\": {\n \"type\": \"boolean\",\n \"mutable\": true,\n \"complexType\": {\n \"original\": \"boolean\",\n \"resolved\": \"boolean\",\n \"references\": {}\n },\n \"required\": false,\n \"optional\": false,\n \"docs\": {\n \"tags\": [],\n \"text\": \"Optionally enable tabs to appear like a folder-style menu when its layout is \\\"inline\\\"\"\n },\n \"attribute\": \"bordered\",\n \"reflect\": true,\n \"defaultValue\": \"false\"\n }\n }; }\n static get states() { return {\n \"titles\": {},\n \"tabs\": {}\n }; }\n static get elementRef() { return \"el\"; }\n static get listeners() { return [{\n \"name\": \"calciteTabTitleRegister\",\n \"method\": \"calciteTabTitleRegister\",\n \"target\": undefined,\n \"capture\": false,\n \"passive\": false\n }, {\n \"name\": \"calciteTabTitleUnregister\",\n \"method\": \"calciteTabTitleUnregister\",\n \"target\": \"body\",\n \"capture\": false,\n \"passive\": false\n }, {\n \"name\": \"calciteTabRegister\",\n \"method\": \"calciteTabRegister\",\n \"target\": undefined,\n \"capture\": false,\n \"passive\": false\n }, {\n \"name\": \"calciteTabUnregister\",\n \"method\": \"calciteTabUnregister\",\n \"target\": \"body\",\n \"capture\": false,\n \"passive\": false\n }]; }\n}\n","/** @license\r\n * Copyright 2021 Esri\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n\r\n:host {\r\n display: block;\r\n}\r\n\r\n.editor-container {\r\n position: relative;\r\n height: 100%;\r\n}\r\n\r\n.editor-controls {\r\n height: 44px;\r\n background-color: #F4F4F4\r\n}\r\n\r\n.editor-buttons {\r\n float: right;\r\n}\r\n\r\nhtml[dir=\"rtl\"] .editor-buttons {\r\n float: left;\r\n padding-right: .25rem\r\n}\r\n\r\n.edit-button {\r\n padding: .25rem 0 0 .5rem;\r\n}\r\n\r\nhtml[dir=\"rtl\"] .edit-button {\r\n padding: .25rem .5rem 0 0;\r\n}\r\n\r\n.editor-text {\r\n overflow-y: auto;\r\n background-color: white;\r\n width: 100%;\r\n}\r\n\r\n.edit-width {\r\n width: 100%;\r\n}\r\n\r\n/* NEW CSS FOR MONACO */\r\n.edit-parent {\r\n width: 100%;\r\n /* adjust for edit buttons and border */\r\n height: calc(100% - 46px);\r\n box-sizing: border-box;\r\n}\r\n\r\n.json-edit-container {\r\n width: 100%;\r\n height: 100%;\r\n border: 1px solid grey;\r\n}\r\n\r\n.padding-right {\r\n /* padding for border */\r\n padding-right: 2px;\r\n}\r\n\r\nhtml[dir=\"rtl\"] .padding-right {\r\n padding-left: 2px;\r\n}\r\n\r\n.btn-container {\r\n width: 20%;\r\n height: calc(100vh - 16px);\r\n margin: 0px;\r\n padding: 0px;\r\n float: right;\r\n}\r\n\r\n.btn {\r\n height: 25px;\r\n width: 120px;\r\n display: flex;\r\n margin-bottom: 1rem;\r\n justify-content: center;\r\n}\r\n\r\n.select-ctrl {\r\n margin-bottom: 1rem;\r\n}\r\n\r\n.all-edits {\r\n margin-top: 4rem;\r\n}\r\n\r\n.not-visible {\r\n display: none;\r\n}\r\n\r\n.json-editor-position {\r\n position: absolute;\r\n left: 0;\r\n top: 0;\r\n width: 100%;\r\n height: 100%;\r\n max-height: 100% !important;\r\n margin: 0;\r\n padding: 0;\r\n overflow: hidden;\r\n}\r\n","/** @license\r\n * Copyright 2021 Esri\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n\r\n/**\r\n * Encapsulates the Monaco Editor (https://microsoft.github.io/monaco-editor/) into a\r\n * web component for JSON content.\r\n *\r\n * Attributes:\r\n * `instanceid`: id of component (required, because it's used to distinguish between multiple instances of component)\r\n * `value`: Initial content of editor\r\n *\r\n * @example\r\n * <json-editor\r\n * instanceid=\"a1f271c0de554604beed2adc1f244be1\"\r\n * value=\"{\\\"id\\\": \\\"12345\\\"}\"\r\n * ></json-editor>\r\n *\r\n * `instanceid` attribute and `value` are required\r\n *\r\n *\r\n*/\r\n\r\nimport { Component, Element, Host, h, Listen, Prop } from '@stencil/core';\r\nimport state from '../../utils/editStore';\r\nimport { getProp } from '../../utils/common';\r\n\r\n@Component({\r\n tag: 'json-editor',\r\n styleUrl: 'json-editor.css',\r\n shadow: false,\r\n assetsDirs: ['assets']\r\n})\r\nexport class JsonEditor {\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Host element access\r\n //\r\n //--------------------------------------------------------------------------\r\n @Element() el: HTMLJsonEditorElement;\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Properties (public)\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n /**\r\n * Contains the original source item json as it was when the component was created.\r\n *\r\n */\r\n @Prop({ mutable: true }) original: any = \"\";\r\n\r\n /**\r\n * Contains the translations for this component.\r\n */\r\n @Prop({ mutable: true }) translations: any = {};\r\n\r\n /**\r\n * Contains the public value for this component.\r\n * This should be an item Id for one of the models in the store.\r\n */\r\n @Prop({ mutable: true, reflect: true }) value: any = undefined;\r\n\r\n /**\r\n * Contains the public model for this component.\r\n */\r\n @Prop({ mutable: true, reflect: true }) model: any; //monaco.editor.ITextModel;\r\n\r\n /**\r\n * Contains a unique identifier for when we have multiple instances of the editor.\r\n * For example when we want to show an items data as well as an items properties.\r\n *\r\n * Need to rethink this..would like it to be more generic.\r\n * We are currently tied to either data or props as this helps us know how to get the correct model from the store.\r\n */\r\n @Prop({ mutable: true, reflect: true }) instanceid: any = \"\";\r\n\r\n /**\r\n * Contains a public value to indicate if the model has any errors\r\n * that would prevent saving it.\r\n */\r\n @Prop({ mutable: true, reflect: true }) hasErrors: boolean = false;\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Lifecycle\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n render() {\r\n return (\r\n <Host class=\"json-editor-position\">\r\n <div id={`${this.instanceid}-editor-container`} class=\"editor-container padding-right\">\r\n <div class=\"editor-controls\">\r\n <div class=\"editor-buttons\">\r\n {/* undo */}\r\n <calcite-button\r\n id={`${this.instanceid}-undo`}\r\n color=\"blue\"\r\n appearance=\"solid\"\r\n title={this.translations.undo}\r\n onClick={() => this._undo()}\r\n scale=\"s\"\r\n class=\"edit-button\"\r\n >\r\n <calcite-icon icon=\"undo\" scale=\"s\"></calcite-icon>\r\n </calcite-button>\r\n {/* redo */}\r\n <calcite-button\r\n id={`${this.instanceid}-redo`}\r\n color=\"blue\"\r\n appearance=\"solid\"\r\n title={this.translations.redo}\r\n onClick={() => this._redo()}\r\n scale=\"s\"\r\n class=\"edit-button\"\r\n >\r\n <calcite-icon icon=\"redo\" scale=\"s\"></calcite-icon>\r\n </calcite-button>\r\n {/* diff */}\r\n <calcite-button\r\n id={`${this.instanceid}-diff`}\r\n color=\"blue\"\r\n appearance=\"solid\"\r\n title={this.translations.diff}\r\n onClick={() => this._toggleEditor()}\r\n scale=\"s\"\r\n class=\"edit-button\"\r\n >\r\n <calcite-icon icon=\"compare\" scale=\"s\"></calcite-icon>\r\n </calcite-button>\r\n {/* search */}\r\n <calcite-button\r\n id={`${this.instanceid}-search`}\r\n appearance=\"outline\"\r\n color=\"blue\"\r\n title={this.translations.search}\r\n onClick={() => this._search()}\r\n scale=\"s\"\r\n class=\"edit-button\"\r\n >\r\n <calcite-icon icon=\"search\" scale=\"s\"></calcite-icon>\r\n </calcite-button>\r\n {/* cancel */}\r\n <calcite-button\r\n id={`${this.instanceid}-reset`}\r\n color=\"blue\"\r\n appearance=\"solid\"\r\n disabled\r\n title={this.translations.cancelEdits}\r\n onClick={() => this._reset()}\r\n scale=\"s\"\r\n class=\"edit-button\"\r\n >\r\n <calcite-icon icon=\"reset\" scale=\"s\"></calcite-icon>\r\n </calcite-button>\r\n </div>\r\n </div>\r\n <div class=\"edit-parent\">\r\n <div id={`${this.instanceid}-container`} class=\"json-edit-container\"></div>\r\n <div id={`${this.instanceid}-diff-container`} class=\"json-edit-container not-visible\"></div>\r\n </div>\r\n </div>\r\n </Host>\r\n );\r\n }\r\n\r\n componentWillLoad(): void {\r\n this._initValueObserver();\r\n }\r\n\r\n disconnectedCallback(): void {\r\n // The doc makes me question what all we should do here\r\n // StencilJS doc: Called every time the component is disconnected from the DOM, ie, it can\r\n // be dispatched more than once, DO not confuse with a \"onDestroy\" kind of event.\r\n this._destroyEditor();\r\n }\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Variables (private)\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n private _editor: any;\r\n private _diffEditor: any;\r\n private _useDiffEditor: boolean = false;\r\n private _currentModel: any;\r\n private _searchBtnHandler: any;\r\n private _cancelEditsBtnHandler: any;\r\n private _loaded: boolean = false;\r\n private _valueObserver: MutationObserver;\r\n private _contentChanged: any;\r\n private _decorationsChanged: any;\r\n\r\n private _initValueObserver() {\r\n this._valueObserver = new MutationObserver(ml => {\r\n ml.forEach(mutation => {\r\n if (mutation.type === 'attributes' && mutation.attributeName === \"value\") {\r\n if (state && state.models && Object.keys(state.models).indexOf(this.value) > -1) {\r\n const newValue: string = mutation.target[mutation.attributeName];\r\n if ((newValue !== mutation.oldValue && this._loaded)) {\r\n // store the current state\r\n this._saveCurrentModel(mutation.oldValue);\r\n\r\n // get the model and state from the store\r\n this._setEditModel(newValue);\r\n } else if (!this._loaded) {\r\n this._setEditModel(this.value);\r\n }\r\n }\r\n }\r\n });\r\n });\r\n this._valueObserver.observe(this.el, { attributes: true, attributeOldValue: true });\r\n }\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Event Listeners\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n @Listen(\"organizationVariableSelected\", { target: 'window' })\r\n organizationVariableSelected(event: CustomEvent): void {\r\n if (this._isTabActive()) {\r\n this._insertValue(event.detail.value);\r\n }\r\n }\r\n\r\n @Listen(\"solutionVariableSelected\", { target: 'window' })\r\n solutionVariableSelected(event: CustomEvent): void {\r\n if (this._isTabActive()) {\r\n this._insertValue(event.detail.value);\r\n }\r\n }\r\n\r\n @Listen(\"modelsChanged\", { target: 'window' })\r\n _modelsChanged(): void {\r\n if (!this._loaded && this.value) {\r\n if (state && state.models && Object.keys(state.models).indexOf(this.value) > -1) {\r\n //get the model and state from the store\r\n this._setEditModel(this.value);\r\n }\r\n }\r\n }\r\n\r\n @Listen(\"solutionItemSelected\", { target: 'window' })\r\n _solutionItemSelected(event: CustomEvent): void {\r\n if (this.value && event.detail.itemId !== this.value) {\r\n this._saveCurrentModel(this.value)\r\n }\r\n }\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Events\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Private Methods\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n /**\r\n * Initializes the editor when the web component is connected.\r\n *\r\n * @protected\r\n */\r\n _initEditor(): void {\r\n // Set up embedded editor\r\n if (monaco && monaco.editor) {\r\n this._editor = monaco.editor.create(document.getElementById(`${this.instanceid}-container`), {\r\n model: this.model,\r\n language: 'json',\r\n readOnly: false,\r\n theme: \"vs\",\r\n minimap: {\r\n enabled: false\r\n },\r\n automaticLayout: true,\r\n scrollBeyondLastLine: false\r\n });\r\n this._currentModel = this._editor.getModel();\r\n\r\n this._contentChanged = this._currentModel.onDidChangeContent(this._onEditorChange.bind(this));\r\n this._decorationsChanged = this._editor.onDidChangeModelDecorations(this._onDecorationsChange.bind(this));\r\n\r\n this._diffEditor = monaco.editor.createDiffEditor(document.getElementById(`${this.instanceid}-diff-container`), {\r\n automaticLayout: true\r\n });\r\n this._setDiffModel();\r\n\r\n this._loaded = true;\r\n }\r\n }\r\n\r\n\r\n /**\r\n * Update the undo redo buttons as necessary\r\n *\r\n * @protected\r\n */\r\n _onEditorChange(): void {\r\n this._toggleUndoRedo();\r\n }\r\n\r\n /**\r\n * Decorations are added when errors are found in the editor content\r\n *\r\n * @protected\r\n */\r\n _onDecorationsChange(): void {\r\n const model = this._editor.getModel();\r\n if (model === null) {\r\n return;\r\n }\r\n\r\n const owner = model.getModeId();\r\n const markers = monaco.editor.getModelMarkers({ owner });\r\n\r\n this.hasErrors = markers.length > 0;\r\n }\r\n\r\n /**\r\n * Undo the current edit operation\r\n *\r\n * @protected\r\n */\r\n _undo(): void {\r\n if (this._currentModel?.canUndo()) {\r\n this._currentModel.undo();\r\n this._toggleUndoRedo();\r\n }\r\n }\r\n\r\n /**\r\n * Redo the previous edit operation\r\n *\r\n * @protected\r\n */\r\n _redo(): void {\r\n if (this._currentModel?.canRedo()) {\r\n this._currentModel.redo();\r\n this._toggleUndoRedo();\r\n }\r\n }\r\n\r\n /**\r\n * Show/Hide the appropriate editor\r\n *\r\n * @protected\r\n */\r\n _toggleEditor(): void {\r\n this._useDiffEditor = !this._useDiffEditor;\r\n let diffContainer = document.getElementById(`${this.instanceid}-diff-container`);\r\n let container = document.getElementById(`${this.instanceid}-container`);\r\n if (this._useDiffEditor) {\r\n this._setDiffModel();\r\n diffContainer.classList.remove(\"not-visible\");\r\n container.classList.add(\"not-visible\");\r\n } else {\r\n diffContainer.classList.add(\"not-visible\");\r\n container.classList.remove(\"not-visible\");\r\n }\r\n }\r\n\r\n /**\r\n * Toggle the undo and redo buttons\r\n *\r\n * @protected\r\n */\r\n _toggleUndoRedo(): void {\r\n if (this._currentModel?.canUndo()) {\r\n this._enableButton(`${this.instanceid}-undo`);\r\n } else {\r\n this._disableButton(`${this.instanceid}-undo`);\r\n }\r\n\r\n if (this._currentModel?.canRedo()) {\r\n this._enableButton(`${this.instanceid}-redo`);\r\n } else {\r\n this._disableButton(`${this.instanceid}-redo`);\r\n }\r\n\r\n if (this._currentModel?.canUndo() || this._currentModel?.canRedo()) {\r\n this._enableButton(`${this.instanceid}-reset`);\r\n } else {\r\n this._disableButton(`${this.instanceid}-reset`);\r\n }\r\n }\r\n\r\n /**\r\n * Overrides the editors selection with the value passed in\r\n *\r\n * @protected\r\n */\r\n _insertValue(v: string): void {\r\n const editor: any = this._getEditor();\r\n const range = editor.getSelection();\r\n // use pushEditOperations so it will push to the undo stack\r\n this._currentModel.pushEditOperations([],[{\r\n forceMoveMarkers: true,\r\n text: v,\r\n range\r\n }]);\r\n editor.revealRange(range);\r\n }\r\n\r\n /**\r\n * Gets the current active editor for diff editor\r\n *\r\n * @protected\r\n */\r\n _getEditor(): any {\r\n return this._useDiffEditor ? this._diffEditor : this._editor;\r\n }\r\n\r\n /**\r\n * Frees the editor events and memory when the web component is disconnected.\r\n *\r\n * @protected\r\n */\r\n _destroyEditor(): void {\r\n this._searchBtnHandler?.removeEventListener(\"click\", this._search);\r\n this._cancelEditsBtnHandler?.removeEventListener(\"click\", this._reset);\r\n \r\n this._valueObserver?.disconnect();\r\n\r\n this._contentChanged?.dispose();\r\n this._decorationsChanged?.dispose();\r\n\r\n this._editor?.dispose();\r\n\r\n this.original = \"\";\r\n }\r\n\r\n /**\r\n * Resets the stored model to the original value.\r\n *\r\n * @protected\r\n */\r\n _reset(): void {\r\n // update the model\r\n const org = this._getOriginalValue();\r\n this.model = monaco.editor.createModel(JSON.stringify(JSON.parse(org), null, '\\t'), \"json\");\r\n\r\n // update the editor\r\n this._editor.setModel(this.model);\r\n this._setCurrentModel();\r\n this._setDiffModel();\r\n this._saveCurrentModel(this.value);\r\n this._setEditorFocus();\r\n\r\n // update the ui\r\n this._toggleUndoRedo();\r\n }\r\n\r\n /**\r\n * Disables a button.\r\n *\r\n * @param buttonId Id of button to disable\r\n *\r\n * @protected\r\n */\r\n _disableButton(buttonId: string): void {\r\n document.getElementById(buttonId)?.setAttribute(\"disabled\", \"\");\r\n }\r\n\r\n /**\r\n * Enables a button.\r\n *\r\n * @param buttonId Id of button to enable\r\n *\r\n * @protected\r\n */\r\n _enableButton(buttonId: string): void {\r\n document.getElementById(buttonId)?.removeAttribute(\"disabled\");\r\n }\r\n\r\n /**\r\n * Handles click on \"Search\" button.\r\n *\r\n * @protected\r\n */\r\n _search(): void {\r\n const editor: any = this._getEditor();\r\n // force focus should likely just be a workaround\r\n //https://github.com/microsoft/monaco-editor/issues/2355\r\n editor.focus();\r\n editor.trigger('toggleFind', 'actions.find');\r\n }\r\n\r\n /**\r\n * Save the current model state to the store\r\n *\r\n * @protected\r\n */\r\n _saveCurrentModel(id: string): void {\r\n if (this._editor && id && Object.keys(state.models).indexOf(id) > -1) {\r\n state.models[id][this._isData() ? \"dataModel\" : \"propsModel\"] = this.model;\r\n state.models[id].state = this._editor.saveViewState();\r\n }\r\n }\r\n\r\n /**\r\n * Change the editors model\r\n *\r\n * @protected\r\n */\r\n _setEditModel(id): void {\r\n const data = state.models[id];\r\n\r\n this.model = this._isData() ? data.dataModel : data.propsModel;\r\n this.original = this._isData() ? data.dataOriginValue : data.propsOriginValue;\r\n\r\n if (this._editor) {\r\n this._editor.setModel(this.model);\r\n if (data.state) {\r\n this._editor.restoreViewState(data.state);\r\n }\r\n this._setDiffModel();\r\n this._setEditorFocus();\r\n } else {\r\n this._initEditor();\r\n }\r\n\r\n this._setCurrentModel();\r\n\r\n this._toggleUndoRedo();\r\n }\r\n\r\n /**\r\n * Set the current model and event handler\r\n *\r\n * @protected\r\n */\r\n _setCurrentModel(): void {\r\n this._currentModel = this._editor.getModel();\r\n if (this._contentChanged) {\r\n this._contentChanged.dispose();\r\n }\r\n this._contentChanged = this._currentModel.onDidChangeContent(this._onEditorChange.bind(this));\r\n }\r\n\r\n /**\r\n * Set the models for the diff editor\r\n *\r\n * @protected\r\n */\r\n _setDiffModel(): void {\r\n if (this._diffEditor) {\r\n this._diffEditor.setModel({\r\n original: monaco.editor.createModel(JSON.stringify(JSON.parse(this.original), null, '\\t'), \"json\"),\r\n modified: this._editor.getModel()\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Set the models for the diff editor\r\n *\r\n * @protected\r\n */\r\n _setEditorFocus(): void {\r\n if (this._useDiffEditor) {\r\n this._diffEditor.focus();\r\n } else {\r\n this._editor.focus();\r\n }\r\n }\r\n\r\n /**\r\n * When the json-editor is embedded within a solition-item component we will have two tabs\r\n * with the json editor. This provides a way for us to check if that parent tab is active \r\n * while inserting variables.\r\n *\r\n * @protected\r\n */\r\n _isTabActive(): boolean {\r\n const tab = document.getElementById(`${this.instanceid}-tab`) as HTMLCalciteTabElement;\r\n return tab ? tab.active : true;\r\n }\r\n\r\n /**\r\n * When the json-editor is embedded within a solition-item component we will have two tabs\r\n * with the json editor. One for the data section of the item and one for the props section.\r\n * This provides a way to check what one we are working with.\r\n *\r\n * @protected\r\n */\r\n _isData(): boolean {\r\n return this.instanceid === \"data\"\r\n }\r\n\r\n /**\r\n * When the json-editor is embedded within a solition-item component it needs to be aware\r\n * if the spatial reference control has modified the data.\r\n * Edits from the spatial reference control do not add to the undo/redo stack and are not removed on reset as\r\n * they are only controlled via the spatial reference control.\r\n * This allows us to use the true original value or the one that has been modified by the spatial ref control\r\n * when using the diff editor or resetting.\r\n *\r\n * @protected\r\n */\r\n _getOriginalValue(): string{\r\n const m: any = state.models[this.value];\r\n const serviceActive = getProp(state, `spatialReferenceInfo.services.${m?.name}`);\r\n const srEnabled = getProp(state, 'spatialReferenceInfo.enabled');\r\n return (serviceActive && srEnabled && !this._isData()) ? m.propsDiffOriginValue : this.original;\r\n }\r\n}\r\n","/** @license\r\n * Copyright 2021 Esri\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n\r\n.inputBottomSeparation {\r\n margin: 0 0 1.5rem 0;\r\n}\r\n\r\n.icon-inline--on-left, .esriRtl .icon-inline--on-right {\r\n margin-right: 6px;\r\n margin-left: 0;\r\n}\r\n\r\n.icon-inline--on-left, .icon-inline--on-right {\r\n display: inline;\r\n margin-top: -.15em;\r\n}\r\n\r\n.font-size--3 {\r\n font-size: 0.8125rem;\r\n line-height: 1.5\r\n}\r\n\r\n.scale-down {\r\n object-fit: scale-down;\r\n}\r\n\r\n.btn-link {\r\n -webkit-appearance: none;\r\n cursor: pointer;\r\n padding: 0;\r\n border: none;\r\n color: #6e6e6e;\r\n background: transparent;\r\n}\r\n\r\n.btn-link:hover {\r\n text-decoration: underline;\r\n}\r\n\r\n.inline-block {\r\n display: inline-block;\r\n}\r\n\r\n.flex {\r\n display: flex;\r\n}\r\n\r\n.img-container {\r\n display: inline;\r\n flex-grow: 0;\r\n}\r\n\r\n.summary-count-container {\r\n display: inline;\r\n flex-grow: 1;\r\n margin-left: 12px;\r\n}\r\n\r\n.parent-container {\r\n max-width: 100%;\r\n margin: 1rem;\r\n}\r\n\r\n.display-none {\r\n display: none;\r\n}\r\n\r\nlabel {\r\n position: relative;\r\n display: block;\r\n margin: 0 0 1.5rem 0;\r\n}\r\n","/** @license\r\n * Copyright 2021 Esri\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n\r\nimport { Component, Element, h, Host, Listen, Prop, VNode } from '@stencil/core';\r\nimport '@esri/calcite-components';\r\nimport state from '../../utils/editStore';\r\nimport { getProp } from '../../utils/common';\r\n\r\nexport interface IItemDetails {\r\n thumbnail: string;\r\n title: string;\r\n snippet: string;\r\n description: string;\r\n tags: string[];\r\n accessInformation?: string;\r\n licenseInfo?: string;\r\n itemId: string\r\n}\r\n\r\n@Component({\r\n tag: 'solution-item-details',\r\n styleUrl: 'solution-item-details.css',\r\n shadow: false,\r\n})\r\nexport class SolutionItemDetails {\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Host element access\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n @Element() el: HTMLSolutionItemDetailsElement;\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Properties (public)\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n /**\r\n * Contains the translations for this component.\r\n */\r\n @Prop({ mutable: true }) translations: any = {};\r\n\r\n /**\r\n * Contains the public value for this component.\r\n */\r\n @Prop({ mutable: true, reflect: true }) value: IItemDetails = {\r\n thumbnail: null,\r\n title: \"\",\r\n snippet: \"\",\r\n description: \"\",\r\n tags: [],\r\n accessInformation: \"\",\r\n licenseInfo: \"\",\r\n itemId: \"\"\r\n };\r\n\r\n @Prop({ mutable: true, reflect: true }) type = \"\";\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Lifecycle\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n render(): VNode {\r\n this._validateValue();\r\n return (\r\n <Host>\r\n <div class=\"parent-container\">\r\n <div class=\"inputBottomSeparation\">\r\n <calcite-input id=\"item-title\" value={this.value.title} />\r\n </div>\r\n\r\n <div class=\"inputBottomSeparation\">\r\n\r\n <input accept=\".jpg,.gif,.png,image/jpg,image/gif,image/png\" class=\"display-none\" onChange={(event) => (this._updateThumbnail(event))} ref={(el) => (this.browseForThumbnail = el)} type=\"file\" />\r\n\r\n <button class=\"font-size--3 btn-link inline-block\" onClick={() => this._getThumbnail()}>\r\n <svg class=\"icon-inline icon-inline--on-left\" height=\"16\" viewBox=\"0 0 16 16\" width=\"16\">\r\n <path d=\"M14.792 2.666l-1.414-1.413a.965.965 0 0 0-1.385-.03l-1.444 1.444-8.763 8.72L.03 15.481a.371.371 0 0 0 .488.488l4.096-1.756 8.763-8.72-.001-.001.002.002 1.443-1.444a.965.965 0 0 0-.03-1.385zM1.569 14.431l.554-1.293.74.739zm2.338-.924l-1.414-1.414 7.963-7.92 1.414 1.415zm8.67-8.626l-1.413-1.414 1.29-1.29a.306.306 0 0 1 .433 0l.981.98a.306.306 0 0 1 0 .433z\" />\r\n </svg> {this.translations.editThumbnail}\r\n </button>\r\n\r\n <div class=\"flex\">\r\n <div class=\"img-container\">\r\n <img class=\"scale-down\" height=\"133\" ref={(el) => (this.thumbnail = el)} width=\"200\" />\r\n </div>\r\n <div class=\"snippet-count-container\">\r\n <calcite-input id=\"item-snippet\" maxlength={250} type=\"textarea\" value={this.value.snippet} />\r\n <label class=\"font-size--3\" id=\"item-snippet-count\" ref={(el) => (this.itemSnippetCount = el)} />\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <calcite-label>{this.translations.description}\r\n <label id=\"item-description-label\">\r\n <calcite-input id=\"item-description\" type=\"textarea\" value={this.value.description} />\r\n </label>\r\n </calcite-label>\r\n\r\n <calcite-label>{this.translations.tags}\r\n <label id=\"item-tags-label\">\r\n <calcite-input id=\"item-tags\" value={(this.value.tags && Array.isArray(this.value.tags) ? this.value.tags : [this.value.tags]).join(\",\")} />\r\n </label>\r\n </calcite-label>\r\n\r\n {this.type !== \"Group\" ? <calcite-label>{this.translations.credits}\r\n <label id=\"item-credits-label\">\r\n <calcite-input id=\"item-credits\" value={this.value.accessInformation} />\r\n </label>\r\n </calcite-label> : null}\r\n\r\n {this.type !== \"Group\" ? <calcite-label>\r\n <label id=\"item-terms-label\">{this.translations.termsOfUse}\r\n <calcite-input id=\"item-terms\" type=\"textarea\" value={this.value.licenseInfo} />\r\n </label>\r\n </calcite-label> : null}\r\n \r\n </div>\r\n </Host>\r\n );\r\n }\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Variables (private)\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n /**\r\n * Handle to the element for browsing for a file.\r\n */\r\n private browseForThumbnail: HTMLInputElement;\r\n\r\n /**\r\n * Handle to the snippet character-count feedback.\r\n */\r\n private itemSnippetCount: HTMLLabelElement;\r\n\r\n /**\r\n * Handle to the thumbnail image display.\r\n */\r\n private thumbnail: HTMLImageElement;\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Event Listeners\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n /**\r\n * Updates the component's value with changes to the input fields.\r\n */\r\n @Listen(\"calciteInputInput\")\r\n inputReceivedHandler(event: any): void {\r\n switch (event.target.id) {\r\n case \"item-title\": \r\n this.value.title = event.target.value;\r\n this._updateStore(\"title\", event.target.value);\r\n break;\r\n case \"item-snippet\":\r\n this.value.snippet = event.target.value;\r\n this._updateLengthLabel(this.value.snippet);\r\n this._updateStore(\"snippet\", event.target.value);\r\n break;\r\n case \"item-description\":\r\n this.value.description = event.target.value;\r\n this._updateStore(\"description\", event.target.value);\r\n break;\r\n case \"item-tags\":\r\n this.value.tags = event.target.value;\r\n this._updateStore(\"tags\", event.target.value);\r\n break;\r\n case \"item-credits\":\r\n this.value.accessInformation = event.target.value;\r\n this._updateStore(\"accessInformation\", event.target.value);\r\n break;\r\n case \"item-terms\":\r\n this.value.licenseInfo = event.target.value;\r\n this._updateStore(\"licenseInfo\", event.target.value);\r\n break;\r\n }\r\n }\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Events\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Public Methods (async)\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Private Methods\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n /**\r\n * Opens image file browse dialog.\r\n *\r\n */\r\n private _getThumbnail(): void {\r\n this.browseForThumbnail.click();\r\n }\r\n\r\n /**\r\n * Updates the length label to reflect the current number of characters\r\n * relative to the max number of characters supported.\r\n *\r\n */\r\n private _updateLengthLabel(phrase: string): void {\r\n this.itemSnippetCount.innerText =\r\n this.translations.snippetCountPattern.replace(\"{{n}}\", phrase.length.toString());\r\n }\r\n\r\n /**\r\n * Gets and displays image result from browse.\r\n *\r\n */\r\n private _updateThumbnail(\r\n event: any\r\n ): void {\r\n const files = event.currentTarget.files;\r\n if (files && files[0]) {\r\n const reader = new FileReader();\r\n reader.onloadend = () => {\r\n this.thumbnail.src = reader.result as string;\r\n }\r\n reader.readAsDataURL(files[0]);\r\n }\r\n }\r\n\r\n /**\r\n * Use the value from the store if it exists\r\n *\r\n */\r\n private _validateValue(): void {\r\n const m: any = getProp(state, `models.${this.value.itemId}`);\r\n if (m) {\r\n Object.keys(this.value).forEach(k => {\r\n if (m.updateItemValues.hasOwnProperty(k)) {\r\n this.value[k] = m.updateItemValues[k];\r\n } else if (m.originalItemValues.hasOwnProperty(k)) {\r\n this.value[k] = m.originalItemValues[k];\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Add or remove the value from the store\r\n *\r\n */\r\n private _updateStore(\r\n prop: string,\r\n v: string\r\n ): void {\r\n const model: any = getProp(state, `models.${this.value.itemId}`);\r\n if (model.itemOriginValue) {\r\n const item = JSON.parse(model.itemOriginValue);\r\n if (item.hasOwnProperty(prop)) {\r\n // store when it matches\r\n if (item[prop] !== v) {\r\n if (!model.originalItemValues.hasOwnProperty(prop)) {\r\n model.originalItemValues[prop] = item[prop];\r\n }\r\n model.updateItemValues[prop] = v;\r\n } else {\r\n // remove when it doesn't\r\n delete(model.updateItemValues[prop]);\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","/** @license\r\n * Copyright 2021 Esri\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n\r\n:host {\r\n display: block;\r\n}\r\n\r\n.container-border {\r\n padding: 1rem;\r\n}\r\n\r\n.icon-text {\r\n overflow: hidden;\r\n white-space: nowrap;\r\n text-overflow: ellipsis;\r\n}","/** @license\r\n * Copyright 2021 Esri\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n\r\nimport { Component, Element, h, Host, Prop, VNode } from '@stencil/core';\r\nimport state from '../../utils/editStore';\r\n\r\nexport interface IItemShare {\r\n id: string;\r\n title: string;\r\n isShared: boolean;\r\n shareItem: boolean;\r\n type: string;\r\n typeKeywords: string[];\r\n}\r\n\r\n@Component({\r\n tag: 'solution-item-sharing',\r\n styleUrl: 'solution-item-sharing.css',\r\n shadow: true,\r\n})\r\nexport class SolutionItemSharing {\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Host element access\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n @Element() el: HTMLSolutionItemSharingElement;\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Properties (public)\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n /**\r\n * Contains the translations for this component.\r\n */\r\n @Prop({ mutable: true }) translations: any = {};\r\n\r\n /**\r\n * Contains the public value for this component.\r\n */\r\n @Prop({ mutable: true, reflect: true }) value: IItemShare[] = [];\r\n\r\n /**\r\n * Contains the public id for the group these items will be shared or un-shared with.\r\n */\r\n @Prop({ mutable: true, reflect: true }) groupId: string;\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Lifecycle\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n render() {\r\n return (\r\n <Host>\r\n <div class=\"container-border\">\r\n {this.renderItems(this.value)}\r\n </div>\r\n </Host>\r\n );\r\n }\r\n\r\n renderItems(\r\n objs: IItemShare[]\r\n ): VNode[] {\r\n return objs.length > 0 ? objs.map(item => {\r\n return (\r\n <calcite-label layout=\"inline\">\r\n <calcite-switch\r\n id={item.id}\r\n name=\"setting\"\r\n onCalciteSwitchChange={(event) => this._updateItem(event)}\r\n scale=\"m\"\r\n switched={item.shareItem}\r\n value=\"enabled\"\r\n />\r\n <solution-item-icon type={item.type} typeKeywords={item.typeKeywords} />\r\n <span class=\"icon-text\" title={item.title}>{item.title}</span>\r\n </calcite-label>\r\n );\r\n }) : null;\r\n }\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Variables (private)\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Event Listeners\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Events\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Public Methods (async)\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Private Methods\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n /**\r\n * Update the items share prop based on the switch state\r\n *\r\n * @param event onCalciteSwitchChange event\r\n */\r\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\r\n _updateItem(event): void {\r\n const id: string = event.target.id;\r\n this.value = this.value.map(item => {\r\n if (item.id === id) {\r\n // update the item\r\n item.shareItem = event.target.switched;\r\n // update the store\r\n if (state?.models[id]) {\r\n let shareInfo = undefined;\r\n if (item.isShared && !event.target.switched) {\r\n shareInfo = { type: \"unshare\", groupId: this.groupId };\r\n } else if (!item.isShared && event.target.switched) {\r\n shareInfo = { type: \"share\", groupId: this.groupId };\r\n }\r\n state.models[id].shareInfo = shareInfo;\r\n }\r\n }\r\n return item;\r\n });\r\n }\r\n}\r\n","/** @license\r\n * Copyright 2021 Esri\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n\r\n:host {\r\n display: block;\r\n}\r\n\r\n.container-border {\r\n overflow-y: auto;\r\n}\r\n\r\n.org-var-header {\r\n margin: 0rem 0rem 1rem 0rem;\r\n}","/** @license\r\n * Copyright 2021 Esri\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n\r\nimport { Component, Element, Event, EventEmitter, Host, h, Prop, VNode } from '@stencil/core';\r\n\r\nexport interface IOrganizationVariableItem {\r\n id: string;\r\n title: string;\r\n value: string;\r\n}\r\n\r\n@Component({\r\n tag: 'solution-organization-variables',\r\n styleUrl: 'solution-organization-variables.css',\r\n shadow: true,\r\n})\r\n\r\nexport class SolutionOrganizationVariables {\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Host element access\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n @Element() el: HTMLSolutionOrganizationVariablesElement;\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Properties (public)\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n /**\r\n * Contains the translations for this component.\r\n */\r\n @Prop({ mutable: true }) translations: any = {};\r\n\r\n /**\r\n * Contains the public value for this component.\r\n */\r\n @Prop({ mutable: true, reflect: true }) value: IOrganizationVariableItem[] = [];\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Lifecycle\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n render() {\r\n return (\r\n <Host>\r\n <div>\r\n <h4 class=\"org-var-header\">{this.translations.orgVariables}</h4>\r\n </div>\r\n <div class=\"container-border\">\r\n <calcite-label id=\"variable-label\">\r\n {this.renderHierarchy(this.value)}\r\n </calcite-label>\r\n </div>\r\n </Host>\r\n );\r\n }\r\n\r\n renderHierarchy(\r\n objs: IOrganizationVariableItem[]\r\n ): VNode[] {\r\n const hierarchy = objs.map(obj => {\r\n return (\r\n <calcite-tree-item onClick={() => this._treeItemSelected(obj.id, obj.value)}>\r\n {obj.title}\r\n </calcite-tree-item>\r\n );\r\n });\r\n return hierarchy;\r\n }\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Variables (private)\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Event Listeners\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Events\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n @Event() organizationVariableSelected: EventEmitter;\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Public Methods (async)\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Private Methods\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n /**\r\n * Publishes the `organizationVariableSelected` event containing `itemId`, the id of the selected variable and the value of the variable.\r\n *\r\n * @param itemId Item id as reported by click event\r\n * @param value Variable id as reported by click event\r\n */\r\n private _treeItemSelected(\r\n itemId: string,\r\n value: string\r\n ): void {\r\n this.organizationVariableSelected.emit({\r\n itemId,\r\n value\r\n });\r\n }\r\n\r\n}\r\n","/** @license\r\n * Copyright 2021 Esri\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n\r\n:host {\r\n display: block;\r\n}\r\n\r\n.resource-item {\r\n padding: 1rem;\r\n display: inline-block !important;\r\n}\r\n\r\n.resource-button {\r\n margin-right: 1rem;\r\n}\r\n\r\n.resource-button[dir=\"rtl\"] {\r\n margin-left: 1rem;\r\n}\r\n\r\n.display-none {\r\n display: none;\r\n}\r\n\r\n.resource-progress {\r\n padding-top: 1rem;\r\n}\r\n","/** @license\r\n * Copyright 2021 Esri\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n\r\nimport { Component, Element, Host, h, Prop, State, Watch } from '@stencil/core';\r\n\r\nexport interface IResourceItem {\r\n name: string,\r\n url: string\r\n}\r\n\r\n@Component({\r\n tag: 'solution-resource-item',\r\n styleUrl: 'solution-resource-item.css',\r\n shadow: true\r\n})\r\nexport class SolutionResourceItem {\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Host element access\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n @Element() el: HTMLSolutionResourceItemElement;\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Properties (public)\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n /**\r\n * Contains the translations for this component.\r\n */\r\n @Prop({ mutable: true }) translations: any = {};\r\n\r\n /**\r\n * Contains the public value for this component.\r\n */\r\n @Prop({ mutable: true, reflect: true }) value: IResourceItem = {\r\n name: \"\",\r\n url: \"\"\r\n };\r\n\r\n @State() fileName: string;\r\n\r\n @Watch('value')\r\n valueWatchHandler(v: IResourceItem, oldV: IResourceItem): void {\r\n this.fileName = v.name !== oldV.name ? v.name : this.fileName;\r\n }\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Lifecycle\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n componentWillLoad(): void {\r\n this.fileName = this.value.name;\r\n }\r\n\r\n render() {\r\n return (\r\n <Host>\r\n <div class=\"resource-item\">\r\n\r\n <input\r\n accept=\".zip\"\r\n class=\"display-none\"\r\n onChange={(event) => (this._updateFile(event))}\r\n ref={(el) => (this.browseForFile = el)}\r\n type=\"file\"\r\n />\r\n\r\n <a class=\"display-none\" download href={this.value.url} ref={(el) => (this.downloadFile = el)} />\r\n\r\n <calcite-label>\r\n {this.fileName}\r\n </calcite-label>\r\n\r\n {/* <calcite-progress\r\n class=\"display-none resource-progress\"\r\n ref={(el) => (this.uploadProgress = el)}\r\n type=\"indeterminate\"\r\n ></calcite-progress> */}\r\n\r\n <calcite-button\r\n appearance=\"solid\"\r\n class=\"resource-button\"\r\n color=\"blue\"\r\n icon-start=\"download\"\r\n onClick={() => this._downloadItem()}\r\n scale=\"m\"\r\n >\r\n {this.translations.download}\r\n </calcite-button>\r\n\r\n <calcite-button\r\n appearance=\"solid\"\r\n class=\"resource-button\"\r\n color=\"blue\"\r\n icon-start=\"upload\"\r\n onClick={() => this._updateItem()}\r\n scale=\"m\"\r\n >\r\n {this.translations.update}\r\n </calcite-button>\r\n\r\n </div>\r\n </Host>\r\n );\r\n }\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Variables (private)\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n /**\r\n * Handle to the element for browsing for a file.\r\n */\r\n private browseForFile: HTMLInputElement;\r\n\r\n /**\r\n * Handle to the element for downloading a file.\r\n */\r\n private downloadFile: HTMLAnchorElement;\r\n\r\n /**\r\n * Handle to the progress element to show during upload/download\r\n */\r\n //private uploadProgress: HTMLCalciteProgressElement;\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Event Listeners\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Events\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Public Methods (async)\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Private Methods\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n /**\r\n * Download file from url.\r\n *\r\n */\r\n _downloadItem(): void {\r\n this.downloadFile.click();\r\n }\r\n\r\n /**\r\n * Opens file browse dialog.\r\n *\r\n */\r\n _updateItem(): void {\r\n this.browseForFile.click();\r\n }\r\n\r\n /**\r\n * Gets and displays image result from browse.\r\n *\r\n */\r\n private _updateFile(\r\n event: any\r\n ): void {\r\n // progress goes so fast this may not be necessary\r\n //this.uploadProgress.classList.remove('display-none');\r\n const files = event.currentTarget.files;\r\n if (files && files[0]) {\r\n const name: string = files[0].name;\r\n const reader = new FileReader();\r\n reader.onloadend = (r) => {\r\n this.value = {\r\n name,\r\n url: typeof(r.target.result) === \"string\" ? r.target.result : \"\"\r\n };\r\n //this.uploadProgress.classList.add('display-none');\r\n }\r\n reader.readAsDataURL(files[0]);\r\n } else {\r\n //this.uploadProgress.classList.add('display-none');\r\n }\r\n }\r\n}\r\n","/** @license\r\n * Copyright 2021 Esri\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n\r\n:host {\r\n display: flexbox;\r\n}\r\n\r\n.solution-data-container {\r\n height: 100%;\r\n max-width: 100%;\r\n position: relative;\r\n}\r\n\r\n.solution-data-child-container {\r\n height: 100%;\r\n width: 100%;\r\n display: flex;\r\n flex-direction: column;\r\n overflow: auto;\r\n}\r\n\r\n.solution-data-child-container-collapsed {\r\n height: 100%;\r\n width: 50px;\r\n display: flex;\r\n flex-direction: column;\r\n overflow: auto;\r\n}\r\n\r\n.inputBottomSeparation {\r\n margin: 0 0 1.5rem 0;\r\n}\r\n\r\n.json-editor {\r\n width: -webkit-fill-available;\r\n margin: 1rem;\r\n}\r\n\r\n.collapse-btn {\r\n padding: 1rem 1rem 0 1rem;\r\n}\r\n\r\n.org-vars {\r\n padding: 1rem 1rem 0 1rem;\r\n max-height: 45%;\r\n}\r\n\r\n.sol-vars {\r\n padding: 0 1rem 0 1rem;\r\n min-height: 45%;\r\n}\r\n\r\n.padding-1 {\r\n padding: 1rem;\r\n}\r\n\r\n.light {\r\n background-color: #F4F4F4;\r\n}\r\n\r\n.hide {\r\n display: none;\r\n}\r\n","/** @license\r\n * Copyright 2021 Esri\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n\r\nimport { VNode } from '@esri/calcite-components/dist/types/stencil-public-runtime';\r\nimport { Component, Element, Host, h, Prop } from '@stencil/core';\r\nimport { IOrganizationVariableItem } from '../solution-organization-variables/solution-organization-variables';\r\nimport { IVariableItem } from '../solution-variables/solution-variables';\r\nimport { IResourceItem } from '../solution-resource-item/solution-resource-item';\r\n\r\nexport interface ITemplateData {\r\n resourceItem?: IResourceItem,\r\n value?: any\r\n}\r\n\r\n@Component({\r\n tag: 'solution-template-data',\r\n styleUrl: 'solution-template-data.css',\r\n shadow: false\r\n})\r\n\r\nexport class SolutionTemplateData {\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Host element access\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n @Element() el: HTMLSolutionTemplateDataElement;\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Properties (public)\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n /**\r\n * Contains the translations for this component.\r\n */\r\n @Prop({ mutable: true }) translations: any = {};\r\n\r\n /**\r\n * Contains the public value for this component.\r\n * \r\n * When working with a resource item this should contain an IResourceItem\r\n * \r\n * When working with a json type item this should contain the data and vars\r\n */\r\n @Prop({ mutable: true, reflect: true }) value: ITemplateData = {};\r\n\r\n /**\r\n * Should be set to true for items that store their data as a resource\r\n * Will allow for upload and download of the resource\r\n */\r\n @Prop({ mutable: true }) isResource = false;\r\n\r\n /**\r\n * This needs to be unique for props vs data of an item\r\n */\r\n @Prop({ mutable: true, reflect: true }) instanceid = \"\";\r\n\r\n /**\r\n * A templates itemId.\r\n * This is used to get the correct model from a store in the json-editor\r\n */\r\n @Prop({ mutable: true, reflect: true }) itemid = \"\";\r\n\r\n /**\r\n * Contains the solution based variables\r\n */\r\n @Prop({mutable: true, reflect: true}) solutionVariables: IVariableItem[] = [];\r\n\r\n /**\r\n * Contains the organization based variables\r\n */\r\n @Prop({mutable: true, reflect: true}) organizationVariables: IOrganizationVariableItem[] = [];\r\n\r\n /**\r\n * Used to show/hide the variable containers\r\n */\r\n @Prop({mutable: true, reflect: true}) varsOpen = true;\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Lifecycle\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n render() {\r\n return (\r\n <Host>\r\n <div class=\"solution-data-container\">\r\n {this.renderTemplateData(this.value)}\r\n </div>\r\n </Host>\r\n );\r\n }\r\n\r\n renderTemplateData(data: ITemplateData): VNode {\r\n return this.isResource ? this._resourceData(data) : this._jsonData();\r\n }\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Event Listeners\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Events\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Public Methods (async)\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Private Methods\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n _jsonData(): any {\r\n return <calcite-shell class=\"light var-container\" dir=\"ltr\">\r\n <calcite-panel class=\"json-editor\">\r\n <div class=\"solution-data-child-container calcite-match-height\">\r\n <json-editor\r\n instanceid={this.instanceid}\r\n translations={this.translations}\r\n value={this.itemid}\r\n />\r\n </div>\r\n </calcite-panel>\r\n\r\n <calcite-shell-panel height-scale=\"l\" position=\"end\" slot=\"contextual-panel\" width-scale=\"xs\">\r\n <div class={this.varsOpen ? \"solution-data-child-container\" : \"solution-data-child-container-collapsed\"}>\r\n <calcite-button\r\n appearance=\"transparent\"\r\n class=\"collapse-btn\"\r\n icon-start={this.varsOpen ? \"chevrons-right\" : \"chevrons-left\"}\r\n id=\"collapse-vars\"\r\n onClick={() => this._toggleVars()}\r\n scale=\"s\"\r\n title={this.translations.cancelEdits}\r\n />\r\n <div class={this.varsOpen ? \"org-vars\" : \"org-vars hide\"} id=\"orgVars\">\r\n <solution-organization-variables\r\n translations={this.translations}\r\n value={this.organizationVariables}\r\n />\r\n </div>\r\n <div class={this.varsOpen ? \"sol-vars\" : \"sol-vars hide\"} id=\"solVars\">\r\n <solution-variables\r\n translations={this.translations}\r\n value={this.solutionVariables}\r\n />\r\n </div>\r\n </div>\r\n </calcite-shell-panel>\r\n </calcite-shell>;\r\n }\r\n\r\n _resourceData(templateData: ITemplateData): any {\r\n return <solution-resource-item translations={this.translations} value={templateData.resourceItem} />;\r\n }\r\n\r\n /**\r\n * Toggle varsOpen prop to show/hide variable containers\r\n */\r\n _toggleVars(): void {\r\n this.varsOpen = !this.varsOpen;\r\n }\r\n}\r\n","/** @license\r\n * Copyright 2021 Esri\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n\r\n:host {\r\n display: block;\r\n}\r\n\r\n.container-border {\r\n overflow-y: auto;\r\n}\r\n\r\n.org-var-header {\r\n margin: 1rem 0rem 1rem 0rem;\r\n}\r\n\r\n.icon-text {\r\n overflow: hidden;\r\n white-space: nowrap;\r\n text-overflow: ellipsis;\r\n}","/** @license\r\n * Copyright 2021 Esri\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n\r\nimport { Component, Element, Event, EventEmitter, Host, h, Prop, VNode } from '@stencil/core';\r\n\r\nexport interface IVariableItem {\r\n id: string;\r\n title: string;\r\n type?: string;\r\n value: string;\r\n dependencies?: IVariableItem[];\r\n}\r\n\r\n@Component({\r\n tag: 'solution-variables',\r\n styleUrl: 'solution-variables.css',\r\n shadow: true,\r\n})\r\nexport class SolutionVariables {\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Host element access\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n @Element() el: HTMLSolutionVariablesElement;\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Properties (public)\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n /**\r\n * Contains the translations for this component.\r\n */\r\n @Prop({ mutable: true }) translations: any = {};\r\n\r\n /**\r\n * Contains the public value for this component.\r\n */\r\n @Prop({ mutable: true, reflect: true }) value: IVariableItem[] = [];\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Lifecycle\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n render() {\r\n return (\r\n <Host>\r\n <div>\r\n <h4 class=\"org-var-header\">{this.translations.solVariables}</h4>\r\n </div>\r\n <div class=\"container-border\">\r\n <calcite-label id=\"variable-label\">\r\n {this.renderHierarchy(this.value)}\r\n </calcite-label>\r\n </div>\r\n </Host>\r\n );\r\n }\r\n\r\n renderHierarchy(\r\n objs: IVariableItem[]\r\n ): VNode[] {\r\n const hierarchy = objs.map(obj => {\r\n return obj.dependencies && obj.dependencies.length > 0 ? (\r\n <calcite-tree-item>\r\n <solution-item-icon type={obj.type} />\r\n <span class=\"icon-text\" title={obj.title}>{obj.title}</span>\r\n <calcite-tree slot=\"children\">\r\n {this.renderHierarchy(obj.dependencies)}\r\n </calcite-tree>\r\n </calcite-tree-item>\r\n ) : (\r\n <calcite-tree-item onClick={() => this._treeItemSelected(obj.id, obj.value)}>\r\n {obj.title}\r\n </calcite-tree-item>\r\n );\r\n });\r\n return hierarchy;\r\n }\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Variables (private)\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Event Listeners\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Events\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n @Event() solutionVariableSelected: EventEmitter;\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Public Methods (async)\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Private Methods\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n /**\r\n * Publishes the `solutionVariableSelected` event containing `itemId`, the id of the selected variable and the value of the variable.\r\n *\r\n * @param id Item id as reported by click event\r\n * @param value Variable id as reported by click event\r\n */\r\n private _treeItemSelected(\r\n id: string,\r\n value: string\r\n ): void {\r\n this.solutionVariableSelected.emit({\r\n itemId: id,\r\n value\r\n });\r\n }\r\n\r\n}\r\n"]}