@esri/solutions-components 0.2.2 → 0.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/t9n/solution-config-modal/resources.json +22 -0
- package/dist/assets/t9n/solution-config-modal/resources_en.json +22 -0
- package/dist/cjs/calcite-action-menu_2.cjs.entry.js +18 -401
- package/dist/cjs/calcite-action-menu_2.cjs.entry.js.map +1 -1
- package/dist/cjs/calcite-action_2.cjs.entry.js +423 -71
- package/dist/cjs/calcite-action_2.cjs.entry.js.map +1 -1
- package/dist/cjs/calcite-loader.cjs.entry.js +97 -0
- package/dist/cjs/calcite-loader.cjs.entry.js.map +1 -0
- package/dist/cjs/{solution-configuration.cjs.entry.js → calcite-modal_2.cjs.entry.js} +451 -13
- package/dist/cjs/calcite-modal_2.cjs.entry.js.map +1 -0
- package/dist/cjs/{calcite-shell-panel_14.cjs.entry.js → calcite-panel_12.cjs.entry.js} +455 -709
- package/dist/cjs/calcite-panel_12.cjs.entry.js.map +1 -0
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/solution-config-modal.cjs.entry.js +131 -0
- package/dist/cjs/solution-config-modal.cjs.entry.js.map +1 -0
- package/dist/cjs/{solution-contents_3.cjs.entry.js → solution-contents_7.cjs.entry.js} +664 -5
- package/dist/cjs/solution-contents_7.cjs.entry.js.map +1 -0
- package/dist/cjs/{solution-store-893499a5.js → solution-store-09b3fc53.js} +4 -6
- package/dist/cjs/solution-store-09b3fc53.js.map +1 -0
- package/dist/cjs/solutions-components.cjs.js +1 -1
- package/dist/collection/collection-manifest.json +1 -0
- package/dist/collection/components/solution-config-modal/solution-config-modal.css +91 -0
- package/dist/collection/components/solution-config-modal/solution-config-modal.js +245 -0
- package/dist/collection/components/solution-config-modal/solution-config-modal.js.map +1 -0
- package/dist/collection/components/solution-configuration/solution-configuration.js +23 -17
- package/dist/collection/components/solution-configuration/solution-configuration.js.map +1 -1
- package/dist/collection/components/solution-item/solution-item.js +0 -2
- package/dist/collection/components/solution-item/solution-item.js.map +1 -1
- package/dist/collection/components/solution-item-details/solution-item-details.js +0 -13
- package/dist/collection/components/solution-item-details/solution-item-details.js.map +1 -1
- package/dist/collection/utils/solution-store.js +3 -5
- package/dist/collection/utils/solution-store.js.map +1 -1
- package/dist/collection/utils/solution-store.ts +3 -5
- package/dist/esm/buffer-tools_6.entry.js +2 -2
- package/dist/esm/calcite-action-bar_6.entry.js +2 -2
- package/dist/esm/calcite-action-menu_2.entry.js +20 -403
- package/dist/esm/calcite-action-menu_2.entry.js.map +1 -1
- package/dist/esm/calcite-action_2.entry.js +424 -72
- package/dist/esm/calcite-action_2.entry.js.map +1 -1
- package/dist/esm/calcite-combobox_3.entry.js +2 -2
- package/dist/esm/calcite-loader.entry.js +93 -0
- package/dist/esm/calcite-loader.entry.js.map +1 -0
- package/dist/esm/{solution-configuration.entry.js → calcite-modal_2.entry.js} +453 -16
- package/dist/esm/calcite-modal_2.entry.js.map +1 -0
- package/dist/esm/{calcite-shell-panel_14.entry.js → calcite-panel_12.entry.js} +454 -706
- package/dist/esm/calcite-panel_12.entry.js.map +1 -0
- package/dist/esm/config-layer-picker.entry.js +2 -2
- package/dist/esm/{interfaces-e2a2064d.js → interfaces-1bdfc3a8.js} +2 -2
- package/dist/esm/{interfaces-e2a2064d.js.map → interfaces-1bdfc3a8.js.map} +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/{mapViewUtils-09f1e7bd.js → mapViewUtils-809947c8.js} +2 -2
- package/dist/esm/{mapViewUtils-09f1e7bd.js.map → mapViewUtils-809947c8.js.map} +1 -1
- package/dist/esm/public-notification.entry.js +2 -2
- package/dist/esm/solution-config-modal.entry.js +127 -0
- package/dist/esm/solution-config-modal.entry.js.map +1 -0
- package/dist/esm/{solution-contents_3.entry.js → solution-contents_7.entry.js} +661 -6
- package/dist/esm/solution-contents_7.entry.js.map +1 -0
- package/dist/esm/{solution-store-0c58c852.js → solution-store-d8519c64.js} +5 -7
- package/dist/esm/solution-store-d8519c64.js.map +1 -0
- package/dist/esm/solutions-components.js +1 -1
- package/dist/solutions-components/{p-be1ed982.entry.js → p-11068040.entry.js} +3 -3
- package/dist/solutions-components/{p-be1ed982.entry.js.map → p-11068040.entry.js.map} +0 -0
- package/dist/solutions-components/{p-659edb14.js → p-2910dd9e.js} +5 -7
- package/dist/{cjs/solution-store-893499a5.js.map → solutions-components/p-2910dd9e.js.map} +1 -1
- package/dist/solutions-components/{p-291fd295.entry.js → p-30810b45.entry.js} +3 -3
- package/dist/solutions-components/{p-291fd295.entry.js.map → p-30810b45.entry.js.map} +0 -0
- package/dist/solutions-components/p-38ddadf2.entry.js +342 -0
- package/dist/solutions-components/p-38ddadf2.entry.js.map +1 -0
- package/dist/solutions-components/{p-77c75f3a.entry.js → p-5b20090f.entry.js} +661 -6
- package/dist/solutions-components/p-5b20090f.entry.js.map +1 -0
- package/dist/solutions-components/{p-9393631c.entry.js → p-9ef1328a.entry.js} +3 -3
- package/dist/solutions-components/{p-9393631c.entry.js.map → p-9ef1328a.entry.js.map} +0 -0
- package/dist/solutions-components/{p-984cb687.entry.js → p-a1786d11.entry.js} +454 -706
- package/dist/solutions-components/p-a1786d11.entry.js.map +1 -0
- package/dist/solutions-components/{p-fe0fdd8b.js → p-c20bd963.js} +2 -2
- package/dist/solutions-components/{p-fe0fdd8b.js.map → p-c20bd963.js.map} +1 -1
- package/dist/solutions-components/p-c5721b0f.entry.js +127 -0
- package/dist/solutions-components/p-c5721b0f.entry.js.map +1 -0
- package/dist/solutions-components/{p-24d75151.entry.js → p-c818e661.entry.js} +3 -3
- package/dist/solutions-components/{p-24d75151.entry.js.map → p-c818e661.entry.js.map} +0 -0
- package/dist/solutions-components/{p-90629c1d.entry.js → p-cf59eb16.entry.js} +453 -16
- package/dist/solutions-components/p-cf59eb16.entry.js.map +1 -0
- package/dist/solutions-components/p-e405ebe8.entry.js +93 -0
- package/dist/solutions-components/p-e405ebe8.entry.js.map +1 -0
- package/dist/solutions-components/{p-77e6b03c.entry.js → p-e6fb9cde.entry.js} +3 -3
- package/dist/solutions-components/{p-77e6b03c.entry.js.map → p-e6fb9cde.entry.js.map} +0 -0
- package/dist/solutions-components/{p-97c4a268.entry.js → p-ef6f9e24.entry.js} +113 -229
- package/dist/solutions-components/p-ef6f9e24.entry.js.map +1 -0
- package/dist/solutions-components/{p-6b9dc092.js → p-f04fdb9a.js} +2 -2
- package/dist/solutions-components/{p-6b9dc092.js.map → p-f04fdb9a.js.map} +1 -1
- package/dist/solutions-components/solutions-components.esm.js +1 -1
- package/dist/solutions-components/utils/solution-store.ts +3 -5
- package/dist/solutions-components_commit.txt +8 -8
- package/dist/types/components/solution-config-modal/solution-config-modal.d.ts +69 -0
- package/dist/types/components/solution-configuration/solution-configuration.d.ts +4 -2
- package/dist/types/components/solution-item-details/solution-item-details.d.ts +0 -1
- package/dist/types/components.d.ts +43 -5
- package/dist/types/preact.d.ts +4 -0
- package/package.json +1 -1
- package/dist/cjs/calcite-modal.cjs.entry.js +0 -449
- package/dist/cjs/calcite-modal.cjs.entry.js.map +0 -1
- package/dist/cjs/calcite-panel_2.cjs.entry.js +0 -439
- package/dist/cjs/calcite-panel_2.cjs.entry.js.map +0 -1
- package/dist/cjs/calcite-scrim.cjs.entry.js +0 -64
- package/dist/cjs/calcite-scrim.cjs.entry.js.map +0 -1
- package/dist/cjs/calcite-shell-panel_14.cjs.entry.js.map +0 -1
- package/dist/cjs/solution-configuration.cjs.entry.js.map +0 -1
- package/dist/cjs/solution-contents_3.cjs.entry.js.map +0 -1
- package/dist/esm/calcite-modal.entry.js +0 -445
- package/dist/esm/calcite-modal.entry.js.map +0 -1
- package/dist/esm/calcite-panel_2.entry.js +0 -434
- package/dist/esm/calcite-panel_2.entry.js.map +0 -1
- package/dist/esm/calcite-scrim.entry.js +0 -60
- package/dist/esm/calcite-scrim.entry.js.map +0 -1
- package/dist/esm/calcite-shell-panel_14.entry.js.map +0 -1
- package/dist/esm/solution-configuration.entry.js.map +0 -1
- package/dist/esm/solution-contents_3.entry.js.map +0 -1
- package/dist/esm/solution-store-0c58c852.js.map +0 -1
- package/dist/solutions-components/p-0fda7d9e.entry.js +0 -434
- package/dist/solutions-components/p-0fda7d9e.entry.js.map +0 -1
- package/dist/solutions-components/p-2ff754ce.entry.js +0 -257
- package/dist/solutions-components/p-2ff754ce.entry.js.map +0 -1
- package/dist/solutions-components/p-30a6199a.entry.js +0 -445
- package/dist/solutions-components/p-30a6199a.entry.js.map +0 -1
- package/dist/solutions-components/p-659edb14.js.map +0 -1
- package/dist/solutions-components/p-77c75f3a.entry.js.map +0 -1
- package/dist/solutions-components/p-90629c1d.entry.js.map +0 -1
- package/dist/solutions-components/p-97c4a268.entry.js.map +0 -1
- package/dist/solutions-components/p-984cb687.entry.js.map +0 -1
- package/dist/solutions-components/p-f5268b4f.entry.js +0 -60
- package/dist/solutions-components/p-f5268b4f.entry.js.map +0 -1
@@ -1 +0,0 @@
|
|
1
|
-
{"file":"calcite-shell-panel.calcite-tab.calcite-tab-nav.calcite-tab-title.calcite-tabs.calcite-value-list.calcite-value-list-item.json-editor.solution-item-details.solution-item-sharing.solution-organization-variables.solution-resource-item.solution-template-data.solution-variables.entry.cjs.js","mappings":"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","names":["CSS","SLOTS","getElementDir","isPrimaryPointerButton","connectConditionalSlotComponent","disconnectConditionalSlotComponent","getSlotted","h","clamp","forceUpdate","guid","Host","nodeListToArray","createObserver","filterDirectChildren","getElementProp","toAriaBoolean","updateHostInteraction","Fragment","getItemIndex","mutationObserverCallback","deselectRemovedItems","deselectSiblingItems","selectSiblings","handleFilter","getItemData","keyDownHandler","moveItemIndex","initialize","initializeObserver","cleanUpObserver","calciteListFocusOutHandler","removeItem","calciteListItemChangeHandler","calciteInternalListItemValueChangeHandler","setUpItems","Sortable","setFocus","List","PICK_LIST_SLOTS","ICON_TYPES","getLocaleComponentStrings","state","EFileType","EUpdateType"],"sources":["./node_modules/@esri/calcite-components/dist/collection/components/shell-panel/resources.js","./node_modules/@esri/calcite-components/dist/collection/components/shell-panel/shell-panel.css?tag=calcite-shell-panel&encapsulation=shadow","./node_modules/@esri/calcite-components/dist/collection/components/shell-panel/shell-panel.js","./node_modules/@esri/calcite-components/dist/collection/components/tab/tab.css?tag=calcite-tab&encapsulation=shadow","./node_modules/@esri/calcite-components/dist/collection/components/tab/tab.js","./node_modules/@esri/calcite-components/dist/collection/components/tab-nav/tab-nav.css?tag=calcite-tab-nav&encapsulation=shadow","./node_modules/@esri/calcite-components/dist/collection/components/tab-nav/tab-nav.js","./node_modules/@esri/calcite-components/dist/collection/components/tab-title/tab-title.css?tag=calcite-tab-title&encapsulation=shadow","./node_modules/@esri/calcite-components/dist/collection/components/tab-title/tab-title.js","./node_modules/@esri/calcite-components/dist/collection/components/tabs/resources.js","./node_modules/@esri/calcite-components/dist/collection/components/tabs/tabs.css?tag=calcite-tabs&encapsulation=shadow","./node_modules/@esri/calcite-components/dist/collection/components/tabs/tabs.js","./node_modules/@esri/calcite-components/dist/collection/components/value-list/resources.js","./node_modules/@esri/calcite-components/dist/collection/components/value-list/utils.js","./node_modules/@esri/calcite-components/dist/collection/components/value-list/value-list.css?tag=calcite-value-list&encapsulation=shadow","./node_modules/@esri/calcite-components/dist/collection/components/value-list/value-list.js","./node_modules/@esri/calcite-components/dist/collection/components/value-list-item/resources.js","./node_modules/@esri/calcite-components/dist/collection/components/value-list-item/value-list-item.css?tag=calcite-value-list-item&encapsulation=shadow","./node_modules/@esri/calcite-components/dist/collection/components/value-list-item/value-list-item.js","./src/components/json-editor/json-editor.scss?tag=json-editor","./src/components/json-editor/json-editor.tsx","./src/components/solution-item-details/solution-item-details.scss?tag=solution-item-details","./src/components/solution-item-details/solution-item-details.tsx","./src/components/solution-item-sharing/solution-item-sharing.scss?tag=solution-item-sharing&encapsulation=shadow","./src/components/solution-item-sharing/solution-item-sharing.tsx","./src/components/solution-organization-variables/solution-organization-variables.scss?tag=solution-organization-variables&encapsulation=shadow","./src/components/solution-organization-variables/solution-organization-variables.tsx","./src/components/solution-resource-item/solution-resource-item.scss?tag=solution-resource-item&encapsulation=shadow","./src/components/solution-resource-item/solution-resource-item.tsx","./src/components/solution-template-data/solution-template-data.scss?tag=solution-template-data","./src/components/solution-template-data/solution-template-data.tsx","./src/components/solution-variables/solution-variables.scss?tag=solution-variables&encapsulation=shadow","./src/components/solution-variables/solution-variables.tsx"],"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 * v1.0.0-beta.97\n */\nexport const CSS = {\n container: \"container\",\n content: \"content\",\n contentHeader: \"content__header\",\n contentBody: \"content__body\",\n contentDetached: \"content--detached\",\n separator: \"separator\"\n};\nexport const SLOTS = {\n actionBar: \"action-bar\",\n header: \"header\"\n};\nexport const TEXT = {\n resize: \"Resize\"\n};\n","/* mixins & extensions */\n@keyframes in {\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n}\n@keyframes in-down {\n 0% {\n opacity: 0;\n transform: translate3D(0, -5px, 0);\n }\n 100% {\n opacity: 1;\n transform: translate3D(0, 0, 0);\n }\n}\n@keyframes in-up {\n 0% {\n opacity: 0;\n transform: translate3D(0, 5px, 0);\n }\n 100% {\n opacity: 1;\n transform: translate3D(0, 0, 0);\n }\n}\n@keyframes in-scale {\n 0% {\n opacity: 0;\n transform: scale3D(0.95, 0.95, 1);\n }\n 100% {\n opacity: 1;\n transform: scale3D(1, 1, 1);\n }\n}\n:root {\n --calcite-animation-timing: calc(150ms * var(--calcite-internal-duration-factor));\n --calcite-internal-duration-factor: var(--calcite-duration-factor, 1);\n --calcite-internal-animation-timing-fast: calc(100ms * var(--calcite-internal-duration-factor));\n --calcite-internal-animation-timing-medium: calc(200ms * var(--calcite-internal-duration-factor));\n --calcite-internal-animation-timing-slow: calc(300ms * var(--calcite-internal-duration-factor));\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@media (prefers-reduced-motion: reduce) {\n :root {\n --calcite-internal-duration-factor: 0.01;\n }\n}\n/**\n* Currently only used in Checkbox.\n*/\n:root {\n --calcite-floating-ui-transition: var(--calcite-animation-timing);\n}\n\n:host([hidden]) {\n display: none;\n}\n\n:host {\n pointer-events: none;\n display: flex;\n flex: 0 1 auto;\n align-items: stretch;\n --calcite-shell-panel-detached-max-height: unset;\n}\n\n.container {\n pointer-events: none;\n box-sizing: border-box;\n display: flex;\n flex: 1 1 auto;\n align-items: stretch;\n background-color: transparent;\n font-size: var(--calcite-font-size--1);\n color: var(--calcite-ui-text-2);\n}\n.container * {\n box-sizing: border-box;\n}\n\n:host(:hover) .separator:not(:hover):not(:focus), \n:host(:focus-within) .separator:not(:hover):not(:focus) {\n opacity: 1;\n background-color: var(--calcite-ui-border-3);\n}\n\n.separator {\n pointer-events: auto;\n position: absolute;\n inset-block: 0px;\n display: flex;\n block-size: 100%;\n inline-size: 0.125rem;\n background-color: transparent;\n opacity: 0;\n transition: all var(--calcite-animation-timing) ease-in-out 0s, outline 0s, outline-offset 0s;\n cursor: col-resize;\n outline: none;\n}\n.separator:hover {\n opacity: 1;\n background-color: var(--calcite-ui-border-2);\n}\n.separator:focus {\n background-color: var(--calcite-ui-brand);\n opacity: 1;\n}\n\n:host([position=start]) .separator {\n inset-inline-end: -2px;\n}\n\n:host([position=end]) .separator {\n inset-inline-start: -2px;\n}\n\n::slotted(calcite-panel), \n::slotted(calcite-flow) {\n block-size: 100%;\n inline-size: 100%;\n flex: 1 1 auto;\n max-block-size: unset;\n max-inline-size: unset;\n}\n\n::slotted(.calcite-match-height) {\n display: flex;\n flex: 1 1 auto;\n overflow: hidden;\n}\n\n.content {\n pointer-events: auto;\n display: flex;\n flex-direction: column;\n flex-wrap: nowrap;\n align-items: stretch;\n align-self: stretch;\n background-color: var(--calcite-ui-background);\n padding: 0px;\n inline-size: var(--calcite-shell-panel-width);\n max-inline-size: var(--calcite-shell-panel-max-width);\n min-inline-size: var(--calcite-shell-panel-min-width);\n transition: max-block-size var(--calcite-animation-timing), max-inline-size var(--calcite-animation-timing);\n}\n\n.content__header {\n display: flex;\n flex: 0 1 auto;\n flex-direction: column;\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 margin-inline: 0.5rem;\n margin-block: 0.5rem auto;\n block-size: auto;\n overflow: hidden;\n border-radius: 0.25rem;\n --tw-shadow: 0 4px 8px -1px rgba(0, 0, 0, 0.08), 0 2px 4px -1px rgba(0, 0, 0, 0.04);\n --tw-shadow-colored: 0 4px 8px -1px var(--tw-shadow-color), 0 2px 4px -1px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n max-block-size: var(--calcite-shell-panel-detached-max-height);\n}\n.content--detached ::slotted(calcite-panel),\n.content--detached ::slotted(calcite-flow) {\n max-block-size: 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:not([dismissed])) {\n border-width: 1px;\n border-style: solid;\n border-color: var(--calcite-ui-border-3);\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 * v1.0.0-beta.97\n */\nimport { h, forceUpdate } from \"@stencil/core\";\nimport { CSS, SLOTS, TEXT } from \"./resources\";\nimport { getSlotted, getElementDir, isPrimaryPointerButton } from \"../../utils/dom\";\nimport { clamp } from \"../../utils/math\";\nimport { connectConditionalSlotComponent, disconnectConditionalSlotComponent } from \"../../utils/conditionalSlot\";\n/**\n * @slot - A slot for adding content to the component.\n * @slot action-bar - A slot for adding a `calcite-action-bar` to the component.\n */\nexport class ShellPanel {\n constructor() {\n // --------------------------------------------------------------------------\n //\n // Properties\n //\n // --------------------------------------------------------------------------\n /**\n * When `true`, hides the component's content area.\n */\n this.collapsed = false;\n /**\n * When `true`, the content area displays like a floating panel.\n */\n this.detached = false;\n /**\n * When `detached`, specifies the maximum height of the component.\n */\n this.detachedHeightScale = \"l\";\n /**\n * Specifies the width of the component's content area.\n */\n this.widthScale = \"m\";\n /**\n * Accessible name for the resize separator.\n *\n * @default \"Resize\"\n */\n this.intlResize = TEXT.resize;\n /**\n * When `true` and not `detached`, the component's content area is resizable.\n */\n this.resizable = false;\n this.contentWidth = null;\n this.initialContentWidth = null;\n this.initialClientX = null;\n this.contentWidthMax = null;\n this.contentWidthMin = null;\n this.step = 1;\n this.stepMultiplier = 10;\n this.storeContentEl = (contentEl) => {\n this.contentEl = contentEl;\n };\n this.getKeyAdjustedWidth = (event) => {\n const { key } = event;\n const { el, step, stepMultiplier, contentWidthMin, contentWidthMax, initialContentWidth, position } = this;\n const multipliedStep = step * stepMultiplier;\n const MOVEMENT_KEYS = [\n \"ArrowUp\",\n \"ArrowDown\",\n \"ArrowLeft\",\n \"ArrowRight\",\n \"Home\",\n \"End\",\n \"PageUp\",\n \"PageDown\"\n ];\n if (MOVEMENT_KEYS.indexOf(key) > -1) {\n event.preventDefault();\n }\n const dir = getElementDir(el);\n const directionKeys = [\"ArrowLeft\", \"ArrowRight\"];\n const directionFactor = dir === \"rtl\" && directionKeys.includes(key) ? -1 : 1;\n const increaseKeys = key === \"ArrowUp\" ||\n (position === \"end\" ? key === directionKeys[0] : key === directionKeys[1]);\n if (increaseKeys) {\n const stepValue = event.shiftKey ? multipliedStep : step;\n return initialContentWidth + directionFactor * stepValue;\n }\n const decreaseKeys = key === \"ArrowDown\" ||\n (position === \"end\" ? key === directionKeys[1] : key === directionKeys[0]);\n if (decreaseKeys) {\n const stepValue = event.shiftKey ? multipliedStep : step;\n return initialContentWidth - directionFactor * stepValue;\n }\n if (typeof contentWidthMin === \"number\" && key === \"Home\") {\n return contentWidthMin;\n }\n if (typeof contentWidthMax === \"number\" && key === \"End\") {\n return contentWidthMax;\n }\n if (key === \"PageDown\") {\n return initialContentWidth - multipliedStep;\n }\n if (key === \"PageUp\") {\n return initialContentWidth + multipliedStep;\n }\n return null;\n };\n this.separatorKeyDown = (event) => {\n this.setInitialContentWidth();\n const width = this.getKeyAdjustedWidth(event);\n if (typeof width === \"number\") {\n this.setContentWidth(width);\n }\n };\n this.separatorPointerMove = (event) => {\n event.preventDefault();\n const { el, initialContentWidth, position, initialClientX } = this;\n const offset = event.clientX - initialClientX;\n const dir = getElementDir(el);\n const adjustmentDirection = dir === \"rtl\" ? -1 : 1;\n const adjustedOffset = position === \"end\" ? -adjustmentDirection * offset : adjustmentDirection * offset;\n const width = initialContentWidth + adjustedOffset;\n this.setContentWidth(width);\n };\n this.separatorPointerUp = (event) => {\n if (!isPrimaryPointerButton(event)) {\n return;\n }\n event.preventDefault();\n document.removeEventListener(\"pointerup\", this.separatorPointerUp);\n document.removeEventListener(\"pointermove\", this.separatorPointerMove);\n };\n this.setInitialContentWidth = () => {\n var _a;\n this.initialContentWidth = (_a = this.contentEl) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect().width;\n };\n this.separatorPointerDown = (event) => {\n if (!isPrimaryPointerButton(event)) {\n return;\n }\n event.preventDefault();\n const { separatorEl } = this;\n separatorEl && document.activeElement !== separatorEl && separatorEl.focus();\n this.setInitialContentWidth();\n this.initialClientX = event.clientX;\n document.addEventListener(\"pointerup\", this.separatorPointerUp);\n document.addEventListener(\"pointermove\", this.separatorPointerMove);\n };\n this.connectSeparator = (separatorEl) => {\n this.disconnectSeparator();\n this.separatorEl = separatorEl;\n separatorEl.addEventListener(\"pointerdown\", this.separatorPointerDown);\n };\n this.disconnectSeparator = () => {\n var _a;\n (_a = this.separatorEl) === null || _a === void 0 ? void 0 : _a.removeEventListener(\"pointerdown\", this.separatorPointerDown);\n };\n }\n watchHandler() {\n this.calciteShellPanelToggle.emit();\n }\n //--------------------------------------------------------------------------\n //\n // Lifecycle\n //\n //--------------------------------------------------------------------------\n connectedCallback() {\n connectConditionalSlotComponent(this);\n }\n disconnectedCallback() {\n disconnectConditionalSlotComponent(this);\n this.disconnectSeparator();\n }\n componentDidLoad() {\n this.updateAriaValues();\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, key: \"header\" }, h(\"slot\", { name: SLOTS.header }))) : null;\n }\n render() {\n const { collapsed, detached, position, initialContentWidth, contentWidth, contentWidthMax, contentWidthMin, intlResize, resizable } = this;\n const allowResizing = !detached && resizable;\n const contentNode = (h(\"div\", { class: { [CSS.content]: true, [CSS.contentDetached]: detached }, hidden: collapsed, key: \"content\", ref: this.storeContentEl, style: allowResizing && contentWidth ? { width: `${contentWidth}px` } : null }, this.renderHeader(), h(\"div\", { class: CSS.contentBody }, h(\"slot\", null))));\n const separatorNode = allowResizing ? (h(\"div\", { \"aria-label\": intlResize, \"aria-orientation\": \"horizontal\", \"aria-valuemax\": contentWidthMax, \"aria-valuemin\": contentWidthMin, \"aria-valuenow\": contentWidth !== null && contentWidth !== void 0 ? contentWidth : initialContentWidth, class: CSS.separator, key: \"separator\", onKeyDown: this.separatorKeyDown, ref: this.connectSeparator, role: \"separator\", tabIndex: 0, \"touch-action\": \"none\" })) : null;\n const actionBarNode = h(\"slot\", { key: \"action-bar\", name: SLOTS.actionBar });\n const mainNodes = [actionBarNode, contentNode, separatorNode];\n if (position === \"end\") {\n mainNodes.reverse();\n }\n return h(\"div\", { class: { [CSS.container]: true } }, mainNodes);\n }\n // --------------------------------------------------------------------------\n //\n // private Methods\n //\n // --------------------------------------------------------------------------\n setContentWidth(width) {\n const { contentWidthMax, contentWidthMin } = this;\n const roundedWidth = Math.round(width);\n this.contentWidth =\n typeof contentWidthMax === \"number\" && typeof contentWidthMin === \"number\"\n ? clamp(roundedWidth, contentWidthMin, contentWidthMax)\n : roundedWidth;\n }\n updateAriaValues() {\n const { contentEl } = this;\n const computedStyle = contentEl && getComputedStyle(contentEl);\n if (!computedStyle) {\n return;\n }\n const max = parseInt(computedStyle.getPropertyValue(\"max-width\"), 10);\n const min = parseInt(computedStyle.getPropertyValue(\"min-width\"), 10);\n const valueNow = parseInt(computedStyle.getPropertyValue(\"width\"), 10);\n if (typeof valueNow === \"number\" && !isNaN(valueNow)) {\n this.initialContentWidth = valueNow;\n }\n if (typeof max === \"number\" && !isNaN(max)) {\n this.contentWidthMax = max;\n }\n if (typeof min === \"number\" && !isNaN(min)) {\n this.contentWidthMin = min;\n }\n forceUpdate(this);\n }\n static get is() { return \"calcite-shell-panel\"; }\n static get encapsulation() { return \"shadow\"; }\n static get originalStyleUrls() {\n return {\n \"$\": [\"shell-panel.scss\"]\n };\n }\n static get styleUrls() {\n return {\n \"$\": [\"shell-panel.css\"]\n };\n }\n static get properties() {\n 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\": \"When `true`, hides the component's content area.\"\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\": \"When `true`, the content area displays 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\": \"When `detached`, specifies the maximum height of the component.\"\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\": \"Specifies the width of the component's 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\": \"Specifies the component's position. Will be flipped when the element direction is right-to-left (`\\\"rtl\\\"`).\"\n },\n \"attribute\": \"position\",\n \"reflect\": true\n },\n \"intlResize\": {\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 \"name\": \"default\",\n \"text\": \"\\\"Resize\\\"\"\n }],\n \"text\": \"Accessible name for the resize separator.\"\n },\n \"attribute\": \"intl-resize\",\n \"reflect\": false,\n \"defaultValue\": \"TEXT.resize\"\n },\n \"resizable\": {\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` and not `detached`, the component's content area is resizable.\"\n },\n \"attribute\": \"resizable\",\n \"reflect\": true,\n \"defaultValue\": \"false\"\n }\n };\n }\n static get states() {\n return {\n \"contentWidth\": {}\n };\n }\n static get events() {\n return [{\n \"method\": \"calciteShellPanelToggle\",\n \"name\": \"calciteShellPanelToggle\",\n \"bubbles\": true,\n \"cancelable\": false,\n \"composed\": true,\n \"docs\": {\n \"tags\": [{\n \"name\": \"deprecated\",\n \"text\": \"use a `ResizeObserver` on the component to listen for changes to its size.\"\n }],\n \"text\": \"Emitted when collapse has been toggled.\"\n },\n \"complexType\": {\n \"original\": \"void\",\n \"resolved\": \"void\",\n \"references\": {}\n }\n }];\n }\n static get elementRef() { return \"el\"; }\n static get watchers() {\n return [{\n \"propName\": \"collapsed\",\n \"methodName\": \"watchHandler\"\n }];\n }\n}\n","/* mixins & extensions */\n@keyframes in {\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n}\n@keyframes in-down {\n 0% {\n opacity: 0;\n transform: translate3D(0, -5px, 0);\n }\n 100% {\n opacity: 1;\n transform: translate3D(0, 0, 0);\n }\n}\n@keyframes in-up {\n 0% {\n opacity: 0;\n transform: translate3D(0, 5px, 0);\n }\n 100% {\n opacity: 1;\n transform: translate3D(0, 0, 0);\n }\n}\n@keyframes in-scale {\n 0% {\n opacity: 0;\n transform: scale3D(0.95, 0.95, 1);\n }\n 100% {\n opacity: 1;\n transform: scale3D(1, 1, 1);\n }\n}\n:root {\n --calcite-animation-timing: calc(150ms * var(--calcite-internal-duration-factor));\n --calcite-internal-duration-factor: var(--calcite-duration-factor, 1);\n --calcite-internal-animation-timing-fast: calc(100ms * var(--calcite-internal-duration-factor));\n --calcite-internal-animation-timing-medium: calc(200ms * var(--calcite-internal-duration-factor));\n --calcite-internal-animation-timing-slow: calc(300ms * var(--calcite-internal-duration-factor));\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@media (prefers-reduced-motion: reduce) {\n :root {\n --calcite-internal-duration-factor: 0.01;\n }\n}\n/**\n* Currently only used in Checkbox.\n*/\n:root {\n --calcite-floating-ui-transition: var(--calcite-animation-timing);\n}\n\n:host([hidden]) {\n display: none;\n}\n\n:host([selected]) section, \n:host([selected]) .container {\n display: block;\n}\n\n:host {\n display: none;\n block-size: 100%;\n inline-size: 100%;\n}\n\n:host([selected]) {\n display: block;\n block-size: 100%;\n inline-size: 100%;\n overflow: auto;\n}\n\nsection, \n.container {\n display: none;\n block-size: 100%;\n inline-size: 100%;\n}\n\n:host([scale=s]) {\n padding-block: 0.25rem;\n font-size: var(--calcite-font-size--2);\n line-height: 1rem;\n}\n\n:host([scale=m]) {\n padding-block: 0.5rem;\n font-size: var(--calcite-font-size--1);\n line-height: 1rem;\n}\n\n:host([scale=l]) {\n padding-block: 0.75rem;\n font-size: var(--calcite-font-size-0);\n line-height: 1.25rem;\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 * v1.0.0-beta.97\n */\nimport { h, Host } from \"@stencil/core\";\nimport { guid } from \"../../utils/guid\";\nimport { nodeListToArray } from \"../../utils/dom\";\n/**\n * @slot - A slot for adding content to the component.\n */\nexport class Tab {\n constructor() {\n /**\n * When `true`, the component's contents are selected.\n *\n * Only one tab can be selected within the `calcite-tabs` parent.\n *\n * @deprecated Use `selected` instead.\n */\n this.active = false;\n /**\n * When `true`, the component's contents are selected.\n *\n * Only one tab can be selected within the `calcite-tabs` parent.\n */\n this.selected = false;\n /**\n * @internal\n */\n this.scale = \"m\";\n this.guid = `calcite-tab-title-${guid()}`;\n }\n activeHandler(value) {\n this.selected = value;\n }\n selectedHandler(value) {\n this.active = value;\n }\n //--------------------------------------------------------------------------\n //\n // Lifecycle\n //\n //--------------------------------------------------------------------------\n render() {\n const id = this.el.id || this.guid;\n return (h(Host, { \"aria-labelledby\": this.labeledBy, id: id }, h(\"div\", { class: \"container\", role: \"tabpanel\", tabIndex: this.selected ? 0 : -1 }, h(\"section\", null, h(\"slot\", null)))));\n }\n connectedCallback() {\n this.parentTabsEl = this.el.closest(\"calcite-tabs\");\n const isSelected = this.selected || this.active;\n if (isSelected) {\n this.activeHandler(isSelected);\n this.selectedHandler(isSelected);\n }\n }\n componentDidLoad() {\n this.calciteInternalTabRegister.emit();\n }\n componentWillRender() {\n var _a;\n this.scale = (_a = this.parentTabsEl) === 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 internalTabChangeHandler(event) {\n const targetTabsEl = event\n .composedPath()\n .find((el) => el.tagName === \"CALCITE-TABS\");\n // to allow `<calcite-tabs>` to be nested we need to make sure this\n // `calciteTabChange` event was actually fired from a within the same\n // `<calcite-tabs>` that is the a parent of this tab.\n if (targetTabsEl !== this.parentTabsEl) {\n return;\n }\n if (this.tab) {\n this.selected = this.tab === event.detail.tab;\n }\n else {\n this.getTabIndex().then((index) => {\n this.selected = index === event.detail.tab;\n });\n }\n event.stopPropagation();\n }\n //--------------------------------------------------------------------------\n //\n // Public Methods\n //\n //--------------------------------------------------------------------------\n /**\n * Returns the index of the component item within the tab array.\n */\n async getTabIndex() {\n return Array.prototype.indexOf.call(nodeListToArray(this.el.parentElement.children).filter((el) => el.matches(\"calcite-tab\")), this.el);\n }\n //--------------------------------------------------------------------------\n //\n // Private Methods\n //\n //--------------------------------------------------------------------------\n /**\n * @param tabIds\n * @param titleIds\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() {\n return {\n \"$\": [\"tab.scss\"]\n };\n }\n static get styleUrls() {\n return {\n \"$\": [\"tab.css\"]\n };\n }\n static get properties() {\n 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\": true,\n \"docs\": {\n \"tags\": [],\n \"text\": \"Specifies a unique name for the component.\\n\\nWhen specified, use the same value on the `calcite-tab-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 \"name\": \"deprecated\",\n \"text\": \"Use `selected` instead.\"\n }],\n \"text\": \"When `true`, the component's contents are selected.\\n\\nOnly one tab can be selected within the `calcite-tabs` parent.\"\n },\n \"attribute\": \"active\",\n \"reflect\": true,\n \"defaultValue\": \"false\"\n },\n \"selected\": {\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\": \"When `true`, the component's contents are selected.\\n\\nOnly one tab can be selected within the `calcite-tabs` parent.\"\n },\n \"attribute\": \"selected\",\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\": undefined\n }],\n \"text\": \"\"\n },\n \"attribute\": \"scale\",\n \"reflect\": true,\n \"defaultValue\": \"\\\"m\\\"\"\n }\n };\n }\n static get states() {\n return {\n \"labeledBy\": {}\n };\n }\n static get events() {\n return [{\n \"method\": \"calciteInternalTabRegister\",\n \"name\": \"calciteInternalTabRegister\",\n \"bubbles\": true,\n \"cancelable\": false,\n \"composed\": true,\n \"docs\": {\n \"tags\": [{\n \"name\": \"internal\",\n \"text\": undefined\n }],\n \"text\": \"\"\n },\n \"complexType\": {\n \"original\": \"void\",\n \"resolved\": \"void\",\n \"references\": {}\n }\n }];\n }\n static get methods() {\n 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\": \"Returns the index of the component item 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 \"name\": \"param\",\n \"text\": \"tabIds\"\n }],\n \"text\": \"\"\n }, {\n \"tags\": [{\n \"name\": \"param\",\n \"text\": \"titleIds\"\n }],\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\": \"param\",\n \"text\": \"tabIds\"\n }, {\n \"name\": \"param\",\n \"text\": \"titleIds\"\n }, {\n \"name\": \"internal\",\n \"text\": undefined\n }]\n }\n }\n };\n }\n static get elementRef() { return \"el\"; }\n static get watchers() {\n return [{\n \"propName\": \"active\",\n \"methodName\": \"activeHandler\"\n }, {\n \"propName\": \"selected\",\n \"methodName\": \"selectedHandler\"\n }];\n }\n static get listeners() {\n return [{\n \"name\": \"calciteInternalTabChange\",\n \"method\": \"internalTabChangeHandler\",\n \"target\": \"body\",\n \"capture\": false,\n \"passive\": false\n }];\n }\n}\n","/* mixins & extensions */\n@keyframes in {\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n}\n@keyframes in-down {\n 0% {\n opacity: 0;\n transform: translate3D(0, -5px, 0);\n }\n 100% {\n opacity: 1;\n transform: translate3D(0, 0, 0);\n }\n}\n@keyframes in-up {\n 0% {\n opacity: 0;\n transform: translate3D(0, 5px, 0);\n }\n 100% {\n opacity: 1;\n transform: translate3D(0, 0, 0);\n }\n}\n@keyframes in-scale {\n 0% {\n opacity: 0;\n transform: scale3D(0.95, 0.95, 1);\n }\n 100% {\n opacity: 1;\n transform: scale3D(1, 1, 1);\n }\n}\n:root {\n --calcite-animation-timing: calc(150ms * var(--calcite-internal-duration-factor));\n --calcite-internal-duration-factor: var(--calcite-duration-factor, 1);\n --calcite-internal-animation-timing-fast: calc(100ms * var(--calcite-internal-duration-factor));\n --calcite-internal-animation-timing-medium: calc(200ms * var(--calcite-internal-duration-factor));\n --calcite-internal-animation-timing-slow: calc(300ms * var(--calcite-internal-duration-factor));\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@media (prefers-reduced-motion: reduce) {\n :root {\n --calcite-internal-duration-factor: 0.01;\n }\n}\n/**\n* Currently only used in Checkbox.\n*/\n:root {\n --calcite-floating-ui-transition: var(--calcite-animation-timing);\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-block-size: 1.5rem;\n}\n\n:host([scale=m]) {\n min-block-size: 2rem;\n}\n\n:host([scale=l]) {\n min-block-size: 2.75rem;\n}\n\n.tab-nav {\n display: flex;\n inline-size: 100%;\n justify-content: flex-start;\n overflow: auto;\n}\n\n.tab-nav-active-indicator-container {\n position: absolute;\n inset-inline: 0px;\n inset-block-end: 0px;\n block-size: 0.125rem;\n inline-size: 100%;\n overflow: hidden;\n}\n\n.tab-nav-active-indicator {\n position: absolute;\n inset-block-end: 0px;\n display: block;\n block-size: 0.125rem;\n background-color: var(--calcite-ui-brand);\n transition-property: all;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n transition-timing-function: cubic-bezier(0, 0, 0.2, 1);\n}\n\n:host([position=below]) .tab-nav-active-indicator {\n inset-block-end: unset;\n inset-block-start: 0px;\n}\n\n:host([position=bottom]) .tab-nav-active-indicator {\n inset-block-end: unset;\n inset-block-start: 0px;\n}\n\n:host([position=below]) .tab-nav-active-indicator-container {\n inset-block-start: 0px;\n inset-block-end: unset;\n}\n\n:host([position=bottom]) .tab-nav-active-indicator-container {\n inset-block-end: unset;\n inset-block-start: 0px;\n}\n\n:host([bordered]) .tab-nav-active-indicator-container {\n inset-block-end: unset;\n}\n\n:host([bordered][position=below]) .tab-nav-active-indicator-container {\n inset-block-end: 0;\n inset-block-start: unset;\n}\n\n:host([bordered][position=bottom]) .tab-nav-active-indicator-container {\n inset-block-end: 0;\n inset-block-start: unset;\n}\n\n@media (forced-colors: active) {\n .tab-nav-active-indicator {\n background-color: highlight;\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 * v1.0.0-beta.97\n */\nimport { h, Host } from \"@stencil/core\";\nimport { getElementDir, filterDirectChildren } from \"../../utils/dom\";\nimport { createObserver } from \"../../utils/observers\";\n/**\n * @slot - A slot for adding `calcite-tab-title`s.\n */\nexport class TabNav {\n constructor() {\n /**\n * @internal\n */\n this.scale = \"m\";\n /**\n * @internal\n */\n this.layout = \"inline\";\n /**\n * @internal\n */\n this.position = \"bottom\";\n /**\n * @internal\n */\n this.bordered = false;\n this.animationActiveDuration = 0.3;\n this.resizeObserver = createObserver(\"resize\", () => {\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 //--------------------------------------------------------------------------\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.calciteInternalTabChange.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 connectedCallback() {\n var _a;\n this.parentTabsEl = this.el.closest(\"calcite-tabs\");\n (_a = this.resizeObserver) === null || _a === void 0 ? void 0 : _a.observe(this.el);\n }\n disconnectedCallback() {\n var _a;\n (_a = this.resizeObserver) === null || _a === void 0 ? void 0 : _a.disconnect();\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 }\n }\n componentWillRender() {\n const { parentTabsEl } = this;\n this.layout = parentTabsEl === null || parentTabsEl === void 0 ? void 0 : parentTabsEl.layout;\n this.position = parentTabsEl === null || parentTabsEl === void 0 ? void 0 : parentTabsEl.position;\n this.scale = parentTabsEl === null || parentTabsEl === void 0 ? void 0 : parentTabsEl.scale;\n this.bordered = parentTabsEl === null || parentTabsEl === void 0 ? void 0 : parentTabsEl.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.calciteInternalTabChange.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\" }, h(\"div\", { class: \"tab-nav\", onScroll: this.handleContainerScroll, ref: (el) => (this.tabNavEl = el) }, h(\"div\", { class: \"tab-nav-active-indicator-container\", ref: (el) => (this.activeIndicatorContainerEl = el) }, h(\"div\", { class: \"tab-nav-active-indicator\", ref: (el) => (this.activeIndicatorEl = el), style: indicatorStyle })), h(\"slot\", null))));\n }\n //--------------------------------------------------------------------------\n //\n // Event Listeners\n //\n //--------------------------------------------------------------------------\n focusPreviousTabHandler(event) {\n const currentIndex = this.getIndexOfTabTitle(event.target, this.enabledTabTitles);\n const previousTab = this.enabledTabTitles[currentIndex - 1] ||\n this.enabledTabTitles[this.enabledTabTitles.length - 1];\n previousTab === null || previousTab === void 0 ? void 0 : previousTab.focus();\n event.stopPropagation();\n event.preventDefault();\n }\n focusNextTabHandler(event) {\n const currentIndex = this.getIndexOfTabTitle(event.target, this.enabledTabTitles);\n const nextTab = this.enabledTabTitles[currentIndex + 1] || this.enabledTabTitles[0];\n nextTab === null || nextTab === void 0 ? void 0 : nextTab.focus();\n event.stopPropagation();\n event.preventDefault();\n }\n internalActivateTabHandler(event) {\n this.selectedTab = event.detail.tab\n ? event.detail.tab\n : this.getIndexOfTabTitle(event.target);\n event.stopPropagation();\n event.preventDefault();\n }\n activateTabHandler(event) {\n this.calciteTabChange.emit({\n tab: this.selectedTab\n });\n event.stopPropagation();\n event.preventDefault();\n }\n /**\n * Check for active tabs on register and update selected\n *\n * @param event\n */\n updateTabTitles(event) {\n if (event.target.active) {\n this.selectedTab = event.detail;\n }\n }\n globalInternalTabChangeHandler(event) {\n if (this.syncId &&\n event.target !== this.el &&\n event.target.syncId === this.syncId &&\n this.selectedTab !== event.detail.tab) {\n this.selectedTab = event.detail.tab;\n }\n event.stopPropagation();\n }\n iconStartChangeHandler() {\n this.updateActiveWidth();\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() {\n return {\n \"$\": [\"tab-nav.scss\"]\n };\n }\n static get styleUrls() {\n return {\n \"$\": [\"tab-nav.css\"]\n };\n }\n static get properties() {\n 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\": \"Specifies the name when saving selected `calcite-tab` data to `localStorage`.\"\n },\n \"attribute\": \"storage-id\",\n \"reflect\": true\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\": \"Specifies text to update multiple components to keep in sync if one changes.\"\n },\n \"attribute\": \"sync-id\",\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\": undefined\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\": \"../tabs/interfaces\"\n }\n }\n },\n \"required\": false,\n \"optional\": false,\n \"docs\": {\n \"tags\": [{\n \"name\": \"internal\",\n \"text\": undefined\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\\\" | \\\"bottom\\\" | \\\"top\\\"\",\n \"references\": {\n \"TabPosition\": {\n \"location\": \"import\",\n \"path\": \"../tabs/interfaces\"\n }\n }\n },\n \"required\": false,\n \"optional\": false,\n \"docs\": {\n \"tags\": [{\n \"name\": \"internal\",\n \"text\": undefined\n }],\n \"text\": \"\"\n },\n \"attribute\": \"position\",\n \"reflect\": true,\n \"defaultValue\": \"\\\"bottom\\\"\"\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\": undefined\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 }\n static get states() {\n return {\n \"selectedTab\": {},\n \"selectedTabEl\": {}\n };\n }\n static get events() {\n return [{\n \"method\": \"calciteTabChange\",\n \"name\": \"calciteTabChange\",\n \"bubbles\": true,\n \"cancelable\": false,\n \"composed\": true,\n \"docs\": {\n \"tags\": [{\n \"name\": \"see\",\n \"text\": \"[TabChangeEventDetail](https://github.com/Esri/calcite-components/blob/master/src/components/tab/interfaces.ts#L1)\"\n }],\n \"text\": \"Emits when the selected `calcite-tab` changes.\"\n },\n \"complexType\": {\n \"original\": \"TabChangeEventDetail\",\n \"resolved\": \"TabChangeEventDetail\",\n \"references\": {\n \"TabChangeEventDetail\": {\n \"location\": \"import\",\n \"path\": \"../tab/interfaces\"\n }\n }\n }\n }, {\n \"method\": \"calciteInternalTabChange\",\n \"name\": \"calciteInternalTabChange\",\n \"bubbles\": true,\n \"cancelable\": false,\n \"composed\": true,\n \"docs\": {\n \"tags\": [{\n \"name\": \"internal\",\n \"text\": undefined\n }],\n \"text\": \"\"\n },\n \"complexType\": {\n \"original\": \"TabChangeEventDetail\",\n \"resolved\": \"TabChangeEventDetail\",\n \"references\": {\n \"TabChangeEventDetail\": {\n \"location\": \"import\",\n \"path\": \"../tab/interfaces\"\n }\n }\n }\n }];\n }\n static get elementRef() { return \"el\"; }\n static get watchers() {\n return [{\n \"propName\": \"selectedTab\",\n \"methodName\": \"selectedTabChanged\"\n }, {\n \"propName\": \"selectedTabEl\",\n \"methodName\": \"selectedTabElChanged\"\n }];\n }\n static get listeners() {\n return [{\n \"name\": \"calciteInternalTabsFocusPrevious\",\n \"method\": \"focusPreviousTabHandler\",\n \"target\": undefined,\n \"capture\": false,\n \"passive\": false\n }, {\n \"name\": \"calciteInternalTabsFocusNext\",\n \"method\": \"focusNextTabHandler\",\n \"target\": undefined,\n \"capture\": false,\n \"passive\": false\n }, {\n \"name\": \"calciteInternalTabsActivate\",\n \"method\": \"internalActivateTabHandler\",\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\": \"calciteInternalTabTitleRegister\",\n \"method\": \"updateTabTitles\",\n \"target\": undefined,\n \"capture\": false,\n \"passive\": false\n }, {\n \"name\": \"calciteInternalTabChange\",\n \"method\": \"globalInternalTabChangeHandler\",\n \"target\": \"body\",\n \"capture\": false,\n \"passive\": false\n }, {\n \"name\": \"calciteInternalTabIconChanged\",\n \"method\": \"iconStartChangeHandler\",\n \"target\": undefined,\n \"capture\": false,\n \"passive\": false\n }];\n }\n}\n","/* mixins & extensions */\n@keyframes in {\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n}\n@keyframes in-down {\n 0% {\n opacity: 0;\n transform: translate3D(0, -5px, 0);\n }\n 100% {\n opacity: 1;\n transform: translate3D(0, 0, 0);\n }\n}\n@keyframes in-up {\n 0% {\n opacity: 0;\n transform: translate3D(0, 5px, 0);\n }\n 100% {\n opacity: 1;\n transform: translate3D(0, 0, 0);\n }\n}\n@keyframes in-scale {\n 0% {\n opacity: 0;\n transform: scale3D(0.95, 0.95, 1);\n }\n 100% {\n opacity: 1;\n transform: scale3D(1, 1, 1);\n }\n}\n:root {\n --calcite-animation-timing: calc(150ms * var(--calcite-internal-duration-factor));\n --calcite-internal-duration-factor: var(--calcite-duration-factor, 1);\n --calcite-internal-animation-timing-fast: calc(100ms * var(--calcite-internal-duration-factor));\n --calcite-internal-animation-timing-medium: calc(200ms * var(--calcite-internal-duration-factor));\n --calcite-internal-animation-timing-slow: calc(300ms * var(--calcite-internal-duration-factor));\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@media (prefers-reduced-motion: reduce) {\n :root {\n --calcite-internal-duration-factor: 0.01;\n }\n}\n/**\n* Currently only used in Checkbox.\n*/\n:root {\n --calcite-floating-ui-transition: var(--calcite-animation-timing);\n}\n\n:host([hidden]) {\n display: none;\n}\n\n:host([disabled]) {\n pointer-events: none;\n cursor: default;\n -webkit-user-select: none;\n user-select: none;\n opacity: var(--calcite-ui-opacity-disabled);\n}\n\n:host {\n display: block;\n flex: 0 1 auto;\n outline: 2px solid transparent;\n outline-offset: 2px;\n margin-inline-start: 0px;\n margin-inline-end: 1.25rem;\n}\n\n:host([layout=center]) {\n margin-block: 0px;\n margin-inline: 1.25rem;\n text-align: center;\n flex-basis: 12rem;\n margin: auto;\n}\n\n:host([position=below]) .container {\n border-block-end-width: 0px;\n border-block-start-width: 2px;\n border-block-start-color: transparent;\n border-block-start-style: solid;\n}\n\n:host([position=bottom]) .container {\n border-block-end-width: 0px;\n border-block-start-width: 2px;\n border-block-start-color: transparent;\n border-block-start-style: solid;\n}\n\n:host .container {\n outline-color: transparent;\n}\n\n:host(:focus) .container {\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 border-color: var(--calcite-ui-border-2);\n color: var(--calcite-ui-text-1);\n text-decoration-line: none;\n}\n\n:host([selected]) .container {\n border-color: transparent;\n color: var(--calcite-ui-text-1);\n}\n\n:host([disabled]) .container {\n pointer-events: none;\n opacity: 0.5;\n}\n:host([disabled]) ::slotted([calcite-hydrated][disabled]),\n:host([disabled]) [calcite-hydrated][disabled] {\n /* prevent opacity stacking */\n opacity: 1;\n}\n\n:host([scale=s]) {\n margin-inline-end: 1rem;\n}\n:host([scale=s]) .container {\n padding-block: 0.25rem;\n font-size: var(--calcite-font-size--2);\n line-height: 1rem;\n}\n\n:host([scale=m]) .container {\n padding-block: 0.5rem;\n font-size: var(--calcite-font-size--1);\n line-height: 1rem;\n}\n\n:host([scale=l]) {\n margin-inline-end: 1.5rem;\n}\n:host([scale=l]) .container {\n padding-block: 0.75rem;\n font-size: var(--calcite-font-size-0);\n line-height: 1.25rem;\n}\n\n.container {\n box-sizing: border-box;\n display: flex;\n block-size: 100%;\n inline-size: 100%;\n cursor: pointer;\n -webkit-appearance: none;\n appearance: none;\n justify-content: center;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n border-block-end-width: 2px;\n padding-inline: 0px;\n padding-block: 0.5rem;\n font-size: var(--calcite-font-size--1);\n line-height: 1rem;\n color: var(--calcite-ui-text-3);\n transition: all var(--calcite-animation-timing) ease-in-out 0s, outline 0s, outline-offset 0s;\n border-block-end-color: transparent;\n border-block-end-style: solid;\n}\n\n.calcite-tab-title--icon {\n position: relative;\n margin: 0px;\n display: inline-flex;\n align-self: center;\n}\n.calcite-tab-title--icon svg {\n transition: all var(--calcite-animation-timing) ease-in-out 0s, outline 0s, outline-offset 0s;\n}\n\n.container--has-text {\n padding: 0.25rem;\n}\n\n.container--has-text .calcite-tab-title--icon.icon-start {\n margin-inline-end: 0.5rem;\n}\n\n.container--has-text .calcite-tab-title--icon.icon-end {\n margin-inline-start: 0.5rem;\n}\n\n:host([icon-start][icon-end]) .calcite-tab-title--icon:first-child {\n margin-inline-end: 0.5rem;\n}\n\n:host([bordered]) {\n margin-inline-end: 0;\n}\n\n:host([bordered][selected]) {\n box-shadow: inset 0px -2px var(--calcite-ui-foreground-1);\n}\n\n:host([bordered][selected][position=below]) {\n box-shadow: inset 0 2px 0 var(--calcite-ui-foreground-1);\n}\n\n:host([bordered][selected][position=bottom]) {\n box-shadow: inset 0 2px 0 var(--calcite-ui-foreground-1);\n}\n\n:host([bordered]:hover) .container, \n:host([bordered]:focus) .container, \n:host([bordered]:active) .container {\n position: relative;\n}\n\n:host([bordered]:hover) .container {\n background-color: var(--calcite-button-transparent-hover);\n}\n\n:host([bordered]) .container {\n border-block-end-style: unset;\n border-inline-start: 1px solid transparent;\n border-inline-end: 1px solid transparent;\n}\n\n:host([bordered][position=below]) .container {\n border-block-start-style: unset;\n}\n\n:host([bordered][position=bottom]) .container {\n border-block-start-style: unset;\n}\n\n:host([selected][bordered]) .container {\n border-inline-start-color: var(--calcite-ui-border-1);\n border-inline-end-color: var(--calcite-ui-border-1);\n}\n\n:host([bordered]) .container {\n padding-inline: 0.75rem;\n}\n\n:host([bordered][scale=s]) .container {\n padding-inline: 0.5rem;\n}\n\n:host([bordered][scale=l]) .container {\n padding-inline: 1rem;\n}\n\n@media (forced-colors: active) {\n :host {\n outline-width: 0;\n outline-offset: 0;\n }\n\n :host(:focus) .container {\n outline-color: highlight;\n }\n\n :host([bordered]) .container {\n border-block-end-style: solid;\n }\n\n :host([bordered][position=below]) .container {\n border-block-start-style: solid;\n }\n\n :host([bordered][position=bottom]) .container {\n border-block-start-style: solid;\n }\n\n :host([bordered][selected]) .container {\n border-block-end-style: none;\n }\n\n :host([bordered][position=below][selected]) .container {\n border-block-start-style: none;\n }\n\n :host([bordered][position=bottom][selected]) .container {\n border-block-start-style: none;\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 * v1.0.0-beta.97\n */\nimport { Build, h, Host } from \"@stencil/core\";\nimport { guid } from \"../../utils/guid\";\nimport { getElementDir, getElementProp, toAriaBoolean } from \"../../utils/dom\";\nimport { createObserver } from \"../../utils/observers\";\nimport { updateHostInteraction } from \"../../utils/interactive\";\n/**\n * @slot - A slot for adding text.\n */\nexport class TabTitle {\n constructor() {\n //--------------------------------------------------------------------------\n //\n // Properties\n //\n //--------------------------------------------------------------------------\n /**\n * When `true`, the component and its respective `calcite-tab` contents are selected.\n *\n * Only one tab can be selected within the `calcite-tabs` parent.\n *\n * @deprecated Use `selected` instead.\n */\n this.active = false;\n /**\n * When `true`, the component and its respective `calcite-tab` contents are selected.\n *\n * Only one tab can be selected within the `calcite-tabs` parent.\n */\n this.selected = false;\n /** When `true`, interaction is prevented and the component is displayed with lower opacity. */\n this.disabled = false;\n /**\n * @internal\n */\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 this.resizeObserver = createObserver(\"resize\", () => {\n this.calciteInternalTabIconChanged.emit();\n });\n this.guid = `calcite-tab-title-${guid()}`;\n }\n activeHandler(value) {\n this.selected = value;\n }\n selectedHandler(value) {\n this.active = value;\n if (this.selected) {\n this.emitActiveTab(false);\n }\n }\n //--------------------------------------------------------------------------\n //\n // Lifecycle\n //\n //--------------------------------------------------------------------------\n connectedCallback() {\n const { selected, active } = this;\n if (selected) {\n this.active = selected;\n }\n else if (active) {\n this.activeHandler(active);\n }\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, _c;\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 (_c = this.resizeObserver) === null || _c === void 0 ? void 0 : _c.disconnect();\n }\n componentWillLoad() {\n if (Build.isBrowser) {\n this.updateHasText();\n }\n if (this.tab && this.selected) {\n this.emitActiveTab(false);\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 id = this.el.id || this.guid;\n const iconStartEl = (h(\"calcite-icon\", { class: \"calcite-tab-title--icon icon-start\", 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\", flipRtl: this.iconFlipRtl === \"end\" || this.iconFlipRtl === \"both\", icon: this.iconEnd, scale: \"s\" }));\n return (h(Host, { \"aria-controls\": this.controls, \"aria-selected\": toAriaBoolean(this.selected), id: id, role: \"tab\", tabIndex: this.selected ? 0 : -1 }, h(\"div\", { class: {\n container: true,\n \"container--has-text\": this.hasText\n }, ref: (el) => { var _a; return (_a = this.resizeObserver) === null || _a === void 0 ? void 0 : _a.observe(el); } }, this.iconStart ? iconStartEl : null, h(\"slot\", null), this.iconEnd ? iconEndEl : null)));\n }\n async componentDidLoad() {\n this.calciteInternalTabTitleRegister.emit(await this.getTabIdentifier());\n }\n componentDidRender() {\n updateHostInteraction(this, () => {\n return this.selected;\n });\n }\n //--------------------------------------------------------------------------\n //\n // Event Listeners\n //\n //--------------------------------------------------------------------------\n internalTabChangeHandler(event) {\n const targetTabsEl = event\n .composedPath()\n .find((el) => el.tagName === \"CALCITE-TABS\");\n if (targetTabsEl !== this.parentTabsEl) {\n return;\n }\n if (this.tab) {\n this.selected = this.tab === event.detail.tab;\n }\n else {\n this.getTabIndex().then((index) => {\n this.selected = index === event.detail.tab;\n });\n }\n event.stopPropagation();\n }\n onClick() {\n this.emitActiveTab();\n }\n keyDownHandler(event) {\n switch (event.key) {\n case \" \":\n case \"Enter\":\n this.emitActiveTab();\n event.preventDefault();\n break;\n case \"ArrowRight\":\n event.preventDefault();\n if (getElementDir(this.el) === \"ltr\") {\n this.calciteInternalTabsFocusNext.emit();\n }\n else {\n this.calciteInternalTabsFocusPrevious.emit();\n }\n break;\n case \"ArrowLeft\":\n event.preventDefault();\n if (getElementDir(this.el) === \"ltr\") {\n this.calciteInternalTabsFocusPrevious.emit();\n }\n else {\n this.calciteInternalTabsFocusNext.emit();\n }\n break;\n }\n }\n //--------------------------------------------------------------------------\n //\n // Public Methods\n //\n //--------------------------------------------------------------------------\n /**\n * Returns the index of the title within the `calcite-tab-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 * @param tabIds\n * @param titleIds\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(userTriggered = true) {\n if (this.disabled) {\n return;\n }\n const payload = { tab: this.tab };\n this.calciteInternalTabsActivate.emit(payload);\n if (userTriggered) {\n this.calciteTabsActivate.emit(payload);\n }\n }\n static get is() { return \"calcite-tab-title\"; }\n static get encapsulation() { return \"shadow\"; }\n static get originalStyleUrls() {\n return {\n \"$\": [\"tab-title.scss\"]\n };\n }\n static get styleUrls() {\n return {\n \"$\": [\"tab-title.css\"]\n };\n }\n static get properties() {\n 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 \"name\": \"deprecated\",\n \"text\": \"Use `selected` instead.\"\n }],\n \"text\": \"When `true`, the component and its respective `calcite-tab` contents are selected.\\n\\nOnly one tab can be selected within the `calcite-tabs` parent.\"\n },\n \"attribute\": \"active\",\n \"reflect\": true,\n \"defaultValue\": \"false\"\n },\n \"selected\": {\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\": \"When `true`, the component and its respective `calcite-tab` contents are selected.\\n\\nOnly one tab can be selected within the `calcite-tabs` parent.\"\n },\n \"attribute\": \"selected\",\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\": \"When `true`, interaction is prevented and the component is displayed with lower opacity.\"\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\": \"Specifies an icon to display at the end of the component.\"\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\": \"When `true`, the icon will be flipped when the element direction is right-to-left (`\\\"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\": \"Specifies an icon to display at the start of the component.\"\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\": \"../tabs/interfaces\"\n }\n }\n },\n \"required\": false,\n \"optional\": false,\n \"docs\": {\n \"tags\": [{\n \"name\": \"internal\",\n \"text\": undefined\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\\\" | \\\"bottom\\\" | \\\"top\\\"\",\n \"references\": {\n \"TabPosition\": {\n \"location\": \"import\",\n \"path\": \"../tabs/interfaces\"\n }\n }\n },\n \"required\": false,\n \"optional\": false,\n \"docs\": {\n \"tags\": [{\n \"name\": \"internal\",\n \"text\": undefined\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\": undefined\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\": undefined\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\": \"Specifies a unique name for the component.\\n\\nWhen specified, use the same value on the `calcite-tab`.\"\n },\n \"attribute\": \"tab\",\n \"reflect\": true\n }\n };\n }\n static get states() {\n return {\n \"controls\": {},\n \"hasText\": {}\n };\n }\n static get events() {\n return [{\n \"method\": \"calciteTabsActivate\",\n \"name\": \"calciteTabsActivate\",\n \"bubbles\": true,\n \"cancelable\": false,\n \"composed\": true,\n \"docs\": {\n \"tags\": [{\n \"name\": \"see\",\n \"text\": \"[TabChangeEventDetail](https://github.com/Esri/calcite-components/blob/master/src/components/tab/interfaces.ts#L1)\"\n }],\n \"text\": \"Fires when a `calcite-tab` is selected. Emits the `tab` property, or the index position.\"\n },\n \"complexType\": {\n \"original\": \"TabChangeEventDetail\",\n \"resolved\": \"TabChangeEventDetail\",\n \"references\": {\n \"TabChangeEventDetail\": {\n \"location\": \"import\",\n \"path\": \"../tab/interfaces\"\n }\n }\n }\n }, {\n \"method\": \"calciteInternalTabsActivate\",\n \"name\": \"calciteInternalTabsActivate\",\n \"bubbles\": true,\n \"cancelable\": false,\n \"composed\": true,\n \"docs\": {\n \"tags\": [{\n \"name\": \"see\",\n \"text\": \"[TabChangeEventDetail](https://github.com/Esri/calcite-components/blob/master/src/components/tab/interfaces.ts#L1)\"\n }, {\n \"name\": \"internal\",\n \"text\": undefined\n }],\n \"text\": \"Fires when a `calcite-tab` is selected (`event.details`).\"\n },\n \"complexType\": {\n \"original\": \"TabChangeEventDetail\",\n \"resolved\": \"TabChangeEventDetail\",\n \"references\": {\n \"TabChangeEventDetail\": {\n \"location\": \"import\",\n \"path\": \"../tab/interfaces\"\n }\n }\n }\n }, {\n \"method\": \"calciteInternalTabsFocusNext\",\n \"name\": \"calciteInternalTabsFocusNext\",\n \"bubbles\": true,\n \"cancelable\": false,\n \"composed\": true,\n \"docs\": {\n \"tags\": [{\n \"name\": \"internal\",\n \"text\": undefined\n }],\n \"text\": \"\"\n },\n \"complexType\": {\n \"original\": \"void\",\n \"resolved\": \"void\",\n \"references\": {}\n }\n }, {\n \"method\": \"calciteInternalTabsFocusPrevious\",\n \"name\": \"calciteInternalTabsFocusPrevious\",\n \"bubbles\": true,\n \"cancelable\": false,\n \"composed\": true,\n \"docs\": {\n \"tags\": [{\n \"name\": \"internal\",\n \"text\": undefined\n }],\n \"text\": \"\"\n },\n \"complexType\": {\n \"original\": \"void\",\n \"resolved\": \"void\",\n \"references\": {}\n }\n }, {\n \"method\": \"calciteInternalTabTitleRegister\",\n \"name\": \"calciteInternalTabTitleRegister\",\n \"bubbles\": true,\n \"cancelable\": false,\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\": \"../tabs/interfaces\"\n }\n }\n }\n }, {\n \"method\": \"calciteInternalTabIconChanged\",\n \"name\": \"calciteInternalTabIconChanged\",\n \"bubbles\": true,\n \"cancelable\": false,\n \"composed\": true,\n \"docs\": {\n \"tags\": [{\n \"name\": \"internal\",\n \"text\": undefined\n }],\n \"text\": \"\"\n },\n \"complexType\": {\n \"original\": \"void\",\n \"resolved\": \"void\",\n \"references\": {}\n }\n }];\n }\n static get methods() {\n 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\": \"Returns the index of the title within the `calcite-tab-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\": \"../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 \"name\": \"param\",\n \"text\": \"tabIds\"\n }],\n \"text\": \"\"\n }, {\n \"tags\": [{\n \"name\": \"param\",\n \"text\": \"titleIds\"\n }],\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\": \"param\",\n \"text\": \"tabIds\"\n }, {\n \"name\": \"param\",\n \"text\": \"titleIds\"\n }, {\n \"name\": \"internal\",\n \"text\": undefined\n }]\n }\n }\n };\n }\n static get elementRef() { return \"el\"; }\n static get watchers() {\n return [{\n \"propName\": \"active\",\n \"methodName\": \"activeHandler\"\n }, {\n \"propName\": \"selected\",\n \"methodName\": \"selectedHandler\"\n }];\n }\n static get listeners() {\n return [{\n \"name\": \"calciteInternalTabChange\",\n \"method\": \"internalTabChangeHandler\",\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","/*!\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 * v1.0.0-beta.97\n */\nexport const SLOTS = {\n tabNav: \"tab-nav\"\n};\n","/* mixins & extensions */\n@keyframes in {\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n}\n@keyframes in-down {\n 0% {\n opacity: 0;\n transform: translate3D(0, -5px, 0);\n }\n 100% {\n opacity: 1;\n transform: translate3D(0, 0, 0);\n }\n}\n@keyframes in-up {\n 0% {\n opacity: 0;\n transform: translate3D(0, 5px, 0);\n }\n 100% {\n opacity: 1;\n transform: translate3D(0, 0, 0);\n }\n}\n@keyframes in-scale {\n 0% {\n opacity: 0;\n transform: scale3D(0.95, 0.95, 1);\n }\n 100% {\n opacity: 1;\n transform: scale3D(1, 1, 1);\n }\n}\n:root {\n --calcite-animation-timing: calc(150ms * var(--calcite-internal-duration-factor));\n --calcite-internal-duration-factor: var(--calcite-duration-factor, 1);\n --calcite-internal-animation-timing-fast: calc(100ms * var(--calcite-internal-duration-factor));\n --calcite-internal-animation-timing-medium: calc(200ms * var(--calcite-internal-duration-factor));\n --calcite-internal-animation-timing-slow: calc(300ms * var(--calcite-internal-duration-factor));\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@media (prefers-reduced-motion: reduce) {\n :root {\n --calcite-internal-duration-factor: 0.01;\n }\n}\n/**\n* Currently only used in Checkbox.\n*/\n:root {\n --calcite-floating-ui-transition: var(--calcite-animation-timing);\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-block-end: -1px;\n}\n\n:host([bordered]:not([position=bottom])) ::slotted(calcite-tab-nav) {\n margin-block-end: -1px;\n}\n\n:host([bordered][position=below]) ::slotted(calcite-tab-nav) {\n margin-block-start: -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][position=bottom]) {\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\n:host([position=bottom]) {\n flex-direction: column-reverse;\n}\n\nsection {\n display: flex;\n flex-grow: 1;\n overflow: hidden;\n border-block-start-width: 1px;\n border-block-start-color: var(--calcite-ui-border-1);\n border-block-start-style: solid;\n}\n\n:host([position=below]) section {\n flex-direction: column-reverse;\n border-block-start-width: 0px;\n border-block-end-width: 1px;\n border-block-end-color: var(--calcite-ui-border-1);\n}\n\n:host([position=bottom]) section {\n flex-direction: column-reverse;\n border-block-start-width: 0px;\n border-block-end-width: 1px;\n border-block-end-color: var(--calcite-ui-border-1);\n}\n\n:host([position=below]:not([bordered])) section {\n border-block-end-style: solid;\n}\n\n:host([position=bottom]:not([bordered])) section {\n border-block-end-style: solid;\n}\n\n@media (forced-colors: active) {\n :host([bordered]) section {\n border-block-start-width: 0px;\n border-block-end-width: 1px;\n }\n\n :host([position=below][bordered]) section {\n border-block-start-width: 1px;\n border-block-end-width: 0px;\n }\n\n :host([position=bottom][bordered]) section {\n border-block-start-width: 1px;\n border-block-end-width: 0px;\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 * v1.0.0-beta.97\n */\nimport { h, 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 `calcite-tab-nav`.\n */\nexport class Tabs {\n constructor() {\n //--------------------------------------------------------------------------\n //\n // Public Properties\n //\n //--------------------------------------------------------------------------\n /**\n * Specifies the layout of the `calcite-tab-nav`, justifying the `calcite-tab-title`s to the start (`\"inline\"`), or across and centered (`\"center\"`).\n */\n this.layout = \"inline\";\n /**\n * Specifies the position of the component in relation to the `calcite-tab`s. The `\"above\"` and `\"below\"` values are deprecated.\n *\n */\n this.position = \"top\";\n /**\n * Specifies the size of the component.\n */\n this.scale = \"m\";\n /**\n * When `true`, the component will display with a folder style menu.\n */\n this.bordered = false;\n //--------------------------------------------------------------------------\n //\n // Events\n //\n //--------------------------------------------------------------------------\n //--------------------------------------------------------------------------\n //\n // Private State/Props\n //\n //--------------------------------------------------------------------------\n /**\n *\n * Stores an array of ids of `<calcite-tab-titles>`s to match up ARIA\n * attributes.\n */\n this.titles = [];\n /**\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 render() {\n return (h(Fragment, null, h(\"slot\", { name: SLOTS.tabNav }), h(\"section\", null, h(\"slot\", null))));\n }\n //--------------------------------------------------------------------------\n //\n // Event Listeners\n //\n //--------------------------------------------------------------------------\n /**\n * @param event\n * @internal\n */\n calciteInternalTabTitleRegister(event) {\n this.titles = [...this.titles, event.target];\n this.registryHandler();\n event.stopPropagation();\n }\n /**\n * @param event\n * @internal\n */\n calciteTabTitleUnregister(event) {\n this.titles = this.titles.filter((el) => el !== event.detail);\n this.registryHandler();\n event.stopPropagation();\n }\n /**\n * @param event\n * @internal\n */\n calciteInternalTabRegister(event) {\n this.tabs = [...this.tabs, event.target];\n this.registryHandler();\n event.stopPropagation();\n }\n /**\n * @param event\n * @internal\n */\n calciteTabUnregister(event) {\n this.tabs = this.tabs.filter((el) => el !== event.detail);\n this.registryHandler();\n event.stopPropagation();\n }\n //--------------------------------------------------------------------------\n //\n // Private Methods\n //\n //--------------------------------------------------------------------------\n /**\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((el) => el.tab) || this.titles.some((el) => el.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((el) => el.id);\n titleIds = this.titles.sort((a, b) => a.tab.localeCompare(b.tab)).map((el) => el.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() {\n return {\n \"$\": [\"tabs.scss\"]\n };\n }\n static get styleUrls() {\n return {\n \"$\": [\"tabs.css\"]\n };\n }\n static get properties() {\n 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\": \"Specifies the layout of the `calcite-tab-nav`, justifying the `calcite-tab-title`s to the start (`\\\"inline\\\"`), or across and centered (`\\\"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\\\" | \\\"bottom\\\" | \\\"top\\\"\",\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\": \"Specifies the position of the component in relation to the `calcite-tab`s. The `\\\"above\\\"` and `\\\"below\\\"` values are deprecated.\"\n },\n \"attribute\": \"position\",\n \"reflect\": true,\n \"defaultValue\": \"\\\"top\\\"\"\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\": \"Specifies the size of the component.\"\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\": \"When `true`, the component will display with a folder style menu.\"\n },\n \"attribute\": \"bordered\",\n \"reflect\": true,\n \"defaultValue\": \"false\"\n }\n };\n }\n static get states() {\n return {\n \"titles\": {},\n \"tabs\": {}\n };\n }\n static get elementRef() { return \"el\"; }\n static get listeners() {\n return [{\n \"name\": \"calciteInternalTabTitleRegister\",\n \"method\": \"calciteInternalTabTitleRegister\",\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\": \"calciteInternalTabRegister\",\n \"method\": \"calciteInternalTabRegister\",\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}\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 * v1.0.0-beta.97\n */\nexport const CSS = {\n container: \"container\",\n handle: \"handle\"\n};\nexport var ICON_TYPES;\n(function (ICON_TYPES) {\n ICON_TYPES[\"grip\"] = \"grip\";\n})(ICON_TYPES || (ICON_TYPES = {}));\nexport const TEXT = {\n filterResults: \"Filter results\"\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 * v1.0.0-beta.97\n */\nimport { getItemIndex } from \"../pick-list/shared-list-logic\";\nexport function getScreenReaderText(item, status, valueList) {\n const { items, intlDragHandleIdle, intlDragHandleActive, intlDragHandleChange, intlDragHandleCommit } = valueList;\n const total = items.length;\n const position = getItemIndex(valueList, item) + 1;\n if (status === \"idle\") {\n const idleText = intlDragHandleIdle\n ? replacePlaceholders(intlDragHandleIdle, item.label, position, total)\n : `${item.label}, press space and use arrow keys to reorder content. Current position ${position} of ${total}.`;\n return idleText;\n }\n else if (status === \"active\") {\n const activeText = intlDragHandleActive\n ? replacePlaceholders(intlDragHandleActive, item.label, position, total)\n : `Reordering ${item.label}, current position ${position} of ${total}.`;\n return activeText;\n }\n else if (status === \"change\") {\n const changeText = intlDragHandleChange\n ? replacePlaceholders(intlDragHandleChange, item.label, position, total)\n : `${item.label}, new position ${position} of ${total}. Press space to confirm.`;\n return changeText;\n }\n else {\n const commitText = intlDragHandleCommit\n ? replacePlaceholders(intlDragHandleCommit, item.label, position, total)\n : `${item.label}, current position ${position} of ${total}.`;\n return commitText;\n }\n}\nexport function getHandleAndItemElement(event) {\n const handle = event\n .composedPath()\n .find((item) => { var _a; return ((_a = item.dataset) === null || _a === void 0 ? void 0 : _a.jsHandle) !== undefined; });\n const item = event\n .composedPath()\n .find((item) => { var _a; return ((_a = item.tagName) === null || _a === void 0 ? void 0 : _a.toLowerCase()) === \"calcite-value-list-item\"; });\n return { handle, item };\n}\nexport function replacePlaceholders(text, label, position, total) {\n const replacePosition = text.replace(\"${position}\", position.toString());\n const replaceLabel = replacePosition.replace(\"${item.label}\", label);\n return replaceLabel.replace(\"${total}\", total.toString());\n}\n","/* mixins & extensions */\n@keyframes in {\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n}\n@keyframes in-down {\n 0% {\n opacity: 0;\n transform: translate3D(0, -5px, 0);\n }\n 100% {\n opacity: 1;\n transform: translate3D(0, 0, 0);\n }\n}\n@keyframes in-up {\n 0% {\n opacity: 0;\n transform: translate3D(0, 5px, 0);\n }\n 100% {\n opacity: 1;\n transform: translate3D(0, 0, 0);\n }\n}\n@keyframes in-scale {\n 0% {\n opacity: 0;\n transform: scale3D(0.95, 0.95, 1);\n }\n 100% {\n opacity: 1;\n transform: scale3D(1, 1, 1);\n }\n}\n:root {\n --calcite-animation-timing: calc(150ms * var(--calcite-internal-duration-factor));\n --calcite-internal-duration-factor: var(--calcite-duration-factor, 1);\n --calcite-internal-animation-timing-fast: calc(100ms * var(--calcite-internal-duration-factor));\n --calcite-internal-animation-timing-medium: calc(200ms * var(--calcite-internal-duration-factor));\n --calcite-internal-animation-timing-slow: calc(300ms * var(--calcite-internal-duration-factor));\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@media (prefers-reduced-motion: reduce) {\n :root {\n --calcite-internal-duration-factor: 0.01;\n }\n}\n/**\n* Currently only used in Checkbox.\n*/\n:root {\n --calcite-floating-ui-transition: var(--calcite-animation-timing);\n}\n\n:host([hidden]) {\n display: none;\n}\n\n:host([disabled]) {\n pointer-events: none;\n cursor: default;\n -webkit-user-select: none;\n user-select: none;\n opacity: var(--calcite-ui-opacity-disabled);\n}\n\n:host {\n position: relative;\n box-sizing: border-box;\n display: flex;\n flex-shrink: 0;\n flex-grow: 0;\n flex-direction: column;\n align-items: stretch;\n background-color: transparent;\n font-size: var(--calcite-font-size--1);\n color: var(--calcite-ui-text-2);\n}\n:host * {\n box-sizing: border-box;\n}\n\n:host([disabled]) ::slotted([calcite-hydrated][disabled]),\n:host([disabled]) [calcite-hydrated][disabled] {\n /* prevent opacity stacking */\n opacity: 1;\n}\n\ncalcite-value-list-item:last-of-type {\n --tw-shadow: 0 0 #0000;\n --tw-shadow-colored: 0 0 #0000;\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n:host([filter-enabled]) header {\n margin-block-end: 0.25rem;\n display: flex;\n align-items: center;\n justify-content: flex-end;\n background-color: var(--calcite-ui-foreground-1);\n --tw-shadow: 0 1px 0 var(--calcite-ui-border-3);\n --tw-shadow-colored: 0 1px 0 var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n:host([filter-enabled]) header.sticky-pos {\n position: sticky;\n inset-block-start: 0px;\n z-index: 300;\n}\n\ncalcite-filter {\n margin-block-end: 1px;\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 * v1.0.0-beta.97\n */\nimport Sortable from \"sortablejs\";\nimport { h } from \"@stencil/core\";\nimport { CSS, ICON_TYPES } from \"./resources\";\nimport { calciteListFocusOutHandler, calciteListItemChangeHandler, calciteInternalListItemValueChangeHandler, cleanUpObserver, deselectSiblingItems, deselectRemovedItems, getItemData, handleFilter, initialize, initializeObserver, keyDownHandler, mutationObserverCallback, removeItem, selectSiblings, setFocus, setUpItems, moveItemIndex } from \"../pick-list/shared-list-logic\";\nimport List from \"../pick-list/shared-list-render\";\nimport { createObserver } from \"../../utils/observers\";\nimport { updateHostInteraction } from \"../../utils/interactive\";\nimport { getHandleAndItemElement, getScreenReaderText } from \"./utils\";\n/**\n * @slot - A slot for adding `calcite-value-list-item` elements. List items are displayed as a vertical list.\n * @slot menu-actions - A slot for adding a button and menu combination for performing actions, such as sorting.\n */\nexport class ValueList {\n constructor() {\n // --------------------------------------------------------------------------\n //\n // Properties\n //\n // --------------------------------------------------------------------------\n /**\n * When `true`, interaction is prevented and the component is displayed with lower opacity.\n */\n this.disabled = false;\n /**\n * When `true`, `calcite-value-list-item`s are sortable via a draggable button.\n */\n this.dragEnabled = false;\n /**\n * When `true`, an input appears at the top of the component that can be used by end users to filter list items.\n */\n this.filterEnabled = false;\n /**\n * When `true`, a busy indicator is displayed.\n */\n this.loading = false;\n /**\n * Similar to standard radio buttons and checkboxes.\n * When `true`, a user can select multiple `calcite-value-list-item`s at a time.\n * When `false`, only a single `calcite-value-list-item` can be selected at a time,\n * and a new selection will deselect previous selections.\n */\n this.multiple = false;\n /**\n * When `true` and single-selection is enabled, the selection changes when navigating `calcite-value-list-item`s via keyboard.\n */\n this.selectionFollowsFocus = false;\n // --------------------------------------------------------------------------\n //\n // Private Properties\n //\n // --------------------------------------------------------------------------\n this.selectedValues = new Map();\n this.dataForFilter = [];\n this.lastSelectedItem = null;\n this.mutationObserver = createObserver(\"mutation\", mutationObserverCallback.bind(this));\n this.setFilterEl = (el) => {\n this.filterEl = el;\n };\n this.deselectRemovedItems = deselectRemovedItems.bind(this);\n this.deselectSiblingItems = deselectSiblingItems.bind(this);\n this.selectSiblings = selectSiblings.bind(this);\n this.handleFilter = handleFilter.bind(this);\n this.getItemData = getItemData.bind(this);\n this.keyDownHandler = (event) => {\n if (event.defaultPrevented) {\n return;\n }\n const { handle, item } = getHandleAndItemElement(event);\n if (handle && !item.handleActivated && event.key === \" \") {\n this.updateScreenReaderText(getScreenReaderText(item, \"commit\", this));\n }\n if (!handle || !item.handleActivated) {\n keyDownHandler.call(this, event);\n return;\n }\n const { items } = this;\n if (event.key === \" \") {\n this.updateScreenReaderText(getScreenReaderText(item, \"active\", this));\n }\n if ((event.key !== \"ArrowUp\" && event.key !== \"ArrowDown\") || items.length <= 1) {\n return;\n }\n event.preventDefault();\n const { el } = this;\n const nextIndex = moveItemIndex(this, item, event.key === \"ArrowUp\" ? \"up\" : \"down\");\n if (nextIndex === items.length - 1) {\n el.appendChild(item);\n }\n else {\n const itemAtNextIndex = el.children[nextIndex];\n const insertionReferenceItem = itemAtNextIndex === item.nextElementSibling\n ? itemAtNextIndex.nextElementSibling\n : itemAtNextIndex;\n el.insertBefore(item, insertionReferenceItem);\n }\n this.items = this.getItems();\n this.calciteListOrderChange.emit(this.items.map(({ value }) => value));\n requestAnimationFrame(() => handle === null || handle === void 0 ? void 0 : handle.focus());\n item.handleActivated = true;\n this.updateHandleAriaLabel(handle, getScreenReaderText(item, \"change\", this));\n };\n this.storeAssistiveEl = (el) => {\n this.assistiveTextEl = el;\n };\n this.handleFocusIn = (event) => {\n const { handle, item } = getHandleAndItemElement(event);\n if (!(item === null || item === void 0 ? void 0 : item.handleActivated) && item && handle) {\n this.updateHandleAriaLabel(handle, getScreenReaderText(item, \"idle\", this));\n }\n };\n }\n // --------------------------------------------------------------------------\n //\n // Lifecycle\n //\n // --------------------------------------------------------------------------\n connectedCallback() {\n initialize.call(this);\n initializeObserver.call(this);\n }\n componentDidLoad() {\n this.setUpDragAndDrop();\n }\n componentDidRender() {\n updateHostInteraction(this);\n }\n disconnectedCallback() {\n cleanUpObserver.call(this);\n this.cleanUpDragAndDrop();\n }\n calciteListFocusOutHandler(event) {\n calciteListFocusOutHandler.call(this, event);\n }\n calciteListItemRemoveHandler(event) {\n removeItem.call(this, event);\n }\n calciteListItemChangeHandler(event) {\n calciteListItemChangeHandler.call(this, event);\n }\n calciteInternalListItemPropsChangeHandler(event) {\n event.stopPropagation();\n this.setUpFilter();\n }\n calciteInternalListItemValueChangeHandler(event) {\n calciteInternalListItemValueChangeHandler.call(this, event);\n event.stopPropagation();\n }\n // --------------------------------------------------------------------------\n //\n // Private Methods\n //\n // --------------------------------------------------------------------------\n getItems() {\n return Array.from(this.el.querySelectorAll(\"calcite-value-list-item\"));\n }\n setUpItems() {\n setUpItems.call(this, \"calcite-value-list-item\");\n }\n setUpFilter() {\n if (this.filterEnabled) {\n this.dataForFilter = this.getItemData();\n }\n }\n setUpDragAndDrop() {\n this.cleanUpDragAndDrop();\n if (!this.dragEnabled) {\n return;\n }\n this.sortable = Sortable.create(this.el, {\n dataIdAttr: \"id\",\n handle: `.${CSS.handle}`,\n draggable: \"calcite-value-list-item\",\n group: this.group,\n onSort: () => {\n this.items = Array.from(this.el.querySelectorAll(\"calcite-value-list-item\"));\n const values = this.items.map((item) => item.value);\n this.calciteListOrderChange.emit(values);\n }\n });\n }\n cleanUpDragAndDrop() {\n var _a;\n (_a = this.sortable) === null || _a === void 0 ? void 0 : _a.destroy();\n this.sortable = null;\n }\n handleBlur() {\n if (this.dragEnabled) {\n this.updateScreenReaderText(\"\");\n }\n }\n // --------------------------------------------------------------------------\n //\n // Public Methods\n //\n // --------------------------------------------------------------------------\n /** Returns the currently selected items */\n async getSelectedItems() {\n return this.selectedValues;\n }\n /**\n * Sets focus on the component.\n *\n * @param focusId\n */\n async setFocus(focusId) {\n return setFocus.call(this, focusId);\n }\n // --------------------------------------------------------------------------\n //\n // Render Methods\n //\n // --------------------------------------------------------------------------\n getIconType() {\n let type = null;\n if (this.dragEnabled) {\n type = ICON_TYPES.grip;\n }\n return type;\n }\n updateScreenReaderText(text) {\n this.assistiveTextEl.textContent = text;\n }\n updateHandleAriaLabel(handleElement, text) {\n handleElement.ariaLabel = text;\n }\n render() {\n return (h(List, { onBlur: this.handleBlur, onFocusin: this.handleFocusIn, onKeyDown: this.keyDownHandler, props: this }));\n }\n static get is() { return \"calcite-value-list\"; }\n static get encapsulation() { return \"shadow\"; }\n static get originalStyleUrls() {\n return {\n \"$\": [\"value-list.scss\"]\n };\n }\n static get styleUrls() {\n return {\n \"$\": [\"value-list.css\"]\n };\n }\n static get properties() {\n return {\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`, interaction is prevented and the component is displayed with lower opacity.\"\n },\n \"attribute\": \"disabled\",\n \"reflect\": true,\n \"defaultValue\": \"false\"\n },\n \"dragEnabled\": {\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`, `calcite-value-list-item`s are sortable via a draggable button.\"\n },\n \"attribute\": \"drag-enabled\",\n \"reflect\": true,\n \"defaultValue\": \"false\"\n },\n \"filterEnabled\": {\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`, an input appears at the top of the component that can be used by end users to filter list items.\"\n },\n \"attribute\": \"filter-enabled\",\n \"reflect\": true,\n \"defaultValue\": \"false\"\n },\n \"filterPlaceholder\": {\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\": \"Placeholder text for the filter's input field.\"\n },\n \"attribute\": \"filter-placeholder\",\n \"reflect\": true\n },\n \"group\": {\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\": \"The component's group identifier.\\n\\nTo drag elements from one list into another, both lists must have the same group value.\"\n },\n \"attribute\": \"group\",\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`, a busy indicator is displayed.\"\n },\n \"attribute\": \"loading\",\n \"reflect\": true,\n \"defaultValue\": \"false\"\n },\n \"multiple\": {\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\": \"Similar to standard radio buttons and checkboxes.\\nWhen `true`, a user can select multiple `calcite-value-list-item`s at a time.\\nWhen `false`, only a single `calcite-value-list-item` can be selected at a time,\\nand a new selection will deselect previous selections.\"\n },\n \"attribute\": \"multiple\",\n \"reflect\": true,\n \"defaultValue\": \"false\"\n },\n \"selectionFollowsFocus\": {\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` and single-selection is enabled, the selection changes when navigating `calcite-value-list-item`s via keyboard.\"\n },\n \"attribute\": \"selection-follows-focus\",\n \"reflect\": true,\n \"defaultValue\": \"false\"\n },\n \"intlDragHandleIdle\": {\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\": \"When `dragEnabled` is `true` and active, specifies accessible context to the `calcite-value-list-item`s initial position.\\n\\nUse \\\"`${position}` of `${total}`\\\" as a placeholder for displaying indices and `${item.label}` as a placeholder for displaying the `calcite-value-list-item` label.\"\n },\n \"attribute\": \"intl-drag-handle-idle\",\n \"reflect\": false\n },\n \"intlDragHandleActive\": {\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\": \"When `dragEnabled` is `true` and active, specifies accessible context to the component.\\n\\nUse \\\"`${position}` of `${total}`\\\" as a placeholder for displaying indices and `${item.label}` as a placeholder for displaying the `calcite-value-list-item` label.\"\n },\n \"attribute\": \"intl-drag-handle-active\",\n \"reflect\": false\n },\n \"intlDragHandleChange\": {\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\": \"When `dragEnabled` is `true` and active, specifies accessible context to the `calcite-value-list-item`s new position.\\n\\nUse \\\"`${position}` of `${total}`\\\" as a placeholder for displaying indices and `${item.label}` as a placeholder for displaying the `calcite-value-list-item` label.\"\n },\n \"attribute\": \"intl-drag-handle-change\",\n \"reflect\": false\n },\n \"intlDragHandleCommit\": {\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\": \"When `dragEnabled` is `true` and active, specifies accessible context to the `calcite-value-list-item`s current position after commit.\\n\\nUse \\\"`${position}` of `${total}`\\\" as a placeholder for displaying indices and `${item.label}` as a placeholder for displaying the `calcite-value-list-item` label.\"\n },\n \"attribute\": \"intl-drag-handle-commit\",\n \"reflect\": false\n }\n };\n }\n static get states() {\n return {\n \"selectedValues\": {},\n \"dataForFilter\": {}\n };\n }\n static get events() {\n return [{\n \"method\": \"calciteListChange\",\n \"name\": \"calciteListChange\",\n \"bubbles\": true,\n \"cancelable\": false,\n \"composed\": true,\n \"docs\": {\n \"tags\": [],\n \"text\": \"Emits when any of the list item selections have changed.\"\n },\n \"complexType\": {\n \"original\": \"Map<string, HTMLCalciteValueListItemElement>\",\n \"resolved\": \"Map<string, HTMLCalciteValueListItemElement>\",\n \"references\": {\n \"Map\": {\n \"location\": \"global\"\n },\n \"HTMLCalciteValueListItemElement\": {\n \"location\": \"global\"\n }\n }\n }\n }, {\n \"method\": \"calciteListOrderChange\",\n \"name\": \"calciteListOrderChange\",\n \"bubbles\": true,\n \"cancelable\": false,\n \"composed\": true,\n \"docs\": {\n \"tags\": [],\n \"text\": \"Emits when the order of the list has changed.\"\n },\n \"complexType\": {\n \"original\": \"any[]\",\n \"resolved\": \"any[]\",\n \"references\": {}\n }\n }];\n }\n static get methods() {\n return {\n \"getSelectedItems\": {\n \"complexType\": {\n \"signature\": \"() => Promise<Map<string, HTMLCalciteValueListItemElement>>\",\n \"parameters\": [],\n \"references\": {\n \"Promise\": {\n \"location\": \"global\"\n },\n \"Map\": {\n \"location\": \"global\"\n },\n \"HTMLCalciteValueListItemElement\": {\n \"location\": \"global\"\n }\n },\n \"return\": \"Promise<Map<string, HTMLCalciteValueListItemElement>>\"\n },\n \"docs\": {\n \"text\": \"Returns the currently selected items\",\n \"tags\": []\n }\n },\n \"setFocus\": {\n \"complexType\": {\n \"signature\": \"(focusId?: ListFocusId) => Promise<void>\",\n \"parameters\": [{\n \"tags\": [{\n \"name\": \"param\",\n \"text\": \"focusId\"\n }],\n \"text\": \"\"\n }],\n \"references\": {\n \"Promise\": {\n \"location\": \"global\"\n },\n \"ListFocusId\": {\n \"location\": \"import\",\n \"path\": \"../pick-list/shared-list-logic\"\n }\n },\n \"return\": \"Promise<void>\"\n },\n \"docs\": {\n \"text\": \"Sets focus on the component.\",\n \"tags\": [{\n \"name\": \"param\",\n \"text\": \"focusId\"\n }]\n }\n }\n };\n }\n static get elementRef() { return \"el\"; }\n static get listeners() {\n return [{\n \"name\": \"focusout\",\n \"method\": \"calciteListFocusOutHandler\",\n \"target\": undefined,\n \"capture\": false,\n \"passive\": false\n }, {\n \"name\": \"calciteListItemRemove\",\n \"method\": \"calciteListItemRemoveHandler\",\n \"target\": undefined,\n \"capture\": false,\n \"passive\": false\n }, {\n \"name\": \"calciteListItemChange\",\n \"method\": \"calciteListItemChangeHandler\",\n \"target\": undefined,\n \"capture\": false,\n \"passive\": false\n }, {\n \"name\": \"calciteInternalListItemPropsChange\",\n \"method\": \"calciteInternalListItemPropsChangeHandler\",\n \"target\": undefined,\n \"capture\": false,\n \"passive\": false\n }, {\n \"name\": \"calciteInternalListItemValueChange\",\n \"method\": \"calciteInternalListItemValueChangeHandler\",\n \"target\": undefined,\n \"capture\": false,\n \"passive\": false\n }];\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 * v1.0.0-beta.97\n */\nexport const ICONS = {\n drag: \"drag\"\n};\nexport const SLOTS = {\n actionsEnd: \"actions-end\",\n actionsStart: \"actions-start\"\n};\n","/* mixins & extensions */\n@keyframes in {\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n}\n@keyframes in-down {\n 0% {\n opacity: 0;\n transform: translate3D(0, -5px, 0);\n }\n 100% {\n opacity: 1;\n transform: translate3D(0, 0, 0);\n }\n}\n@keyframes in-up {\n 0% {\n opacity: 0;\n transform: translate3D(0, 5px, 0);\n }\n 100% {\n opacity: 1;\n transform: translate3D(0, 0, 0);\n }\n}\n@keyframes in-scale {\n 0% {\n opacity: 0;\n transform: scale3D(0.95, 0.95, 1);\n }\n 100% {\n opacity: 1;\n transform: scale3D(1, 1, 1);\n }\n}\n:root {\n --calcite-animation-timing: calc(150ms * var(--calcite-internal-duration-factor));\n --calcite-internal-duration-factor: var(--calcite-duration-factor, 1);\n --calcite-internal-animation-timing-fast: calc(100ms * var(--calcite-internal-duration-factor));\n --calcite-internal-animation-timing-medium: calc(200ms * var(--calcite-internal-duration-factor));\n --calcite-internal-animation-timing-slow: calc(300ms * var(--calcite-internal-duration-factor));\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@media (prefers-reduced-motion: reduce) {\n :root {\n --calcite-internal-duration-factor: 0.01;\n }\n}\n/**\n* Currently only used in Checkbox.\n*/\n:root {\n --calcite-floating-ui-transition: var(--calcite-animation-timing);\n}\n\n:host([hidden]) {\n display: none;\n}\n\n:host([disabled]) {\n pointer-events: none;\n cursor: default;\n -webkit-user-select: none;\n user-select: none;\n opacity: var(--calcite-ui-opacity-disabled);\n}\n\n:host {\n margin-block-end: 1px;\n box-sizing: border-box;\n display: flex;\n background-color: var(--calcite-ui-foreground-1);\n font-size: var(--calcite-font-size--1);\n color: var(--calcite-ui-text-2);\n --tw-shadow: 0 1px 0 var(--calcite-ui-border-3);\n --tw-shadow-colored: 0 1px 0 var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n transition: background-color var(--calcite-animation-timing), box-shadow var(--calcite-animation-timing);\n}\n:host * {\n box-sizing: border-box;\n}\n\ncalcite-pick-list-item {\n position: relative;\n margin: 0px;\n flex-grow: 1;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-colored: 0 0 #0000;\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n:host([active]), \n:host([selected]) {\n --tw-shadow: 0 0 0 1px var(--calcite-ui-brand);\n --tw-shadow-colored: 0 0 0 1px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n.handle {\n display: flex;\n cursor: move;\n align-items: center;\n justify-content: center;\n border-style: none;\n background-color: transparent;\n padding-block: 0px;\n padding-inline: 0.25rem;\n color: var(--calcite-ui-border-input);\n outline-color: transparent;\n}\n.handle:hover {\n background-color: var(--calcite-ui-foreground-2);\n color: var(--calcite-ui-text-1);\n}\n.handle:focus {\n outline: 2px solid var(--calcite-ui-brand);\n outline-offset: -2px;\n}\n.handle--activated {\n background-color: var(--calcite-ui-foreground-3);\n color: var(--calcite-ui-text-1);\n}\n.handle calcite-icon {\n color: inherit;\n}\n\n:host([disabled]) ::slotted([calcite-hydrated][disabled]),\n:host([disabled]) [calcite-hydrated][disabled] {\n /* prevent opacity stacking */\n opacity: 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 * v1.0.0-beta.97\n */\nimport { h, Host } from \"@stencil/core\";\nimport { ICON_TYPES } from \"../pick-list/resources\";\nimport { guid } from \"../../utils/guid\";\nimport { CSS, SLOTS as PICK_LIST_SLOTS } from \"../pick-list-item/resources\";\nimport { ICONS, SLOTS } from \"./resources\";\nimport { getSlotted } from \"../../utils/dom\";\nimport { connectConditionalSlotComponent, disconnectConditionalSlotComponent } from \"../../utils/conditionalSlot\";\nimport { updateHostInteraction } from \"../../utils/interactive\";\n/**\n * @slot actions-end - A slot for adding actions or content to the end side of the component.\n * @slot actions-start - A slot for adding actions or content to the start side of the component.\n */\nexport class ValueListItem {\n constructor() {\n /**\n * When `true`, interaction is prevented and the component is displayed with lower opacity.\n */\n this.disabled = false;\n /**\n * @internal\n */\n this.disableDeselect = false;\n /**\n * When `true`, prevents the content of the component from user interaction.\n */\n this.nonInteractive = false;\n /**\n * @internal\n */\n this.handleActivated = false;\n /**\n * Determines the icon SVG symbol that will be shown. Options are circle, square, grip or null.\n *\n * @see [ICON_TYPES](https://github.com/Esri/calcite-components/blob/master/src/components/pick-list/resources.ts#L5)\n */\n this.icon = null;\n /**\n * When `true`, adds an action to remove the component.\n */\n this.removable = false;\n /**\n * When `true`, the component is selected.\n */\n this.selected = false;\n this.pickListItem = null;\n this.guid = `calcite-value-list-item-${guid()}`;\n // --------------------------------------------------------------------------\n //\n // Private Methods\n //\n // --------------------------------------------------------------------------\n this.getPickListRef = (el) => (this.pickListItem = el);\n this.handleKeyDown = (event) => {\n if (event.key === \" \") {\n this.handleActivated = !this.handleActivated;\n }\n };\n this.handleBlur = () => {\n this.handleActivated = false;\n };\n this.handleSelectChange = (event) => {\n this.selected = event.detail.selected;\n };\n }\n // --------------------------------------------------------------------------\n //\n // Lifecycle\n //\n // --------------------------------------------------------------------------\n connectedCallback() {\n connectConditionalSlotComponent(this);\n }\n disconnectedCallback() {\n disconnectConditionalSlotComponent(this);\n }\n componentDidRender() {\n updateHostInteraction(this, this.el.closest(\"calcite-value-list\") ? \"managed\" : false);\n }\n // --------------------------------------------------------------------------\n //\n // Public Methods\n //\n // --------------------------------------------------------------------------\n /**\n * Toggle the selection state. By default this won't trigger an event.\n * The first argument allows the value to be coerced, rather than swapping values.\n *\n * @param coerce\n */\n async toggleSelected(coerce) {\n this.pickListItem.toggleSelected(coerce);\n }\n /** Set focus on the component. */\n async setFocus() {\n var _a;\n (_a = this.pickListItem) === null || _a === void 0 ? void 0 : _a.setFocus();\n }\n calciteListItemChangeHandler(event) {\n // adjust item payload from wrapped item before bubbling\n event.detail.item = this.el;\n }\n // --------------------------------------------------------------------------\n //\n // Render Methods\n //\n // --------------------------------------------------------------------------\n renderActionsEnd() {\n const { el } = this;\n const hasActionsEnd = getSlotted(el, SLOTS.actionsEnd);\n return hasActionsEnd ? (h(\"slot\", { name: SLOTS.actionsEnd, slot: PICK_LIST_SLOTS.actionsEnd })) : null;\n }\n renderActionsStart() {\n const { el } = this;\n const hasActionsStart = getSlotted(el, SLOTS.actionsStart);\n return hasActionsStart ? (h(\"slot\", { name: SLOTS.actionsStart, slot: PICK_LIST_SLOTS.actionsStart })) : null;\n }\n renderHandle() {\n const { icon } = this;\n if (icon === ICON_TYPES.grip) {\n return (h(\"span\", { class: {\n [CSS.handle]: true,\n [CSS.handleActivated]: this.handleActivated\n }, \"data-js-handle\": true, onBlur: this.handleBlur, onKeyDown: this.handleKeyDown, role: \"button\", tabindex: \"0\" }, h(\"calcite-icon\", { icon: ICONS.drag, scale: \"s\" })));\n }\n }\n render() {\n return (h(Host, { id: this.el.id || this.guid }, this.renderHandle(), h(\"calcite-pick-list-item\", { description: this.description, disableDeselect: this.disableDeselect, disabled: this.disabled, label: this.label, metadata: this.metadata, nonInteractive: this.nonInteractive, onCalciteListItemChange: this.handleSelectChange, ref: this.getPickListRef, removable: this.removable, selected: this.selected, value: this.value }, this.renderActionsStart(), this.renderActionsEnd())));\n }\n static get is() { return \"calcite-value-list-item\"; }\n static get encapsulation() { return \"shadow\"; }\n static get originalStyleUrls() {\n return {\n \"$\": [\"value-list-item.scss\"]\n };\n }\n static get styleUrls() {\n return {\n \"$\": [\"value-list-item.css\"]\n };\n }\n static get properties() {\n return {\n \"description\": {\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\": \"A description for the component that displays below the label text.\"\n },\n \"attribute\": \"description\",\n \"reflect\": true\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`, interaction is prevented and the component is displayed with lower opacity.\"\n },\n \"attribute\": \"disabled\",\n \"reflect\": true,\n \"defaultValue\": \"false\"\n },\n \"disableDeselect\": {\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 \"name\": \"internal\",\n \"text\": undefined\n }],\n \"text\": \"\"\n },\n \"attribute\": \"disable-deselect\",\n \"reflect\": false,\n \"defaultValue\": \"false\"\n },\n \"nonInteractive\": {\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`, prevents the content of the component from user interaction.\"\n },\n \"attribute\": \"non-interactive\",\n \"reflect\": true,\n \"defaultValue\": \"false\"\n },\n \"handleActivated\": {\n \"type\": \"boolean\",\n \"mutable\": true,\n \"complexType\": {\n \"original\": \"boolean\",\n \"resolved\": \"boolean\",\n \"references\": {}\n },\n \"required\": false,\n \"optional\": true,\n \"docs\": {\n \"tags\": [{\n \"name\": \"internal\",\n \"text\": undefined\n }],\n \"text\": \"\"\n },\n \"attribute\": \"handle-activated\",\n \"reflect\": false,\n \"defaultValue\": \"false\"\n },\n \"icon\": {\n \"type\": \"string\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"ICON_TYPES | null\",\n \"resolved\": \"ICON_TYPES.circle | ICON_TYPES.grip | ICON_TYPES.square\",\n \"references\": {\n \"ICON_TYPES\": {\n \"location\": \"import\",\n \"path\": \"../pick-list/resources\"\n }\n }\n },\n \"required\": false,\n \"optional\": true,\n \"docs\": {\n \"tags\": [{\n \"name\": \"see\",\n \"text\": \"[ICON_TYPES](https://github.com/Esri/calcite-components/blob/master/src/components/pick-list/resources.ts#L5)\"\n }],\n \"text\": \"Determines the icon SVG symbol that will be shown. Options are circle, square, grip or null.\"\n },\n \"attribute\": \"icon\",\n \"reflect\": true,\n \"defaultValue\": \"null\"\n },\n \"label\": {\n \"type\": \"string\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"string\",\n \"resolved\": \"string\",\n \"references\": {}\n },\n \"required\": true,\n \"optional\": false,\n \"docs\": {\n \"tags\": [],\n \"text\": \"Label and accessible name for the component. Appears next to the icon.\"\n },\n \"attribute\": \"label\",\n \"reflect\": true\n },\n \"metadata\": {\n \"type\": \"unknown\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"Record<string, unknown>\",\n \"resolved\": \"{ [x: string]: unknown; }\",\n \"references\": {\n \"Record\": {\n \"location\": \"global\"\n }\n }\n },\n \"required\": false,\n \"optional\": true,\n \"docs\": {\n \"tags\": [],\n \"text\": \"Provides additional metadata to the component. Primary use is for a filter on the parent list.\"\n }\n },\n \"removable\": {\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`, adds an action to remove the component.\"\n },\n \"attribute\": \"removable\",\n \"reflect\": true,\n \"defaultValue\": \"false\"\n },\n \"selected\": {\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\": \"When `true`, the component is selected.\"\n },\n \"attribute\": \"selected\",\n \"reflect\": true,\n \"defaultValue\": \"false\"\n },\n \"value\": {\n \"type\": \"any\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"any\",\n \"resolved\": \"any\",\n \"references\": {}\n },\n \"required\": true,\n \"optional\": false,\n \"docs\": {\n \"tags\": [],\n \"text\": \"The component's value.\"\n },\n \"attribute\": \"value\",\n \"reflect\": false\n }\n };\n }\n static get events() {\n return [{\n \"method\": \"calciteListItemRemove\",\n \"name\": \"calciteListItemRemove\",\n \"bubbles\": true,\n \"cancelable\": true,\n \"composed\": true,\n \"docs\": {\n \"tags\": [],\n \"text\": \"Fires when the remove button is pressed.\"\n },\n \"complexType\": {\n \"original\": \"void\",\n \"resolved\": \"void\",\n \"references\": {}\n }\n }];\n }\n static get methods() {\n return {\n \"toggleSelected\": {\n \"complexType\": {\n \"signature\": \"(coerce?: boolean) => Promise<void>\",\n \"parameters\": [{\n \"tags\": [{\n \"name\": \"param\",\n \"text\": \"coerce\"\n }],\n \"text\": \"\"\n }],\n \"references\": {\n \"Promise\": {\n \"location\": \"global\"\n }\n },\n \"return\": \"Promise<void>\"\n },\n \"docs\": {\n \"text\": \"Toggle the selection state. By default this won't trigger an event.\\nThe first argument allows the value to be coerced, rather than swapping values.\",\n \"tags\": [{\n \"name\": \"param\",\n \"text\": \"coerce\"\n }]\n }\n },\n \"setFocus\": {\n \"complexType\": {\n \"signature\": \"() => Promise<void>\",\n \"parameters\": [],\n \"references\": {\n \"Promise\": {\n \"location\": \"global\"\n }\n },\n \"return\": \"Promise<void>\"\n },\n \"docs\": {\n \"text\": \"Set focus on the component.\",\n \"tags\": []\n }\n }\n };\n }\n static get elementRef() { return \"el\"; }\n static get listeners() {\n return [{\n \"name\": \"calciteListItemChange\",\n \"method\": \"calciteListItemChangeHandler\",\n \"target\": undefined,\n \"capture\": false,\n \"passive\": false\n }];\n }\n}\n","/** @license\r\n * Copyright 2022 Esri\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n\r\n:host {\r\n @apply block;\r\n}\r\n\r\n.editor-container {\r\n @apply relative\r\n h-full;\r\n}\r\n\r\n.editor-controls {\r\n @apply h-11\r\n pr-2;\r\n background-color: $solutions-background-color;\r\n}\r\n\r\n.editor-buttons {\r\n @apply float-right;\r\n}\r\n\r\nhtml[dir=\"rtl\"] .editor-buttons {\r\n @apply float-left;\r\n}\r\n\r\n.edit-error-flag {\r\n @apply pt-2;\r\n color: red;\r\n visibility: hidden;\r\n}\r\n\r\n.edit-button {\r\n @apply p-inline-start-2;\r\n}\r\n\r\n.editor-text {\r\n @apply w-full\r\n overflow-y-auto;\r\n background-color: $solutions-white;\r\n}\r\n\r\n.edit-width {\r\n @apply w-full;\r\n}\r\n\r\n/* NEW CSS FOR MONACO */\r\n.edit-parent {\r\n @apply w-full\r\n box-border;\r\n /* adjust for edit buttons and border */\r\n height: calc(100% - 46px);\r\n}\r\n\r\n.json-edit-container {\r\n @apply w-full\r\n h-full\r\n border-lightgray;\r\n}\r\n\r\n.padding-right {\r\n @apply p-inline-end-0.5;\r\n}\r\n\r\n.btn {\r\n @apply flex\r\n mb-4\r\n content-center;\r\n height: 25px;\r\n width: 120px;\r\n}\r\n\r\n.select-ctrl {\r\n @apply mb-4;\r\n}\r\n\r\n.all-edits {\r\n @apply mt-16;\r\n}\r\n\r\n.floating-title {\r\n font-size: 2rem;\r\n z-index: 100;\r\n position: absolute;\r\n left: 0.5rem;\r\n pointer-events: none;\r\n}\r\n\r\n.floating-title-button {\r\n pointer-events: auto;\r\n}\r\n\r\n.json-editor-position1 {\r\n @apply absolute\r\n left-0\r\n top-0\r\n w-full\r\n h-full\r\n m-0\r\n p-0\r\n overflow-hidden;\r\n max-height: 100% !important;\r\n}\r\n\r\n.json-editor-position2a {\r\n @apply absolute\r\n left-0\r\n top-0\r\n w-1/2\r\n h-full\r\n m-0\r\n p-0\r\n overflow-hidden;\r\n max-height: 100% !important;\r\n}\r\n\r\n.json-editor-position2b {\r\n @apply absolute\r\n right-0\r\n top-0\r\n w-1/2\r\n h-full\r\n m-0\r\n p-0\r\n overflow-hidden;\r\n max-height: 100% !important;\r\n}\r\n\r\n","/** @license\r\n * Copyright 2022 Esri\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n\r\n/**\r\n * Encapsulates the Monaco Editor (https://microsoft.github.io/monaco-editor/) into a\r\n * web component for JSON content. Note that the app's HTML must include the editor because\r\n * it lives in the global space.\r\n *\r\n * Attributes:\r\n * `hasErrors`: Flag indicating if the JSON currently contained in the editor has errors\r\n * `instanceid`: id of component (required if there are multiple instances of the component)\r\n * `value`: Initial content of editor\r\n *\r\n * Methods:\r\n * `getEditorContents`: Gets the contents of the editor.\r\n * `replaceCurrentSelection`: Replaces the current selection with the supplied text, inserting if nothing is selected.\r\n * `reset`: Resets the contents of the editor with the current `value`.\r\n *\r\n * @example\r\n * <script src=\"./libs/require.js\"></script>\r\n * <script src=\"./monacoConfig.js\"></script>\r\n * <script>\r\n * require.config({\r\n * \"paths\": {\r\n * \"vs\": \"./libs/monaco-editor\"\r\n * }\r\n * });\r\n * require([\"vs/editor/editor.main\"], function () {\r\n * });\r\n * </script>\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\r\nimport { Component, Element, Host, h, Method, Prop, VNode } from '@stencil/core';\r\nimport JsonEditor_T9n from '../../assets/t9n/json-editor/resources.json';\r\nimport { getLocaleComponentStrings } from '../../utils/locale';\r\n\r\n@Component({\r\n tag: 'json-editor',\r\n styleUrl: 'json-editor.scss',\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\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 a public value to indicate if the model has any changes.\r\n */\r\n @Prop({ mutable: true, reflect: true }) hasChanges: boolean = false;\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 * Contains a unique identifier for when we have multiple instances of the editor.\r\n * For example when we want to show an item's data as well as an item's properties.\r\n */\r\n @Prop({ mutable: true, reflect: true }) instanceid: any = \"\";\r\n\r\n /**\r\n * Contains the public value for this component; it is not changed by the editor.\r\n * When changed, the change overwrites the contents of the editor.\r\n */\r\n @Prop({ mutable: true, reflect: true }) value: any = \"\";\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Lifecycle\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n /**\r\n * StencilJS: Called once just after the component is fully loaded and the first render() occurs.\r\n */\r\n componentDidLoad(): void {\r\n const editorContainer = document.getElementById(`${this.instanceid}-container`);\r\n if (editorContainer) {\r\n this._editor = monaco.editor.create(\r\n editorContainer,\r\n {\r\n value: this.value,\r\n language: \"json\",\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 );\r\n\r\n this._currentModel = this._editor.getModel();\r\n\r\n this._contentChanged = this._currentModel.onDidChangeContent(this._onEditorChange.bind(this));\r\n\r\n // Intercept the monaco function call that shows error markers to see if our content has errors\r\n const setModelMarkers = monaco.editor.setModelMarkers;\r\n const self = this;\r\n monaco.editor.setModelMarkers = function(model, owner, markers) {\r\n // If this call was for our model, it acts like an onEditorChange event\r\n // but gives us access to the error state as well\r\n if (model.id === self._currentModel.id) {\r\n\r\n // Set the error state & dispatch event if state has changed\r\n self._flagEditorHasErrors(markers.length > 0);\r\n\r\n // Set the changed state & dispatch event if state has changed, but only if there are no errors\r\n if (!self.hasErrors) {\r\n self._flagEditorHasChanges(self._currentModel?.canUndo());\r\n if (self._currentModel?.canUndo()) {\r\n self._flagEditorContentChanged();\r\n }\r\n }\r\n\r\n // Show the error flag if there are errors\r\n const errorFlag = document.getElementById(`${self.instanceid}-errorFlag`);\r\n errorFlag.style.visibility = self.hasErrors ? \"visible\" : \"hidden\";\r\n }\r\n\r\n // Pass on the call to the next editor in a chain of intercepts or, finally, to monaco\r\n setModelMarkers.call(monaco.editor, model, owner, markers);\r\n }\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 this._toggleUndoRedo();\r\n }\r\n }\r\n\r\n /**\r\n * StencilJS: Called once just after the component is first connected to the DOM.\r\n *\r\n * @returns Promise when complete\r\n */\r\n async componentWillLoad(): Promise<void> {\r\n this._initValueObserver();\r\n await this._getTranslations();\r\n return;\r\n }\r\n\r\n /**\r\n * Renders the component.\r\n */\r\n render(): VNode {\r\n return (\r\n <Host>\r\n <div id={`${this.instanceid}-editor-container`} class=\"editor-container padding-right\">\r\n <div class=\"editor-controls\">\r\n <div class=\"editor-buttons\">\r\n {/* errors flag */}\r\n <calcite-icon\r\n id={`${this.instanceid}-errorFlag`}\r\n icon=\"exclamation-mark-triangle\"\r\n title={this._translations.errorFlag}\r\n scale=\"s\"\r\n class=\"edit-error-flag\"\r\n ></calcite-icon>\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 display-none\"></div>\r\n </div>\r\n </div>\r\n </Host>\r\n );\r\n }\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Properties (protected)\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n protected _cancelEditsBtnHandler: any;\r\n protected _contentChanged: any;\r\n protected _currentModel: any;\r\n protected _diffEditor: any;\r\n protected _editor: any;\r\n protected _loaded: boolean = false;\r\n protected _searchBtnHandler: any;\r\n protected _translations: typeof JsonEditor_T9n;\r\n protected _useDiffEditor: boolean = false;\r\n protected _valueObserver: MutationObserver;\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 * Gets the contents of the editor.\r\n *\r\n * @returns Promise resolving with the current contents of the editor\r\n */\r\n @Method()\r\n async getEditorContents(): Promise<any> {\r\n return new Promise<any>((resolve, reject) => {\r\n try {\r\n const currentValue = this._currentModel.getValue();\r\n resolve(currentValue);\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n }\r\n\r\n\r\n /**\r\n * Frees the editor events and memory; to be called when the web component is no longer needed.\r\n *\r\n * Because the component lifecycle doesn't include an \"onDestroy\" event\r\n * (@see https://stenciljs.com/docs/component-lifecycle#disconnectedcallback)\r\n * and TypeScript/JavaScript does automatic garbage collection without a callback\r\n * hook until ES2021\r\n * (@see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/FinalizationRegistry),\r\n * this cleanup call needs to be called manually.\r\n */\r\n @Method()\r\n async prepareForDeletion(): Promise<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\r\n this._editor?.dispose();\r\n }\r\n\r\n /**\r\n * Replaces the current selection with the supplied text, inserting if nothing is selected.\r\n *\r\n * @param replacement Text to use for replacement or insertion\r\n * @returns Promise resolving when function is done\r\n */\r\n @Method()\r\n async replaceCurrentSelection(\r\n replacement: string\r\n ): Promise<any> {\r\n const currentSelection = this._editor.getSelection();\r\n this._editor.executeEdits(\"\", [\r\n { range: currentSelection, text: replacement }\r\n ]);\r\n }\r\n\r\n /**\r\n * Resets the contents of the editor with the current `value`.\r\n *\r\n * @returns Promise resolving when function is done\r\n */\r\n @Method()\r\n async reset(): Promise<any> {\r\n return new Promise<any>((resolve, reject) => {\r\n try {\r\n this._reset();\r\n resolve({ success: true });\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n }\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Private Methods\r\n //\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 protected _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 protected _enableButton(buttonId: string): void {\r\n document.getElementById(buttonId)?.removeAttribute(\"disabled\");\r\n }\r\n\r\n /**\r\n * Dispatches an event that the editor's content has changed.\r\n *\r\n * @protected\r\n */\r\n protected _flagEditorContentChanged(): void {\r\n // Event for notifying that the editor contents have changed\r\n window.dispatchEvent(new CustomEvent(\"solutionEditorContentChanged\", {\r\n detail: {\r\n id: this.instanceid,\r\n contents: this._currentModel.getValue()\r\n },\r\n bubbles: true,\r\n cancelable: false,\r\n composed: true\r\n }));\r\n }\r\n\r\n /**\r\n * Sets the editor's flag indicating if it has changes and dispatches an event when\r\n * the flag value changes.\r\n *\r\n * @param flagHasChanges Current state of change in the editor; if it doesn't match the value saved in this\r\n * object, an event is dispatched with the new value and the saved value is updated\r\n *\r\n * @protected\r\n */\r\n protected _flagEditorHasChanges(flagHasChanges: boolean): void {\r\n // Event for notifying if the editor has updated the value of its hasChanges property\r\n if (this.hasChanges !== flagHasChanges) {\r\n window.dispatchEvent(new CustomEvent(\"solutionEditorHasChanges\", {\r\n detail: flagHasChanges,\r\n bubbles: true,\r\n cancelable: false,\r\n composed: true\r\n }));\r\n this.hasChanges = flagHasChanges;\r\n }\r\n }\r\n\r\n /**\r\n * Sets the editor's flag indicating if it has errors and dispatches an event when\r\n * the flag value changes.\r\n *\r\n * @param flagHasErrors Current state of errors in the editor; if it doesn't match the value saved in this\r\n * object, an event is dispatched with the new value and the saved value is updated\r\n *\r\n * @protected\r\n */\r\n protected _flagEditorHasErrors(flagHasErrors: boolean): void {\r\n // Event for notifying if the editor has updated the value of its hasErrors property\r\n if (this.hasErrors !== flagHasErrors) {\r\n window.dispatchEvent(new CustomEvent(\"solutionEditorHasErrors\", {\r\n detail: flagHasErrors,\r\n bubbles: true,\r\n cancelable: false,\r\n composed: true\r\n }));\r\n this.hasErrors = flagHasErrors;\r\n }\r\n }\r\n\r\n /**\r\n * Fetches the component's translations\r\n *\r\n * @protected\r\n */\r\n protected async _getTranslations(): Promise<void> {\r\n const translations = await getLocaleComponentStrings(this.el);\r\n this._translations = translations[0] as typeof JsonEditor_T9n;\r\n }\r\n\r\n /**\r\n * Initializes the observer that will monitor and respond to changes of the value.\r\n *\r\n * @protected\r\n */\r\n protected _initValueObserver(): void {\r\n this._valueObserver = new MutationObserver(ml => {\r\n ml.forEach(mutation => {\r\n if (mutation.type === 'attributes' && mutation.attributeName === \"value\") {\r\n const newValue: string = mutation.target[mutation.attributeName];\r\n if ((newValue !== mutation.oldValue && this._loaded)) {\r\n this._currentModel.setValue(this.value);\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 * Handles activites appropriate to changes in the editor.\r\n *\r\n * @protected\r\n */\r\n protected _onEditorChange(): void {\r\n // Note: we're not flagging that the editor has changes here because this event\r\n // arrives before the model markers event, which indicates errors. We don't want\r\n // to notify about changes if there are errors.\r\n this._toggleUndoRedo();\r\n }\r\n\r\n /**\r\n * Redoes the previous edit operation.\r\n *\r\n * @protected\r\n */\r\n protected _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 * Resets the stored model to the original value.\r\n *\r\n * @protected\r\n */\r\n protected _reset(): void {\r\n // Restore the original value\r\n this._currentModel.setValue(this.value);\r\n\r\n // update the ui\r\n this._toggleUndoRedo();\r\n }\r\n\r\n /**\r\n * Handles click on \"Search\" button.\r\n *\r\n * @protected\r\n */\r\n protected _search(): void {\r\n this._editor.trigger('toggleFind', 'actions.find');\r\n }\r\n\r\n /**\r\n * Sets the models for the diff editor.\r\n *\r\n * @protected\r\n */\r\n protected _setDiffModel(): void {\r\n if (this._diffEditor) {\r\n this._diffEditor.setModel({\r\n original: monaco.editor.createModel(this.value, \"json\"),\r\n modified: this._editor.getModel()\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Shows/Hides the appropriate editor: regular or diff.\r\n *\r\n * @protected\r\n */\r\n protected _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(\"display-none\");\r\n container.classList.add(\"display-none\");\r\n } else {\r\n diffContainer.classList.add(\"display-none\");\r\n container.classList.remove(\"display-none\");\r\n }\r\n }\r\n\r\n /**\r\n * Toggles the undo and redo buttons.\r\n *\r\n * @protected\r\n */\r\n protected _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 * Undoes the current edit operation.\r\n *\r\n * @protected\r\n */\r\n protected _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","/** @license\r\n * Copyright 2022 Esri\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n\r\n$thumbnail-width: 363px;\r\n\r\n.inputBottomSeparation {\r\n @apply mt-0\r\n mx-0\r\n mb-6;\r\n}\r\n\r\n.icon-inline--on-left, .icon-inline--on-right {\r\n @apply inline\r\n align-middle\r\n m-inline-end-1.5;\r\n fill: $solutions-blue;\r\n}\r\n\r\n.scale-down {\r\n @apply object-scale-down;\r\n}\r\n\r\n.img-container {\r\n @apply inline\r\n m-inline-end-4;\r\n max-width: $thumbnail-width;\r\n}\r\n\r\n.summary-count-container {\r\n @apply inline\r\n flex-grow\r\n m-inline-start-3;\r\n}\r\n\r\n.snippet-count-container {\r\n width: calc(100vw - $thumbnail-width);\r\n}\r\n\r\n.parent-container {\r\n @apply max-w-full\r\n p-4;\r\n}\r\n\r\nlabel {\r\n @apply relative\r\n block\r\n mt-0\r\n mx-0\r\n mb-6\r\n min-w-min;\r\n}\r\n","/** @license\r\n * Copyright 2022 Esri\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n\r\nimport { Component, Element, h, Host, Listen, Prop, State, VNode, Watch } from '@stencil/core';\r\nimport '@esri/calcite-components';\r\nimport state from \"../../utils/solution-store\";\r\nimport SolutionItemDetails_T9n from '../../assets/t9n/solution-item-details/resources.json';\r\nimport { getLocaleComponentStrings } from '../../utils/locale';\r\nimport { IItemGeneralized } from '@esri/solution-common';\r\nimport { IItemTemplateEdit } from '../../utils/interfaces';\r\n\r\n@Component({\r\n tag: 'solution-item-details',\r\n styleUrl: 'solution-item-details.scss',\r\n shadow: false,\r\n})\r\nexport class SolutionItemDetails {\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Host element access\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n @Element() el: HTMLSolutionItemDetailsElement;\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Properties (public)\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n /**\r\n * A template's itemId.\r\n */\r\n @Prop({ mutable: true, reflect: true }) itemId = \"\";\r\n\r\n @Watch(\"itemId\") itemIdWatchHandler(): void {\r\n console.log(\"update item details; id \" + this.itemId);//???\r\n }\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Lifecycle\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n /**\r\n * StencilJS: Called once just after the component is first connected to the DOM.\r\n */\r\n async componentWillLoad(): Promise<void> {\r\n return this._getTranslations();\r\n }\r\n\r\n async componentWillRender(): Promise<void> {\r\n console.log(\"update item details \" + this.itemId);//???\r\n this.itemEdit = state.getItemInfo(this.itemId);\r\n if (this.itemEdit) {\r\n this.itemDetails = this.itemEdit.item;\r\n this.itemType = this.itemDetails.type;\r\n }\r\n return Promise.resolve();\r\n }\r\n\r\n /**\r\n * Renders the component.\r\n */\r\n render(): VNode {\r\n console.log(\"render item details \" + this.itemId);//???\r\n console.log(\" title \" + this.itemDetails.title);//???\r\n console.log(\" snippet \" + this.itemDetails.snippet);//???\r\n return (\r\n <Host>\r\n <div class=\"parent-container\">\r\n <div class=\"inputBottomSeparation\">\r\n <calcite-input id=\"item-title\" value={this.itemDetails.title} />\r\n </div>\r\n\r\n <div class=\"inputBottomSeparation\">\r\n\r\n <input accept=\".jpg,.gif,.png,image/jpg,image/gif,image/png\" class=\"display-none\" onChange={(event) => (this._updateThumbnail(event))} ref={(el) => (this.browseForThumbnail = el)} type=\"file\" />\r\n\r\n <button class=\"font-size--3 btn-link inline-block trailer-quarter\" onClick={() => this._getThumbnail()}>\r\n <svg class=\"icon-inline icon-inline--on-left\" height=\"16\" viewBox=\"0 0 16 16\" width=\"16\">\r\n <path d=\"M14.792 2.666l-1.414-1.413a.965.965 0 0 0-1.385-.03l-1.444 1.444-8.763 8.72L.03 15.481a.371.371 0 0 0 .488.488l4.096-1.756 8.763-8.72-.001-.001.002.002 1.443-1.444a.965.965 0 0 0-.03-1.385zM1.569 14.431l.554-1.293.74.739zm2.338-.924l-1.414-1.414 7.963-7.92 1.414 1.415zm8.67-8.626l-1.413-1.414 1.29-1.29a.306.306 0 0 1 .433 0l.981.98a.306.306 0 0 1 0 .433z\" />\r\n </svg>{this._translations.editThumbnail}\r\n </button>\r\n\r\n <div class=\"flex\">\r\n <div class=\"img-container\" ref={(el) => (this.thumbnailContainer = el)}>\r\n <img class=\"scale-down\" height=\"133\" id=\"item-thumbnail\" ref={(el) => (this.thumbnail = el)} width=\"200\" />\r\n </div>\r\n <div class=\"snippet-count-container\">\r\n <calcite-input id=\"item-snippet\" maxlength={250} type=\"textarea\" value={this.itemDetails.snippet} />\r\n <label class=\"font-size--3\" id=\"item-snippet-count\" ref={(el) => (this.itemSnippetCount = el)} />\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <calcite-label>{this._translations.description}\r\n <label id=\"item-description-label\">\r\n <calcite-input id=\"item-description\" type=\"textarea\" value={this.itemDetails.description} />\r\n </label>\r\n </calcite-label>\r\n\r\n <calcite-label>{this._translations.tags}\r\n <label id=\"item-tags-label\">\r\n <calcite-input id=\"item-tags\" value={(this.itemDetails.tags && Array.isArray(this.itemDetails.tags) ? this.itemDetails.tags : [this.itemDetails.tags]).join(\",\")} />\r\n </label>\r\n </calcite-label>\r\n\r\n {this.itemType !== \"Group\" ? <calcite-label>{this._translations.credits}\r\n <label id=\"item-credits-label\">\r\n <calcite-input id=\"item-credits\" value={this.itemDetails.accessInformation} />\r\n </label>\r\n </calcite-label> : null}\r\n\r\n {this.itemType !== \"Group\" ? <calcite-label>\r\n <label id=\"item-terms-label\">{this._translations.termsOfUse}\r\n <calcite-input id=\"item-terms\" type=\"textarea\" value={this.itemDetails.licenseInfo} />\r\n </label>\r\n </calcite-label> : null}\r\n\r\n </div>\r\n </Host>\r\n );\r\n }\r\n\r\n componentDidRender(): void {\r\n this._loadThumb()\r\n }\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Properties (protected)\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n /**\r\n * Handle to the element for browsing for a file.\r\n */\r\n protected browseForThumbnail: HTMLInputElement;\r\n\r\n @State() itemDetails: IItemGeneralized = {\r\n accessInformation: \"\",\r\n description: \"\",\r\n licenseInfo: \"\",\r\n snippet: \"\",\r\n tags: [],\r\n title: \"\"\r\n } as any;\r\n\r\n @State() protected itemEdit: IItemTemplateEdit;\r\n\r\n protected itemType: string;\r\n\r\n /**\r\n * Contains the translations for this component.\r\n * All UI strings should be defined here.\r\n */\r\n @State() _translations: typeof SolutionItemDetails_T9n;\r\n\r\n /**\r\n * Handle to the snippet character-count feedback.\r\n */\r\n protected itemSnippetCount: HTMLLabelElement;\r\n\r\n /**\r\n * Handle to the thumbnail image display.\r\n */\r\n @State() protected thumbnail: HTMLImageElement;\r\n\r\n /**\r\n * Handle to the thumbnail image container.\r\n */\r\n @State() protected thumbnailContainer: HTMLElement;\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Event Listeners\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n /**\r\n * Updates the component's value with changes to the input fields.\r\n */\r\n @Listen(\"calciteInputInput\")\r\n inputReceivedHandler(event: any): void {\r\n switch (event.target.id) {\r\n case \"item-title\":\r\n this.itemDetails.title = event.target.value;\r\n this._updateStore();\r\n break;\r\n case \"item-snippet\":\r\n if (event.target.value.length > 250) {\r\n event.target.value = event.target.value.substring(0, 250);\r\n }\r\n this.itemDetails.snippet = event.target.value;\r\n this._updateLengthLabel(this.itemDetails.snippet);\r\n this._updateStore();\r\n break;\r\n case \"item-description\":\r\n this.itemDetails.description = event.target.value;\r\n this._updateStore();\r\n break;\r\n case \"item-tags\":\r\n this.itemDetails.tags = event.target.value;\r\n this._updateStore();\r\n break;\r\n case \"item-credits\":\r\n this.itemDetails.accessInformation = event.target.value;\r\n this._updateStore();\r\n break;\r\n case \"item-terms\":\r\n this.itemDetails.licenseInfo = event.target.value;\r\n this._updateStore();\r\n break;\r\n }\r\n }\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Events\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Public Methods (async)\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Private Methods\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n /**\r\n * Opens image file browse dialog.\r\n *\r\n */\r\n protected _getThumbnail(): void {\r\n this.browseForThumbnail.click();\r\n }\r\n\r\n /**\r\n * Load the templates thumbnail\r\n *\r\n */\r\n protected _loadThumb(): void {\r\n if (this.thumbnail && this.itemEdit?.thumbnail) {\r\n // Show the thumbnail\r\n this.thumbnail.src = URL.createObjectURL(this.itemEdit.thumbnail);\r\n this.thumbnailContainer.classList.remove(\"empty-box\");\r\n this.thumbnail.classList.remove(\"display-none\");\r\n } else {\r\n // Replace the thumbnail with an empty box\r\n this.thumbnailContainer.classList.add(\"empty-box\");\r\n this.thumbnail.classList.add(\"display-none\");\r\n }\r\n }\r\n\r\n /**\r\n * Updates the length label to reflect the current number of characters\r\n * relative to the max number of characters supported.\r\n *\r\n * @param phrase the current phrase from the control\r\n */\r\n protected _updateLengthLabel(phrase: string): void {\r\n this.itemSnippetCount.innerText =\r\n this._translations.snippetCountPattern.replace(\"{{n}}\", phrase.length.toString());\r\n }\r\n\r\n /**\r\n * Add or remove the value from the store\r\n */\r\n protected _updateStore(\r\n ): void {\r\n this.itemEdit = state.getItemInfo(this.itemId);\r\n this.itemEdit.item = this.itemDetails;\r\n state.setItemInfo(this.itemEdit);\r\n }\r\n\r\n /**\r\n * Gets and displays image result from browse and updates the item in the store.\r\n *\r\n * @param event The input controls event that contains the new file\r\n * @param updateStore boolean that controls if the new value is written to the store\r\n * should be false on the initial load but true the rest of the time\r\n */\r\n protected _updateThumbnail(\r\n event: any\r\n ): void {\r\n const files = event.target.files;\r\n if (files && files[0]) {\r\n if (this.thumbnail) {\r\n // Update UI\r\n this.thumbnail.src = URL.createObjectURL(files[0]);\r\n\r\n // Update info in store\r\n this.itemEdit = state.getItemInfo(this.itemId);\r\n this.itemEdit.thumbnail = files[0];\r\n state.replaceItemThumbnail(this.itemEdit);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Fetches the component's translations\r\n *\r\n * @protected\r\n */\r\n protected async _getTranslations(): Promise<void> {\r\n const translations = await getLocaleComponentStrings(this.el);\r\n this._translations = translations[0] as typeof SolutionItemDetails_T9n;\r\n }\r\n}\r\n","/** @license\r\n * Copyright 2022 Esri\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n\r\n:host {\r\n @apply block;\r\n}\r\n\r\n.container-border {\r\n @apply p-4;\r\n}\r\n\r\n.icon-text {\r\n @apply truncate;\r\n}\r\n","/** @license\r\n * Copyright 2022 Esri\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n\r\nimport { Component, Element, h, Host, Method, Prop, State, VNode, Watch } from '@stencil/core';\r\nimport state from \"../../utils/solution-store\";\r\nimport { IItemShare, IItemTemplateEdit } from '../../utils/interfaces';\r\nimport SolutionItemSharing_T9n from '../../assets/t9n/solution-item-sharing/resources.json';\r\nimport { getLocaleComponentStrings } from '../../utils/locale';\r\n\r\n@Component({\r\n tag: 'solution-item-sharing',\r\n styleUrl: 'solution-item-sharing.scss',\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 * A template's groupId.\r\n */\r\n @Prop({ mutable: true, reflect: true }) groupId = \"\";\r\n\r\n @Watch(\"groupId\") itemIdWatchHandler(): void {\r\n const itemEdit = state.getItemInfo(this.groupId);\r\n this.sharing = itemEdit.groupDetails;\r\n }\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Lifecycle\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n /**\r\n * StencilJS: Called once just after the component is first connected to the DOM.\r\n */\r\n async componentWillLoad(): Promise<void> {\r\n return this._getTranslations();\r\n }\r\n\r\n /**\r\n * Renders the component.\r\n */\r\n render(): VNode {\r\n return (\r\n <Host>\r\n <div class=\"container-border\">\r\n <calcite-label>{this._translations.groupInfo}</calcite-label>\r\n {this._renderItems(this.sharing)}\r\n </div>\r\n </Host>\r\n );\r\n }\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Properties (protected)\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n /**\r\n * Contains the translations for this component.\r\n * All UI strings should be defined here.\r\n */\r\n @State() protected _translations: typeof SolutionItemSharing_T9n;\r\n\r\n /**\r\n * Contains the public sharing for this component.\r\n */\r\n @State() sharing: IItemShare[] = [];\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 @Method()\r\n async getShareInfo(): Promise<any> {\r\n return this.sharing;\r\n }\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Private Methods\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n /**\r\n * Render share options based on the list of share details\r\n *\r\n * @param objs list of IItemShare objects that are used to expose and store share info for the solutions items\r\n */\r\n _renderItems(\r\n objs: IItemShare[]\r\n ): VNode[] {\r\n return objs && objs.length > 0\r\n ? 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 })\r\n : null;\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.sharing = this.sharing.map((itemShare: IItemShare) => {\r\n if (itemShare.id === id) {\r\n // update the item\r\n itemShare.shareItem = event.detail.switched;\r\n\r\n // update the item in the store\r\n const itemEdit: IItemTemplateEdit = state.getItemInfo(id);\r\n\r\n if (itemShare.shareItem) {\r\n // Add the group to the item if it's not already there\r\n if (!itemEdit.groups) {\r\n itemEdit.groups = [this.groupId];\r\n } else if (itemEdit.groups.indexOf(this.groupId) < 0) {\r\n itemEdit.groups.push(this.groupId);\r\n }\r\n } else {\r\n // Remove the group from the item if it's there\r\n if (itemEdit.groups) {\r\n const i = itemEdit.groups.indexOf(this.groupId);\r\n if (i > -1) {\r\n itemEdit.groups.splice(i, 1);\r\n }\r\n }\r\n }\r\n\r\n state.setItemInfo(itemEdit);\r\n }\r\n return itemShare;\r\n });\r\n }\r\n\r\n /**\r\n * Fetches the component's translations\r\n *\r\n * @protected\r\n */\r\n protected async _getTranslations(): Promise<void> {\r\n const translations = await getLocaleComponentStrings(this.el);\r\n this._translations = translations[0] as typeof SolutionItemSharing_T9n;\r\n }\r\n}\r\n","/** @license\r\n * Copyright 2022 Esri\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n\r\n:host {\r\n @apply block;\r\n}\r\n\r\n.container-border {\r\n @apply overflow-y-auto;\r\n}\r\n\r\n.org-var-header {\r\n @apply mx-0\r\n mt-0\r\n mb-4;\r\n}\r\n","/** @license\r\n * Copyright 2022 Esri\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n\r\nimport { Component, Element, Event, EventEmitter, Host, h, Prop, State, VNode, Watch } from '@stencil/core';\r\nimport { IOrganizationVariableItem } from '../../utils/interfaces';\r\nimport SolutionOrganizationVariables_T9n from '../../assets/t9n/solution-organization-variables/resources.json';\r\nimport { getLocaleComponentStrings } from '../../utils/locale';\r\n\r\n@Component({\r\n tag: 'solution-organization-variables',\r\n styleUrl: 'solution-organization-variables.scss',\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 public value for this component.\r\n */\r\n @Prop({ mutable: true, reflect: true }) value = \"\";\r\n\r\n @Watch(\"value\") valueWatchHandler(): void {\r\n this._organizationVariables = JSON.parse(this.value);\r\n }\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Lifecycle\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n /**\r\n * StencilJS: Called once just after the component is first connected to the DOM.\r\n */\r\n async componentWillLoad(): Promise<void> {\r\n return this._getTranslations();\r\n }\r\n\r\n /**\r\n * Renders the component.\r\n */\r\n render(): VNode {\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-tree id=\"variable-label\">\r\n {this._renderHierarchy(this._organizationVariables)}\r\n </calcite-tree>\r\n </div>\r\n </Host>\r\n );\r\n }\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Properties (protected)\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n @State() protected _organizationVariables: IOrganizationVariableItem[] = [];\r\n\r\n /**\r\n * Contains the translations for this component.\r\n * All UI strings should be defined here.\r\n */\r\n @State() protected _translations: typeof SolutionOrganizationVariables_T9n;\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Event Listeners\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Events\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n @Event() organizationVariableSelected: EventEmitter<{ itemId: string, value: string }>;\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 * Renders the organization based variable items the user can insert at runtime\r\n *\r\n * @param objs a list of organization variables to render\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 * 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 protected _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 * Fetches the component's translations\r\n *\r\n * @protected\r\n */\r\n protected async _getTranslations(): Promise<void> {\r\n const translations = await getLocaleComponentStrings(this.el);\r\n this._translations = translations[0] as typeof SolutionOrganizationVariables_T9n;\r\n }\r\n}\r\n","/** @license\r\n * Copyright 2022 Esri\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n\r\n:host {\r\n @apply block;\r\n}\r\n\r\n.resource-item {\r\n @apply p-4;\r\n}\r\n\r\n.resource-button {\r\n @apply m-inline-end-4;\r\n}\r\n\r\n.resource-progress {\r\n @apply pt-4;\r\n}\r\n\r\n.resources-container {\r\n @apply border-lightgray;\r\n}\r\n\r\n.margin-bottom-1 {\r\n @apply mb-4;\r\n}\r\n","/** @license\r\n * Copyright 2022 Esri\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n\r\nimport { Component, Element, Host, h, Prop, State, VNode, Watch } from '@stencil/core';\r\nimport { EUpdateType, IResourcePath } from '../../utils/interfaces';\r\nimport { EFileType, UserSession } from '@esri/solution-common';\r\nimport state from \"../../utils/solution-store\";\r\nimport SolutionResourceItem_T9n from '../../assets/t9n/solution-resource-item/resources.json';\r\nimport { getLocaleComponentStrings } from '../../utils/locale';\r\n\r\n@Component({\r\n tag: 'solution-resource-item',\r\n styleUrl: 'solution-resource-item.scss',\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 * Credentials for requests\r\n */\r\n @Prop({ mutable: true }) authentication: UserSession;\r\n\r\n /**\r\n * A template's 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 @Watch(\"itemId\") itemIdWatchHandler(): void {\r\n const item = state.getItemInfo(this.itemId);\r\n this.resourceFilePaths = item.resourceFilePaths;\r\n this.resources = item.resources.map(\r\n // False linting error\r\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\r\n (path) => path.substring(path.lastIndexOf(\"/\") + 1)\r\n );\r\n }\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Lifecycle\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n /**\r\n * StencilJS: Called once just after the component is first connected to the DOM.\r\n */\r\n componentWillLoad(): Promise<void> {\r\n return this._getTranslations();\r\n }\r\n\r\n /**\r\n * Renders the component.\r\n */\r\n render(): VNode {\r\n const hasValidResources = this._hasValidResources();\r\n return (\r\n <Host>\r\n <div class=\"resource-item\">\r\n <div class=\"margin-bottom-1\">\r\n <calcite-button\r\n appearance=\"solid\"\r\n class=\"resource-button\"\r\n color=\"blue\"\r\n onClick={() => this._addNewResource()}\r\n >{this._translations.addResource}\r\n </calcite-button>\r\n <calcite-button\r\n appearance=\"solid\"\r\n color=\"blue\"\r\n disabled={!hasValidResources}\r\n onClick={() => this._downloadAll()}\r\n >{this._translations.downloadAll}\r\n </calcite-button>\r\n </div>\r\n <div class=\"resources-container\" style={{ display: hasValidResources ? \"inherit\" : \"none\" }}>\r\n {this._renderResourceList()}\r\n </div>\r\n </div>\r\n </Host>\r\n );\r\n }\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Properties (protected)\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n /**\r\n * The templates resourceFilePaths.\r\n */\r\n @State() resourceFilePaths: IResourcePath[] = [];\r\n\r\n /**\r\n * The templates resources.\r\n */\r\n @State() resources: string[] = [];\r\n\r\n /**\r\n * Contains the translations for this component.\r\n * All UI strings should be defined here.\r\n */\r\n @State() protected _translations: typeof SolutionResourceItem_T9n;\r\n\r\n protected _removedResources: any = {};\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 * Render resources while avoiding thumbnail resoures that are managed by solution-item\r\n *\r\n */\r\n _renderResourceList(): HTMLCalciteValueListElement {\r\n return (\r\n <calcite-value-list multiple>\r\n {\r\n this.resourceFilePaths.reduce((prev, cur) => {\r\n if (cur.type !== EFileType.Thumbnail) {\r\n prev.push(this._renderResource(cur));\r\n }\r\n return prev;\r\n }, [])\r\n }\r\n </calcite-value-list>\r\n )\r\n }\r\n\r\n /**\r\n * Render the resource and supporting actions for download/update/delete/(reset..if deleted)\r\n *\r\n * @param resource the filename and url used to interact with the resource\r\n */\r\n _renderResource(\r\n resource: IResourcePath\r\n ): HTMLCalciteValueListItemElement {\r\n const resettable = resource.updateType === EUpdateType.Remove;\r\n const fullname = resource.folder ? resource.folder + \"/\" + resource.filename : resource.filename;\r\n return (\r\n <calcite-value-list-item\r\n class={resettable ? \"disabled\" : \"\"}\r\n label={fullname}\r\n nonInteractive={true}\r\n value={resource.url}\r\n >\r\n <calcite-action-group expand-disabled=\"true\" layout=\"horizontal\" slot=\"actions-end\">\r\n <calcite-action\r\n disabled={resettable}\r\n icon=\"download\"\r\n label={this._translations.download}\r\n onClick={() => this._download(resource.url, resource.filename)}\r\n scale=\"m\"\r\n text={this._translations.download}\r\n title={this._translations.download}\r\n />\r\n <calcite-action\r\n disabled={resettable}\r\n icon=\"upload-to\"\r\n label={this._translations.update}\r\n onClick={() => this._upload(resource)}\r\n scale=\"m\"\r\n text={this._translations.update}\r\n title={this._translations.update}\r\n />\r\n <calcite-action\r\n disabled={resettable}\r\n icon=\"trash\"\r\n label={this._translations.delete}\r\n onClick={() => this._delete(resource)}\r\n scale=\"m\"\r\n text={this._translations.delete}\r\n title={this._translations.delete}\r\n />\r\n {resettable ? <calcite-action\r\n icon=\"reset\"\r\n label={this._translations.reset}\r\n onClick={() => this._reset(resource.filename)}\r\n scale=\"m\"\r\n text={this._translations.reset}\r\n title={this._translations.reset}\r\n /> : <div class=\"display-none\"/>}\r\n </calcite-action-group>\r\n </calcite-value-list-item>\r\n );\r\n }\r\n\r\n /**\r\n * Adds the name to the deleted array so it will be skipped while rendering\r\n * but still exist if the user chooses to reset\r\n *\r\n * @param resource the resource to be updated\r\n */\r\n _delete(resource: IResourcePath): void {\r\n resource.updateType = EUpdateType.Remove;\r\n this.resourceFilePaths = [...this.resourceFilePaths]; // to trigger refresh\r\n this._updateStore();\r\n }\r\n\r\n /**\r\n * Remove the name from the deleted array so it will again be rendered\r\n *\r\n * @param name the name to be added to the deleted array\r\n */\r\n _reset(\r\n name: string\r\n ): void {\r\n // need to make sure I know if this reset is from the source or a new one\r\n // Because the item's `resources` array is not updated until (and if) the solution is saved,\r\n // we can use it for the reset info\r\n this.resources.some(resourceName => resourceName === name) ?\r\n // Undo removing an existing resource\r\n this.resourceFilePaths = this.resourceFilePaths.map(p => {\r\n if (p.filename === name) {\r\n p.updateType = EUpdateType.None;\r\n }\r\n return p;\r\n }) :\r\n // Undo cancelling the adding of a resource\r\n this.resourceFilePaths = this.resourceFilePaths.map(p => {\r\n if (p.filename === name) {\r\n p.updateType = EUpdateType.Add;\r\n }\r\n return p;\r\n });\r\n this._updateStore();\r\n }\r\n\r\n /**\r\n * Download all of the templates resources\r\n *\r\n */\r\n _downloadAll(): void {\r\n this.resourceFilePaths.forEach((resource: IResourcePath) => {\r\n this._download(resource.url, resource.filename);\r\n });\r\n }\r\n\r\n /**\r\n * Download the current resource\r\n *\r\n * @param url the resource url\r\n * @param name the resource name\r\n */\r\n _download(\r\n url: string,\r\n name: string\r\n ): void {\r\n // files that have been added manually do not need to be requested from the item\r\n if (url.startsWith(\"blob\")) {\r\n this.downloadFile(url, name);\r\n } else {\r\n const _url = `${url}?token=${this.authentication.token}`;\r\n void this.fetchAndDownload(_url, name);\r\n }\r\n }\r\n\r\n /**\r\n * Dynamically creates an anchor and downloads the file\r\n *\r\n * @param url the url of the resource\r\n * @param name the name of the resource\r\n */\r\n downloadFile(\r\n url: string,\r\n name: string\r\n ): void {\r\n const link = document.createElement(\"a\");\r\n link.href = url;\r\n link.download = name;\r\n link.target = \"_blank\";\r\n link.click();\r\n }\r\n\r\n /**\r\n * Check if the template resources have any non-thumbnail resources\r\n *\r\n * @returns true if we have data resources and false if only thumbnail\r\n */\r\n _hasValidResources() : boolean {\r\n return this.resourceFilePaths.some(r => r.url.indexOf(\"_info_thumbnail\") < 0);\r\n }\r\n\r\n /**\r\n * Fetches and downloads the resource from the solution\r\n *\r\n * @param url the url of the resource\r\n * @param name the name of the resource\r\n */\r\n async fetchAndDownload(url: string, name: string): Promise<void> {\r\n const image = await fetch(url);\r\n const b = await image.blob();\r\n const bURL = URL.createObjectURL(b);\r\n this.downloadFile(bURL, name);\r\n }\r\n\r\n /**\r\n * Create an input element to support the uploading of the resource and upload the resource\r\n *\r\n * @param resource the resource to be updated\r\n */\r\n _upload(resource: IResourcePath): void {\r\n const _input = document.createElement(\"input\");\r\n _input.classList.add(\"display-none\");\r\n _input.onchange = this._updateResource.bind(this, resource);\r\n _input.type = \"file\";\r\n _input.click();\r\n }\r\n\r\n /**\r\n * Create an input element to support the uploading of a resource and add the new resource\r\n *\r\n */\r\n _addNewResource(): void {\r\n const _input = document.createElement(\"input\");\r\n _input.classList.add(\"display-none\");\r\n _input.onchange = this._add.bind(this);\r\n _input.type = \"file\";\r\n _input.click();\r\n }\r\n\r\n /**\r\n * Replace the resource file path when update action is used\r\n *\r\n * @param resourcePath the resource to be updated\r\n * @param event the input event that contains the file\r\n */\r\n _updateResource(\r\n resourcePath: IResourcePath,\r\n event: any\r\n ): void {\r\n const files = event.target.files;\r\n if (files && files[0]) {\r\n\r\n resourcePath.blob = files[0];\r\n resourcePath.updateType = EUpdateType.Update;\r\n\r\n this._updateStore();\r\n }\r\n }\r\n\r\n /**\r\n * Add the new resource to the resource file paths\r\n *\r\n * @param event the inputs event that contains the new file\r\n */\r\n _add(event: any): void {\r\n const files = event.target.files;\r\n if (files && files[0]) {\r\n const url = URL.createObjectURL(files[0]);\r\n const filename = files[0].name;\r\n\r\n // Add the item if it's not already in the resource file paths list\r\n if (!this.resourceFilePaths.some(r => r.filename === filename && r.url === url)) {\r\n this.resourceFilePaths = [\r\n ...this.resourceFilePaths,\r\n {\r\n url,\r\n type: EFileType.Data,\r\n folder: undefined,\r\n filename,\r\n blob: files[0],\r\n updateType: EUpdateType.Add\r\n }\r\n ];\r\n this._updateStore();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Add or remove the value from the store\r\n */\r\n protected _updateStore(\r\n ): void {\r\n const item = state.getItemInfo(this.itemId);\r\n item.resourceFilePaths = this.resourceFilePaths;\r\n state.setItemInfo(item);\r\n }\r\n\r\n /**\r\n * Fetches the component's translations\r\n *\r\n * @protected\r\n */\r\n protected async _getTranslations(): Promise<void> {\r\n const translations = await getLocaleComponentStrings(this.el);\r\n this._translations = translations[0] as typeof SolutionResourceItem_T9n;\r\n }\r\n}\r\n","/** @license\r\n * Copyright 2022 Esri\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n\r\n:host {\r\n @apply flexbox;\r\n}\r\n\r\n.solution-data-container {\r\n position: absolute;\r\n height: -moz-available; /* This doesn't work in Firefox, but if we don't specify it and then override it with the next line, it gets automatically inserted */\r\n height: calc(100% - 48px);\r\n height: -webkit-fill-available; /* Mozilla-based browsers will ignore this. */\r\n height: stretch;\r\n width: -moz-available; /* This doesn't work in Firefox, but if we don't specify it and then override it with the next line, it gets automatically inserted */\r\n width: 100%;\r\n width: -webkit-fill-available; /* Mozilla-based browsers will ignore this. */\r\n width: stretch;\r\n}\r\n\r\n.solution-data-child-container {\r\n @apply h-full\r\n w-full\r\n flex\r\n flex-col\r\n overflow-y-auto;\r\n}\r\n\r\n.solution-data-editor-container {\r\n @apply h-full;\r\n}\r\n\r\n.solution-data-child-container-collapsed {\r\n @apply h-full\r\n flex\r\n flex-col\r\n overflow-auto;\r\n width: 50px;\r\n}\r\n\r\n.inputBottomSeparation {\r\n @apply mt-0\r\n mx-0\r\n mb-6;\r\n}\r\n\r\n.json-editor {\r\n @apply m-4\r\n w-auto\r\n fill-available;\r\n}\r\n\r\n.collapse-btn {\r\n @apply pt-4\r\n pb-0\r\n px-4;\r\n}\r\n\r\n.org-vars {\r\n @apply pt-4\r\n pb-0\r\n px-4;\r\n}\r\n\r\n.sol-vars {\r\n @apply py-0\r\n px-4;\r\n min-height: 45%;\r\n}\r\n\r\n.padding-1 {\r\n @apply p-4;\r\n}\r\n\r\n.light {\r\n background-color: $solutions-background-color;\r\n}\r\n","/** @license\r\n * Copyright 2022 Esri\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n\r\nimport { Component, Element, Host, h, Prop, State, VNode, Watch } from '@stencil/core';\r\nimport state from \"../../utils/solution-store\";\r\nimport SolutionTemplateData_T9n from '../../assets/t9n/solution-template-data/resources.json';\r\nimport { getLocaleComponentStrings } from '../../utils/locale';\r\n\r\n@Component({\r\n tag: 'solution-template-data',\r\n styleUrl: 'solution-template-data.scss',\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 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 * 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 template's 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 @Watch(\"itemId\") itemIdWatchHandler(): void {\r\n this._initializing = true;\r\n this.value = JSON.stringify(\r\n this.instanceid === \"data\"\r\n ? state.getItemInfo(this.itemId).data\r\n : state.getItemInfo(this.itemId).properties\r\n , null, 2);\r\n }\r\n\r\n /*\r\n * Contains the organization based variables\r\n */\r\n @Prop({ mutable: true, reflect: true }) organizationVariables = \"\";\r\n\r\n /**\r\n * Contains the solution based variables\r\n */\r\n @Prop({ mutable: true, reflect: true }) solutionVariables = \"\";\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 constructor() {\r\n window.addEventListener(\"solutionEditorContentChanged\",\r\n (evt) => {\r\n if (this.itemId) {\r\n const { id, contents } = (evt as any).detail;\r\n const [itemId, instanceId] = id.split(\"|\");\r\n if (itemId == this.itemId && instanceId === this.instanceid) {\r\n if(!this._initializing && contents.length > 0) {\r\n const itemEdit = state.getItemInfo(itemId);\r\n if (instanceId === \"data\") {\r\n itemEdit.data = JSON.parse(contents);\r\n } else {\r\n itemEdit.properties = JSON.parse(contents);\r\n }\r\n state.setItemInfo(itemEdit);\r\n }\r\n this._initializing = false;\r\n }\r\n }\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * StencilJS: Called once just after the component is first connected to the DOM.\r\n */\r\n componentWillLoad(): Promise<void> {\r\n return this._getTranslations();\r\n }\r\n\r\n /**\r\n * Renders the component.\r\n */\r\n render(): VNode {\r\n return (\r\n <Host>\r\n <div class=\"solution-data-container\">\r\n <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 class=\"solution-data-editor-container\"\r\n instanceid={this.itemId + \"|\" + this.instanceid}\r\n value={this.value}\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.varsOpen ? this._translations.collapse : this._translations.expand}\r\n />\r\n <div class={this.varsOpen ? \"org-vars\" : \"org-vars display-none\"} id=\"orgVars\">\r\n <solution-organization-variables\r\n value={this.organizationVariables}\r\n />\r\n </div>\r\n <div class={this.varsOpen ? \"sol-vars\" : \"sol-vars display-none\"} id=\"solVars\">\r\n <solution-variables\r\n value={this.solutionVariables}\r\n />\r\n </div>\r\n </div>\r\n </calcite-shell-panel>\r\n </calcite-shell>\r\n </div>\r\n </Host>\r\n );\r\n }\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Properties (protected)\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n /**\r\n * Contains the translations for this component.\r\n * All UI strings should be defined here.\r\n */\r\n @State() protected _translations: typeof SolutionTemplateData_T9n;\r\n\r\n @State() protected value = \"\";\r\n\r\n protected _initializing = false;\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 * 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 /**\r\n * Fetches the component's translations\r\n *\r\n * @protected\r\n */\r\n protected async _getTranslations(): Promise<void> {\r\n const translations = await getLocaleComponentStrings(this.el);\r\n this._translations = translations[0] as typeof SolutionTemplateData_T9n;\r\n }\r\n}\r\n","/** @license\r\n * Copyright 2022 Esri\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n\r\n:host {\r\n @apply block;\r\n}\r\n\r\n.container-border {\r\n @apply overflow-y-hidden;\r\n}\r\n\r\n.org-var-header {\r\n @apply my-4\r\n mx-0;\r\n}\r\n\r\n.icon-text {\r\n @apply truncate;\r\n}\r\n","/** @license\r\n * Copyright 2022 Esri\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n\r\nimport { Component, Element, Event, EventEmitter, Host, h, Prop, State, VNode, Watch } from '@stencil/core';\r\nimport { IVariableItem } from '../../utils/interfaces';\r\nimport SolutionVariables_T9n from '../../assets/t9n/solution-variables/resources.json';\r\nimport { getLocaleComponentStrings } from '../../utils/locale';\r\n\r\n@Component({\r\n tag: 'solution-variables',\r\n styleUrl: 'solution-variables.scss',\r\n shadow: true,\r\n})\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 public value for this component.\r\n */\r\n @Prop({ mutable: true, reflect: true }) value = \"\";\r\n\r\n @Watch(\"value\") valueWatchHandler(): void {\r\n this._solutionVariables = JSON.parse(this.value);\r\n }\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Lifecycle\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n /**\r\n * StencilJS: Called once just after the component is first connected to the DOM.\r\n */\r\n componentWillLoad(): Promise<void> {\r\n return this._getTranslations();\r\n }\r\n\r\n /**\r\n * Renders the component.\r\n */\r\n render(): VNode {\r\n return (\r\n <Host>\r\n <div>\r\n <h4 class=\"org-var-header\">{this._translations.solVariables}</h4>\r\n </div>\r\n <div class=\"container-border\">\r\n <calcite-tree id=\"variable-label\">\r\n {this._renderHierarchy(this._solutionVariables)}\r\n </calcite-tree>\r\n </div>\r\n </Host>\r\n );\r\n }\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Properties (protected)\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n @State() protected _solutionVariables: IVariableItem[] = [];\r\n\r\n /**\r\n * Contains the translations for this component.\r\n * All UI strings should be defined here.\r\n */\r\n @State() protected _translations: typeof SolutionVariables_T9n;\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Event Listeners\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n //--------------------------------------------------------------------------\r\n //\r\n // Events\r\n //\r\n //--------------------------------------------------------------------------\r\n\r\n @Event() solutionVariableSelected: EventEmitter<{ itemId: string, value: string }>;\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 * Render the solution item variables that the user can insert into temaplates at runtime.\r\n *\r\n * @param objs a list of variable items that have been gathered from the solutions templates\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 onClick={(evt) => this._toggleExpand(evt)}>\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 * 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 protected _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 * Toggle the tree item that was clicked\r\n *\r\n * @param evt the clicks mouse event\r\n */\r\n protected _toggleExpand(\r\n evt: any = undefined\r\n ): void {\r\n const treeItem = evt?.target?.closest(\"calcite-tree-item\");\r\n if (treeItem) {\r\n treeItem.expanded = !treeItem.expanded;\r\n }\r\n }\r\n\r\n /**\r\n * Fetches the component's translations\r\n *\r\n * @protected\r\n */\r\n protected async _getTranslations(): Promise<void> {\r\n const translations = await getLocaleComponentStrings(this.el);\r\n this._translations = translations[0] as typeof SolutionVariables_T9n;\r\n }\r\n}\r\n"],"version":3}
|