@descope/web-components-ui 3.11.1 → 3.11.3
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/cjs/index.cjs.js +55 -22
- package/dist/cjs/index.cjs.js.map +1 -1
- package/dist/index.esm.js +55 -22
- package/dist/index.esm.js.map +1 -1
- package/dist/umd/9582.js +1 -1
- package/dist/umd/9582.js.map +1 -1
- package/dist/umd/DescopeDev.js +1 -1
- package/dist/umd/DescopeDev.js.map +1 -1
- package/dist/umd/boolean-fields-descope-switch-toggle-index-js.js +1 -1
- package/dist/umd/boolean-fields-descope-switch-toggle-index-js.js.map +1 -1
- package/dist/umd/descope-alert-index-js.js +1 -1
- package/dist/umd/descope-alert-index-js.js.map +1 -1
- package/dist/umd/descope-apps-list.js +1 -1
- package/dist/umd/descope-apps-list.js.map +1 -1
- package/dist/umd/descope-collapsible-container.js +1 -1
- package/dist/umd/descope-collapsible-container.js.map +1 -1
- package/dist/umd/descope-divider-index-js.js +1 -1
- package/dist/umd/descope-divider-index-js.js.map +1 -1
- package/dist/umd/descope-enriched-text.js +1 -1
- package/dist/umd/descope-enriched-text.js.map +1 -1
- package/dist/umd/descope-link.js +1 -1
- package/dist/umd/descope-link.js.map +1 -1
- package/dist/umd/descope-outbound-apps.js +1 -1
- package/dist/umd/descope-outbound-apps.js.map +1 -1
- package/dist/umd/descope-recovery-codes.js +1 -1
- package/dist/umd/descope-recovery-codes.js.map +1 -1
- package/dist/umd/descope-security-questions-verify-index-js.js +1 -1
- package/dist/umd/descope-security-questions-verify-index-js.js.map +1 -1
- package/dist/umd/descope-text.js +1 -1
- package/dist/umd/descope-text.js.map +1 -1
- package/dist/umd/descope-tooltip.js +1 -1
- package/dist/umd/descope-tooltip.js.map +1 -1
- package/dist/umd/descope-trusted-devices.js +1 -1
- package/dist/umd/descope-trusted-devices.js.map +1 -1
- package/dist/umd/descope-user-attribute-index-js.js +1 -1
- package/dist/umd/descope-user-attribute-index-js.js.map +1 -1
- package/dist/umd/descope-user-auth-method-index-js.js +1 -1
- package/dist/umd/descope-user-auth-method-index-js.js.map +1 -1
- package/dist/umd/descope-user-passkeys.js +1 -1
- package/dist/umd/descope-user-passkeys.js.map +1 -1
- package/dist/umd/index.js +1 -1
- package/dist/umd/mapping-fields-descope-mappings-field-index-js.js +1 -1
- package/dist/umd/mapping-fields-descope-mappings-field-index-js.js.map +1 -1
- package/dist/umd/mapping-fields-descope-saml-group-mappings-index-js.js +1 -1
- package/dist/umd/mapping-fields-descope-saml-group-mappings-index-js.js.map +1 -1
- package/package.json +36 -36
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"descope-apps-list.js","mappings":"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","sources":["webpack://@descope/web-components-ui/../components/descope-apps-list/src/component/AppsListClass.js","webpack://@descope/web-components-ui/../components/descope-apps-list/src/component/index.js","webpack://@descope/web-components-ui/../components/descope-avatar/src/component/AvatarClass.js","webpack://@descope/web-components-ui/../components/descope-avatar/src/component/index.js","webpack://@descope/web-components-ui/../components/descope-list-item/src/component/ListItemClass.js","webpack://@descope/web-components-ui/../components/descope-list-item/src/component/index.js","webpack://@descope/web-components-ui/../components/descope-list/src/component/ListClass.js","webpack://@descope/web-components-ui/../components/descope-list/src/component/index.js","webpack://@descope/web-components-ui/../components/descope-text/src/component/TextClass.js","webpack://@descope/web-components-ui/../components/descope-text/src/component/index.js"],"sourcesContent":["import { compose } from '@descope-ui/common/utils';\nimport {\n getComponentName,\n limitAbbreviation,\n} from '@descope-ui/common/components-helpers';\nimport {\n createStyleMixin,\n draggableMixin,\n createProxy,\n componentNameValidationMixin,\n createDynamicDataMixin,\n} from '@descope-ui/common/components-mixins';\nimport { TextClass } from '@descope-ui/descope-text/class';\nimport { ListClass } from '@descope-ui/descope-list/class';\nimport { ListItemClass } from '@descope-ui/descope-list-item/class';\n\nexport const componentName = getComponentName('apps-list');\n\nconst itemRenderer = ({ name, icon, url }, _, ref) => `\n <a ${url ? `href=\"${url}\" title=\"${url}\"` : ''} ${ref.openInSameWindow ? '' : 'target=\"_blank\"'}>\n <descope-list-item>\n <div class=\"avatar-wrapper\">\n <descope-avatar\n ${icon ? `img=\"${icon}\"` : ''}\n ${name ? `display-name=\"${name}\" abbr=${limitAbbreviation(name)}` : ''}\n size=\"${ref.logoSize || ref.size}\"\n ></descope-avatar>\n </div>\n <descope-text\n variant=\"${ref.itemTextVariant}\"\n mode=\"primary\"\n >${name}</descope-text>\n </descope-list-item>\n </a>\n`;\n\nconst customMixin = (superclass) =>\n class AppsListMixinClass extends superclass {\n // size controls both item logo size and font size\n get size() {\n return this.getAttribute('size') || 'sm';\n }\n\n get itemTextVariant() {\n return this.getAttribute('item-text-variant') || 'body1';\n }\n\n get logoSize() {\n return this.getAttribute('logo-size');\n }\n\n get openInSameWindow() {\n return this.getAttribute('open-in-same-window') === 'true';\n }\n };\n\nexport const AppsListClass = compose(\n createStyleMixin({\n mappings: {\n maxHeight: { selector: () => ':host' },\n minHeight: { selector: () => ':host' },\n hostDirection: { selector: () => ':host', property: 'direction' },\n gap: {\n selector: ListClass.componentName,\n property: ListClass.cssVarList.gap,\n },\n maxRowItems: {\n selector: ListClass.componentName,\n property: ListClass.cssVarList.maxRowItems,\n },\n itemsFontWeight: {\n selector: TextClass.componentName,\n property: TextClass.cssVarList.fontWeightOverride,\n },\n itemsFontSize: {\n selector: TextClass.componentName,\n property: TextClass.cssVarList.fontSizeOverride,\n },\n itemsTextAlign: {\n selector: TextClass.componentName,\n property: TextClass.cssVarList.textAlign,\n },\n itemBackgroundColor: {\n selector: ListItemClass.componentName,\n property: ListItemClass.cssVarList.backgroundColor,\n },\n itemHoverBackgroundColor: {\n selector: `${ListItemClass.componentName}:hover`,\n property: ListItemClass.cssVarList.backgroundColor,\n },\n backgroundColor: {\n selector: ListClass.componentName,\n property: ListClass.cssVarList.backgroundColorOverride,\n },\n itemBorderStyle: {\n selector: ListItemClass.componentName,\n property: ListItemClass.cssVarList.borderStyleOverride,\n },\n itemBorderColor: {\n selector: ListItemClass.componentName,\n property: ListItemClass.cssVarList.borderColorOverride,\n },\n itemBorderWidth: {\n selector: ListItemClass.componentName,\n property: ListItemClass.cssVarList.borderWidthOverride,\n },\n itemVerticalPadding: {\n selector: ListItemClass.componentName,\n property: ListItemClass.cssVarList.verticalPaddingOverride,\n },\n itemHorizontalPadding: {\n selector: ListItemClass.componentName,\n property: ListItemClass.cssVarList.horizontalPaddingOverride,\n },\n itemAlignment: [\n { selector: () => '.avatar-wrapper', property: 'text-align' },\n {\n selector: TextClass.componentName,\n property: TextClass.cssVarList.textAlign,\n },\n ],\n },\n }),\n createDynamicDataMixin({\n itemRenderer,\n rerenderAttrsList: [\n 'size',\n 'item-text-variant',\n 'logo-size',\n 'open-in-same-window',\n ],\n }),\n draggableMixin,\n componentNameValidationMixin,\n customMixin,\n)(\n createProxy({\n slots: ['empty-state'],\n wrappedEleName: 'descope-list',\n excludeAttrsSync: ['tabindex', 'class', 'empty', 'style'],\n componentName,\n style: () => `\n :host {\n width: 100%;\n display: inline-flex;\n }\n\n descope-text::part(text-wrapper) {\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n }\n\n descope-list-item[variant=\"tile\"] .avatar-wrapper {\n width: 100%;\n }\n\n .avatar-wrapper {\n line-height: 0;\n }\n\n a {\n text-decoration: none;\n }\n\n descope-text {\n ${TextClass.cssVarList.hostDirection}: var(${AppsListClass.cssVarList.hostDirection});\n max-width: 100%;\n width: 100%;\n }\n `,\n }),\n);\n","import '@descope-ui/descope-list';\nimport '@descope-ui/descope-avatar';\nimport '@descope-ui/descope-text';\nimport { componentName, AppsListClass } from './AppsListClass';\n\ncustomElements.define(componentName, AppsListClass);\n\nexport { AppsListClass, componentName };\n","import {\n createStyleMixin,\n draggableMixin,\n componentNameValidationMixin,\n} from '@descope-ui/common/components-mixins';\nimport { createBaseClass } from '@descope-ui/common/base-classes';\nimport { compose } from '@descope-ui/common/utils';\nimport {\n forwardAttrs,\n getComponentName,\n injectStyle,\n observeAttributes,\n} from '@descope-ui/common/components-helpers';\n\nexport const componentName = getComponentName('avatar');\nclass RawAvatar extends createBaseClass({\n componentName,\n baseSelector: ':host > .wrapper',\n}) {\n constructor() {\n super();\n\n this.attachShadow({ mode: 'open' }).innerHTML = `\n <div class=\"wrapper\">\n <vaadin-avatar></vaadin-avatar>\n <div class=\"editableBadge\">\n <vaadin-icon icon=\"vaadin:pencil\"></vaadin-icon>\n </div>\n </div>\n\t\t`;\n\n injectStyle(`\n :host {\n\t\t\t\t\tdisplay: inline-flex;\n\t\t\t\t}\n\n .editableBadge {\n border: 1px solid;\n border-radius: 100%;\n height: fit-content;\n width: 25%;\n height: 25%;\n display: flex;\n justify-content: center;\n align-items: center;\n padding: 5%;\n box-sizing: border-box;\n position: absolute;\n bottom: 0;\n inset-inline-end: 0;\n }\n\n vaadin-icon {\n color: currentcolor;\n }\n\n vaadin-avatar {\n width: 100%;\n height: 100%;\n margin: 0;\n border: none\n }\n\n .wrapper {\n display: inline-flex;\n position: relative;\n width: 100%;\n height: 100%;\n }\n `, this);\n\n this.avatarComponent = this.shadowRoot.querySelector('vaadin-avatar');\n\n forwardAttrs(this, this.avatarComponent, {\n includeAttrs: ['display-name', 'img', 'abbr'],\n mapAttrs: { 'display-name': 'name' },\n });\n\n const editableIcon = this.shadowRoot.querySelector('.editableBadge');\n\n observeAttributes(\n this,\n () => {\n editableIcon.style.display = this.isEditable ? '' : 'none';\n },\n { includeAttrs: ['editable'] },\n );\n }\n\n get isEditable() {\n return this.getAttribute('editable') === 'true';\n }\n}\n\nconst { host, editableBadge, avatar } = {\n host: { selector: () => ':host' },\n editableBadge: { selector: '> .editableBadge' },\n avatar: { selector: 'vaadin-avatar' },\n};\n\nexport const AvatarClass = compose(\n createStyleMixin({\n mappings: {\n hostWidth: [\n { ...host, property: 'width' },\n { ...host, property: 'min-width' },\n ],\n hostHeight: { ...host, property: 'height' },\n cursor: [avatar, host],\n hostDirection: { ...host, property: 'direction' },\n avatarTextColor: { ...avatar, property: 'color' },\n avatarBackgroundColor: { ...avatar, property: 'background-color' },\n editableIconColor: { ...editableBadge, property: 'color' },\n editableBorderColor: { ...editableBadge, property: 'border-color' },\n editableBackgroundColor: {\n ...editableBadge,\n property: 'background-color',\n },\n },\n }),\n draggableMixin,\n componentNameValidationMixin,\n)(RawAvatar);\n","import { componentName, AvatarClass } from './AvatarClass';\nimport '@vaadin/avatar';\nimport '@vaadin/icon';\nimport '@vaadin/icons';\n\ncustomElements.define(componentName, AvatarClass);\n\nexport { AvatarClass, componentName };\n","import {\n createStyleMixin,\n draggableMixin,\n componentNameValidationMixin,\n activeableMixin,\n} from '@descope-ui/common/components-mixins';\nimport { compose } from '@descope-ui/common/utils';\nimport { getComponentName } from '@descope-ui/common/components-helpers';\nimport { injectStyle } from '@descope-ui/common/components-helpers';\nimport { createBaseClass } from '@descope-ui/common/base-classes';\n\nexport const componentName = getComponentName('list-item');\n\nconst customMixin = (superclass) =>\n class ListItemMixinClass extends superclass {\n constructor() {\n super();\n\n this.attachShadow({ mode: 'open' }).innerHTML = `\n <slot></slot>\n `;\n\n injectStyle(\n `\n slot {\n width: 100%;\n display: flex;\n overflow: hidden;\n box-sizing: border-box;\n }\n :host {\n display: block;\n }\n `,\n this,\n );\n }\n };\n\nexport const ListItemClass = compose(\n createStyleMixin({\n mappings: {\n verticalPadding: [\n { property: 'padding-top' },\n { property: 'padding-bottom' },\n ],\n horizontalPadding: [\n { property: 'padding-left' },\n { property: 'padding-right' },\n ],\n backgroundColor: {},\n borderColor: {},\n borderStyle: {},\n borderWidth: {},\n borderRadius: {},\n outline: {},\n cursor: {},\n gap: {},\n maxWidth: { selector: () => ':host' },\n alignItems: {},\n flexDirection: {},\n transition: {},\n },\n }),\n draggableMixin,\n componentNameValidationMixin,\n customMixin,\n activeableMixin,\n)(createBaseClass({ componentName, baseSelector: 'slot' }));\n","import { componentName, ListItemClass } from './ListItemClass';\n\ncustomElements.define(componentName, ListItemClass);\n\nexport { ListItemClass, componentName };\n","import {\n createStyleMixin,\n draggableMixin,\n componentNameValidationMixin,\n} from '@descope-ui/common/components-mixins';\nimport { compose } from '@descope-ui/common/utils';\nimport {\n getComponentName,\n observeChildren,\n} from '@descope-ui/common/components-helpers';\nimport { injectStyle } from '@descope-ui/common/components-helpers';\nimport { ListItemClass } from '@descope-ui/descope-list-item/class';\nimport { createBaseClass } from '@descope-ui/common/base-classes';\n\nexport const componentName = getComponentName('list');\n\nclass RawList extends createBaseClass({\n componentName,\n baseSelector: '.wrapper',\n}) {\n static get observedAttributes() {\n return ['variant', 'readonly'];\n }\n\n constructor() {\n super();\n\n this.attachShadow({ mode: 'open' }).innerHTML = `\n <div class=\"wrapper\">\n <slot></slot>\n <slot name=\"empty-state\">\n No item...\n </slot>\n </div>\n\t`;\n\n injectStyle(\n `\n .wrapper {\n overflow: auto;\n display: grid;\n max-height: 100%;\n width: 100%;\n }\n\n :host {\n display: inline-flex;\n width: 100%;\n }\n slot[name=\"empty-state\"] {\n justify-content: center;\n align-items: center;\n display: flex;\n flex-grow: 1;\n }\n\n :host slot[name=\"empty-state\"] {\n display: none;\n }\n :host([empty]) slot[name=\"empty-state\"] {\n display: flex;\n }\n ::slotted(:not([slot])) {\n width: 100%;\n }\n `,\n this,\n );\n }\n\n get items() {\n return this.shadowRoot.querySelector('slot').assignedElements();\n }\n\n #handleEmptyState() {\n if (this.items.length === 0) {\n this.setAttribute('empty', 'true');\n } else {\n this.removeAttribute('empty');\n }\n }\n\n get variant() {\n return this.getAttribute('variant') || 'list';\n }\n\n #handleItemsVariant() {\n this.items.forEach((item) => {\n let listItem = item;\n if (listItem.localName !== ListItemClass.componentName) {\n listItem = item.querySelector(ListItemClass.componentName);\n }\n\n const listItemVariant = this.variant === 'tiles' ? 'tile' : 'row';\n listItem?.setAttribute('variant', listItemVariant);\n });\n }\n\n init() {\n super.init?.();\n\n // we want new items to get the size\n observeChildren(this, () => {\n this.#handleEmptyState();\n this.#handleItemsVariant();\n this.#handleReadOnly();\n });\n }\n\n get isReadOnly() {\n return this.getAttribute('readonly') === 'true';\n }\n\n #handleReadOnly() {\n this.items.forEach((item) => {\n if (this.isReadOnly) item.setAttribute('inert', '');\n else item.removeAttribute('inert');\n });\n }\n\n attributeChangedCallback(name, oldValue, newValue) {\n super.attributeChangedCallback?.(name, oldValue, newValue);\n\n if (newValue === oldValue) return;\n\n if (name === 'variant') {\n this.#handleItemsVariant();\n } else if (name === 'readonly') {\n this.#handleReadOnly();\n }\n }\n}\n\nexport const ListClass = compose(\n createStyleMixin({\n mappings: {\n hostWidth: { selector: () => ':host', property: 'width' },\n maxHeight: { selector: () => ':host' },\n minHeight: {},\n verticalPadding: [\n { property: 'padding-top' },\n { property: 'padding-bottom' },\n ],\n horizontalPadding: [\n { property: 'padding-left' },\n { property: 'padding-right' },\n ],\n hostDirection: { selector: () => ':host', property: 'direction' },\n fontFamily: {},\n gap: {},\n\n backgroundColor: {},\n borderRadius: {},\n borderColor: {},\n borderStyle: {},\n borderWidth: {},\n\n boxShadow: {},\n gridTemplateColumns: {},\n maxItemsWidth: {\n selector: () => '::slotted(:not([slot]))',\n property: 'max-width',\n },\n minItemsWidth: {\n selector: () => '::slotted(:not([slot]))',\n property: 'min-width',\n },\n maxRowItems: {\n property: 'max-row-items',\n },\n itemsHorizontalAlign: {\n selector: () => '::slotted(*)',\n property: 'justify-self',\n },\n emptyStateTextColor: {\n selector: () => 'slot[name=\"empty-state\"]',\n property: 'color',\n },\n emptyStateTextFontFamily: {\n selector: () => 'slot[name=\"empty-state\"]',\n property: 'font-family',\n },\n },\n }),\n draggableMixin,\n componentNameValidationMixin,\n)(RawList);\n","import '@descope-ui/descope-list-item';\n\nimport { componentName, ListClass } from './ListClass';\n\ncustomElements.define(componentName, ListClass);\n\nexport { ListClass, componentName };\n","import {\n createStyleMixin,\n draggableMixin,\n componentNameValidationMixin,\n} from '@descope-ui/common/components-mixins';\nimport { compose } from '@descope-ui/common/utils';\nimport {\n getComponentName,\n injectStyle,\n observeChildren,\n} from '@descope-ui/common/components-helpers';\nimport { createBaseClass } from '@descope-ui/common/base-classes';\n\nexport const componentName = getComponentName('text');\n\nclass RawText extends createBaseClass({\n componentName,\n baseSelector: ':host > slot',\n}) {\n constructor() {\n super();\n\n this.attachShadow({ mode: 'open' }).innerHTML = `\n <slot part=\"text-wrapper\"></slot>\n `;\n\n injectStyle(`\n :host {\n display: inline-block;\n line-height: 1em;\n }\n :host > slot {\n width: 100%;\n display: inline-block;\n }\n `, this);\n }\n\n get hideWhenEmpty() {\n return this.getAttribute('hide-when-empty') === 'true';\n }\n\n init() {\n super.init();\n\n observeChildren(this, () => {\n const hasChildren = !!this.childNodes.length;\n this.style.display = !hasChildren && this.hideWhenEmpty ? 'none' : '';\n });\n }\n}\n\nconst { host } = {\n host: { selector: () => ':host' }\n}\n\nexport const TextClass = compose(\n createStyleMixin({\n mappings: {\n hostWidth: { ...host, property: 'width' },\n hostDirection: { ...host, property: 'direction' },\n fontSize: {},\n textColor: [\n { property: 'color' }\n ],\n textLineHeight: { property: 'line-height' },\n textLetterSpacing: { property: 'letter-spacing' },\n textShadow: {},\n textAlign: {},\n textTransform: {},\n fontFamily: {},\n fontStyle: {},\n fontWeight: {},\n borderWidth: {},\n borderStyle: {},\n borderColor: {},\n },\n }),\n draggableMixin,\n componentNameValidationMixin,\n)(RawText);\n","import { componentName, TextClass } from './TextClass';\n\ncustomElements.define(componentName, TextClass);\n\nexport { TextClass, componentName };\n"],"names":["componentName","AppsListClass","mappings","maxHeight","selector","minHeight","hostDirection","property","gap","ListClass","cssVarList","maxRowItems","itemsFontWeight","TextClass","fontWeightOverride","itemsFontSize","fontSizeOverride","itemsTextAlign","textAlign","itemBackgroundColor","ListItemClass","backgroundColor","itemHoverBackgroundColor","backgroundColorOverride","itemBorderStyle","borderStyleOverride","itemBorderColor","borderColorOverride","itemBorderWidth","borderWidthOverride","itemVerticalPadding","verticalPaddingOverride","itemHorizontalPadding","horizontalPaddingOverride","itemAlignment","itemRenderer","name","icon","url","_","ref","openInSameWindow","logoSize","size","itemTextVariant","rerenderAttrsList","superclass","this","getAttribute","slots","wrappedEleName","excludeAttrsSync","style","customElements","define","RawAvatar","baseSelector","constructor","super","attachShadow","mode","innerHTML","avatarComponent","shadowRoot","querySelector","includeAttrs","mapAttrs","editableIcon","display","isEditable","host","editableBadge","avatar","AvatarClass","hostWidth","hostHeight","cursor","avatarTextColor","avatarBackgroundColor","editableIconColor","editableBorderColor","editableBackgroundColor","verticalPadding","horizontalPadding","borderColor","borderStyle","borderWidth","borderRadius","outline","maxWidth","alignItems","flexDirection","transition","RawList","observedAttributes","items","assignedElements","length","setAttribute","removeAttribute","variant","forEach","item","listItem","localName","listItemVariant","init","isReadOnly","attributeChangedCallback","oldValue","newValue","fontFamily","boxShadow","gridTemplateColumns","maxItemsWidth","minItemsWidth","itemsHorizontalAlign","emptyStateTextColor","emptyStateTextFontFamily","RawText","hideWhenEmpty","hasChildren","childNodes","fontSize","textColor","textLineHeight","textLetterSpacing","textShadow","textTransform","fontStyle","fontWeight"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"descope-apps-list.js","mappings":"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","sources":["webpack://@descope/web-components-ui/../components/descope-apps-list/src/component/AppsListClass.js","webpack://@descope/web-components-ui/../components/descope-apps-list/src/component/index.js","webpack://@descope/web-components-ui/../components/descope-avatar/src/component/AvatarClass.js","webpack://@descope/web-components-ui/../components/descope-avatar/src/component/index.js","webpack://@descope/web-components-ui/../components/descope-list-item/src/component/ListItemClass.js","webpack://@descope/web-components-ui/../components/descope-list-item/src/component/index.js","webpack://@descope/web-components-ui/../components/descope-list/src/component/ListClass.js","webpack://@descope/web-components-ui/../components/descope-list/src/component/index.js","webpack://@descope/web-components-ui/../components/descope-text/src/component/TextClass.js","webpack://@descope/web-components-ui/../components/descope-text/src/component/index.js"],"sourcesContent":["import { compose } from '@descope-ui/common/utils';\nimport {\n getComponentName,\n limitAbbreviation,\n} from '@descope-ui/common/components-helpers';\nimport {\n createStyleMixin,\n draggableMixin,\n createProxy,\n componentNameValidationMixin,\n createDynamicDataMixin,\n} from '@descope-ui/common/components-mixins';\nimport { TextClass } from '@descope-ui/descope-text/class';\nimport { ListClass } from '@descope-ui/descope-list/class';\nimport { ListItemClass } from '@descope-ui/descope-list-item/class';\n\nexport const componentName = getComponentName('apps-list');\n\nconst itemRenderer = ({ name, icon, url }, _, ref) => `\n <a ${url ? `href=\"${url}\" title=\"${url}\"` : ''} ${ref.openInSameWindow ? '' : 'target=\"_blank\"'}>\n <descope-list-item>\n <div class=\"avatar-wrapper\">\n <descope-avatar\n ${icon ? `img=\"${icon}\"` : ''}\n ${name ? `display-name=\"${name}\" abbr=${limitAbbreviation(name)}` : ''}\n size=\"${ref.logoSize || ref.size}\"\n ></descope-avatar>\n </div>\n <descope-text\n variant=\"${ref.itemTextVariant}\"\n mode=\"primary\"\n >${name}</descope-text>\n </descope-list-item>\n </a>\n`;\n\nconst customMixin = (superclass) =>\n class AppsListMixinClass extends superclass {\n // size controls both item logo size and font size\n get size() {\n return this.getAttribute('size') || 'sm';\n }\n\n get itemTextVariant() {\n return this.getAttribute('item-text-variant') || 'body1';\n }\n\n get logoSize() {\n return this.getAttribute('logo-size');\n }\n\n get openInSameWindow() {\n return this.getAttribute('open-in-same-window') === 'true';\n }\n };\n\nexport const AppsListClass = compose(\n createStyleMixin({\n mappings: {\n maxHeight: { selector: () => ':host' },\n minHeight: { selector: () => ':host' },\n hostDirection: { selector: () => ':host', property: 'direction' },\n gap: {\n selector: ListClass.componentName,\n property: ListClass.cssVarList.gap,\n },\n maxRowItems: {\n selector: ListClass.componentName,\n property: ListClass.cssVarList.maxRowItems,\n },\n itemsFontWeight: {\n selector: TextClass.componentName,\n property: TextClass.cssVarList.fontWeightOverride,\n },\n itemsFontSize: {\n selector: TextClass.componentName,\n property: TextClass.cssVarList.fontSizeOverride,\n },\n itemsTextAlign: {\n selector: TextClass.componentName,\n property: TextClass.cssVarList.textAlign,\n },\n itemBackgroundColor: {\n selector: ListItemClass.componentName,\n property: ListItemClass.cssVarList.backgroundColor,\n },\n itemHoverBackgroundColor: {\n selector: `${ListItemClass.componentName}:hover`,\n property: ListItemClass.cssVarList.backgroundColor,\n },\n backgroundColor: {\n selector: ListClass.componentName,\n property: ListClass.cssVarList.backgroundColorOverride,\n },\n itemBorderStyle: {\n selector: ListItemClass.componentName,\n property: ListItemClass.cssVarList.borderStyleOverride,\n },\n itemBorderColor: {\n selector: ListItemClass.componentName,\n property: ListItemClass.cssVarList.borderColorOverride,\n },\n itemBorderWidth: {\n selector: ListItemClass.componentName,\n property: ListItemClass.cssVarList.borderWidthOverride,\n },\n itemVerticalPadding: {\n selector: ListItemClass.componentName,\n property: ListItemClass.cssVarList.verticalPaddingOverride,\n },\n itemHorizontalPadding: {\n selector: ListItemClass.componentName,\n property: ListItemClass.cssVarList.horizontalPaddingOverride,\n },\n itemAlignment: [\n { selector: () => '.avatar-wrapper', property: 'text-align' },\n {\n selector: TextClass.componentName,\n property: TextClass.cssVarList.textAlign,\n },\n ],\n },\n }),\n createDynamicDataMixin({\n itemRenderer,\n rerenderAttrsList: [\n 'size',\n 'item-text-variant',\n 'logo-size',\n 'open-in-same-window',\n ],\n }),\n draggableMixin,\n componentNameValidationMixin,\n customMixin,\n)(\n createProxy({\n slots: ['empty-state'],\n wrappedEleName: 'descope-list',\n excludeAttrsSync: ['tabindex', 'class', 'empty', 'style'],\n componentName,\n style: () => `\n :host {\n width: 100%;\n display: inline-flex;\n }\n\n descope-text::part(text-wrapper) {\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n }\n\n descope-list-item[variant=\"tile\"] .avatar-wrapper {\n width: 100%;\n }\n\n .avatar-wrapper {\n line-height: 0;\n }\n\n a {\n text-decoration: none;\n }\n\n descope-text {\n ${TextClass.cssVarList.hostDirection}: var(${AppsListClass.cssVarList.hostDirection});\n max-width: 100%;\n width: 100%;\n }\n `,\n }),\n);\n","import '@descope-ui/descope-list';\nimport '@descope-ui/descope-avatar';\nimport '@descope-ui/descope-text';\nimport { componentName, AppsListClass } from './AppsListClass';\n\ncustomElements.define(componentName, AppsListClass);\n\nexport { AppsListClass, componentName };\n","import {\n createStyleMixin,\n draggableMixin,\n componentNameValidationMixin,\n} from '@descope-ui/common/components-mixins';\nimport { createBaseClass } from '@descope-ui/common/base-classes';\nimport { compose } from '@descope-ui/common/utils';\nimport {\n forwardAttrs,\n getComponentName,\n injectStyle,\n observeAttributes,\n} from '@descope-ui/common/components-helpers';\n\nexport const componentName = getComponentName('avatar');\nclass RawAvatar extends createBaseClass({\n componentName,\n baseSelector: ':host > .wrapper',\n}) {\n constructor() {\n super();\n\n this.attachShadow({ mode: 'open' }).innerHTML = `\n <div class=\"wrapper\">\n <vaadin-avatar></vaadin-avatar>\n <div class=\"editableBadge\">\n <vaadin-icon icon=\"vaadin:pencil\"></vaadin-icon>\n </div>\n </div>\n\t\t`;\n\n injectStyle(`\n :host {\n\t\t\t\t\tdisplay: inline-flex;\n\t\t\t\t}\n\n .editableBadge {\n border: 1px solid;\n border-radius: 100%;\n height: fit-content;\n width: 25%;\n height: 25%;\n display: flex;\n justify-content: center;\n align-items: center;\n padding: 5%;\n box-sizing: border-box;\n position: absolute;\n bottom: 0;\n inset-inline-end: 0;\n }\n\n vaadin-icon {\n color: currentcolor;\n }\n\n vaadin-avatar {\n width: 100%;\n height: 100%;\n margin: 0;\n border: none\n }\n\n .wrapper {\n display: inline-flex;\n position: relative;\n width: 100%;\n height: 100%;\n }\n `, this);\n\n this.avatarComponent = this.shadowRoot.querySelector('vaadin-avatar');\n\n forwardAttrs(this, this.avatarComponent, {\n includeAttrs: ['display-name', 'img', 'abbr'],\n mapAttrs: { 'display-name': 'name' },\n });\n\n const editableIcon = this.shadowRoot.querySelector('.editableBadge');\n\n observeAttributes(\n this,\n () => {\n editableIcon.style.display = this.isEditable ? '' : 'none';\n },\n { includeAttrs: ['editable'] },\n );\n }\n\n get isEditable() {\n return this.getAttribute('editable') === 'true';\n }\n}\n\nconst { host, editableBadge, avatar } = {\n host: { selector: () => ':host' },\n editableBadge: { selector: '> .editableBadge' },\n avatar: { selector: 'vaadin-avatar' },\n};\n\nexport const AvatarClass = compose(\n createStyleMixin({\n mappings: {\n hostWidth: [\n { ...host, property: 'width' },\n { ...host, property: 'min-width' },\n ],\n hostHeight: { ...host, property: 'height' },\n cursor: [avatar, host],\n hostDirection: { ...host, property: 'direction' },\n avatarTextColor: { ...avatar, property: 'color' },\n avatarBackgroundColor: { ...avatar, property: 'background-color' },\n editableIconColor: { ...editableBadge, property: 'color' },\n editableBorderColor: { ...editableBadge, property: 'border-color' },\n editableBackgroundColor: {\n ...editableBadge,\n property: 'background-color',\n },\n },\n }),\n draggableMixin,\n componentNameValidationMixin,\n)(RawAvatar);\n","import { componentName, AvatarClass } from './AvatarClass';\nimport '@vaadin/avatar';\nimport '@vaadin/icon';\nimport '@vaadin/icons';\n\ncustomElements.define(componentName, AvatarClass);\n\nexport { AvatarClass, componentName };\n","import {\n createStyleMixin,\n draggableMixin,\n componentNameValidationMixin,\n activeableMixin,\n} from '@descope-ui/common/components-mixins';\nimport { compose } from '@descope-ui/common/utils';\nimport { getComponentName } from '@descope-ui/common/components-helpers';\nimport { injectStyle } from '@descope-ui/common/components-helpers';\nimport { createBaseClass } from '@descope-ui/common/base-classes';\n\nexport const componentName = getComponentName('list-item');\n\nconst customMixin = (superclass) =>\n class ListItemMixinClass extends superclass {\n constructor() {\n super();\n\n this.attachShadow({ mode: 'open' }).innerHTML = `\n <slot></slot>\n `;\n\n injectStyle(\n `\n slot {\n width: 100%;\n display: flex;\n overflow: hidden;\n box-sizing: border-box;\n }\n :host {\n display: block;\n }\n `,\n this,\n );\n }\n };\n\nexport const ListItemClass = compose(\n createStyleMixin({\n mappings: {\n verticalPadding: [\n { property: 'padding-top' },\n { property: 'padding-bottom' },\n ],\n horizontalPadding: [\n { property: 'padding-left' },\n { property: 'padding-right' },\n ],\n backgroundColor: {},\n borderColor: {},\n borderStyle: {},\n borderWidth: {},\n borderRadius: {},\n outline: {},\n cursor: {},\n gap: {},\n maxWidth: { selector: () => ':host' },\n alignItems: {},\n flexDirection: {},\n transition: {},\n },\n }),\n draggableMixin,\n componentNameValidationMixin,\n customMixin,\n activeableMixin,\n)(createBaseClass({ componentName, baseSelector: 'slot' }));\n","import { componentName, ListItemClass } from './ListItemClass';\n\ncustomElements.define(componentName, ListItemClass);\n\nexport { ListItemClass, componentName };\n","import {\n createStyleMixin,\n draggableMixin,\n componentNameValidationMixin,\n} from '@descope-ui/common/components-mixins';\nimport { compose } from '@descope-ui/common/utils';\nimport {\n getComponentName,\n observeChildren,\n} from '@descope-ui/common/components-helpers';\nimport { injectStyle } from '@descope-ui/common/components-helpers';\nimport { ListItemClass } from '@descope-ui/descope-list-item/class';\nimport { createBaseClass } from '@descope-ui/common/base-classes';\n\nexport const componentName = getComponentName('list');\n\nclass RawList extends createBaseClass({\n componentName,\n baseSelector: '.wrapper',\n}) {\n static get observedAttributes() {\n return ['variant', 'readonly'];\n }\n\n constructor() {\n super();\n\n this.attachShadow({ mode: 'open' }).innerHTML = `\n <div class=\"wrapper\">\n <slot></slot>\n <slot name=\"empty-state\">\n No item...\n </slot>\n </div>\n\t`;\n\n injectStyle(\n `\n .wrapper {\n overflow: auto;\n display: grid;\n max-height: 100%;\n width: 100%;\n }\n\n :host {\n display: inline-flex;\n width: 100%;\n }\n slot[name=\"empty-state\"] {\n justify-content: center;\n align-items: center;\n display: flex;\n flex-grow: 1;\n }\n\n :host slot[name=\"empty-state\"] {\n display: none;\n }\n :host([empty]) slot[name=\"empty-state\"] {\n display: flex;\n }\n ::slotted(:not([slot])) {\n width: 100%;\n }\n `,\n this,\n );\n }\n\n get items() {\n return this.shadowRoot.querySelector('slot').assignedElements();\n }\n\n #handleEmptyState() {\n if (this.items.length === 0) {\n this.setAttribute('empty', 'true');\n } else {\n this.removeAttribute('empty');\n }\n }\n\n get variant() {\n return this.getAttribute('variant') || 'list';\n }\n\n #handleItemsVariant() {\n this.items.forEach((item) => {\n let listItem = item;\n if (listItem.localName !== ListItemClass.componentName) {\n listItem = item.querySelector(ListItemClass.componentName);\n }\n\n const listItemVariant = this.variant === 'tiles' ? 'tile' : 'row';\n listItem?.setAttribute('variant', listItemVariant);\n });\n }\n\n init() {\n super.init?.();\n\n // we want new items to get the size\n observeChildren(this, () => {\n this.#handleEmptyState();\n this.#handleItemsVariant();\n this.#handleReadOnly();\n });\n }\n\n get isReadOnly() {\n return this.getAttribute('readonly') === 'true';\n }\n\n #handleReadOnly() {\n this.items.forEach((item) => {\n if (this.isReadOnly) item.setAttribute('inert', '');\n else item.removeAttribute('inert');\n });\n }\n\n attributeChangedCallback(name, oldValue, newValue) {\n super.attributeChangedCallback?.(name, oldValue, newValue);\n\n if (newValue === oldValue) return;\n\n if (name === 'variant') {\n this.#handleItemsVariant();\n } else if (name === 'readonly') {\n this.#handleReadOnly();\n }\n }\n}\n\nexport const ListClass = compose(\n createStyleMixin({\n mappings: {\n hostWidth: { selector: () => ':host', property: 'width' },\n maxHeight: { selector: () => ':host' },\n minHeight: {},\n verticalPadding: [\n { property: 'padding-top' },\n { property: 'padding-bottom' },\n ],\n horizontalPadding: [\n { property: 'padding-left' },\n { property: 'padding-right' },\n ],\n hostDirection: { selector: () => ':host', property: 'direction' },\n fontFamily: {},\n gap: {},\n\n backgroundColor: {},\n borderRadius: {},\n borderColor: {},\n borderStyle: {},\n borderWidth: {},\n\n boxShadow: {},\n gridTemplateColumns: {},\n maxItemsWidth: {\n selector: () => '::slotted(:not([slot]))',\n property: 'max-width',\n },\n minItemsWidth: {\n selector: () => '::slotted(:not([slot]))',\n property: 'min-width',\n },\n maxRowItems: {\n property: 'max-row-items',\n },\n itemsHorizontalAlign: {\n selector: () => '::slotted(*)',\n property: 'justify-self',\n },\n emptyStateTextColor: {\n selector: () => 'slot[name=\"empty-state\"]',\n property: 'color',\n },\n emptyStateTextFontFamily: {\n selector: () => 'slot[name=\"empty-state\"]',\n property: 'font-family',\n },\n },\n }),\n draggableMixin,\n componentNameValidationMixin,\n)(RawList);\n","import '@descope-ui/descope-list-item';\n\nimport { componentName, ListClass } from './ListClass';\n\ncustomElements.define(componentName, ListClass);\n\nexport { ListClass, componentName };\n","import {\n createStyleMixin,\n draggableMixin,\n componentNameValidationMixin,\n stretchMixin,\n} from '@descope-ui/common/components-mixins';\nimport { compose } from '@descope-ui/common/utils';\nimport {\n getComponentName,\n injectStyle,\n observeChildren,\n} from '@descope-ui/common/components-helpers';\nimport { createBaseClass } from '@descope-ui/common/base-classes';\n\nexport const componentName = getComponentName('text');\n\nclass RawText extends createBaseClass({\n componentName,\n baseSelector: ':host > slot',\n}) {\n constructor() {\n super();\n\n this.attachShadow({ mode: 'open' }).innerHTML = `\n <slot part=\"text-wrapper\"></slot>\n `;\n\n injectStyle(\n `\n :host {\n display: inline-block;\n line-height: 1em;\n }\n :host > slot {\n width: 100%;\n display: inline-block;\n }\n `,\n this,\n );\n }\n\n get hideWhenEmpty() {\n return this.getAttribute('hide-when-empty') === 'true';\n }\n\n init() {\n super.init();\n\n observeChildren(this, () => {\n const hasChildren = !!this.childNodes.length;\n this.style.display = !hasChildren && this.hideWhenEmpty ? 'none' : '';\n });\n }\n}\n\nconst { host } = {\n host: { selector: () => ':host' },\n};\n\nexport const TextClass = compose(\n createStyleMixin({\n mappings: {\n hostWidth: { ...host, property: 'width' },\n hostDirection: { ...host, property: 'direction' },\n fontSize: {},\n textColor: [{ property: 'color' }],\n textLineHeight: { property: 'line-height' },\n textLetterSpacing: { property: 'letter-spacing' },\n textShadow: {},\n textAlign: {},\n textTransform: {},\n fontFamily: {},\n fontStyle: {},\n fontWeight: {},\n borderWidth: {},\n borderStyle: {},\n borderColor: {},\n },\n }),\n stretchMixin({ triggers: [{ attr: 'full-width', value: 'true' }] }),\n draggableMixin,\n componentNameValidationMixin,\n)(RawText);\n","import { componentName, TextClass } from './TextClass';\n\ncustomElements.define(componentName, TextClass);\n\nexport { TextClass, componentName };\n"],"names":["componentName","AppsListClass","mappings","maxHeight","selector","minHeight","hostDirection","property","gap","ListClass","cssVarList","maxRowItems","itemsFontWeight","TextClass","fontWeightOverride","itemsFontSize","fontSizeOverride","itemsTextAlign","textAlign","itemBackgroundColor","ListItemClass","backgroundColor","itemHoverBackgroundColor","backgroundColorOverride","itemBorderStyle","borderStyleOverride","itemBorderColor","borderColorOverride","itemBorderWidth","borderWidthOverride","itemVerticalPadding","verticalPaddingOverride","itemHorizontalPadding","horizontalPaddingOverride","itemAlignment","itemRenderer","name","icon","url","_","ref","openInSameWindow","logoSize","size","itemTextVariant","rerenderAttrsList","superclass","this","getAttribute","slots","wrappedEleName","excludeAttrsSync","style","customElements","define","RawAvatar","baseSelector","constructor","super","attachShadow","mode","innerHTML","avatarComponent","shadowRoot","querySelector","includeAttrs","mapAttrs","editableIcon","display","isEditable","host","editableBadge","avatar","AvatarClass","hostWidth","hostHeight","cursor","avatarTextColor","avatarBackgroundColor","editableIconColor","editableBorderColor","editableBackgroundColor","verticalPadding","horizontalPadding","borderColor","borderStyle","borderWidth","borderRadius","outline","maxWidth","alignItems","flexDirection","transition","RawList","observedAttributes","items","assignedElements","length","setAttribute","removeAttribute","variant","forEach","item","listItem","localName","listItemVariant","init","isReadOnly","attributeChangedCallback","oldValue","newValue","fontFamily","boxShadow","gridTemplateColumns","maxItemsWidth","minItemsWidth","itemsHorizontalAlign","emptyStateTextColor","emptyStateTextFontFamily","RawText","hideWhenEmpty","hasChildren","childNodes","fontSize","textColor","textLineHeight","textLetterSpacing","textShadow","textTransform","fontStyle","fontWeight","triggers","attr","value"],"sourceRoot":""}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
(self.webpackChunk_descope_web_components_ui=self.webpackChunk_descope_web_components_ui||[]).push([[1202,2294,6367,6724],{97376(t){t.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0iYmxhY2siIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+IDxwYXRoIGQ9Ik0xNy4yMTkzIDkuMjcyODNDMTcuNjU4NCA4Ljg3OTEyIDE4LjMzMzQgOC45MTU4NyAxOC43MjcyIDkuMzU0OTJDMTkuMTIwOSA5Ljc5Mzk3IDE5LjA4NDEgMTAuNDY5MSAxOC42NDUxIDEwLjg2MjhDMTguNjQ1MSAxMC44NjI4IDEzLjA0NTcgMTYuMDAyMiAxMi42NCAxNi4zNjZDMTIuMjM0MyAxNi43Mjk4IDExLjc2MDggMTYuNzI5OCAxMS4zNTUyIDE2LjM2Nkw1LjM1NDkyIDEwLjg2MjhDNC45MTU4NyAxMC40NjkxIDQuODc5MTIgOS43OTM5NyA1LjI3MjgzIDkuMzU0OTJDNS42NjY1NSA4LjkxNTg3IDYuMzQxNjQgOC44NzkxMiA2Ljc4MDY5IDkuMjcyODNMMTIgMTQuMTM2OEwxNy4yMTkzIDkuMjcyODNaIi8+IDwvc3ZnPiA="},96945(t,e,n){"use strict";n.r(e),n.d(e,{CollapsibleContainerClass:()=>g,componentName:()=>p}),n(63595),n(56737);var s=n(88961),r=n(72270),i=n(63200),o=n(25964),a=n(97376),l=n.n(a),c=n(66434);const p=(0,o.xE)("collapsible-container");class d extends((0,r.qu)({componentName:p,baseSelector:"slot"})){static get observedAttributes(){return["collapsed","collapsible","text"]}constructor(){super(),this.attachShadow({mode:"open"}).innerHTML=`\n <div class="wrapper">\n <descope-text st-host-direction="ltr">\n <div class="header">\n <div class="icon">\n <descope-icon st-fill="currentcolor" src=${l()}></descope-icon>\n </div>\n <span></span>\n </div>\n </descope-text>\n <div class="content">\n <slot></slot>\n </div>\n </div>\n\t`,(0,o.fz)(`\n div.content {\n transition-property: max-height;\n overflow: auto;\n height: auto;\n\t\t\t}\n\t\t\tslot {\n\t\t\t\tbox-sizing: border-box;\n\t\t\t\twidth: 100%;\n\t\t\t\tdisplay: flex;\n\t\t\t}\n slot:focus-visible {\n outline: none;\n }\n\t\t\t:host {\n\t\t\t\tdisplay: inline-flex;\n\t\t\t}\n .header {\n user-select: none;\n display: flex;\n align-items: baseline;\n }\n .icon {\n flex-shrink: 0;\n height: var(${c.s.cssVarList.textLineHeight});\n min-height: 24px;\n display: flex;\n align-items: center;\n }\n descope-icon {\n transition-property: transform;\n }\n .rotate {\n transform: rotate(-180deg);\n }\n descope-text {\n width: 100%;\n display: flex;\n }\n span {\n align-self: center;\n word-break: break-word;\n }\n span:empty {\n display: none;\n }\n .wrapper {\n overflow: hidden;\n display: inline-flex;\n width: 100%;\n flex-direction: column;\n }\n `,this),this.header=this.shadowRoot.querySelector(".header"),this.content=this.shadowRoot.querySelector("div.content"),this.icon=this.header.querySelector("descope-icon"),this.headerText=this.header.querySelector("span"),this.textComponent=this.shadowRoot.querySelector("descope-text")}get isCollapsible(){return"true"===this.getAttribute("collapsible")}calcContentHeight(){return this.content.offsetHeight||this.content.scrollHeight}get isCollapsed(){return"true"===this.getAttribute("collapsed")}toggle(){this.setAttribute("collapsed",this.isCollapsed?"false":"true")}collapse(t=!1){const e=()=>{this.content.style.maxHeight="0px"};if(this.icon.classList.add("rotate"),!t)return e();this.content.style.maxHeight=this.calcContentHeight()+"px",setTimeout(e)}expand(t=!1){const e=()=>{this.content.style.maxHeight=""};if(this.icon.classList.remove("rotate"),!t)return e();this.content.addEventListener("transitionend",e,{once:!0}),this.content.style.maxHeight=this.calcContentHeight()+"px"}#t=!1;init(){super.init?.(),this.#t=!0,this.header.addEventListener("click",()=>{this.isCollapsible&&this.toggle()}),(0,o.EA)(this,this.textComponent,{includeAttrs:["text-align","text-variant","text-mode"],mapAttrs:{"text-mode":"mode","text-variant":"variant"}})}updateHeaderText(){const t=this.getAttribute("text")||"";this.headerText.innerText=t}attributeChangedCallback(t,e,n){"text"!==t?this.isCollapsed&&this.isCollapsible?this.collapse(this.#t):this.expand(this.#t):this.updateHeaderText()}}const h={host:()=>":host",icon:()=>"descope-icon",iconWrapper:()=>".icon",header:()=>".header",text:()=>"span",wrapper:()=>".wrapper",content:()=>"div.content"},g=(0,i.Zz)((0,s.RF)({mappings:{hostWidth:{selector:h.host,property:"width"},hostDirection:{selector:h.host,property:"direction"},verticalPadding:[{selector:h.wrapper,property:"padding-top"},{selector:h.wrapper,property:"padding-bottom"}],horizontalPadding:[{selector:h.wrapper,property:"padding-left"},{selector:h.wrapper,property:"padding-right"}],flexDirection:{},justifyContent:{},alignItems:{},gap:[{},{property:"margin-top"}],backgroundColor:{selector:h.wrapper},backgroundImage:{selector:h.wrapper},backgroundPositionX:{selector:h.wrapper},backgroundPositionY:{selector:h.wrapper},backgroundSize:{selector:h.wrapper},backgroundRepeat:{selector:h.wrapper},borderRadius:{selector:h.wrapper},borderColor:{selector:h.wrapper},borderStyle:{selector:h.wrapper},borderWidth:{selector:h.wrapper},boxShadow:{selector:h.wrapper},headerIconOrder:{selector:h.iconWrapper,property:"order"},headerCursor:{selector:h.header,property:"cursor"},headerGap:{selector:h.header,property:"gap"},textGrow:{selector:h.text,property:"flex-grow"},textDirection:{selector:h.text,property:"direction"},iconAnimationDuration:{selector:h.icon,property:"transition-duration"},contentAnimationDuration:{selector:h.content,property:"transition-duration"}}}),s.VO,s.tQ)(d);customElements.define(p,g)},98538(t,e,n){"use strict";n.d(e,{S:()=>l,T:()=>a});var s=n(88961),r=n(25964),i=n(8512),o=n(63200);const a=(0,r.xE)("icon"),l=(0,o.Zz)((0,s.RF)({mappings:{fill:[{},{property:i.q.cssVarList.fill}]}}),s.VO,s.tQ)((0,s.tz)({slots:[],wrappedEleName:"descope-image",style:()=>"\n :host {\n display: inline-flex;\n max-height: 100%;\n }\n ",excludeAttrsSync:["tabindex","class","style"],componentName:a}))},56737(t,e,n){"use strict";n.r(e),n.d(e,{IconClass:()=>s.S,componentName:()=>s.T}),n(53455);var s=n(98538);customElements.define(s.T,s.S)},8512(t,e,n){"use strict";n.d(e,{T:()=>l,q:()=>d});var s=n(88961),r=n(72270),i=n(63200),o=n(25964),a=n(18782);const l=(0,o.xE)("image"),c=["src","src-dark"];class p extends((0,r.qu)({componentName:l,baseSelector:"slot"})){static get observedAttributes(){return c}constructor(){super(),this.attachShadow({mode:"open"}).innerHTML="\n\t\t<slot></slot>\n\t",(0,o.fz)("\n\t\t\t:host {\n\t\t\t\tdisplay: inline-flex;\n\t\t\t}\n :host > slot {\n width: 100%;\n height: 100%;\n\t\t\t\tbox-sizing: border-box;\n\t\t\t\tdisplay: flex;\n\t\t\t\toverflow: hidden;\n\t\t\t}\n\n ::slotted(*) {\n width: 100%;\n\t\t\t}\n\n .hidden {\n display: none;\n }\n ",this)}init(){super.init?.(),this.toggleVisibility(this.getSrc)}onThemeChange(){this.renderImage()}toggleVisibility(t){t?this.classList.remove("hidden"):this.classList.add("hidden")}get altText(){return this.getAttribute("alt")||""}get legacySrc(){return this.getAttribute("src")}get themeSrc(){return this.getAttribute(`src-${this.currentThemeName}`)}get getSrc(){return this.themeSrc||this.legacySrc}updateFillColor(t){[t,...t.querySelectorAll("*[fill]")].forEach(t=>{t.setAttribute("fill",`var(${d.cssVarList.fill}, ${t.getAttribute("fill")||"''"})`)})}renderImage(){this.toggleVisibility(this.getSrc),(0,a.m)(this.getSrc,this.altText).then(t=>{this.innerHTML="",t&&(this.updateFillColor(t),this.appendChild(t))})}shouldRender(t){const e=this.getAttribute(t);return this.getSrc===e}attributeChangedCallback(t,e,n){super.attributeChangedCallback?.(t,e,n),e!==n&&this.shouldRender(t)&&this.renderImage()}}const d=(0,i.Zz)((0,s.RF)({mappings:{fill:{},height:{selector:()=>":host"},width:{selector:()=>":host"}}}),s.VO,s.tQ)(p)},18782(t,e,n){"use strict";n.d(e,{m:()=>i});var s=n(25414);const r=t=>{const e=s.A.sanitize(t,{USE_PROFILES:{svg:!0,svgFilters:!0},ADD_TAGS:["image"],FORBID_TAGS:["defs"]});return(new DOMParser).parseFromString(e,"image/svg+xml").querySelector("svg")},i=async(t,e)=>{try{let n;if((t=>t.startsWith("data:image/svg+xml;base64,"))(t)){const e=atob(t.slice(26));n=r(e)}else if("svg"===(t=>{const e=t.match(/\.([0-9a-z]+)(?:[\\?#]|$)/i);return e?e[1]:null})(t)){const e=await fetch(t),s=await e.text();n=r(s)}else n=((t,e)=>{const n=document.createElement("img");return n.setAttribute("src",t),n.setAttribute("alt",e),n})(t,e);return n.style.setProperty("max-width","100%"),n.style.setProperty("max-height","100%"),n}catch{return null}}},53455(t,e,n){"use strict";n.r(e),n.d(e,{ImageClass:()=>s.q,componentName:()=>s.T});var s=n(8512);customElements.define(s.T,s.q)},66434(t,e,n){"use strict";n.d(e,{T:()=>a,s:()=>p});var s=n(88961),r=n(63200),i=n(25964),o=n(72270);const a=(0,i.xE)("text");class l extends((0,o.qu)({componentName:a,baseSelector:":host > slot"})){constructor(){super(),this.attachShadow({mode:"open"}).innerHTML='\n <slot part="text-wrapper"></slot>\n ',(0,i.fz)("\n :host {\n display: inline-block;\n line-height: 1em;\n }\n :host > slot {\n width: 100%;\n display: inline-block;\n }\n ",this)}get hideWhenEmpty(){return"true"===this.getAttribute("hide-when-empty")}init(){super.init(),(0,i.Ge)(this,()=>{const t=!!this.childNodes.length;this.style.display=!t&&this.hideWhenEmpty?"none":""})}}const{host:c}={host:{selector:()=>":host"}},p=(0,r.Zz)((0,s.RF)({mappings:{hostWidth:{...c,property:"width"},hostDirection:{...c,property:"direction"},fontSize:{},textColor:[{property:"color"}],textLineHeight:{property:"line-height"},textLetterSpacing:{property:"letter-spacing"},textShadow:{},textAlign:{},textTransform:{},fontFamily:{},fontStyle:{},fontWeight:{},borderWidth:{},borderStyle:{},borderColor:{}}}),s.VO,s.tQ)(l)},63595(t,e,n){"use strict";n.r(e),n.d(e,{TextClass:()=>s.s,componentName:()=>s.T});var s=n(66434);customElements.define(s.T,s.s)}}]);
|
|
1
|
+
(self.webpackChunk_descope_web_components_ui=self.webpackChunk_descope_web_components_ui||[]).push([[1202,2294,6367,6724],{97376(t){t.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0iYmxhY2siIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+IDxwYXRoIGQ9Ik0xNy4yMTkzIDkuMjcyODNDMTcuNjU4NCA4Ljg3OTEyIDE4LjMzMzQgOC45MTU4NyAxOC43MjcyIDkuMzU0OTJDMTkuMTIwOSA5Ljc5Mzk3IDE5LjA4NDEgMTAuNDY5MSAxOC42NDUxIDEwLjg2MjhDMTguNjQ1MSAxMC44NjI4IDEzLjA0NTcgMTYuMDAyMiAxMi42NCAxNi4zNjZDMTIuMjM0MyAxNi43Mjk4IDExLjc2MDggMTYuNzI5OCAxMS4zNTUyIDE2LjM2Nkw1LjM1NDkyIDEwLjg2MjhDNC45MTU4NyAxMC40NjkxIDQuODc5MTIgOS43OTM5NyA1LjI3MjgzIDkuMzU0OTJDNS42NjY1NSA4LjkxNTg3IDYuMzQxNjQgOC44NzkxMiA2Ljc4MDY5IDkuMjcyODNMMTIgMTQuMTM2OEwxNy4yMTkzIDkuMjcyODNaIi8+IDwvc3ZnPiA="},96945(t,e,n){"use strict";n.r(e),n.d(e,{CollapsibleContainerClass:()=>g,componentName:()=>d}),n(63595),n(56737);var s=n(88961),r=n(72270),i=n(63200),o=n(25964),a=n(97376),l=n.n(a),c=n(66434);const d=(0,o.xE)("collapsible-container");class h extends((0,r.qu)({componentName:d,baseSelector:"slot"})){static get observedAttributes(){return["collapsed","collapsible","text"]}constructor(){super(),this.attachShadow({mode:"open"}).innerHTML=`\n <div class="wrapper">\n <descope-text st-host-direction="ltr">\n <div class="header">\n <div class="icon">\n <descope-icon st-fill="currentcolor" src=${l()}></descope-icon>\n </div>\n <span></span>\n </div>\n </descope-text>\n <div class="content">\n <slot></slot>\n </div>\n </div>\n\t`,(0,o.fz)(`\n div.content {\n transition-property: max-height;\n overflow: auto;\n height: auto;\n\t\t\t}\n\t\t\tslot {\n\t\t\t\tbox-sizing: border-box;\n\t\t\t\twidth: 100%;\n\t\t\t\tdisplay: flex;\n\t\t\t}\n slot:focus-visible {\n outline: none;\n }\n\t\t\t:host {\n\t\t\t\tdisplay: inline-flex;\n\t\t\t}\n .header {\n user-select: none;\n display: flex;\n align-items: baseline;\n }\n .icon {\n flex-shrink: 0;\n height: var(${c.s.cssVarList.textLineHeight});\n min-height: 24px;\n display: flex;\n align-items: center;\n }\n descope-icon {\n transition-property: transform;\n }\n .rotate {\n transform: rotate(-180deg);\n }\n descope-text {\n width: 100%;\n display: flex;\n }\n span {\n align-self: center;\n word-break: break-word;\n }\n span:empty {\n display: none;\n }\n .wrapper {\n overflow: hidden;\n display: inline-flex;\n width: 100%;\n flex-direction: column;\n }\n `,this),this.header=this.shadowRoot.querySelector(".header"),this.content=this.shadowRoot.querySelector("div.content"),this.icon=this.header.querySelector("descope-icon"),this.headerText=this.header.querySelector("span"),this.textComponent=this.shadowRoot.querySelector("descope-text")}get isCollapsible(){return"true"===this.getAttribute("collapsible")}calcContentHeight(){return this.content.offsetHeight||this.content.scrollHeight}get isCollapsed(){return"true"===this.getAttribute("collapsed")}toggle(){this.setAttribute("collapsed",this.isCollapsed?"false":"true")}collapse(t=!1){const e=()=>{this.content.style.maxHeight="0px"};if(this.icon.classList.add("rotate"),!t)return e();this.content.style.maxHeight=this.calcContentHeight()+"px",setTimeout(e)}expand(t=!1){const e=()=>{this.content.style.maxHeight=""};if(this.icon.classList.remove("rotate"),!t)return e();this.content.addEventListener("transitionend",e,{once:!0}),this.content.style.maxHeight=this.calcContentHeight()+"px"}#t=!1;init(){super.init?.(),this.#t=!0,this.header.addEventListener("click",()=>{this.isCollapsible&&this.toggle()}),(0,o.EA)(this,this.textComponent,{includeAttrs:["text-align","text-variant","text-mode"],mapAttrs:{"text-mode":"mode","text-variant":"variant"}})}updateHeaderText(){const t=this.getAttribute("text")||"";this.headerText.innerText=t}attributeChangedCallback(t,e,n){"text"!==t?this.isCollapsed&&this.isCollapsible?this.collapse(this.#t):this.expand(this.#t):this.updateHeaderText()}}const p={host:()=>":host",icon:()=>"descope-icon",iconWrapper:()=>".icon",header:()=>".header",text:()=>"span",wrapper:()=>".wrapper",content:()=>"div.content"},g=(0,i.Zz)((0,s.RF)({mappings:{hostWidth:{selector:p.host,property:"width"},hostDirection:{selector:p.host,property:"direction"},verticalPadding:[{selector:p.wrapper,property:"padding-top"},{selector:p.wrapper,property:"padding-bottom"}],horizontalPadding:[{selector:p.wrapper,property:"padding-left"},{selector:p.wrapper,property:"padding-right"}],flexDirection:{},justifyContent:{},alignItems:{},gap:[{},{property:"margin-top"}],backgroundColor:{selector:p.wrapper},backgroundImage:{selector:p.wrapper},backgroundPositionX:{selector:p.wrapper},backgroundPositionY:{selector:p.wrapper},backgroundSize:{selector:p.wrapper},backgroundRepeat:{selector:p.wrapper},borderRadius:{selector:p.wrapper},borderColor:{selector:p.wrapper},borderStyle:{selector:p.wrapper},borderWidth:{selector:p.wrapper},boxShadow:{selector:p.wrapper},headerIconOrder:{selector:p.iconWrapper,property:"order"},headerCursor:{selector:p.header,property:"cursor"},headerGap:{selector:p.header,property:"gap"},textGrow:{selector:p.text,property:"flex-grow"},textDirection:{selector:p.text,property:"direction"},iconAnimationDuration:{selector:p.icon,property:"transition-duration"},contentAnimationDuration:{selector:p.content,property:"transition-duration"}}}),s.VO,s.tQ)(h);customElements.define(d,g)},98538(t,e,n){"use strict";n.d(e,{S:()=>l,T:()=>a});var s=n(88961),r=n(25964),i=n(8512),o=n(63200);const a=(0,r.xE)("icon"),l=(0,o.Zz)((0,s.RF)({mappings:{fill:[{},{property:i.q.cssVarList.fill}]}}),s.VO,s.tQ)((0,s.tz)({slots:[],wrappedEleName:"descope-image",style:()=>"\n :host {\n display: inline-flex;\n max-height: 100%;\n }\n ",excludeAttrsSync:["tabindex","class","style"],componentName:a}))},56737(t,e,n){"use strict";n.r(e),n.d(e,{IconClass:()=>s.S,componentName:()=>s.T}),n(53455);var s=n(98538);customElements.define(s.T,s.S)},8512(t,e,n){"use strict";n.d(e,{T:()=>l,q:()=>h});var s=n(88961),r=n(72270),i=n(63200),o=n(25964),a=n(18782);const l=(0,o.xE)("image"),c=["src","src-dark"];class d extends((0,r.qu)({componentName:l,baseSelector:"slot"})){static get observedAttributes(){return c}constructor(){super(),this.attachShadow({mode:"open"}).innerHTML="\n\t\t<slot></slot>\n\t",(0,o.fz)("\n\t\t\t:host {\n\t\t\t\tdisplay: inline-flex;\n\t\t\t}\n :host > slot {\n width: 100%;\n height: 100%;\n\t\t\t\tbox-sizing: border-box;\n\t\t\t\tdisplay: flex;\n\t\t\t\toverflow: hidden;\n\t\t\t}\n\n ::slotted(*) {\n width: 100%;\n\t\t\t}\n\n .hidden {\n display: none;\n }\n ",this)}init(){super.init?.(),this.toggleVisibility(this.getSrc)}onThemeChange(){this.renderImage()}toggleVisibility(t){t?this.classList.remove("hidden"):this.classList.add("hidden")}get altText(){return this.getAttribute("alt")||""}get legacySrc(){return this.getAttribute("src")}get themeSrc(){return this.getAttribute(`src-${this.currentThemeName}`)}get getSrc(){return this.themeSrc||this.legacySrc}updateFillColor(t){[t,...t.querySelectorAll("*[fill]")].forEach(t=>{t.setAttribute("fill",`var(${h.cssVarList.fill}, ${t.getAttribute("fill")||"''"})`)})}renderImage(){this.toggleVisibility(this.getSrc),(0,a.m)(this.getSrc,this.altText).then(t=>{this.innerHTML="",t&&(this.updateFillColor(t),this.appendChild(t))})}shouldRender(t){const e=this.getAttribute(t);return this.getSrc===e}attributeChangedCallback(t,e,n){super.attributeChangedCallback?.(t,e,n),e!==n&&this.shouldRender(t)&&this.renderImage()}}const h=(0,i.Zz)((0,s.RF)({mappings:{fill:{},height:{selector:()=>":host"},width:{selector:()=>":host"}}}),s.VO,s.tQ)(d)},18782(t,e,n){"use strict";n.d(e,{m:()=>i});var s=n(25414);const r=t=>{const e=s.A.sanitize(t,{USE_PROFILES:{svg:!0,svgFilters:!0},ADD_TAGS:["image"],FORBID_TAGS:["defs"]});return(new DOMParser).parseFromString(e,"image/svg+xml").querySelector("svg")},i=async(t,e)=>{try{let n;if((t=>t.startsWith("data:image/svg+xml;base64,"))(t)){const e=atob(t.slice(26));n=r(e)}else if("svg"===(t=>{const e=t.match(/\.([0-9a-z]+)(?:[\\?#]|$)/i);return e?e[1]:null})(t)){const e=await fetch(t),s=await e.text();n=r(s)}else n=((t,e)=>{const n=document.createElement("img");return n.setAttribute("src",t),n.setAttribute("alt",e),n})(t,e);return n.style.setProperty("max-width","100%"),n.style.setProperty("max-height","100%"),n}catch{return null}}},53455(t,e,n){"use strict";n.r(e),n.d(e,{ImageClass:()=>s.q,componentName:()=>s.T});var s=n(8512);customElements.define(s.T,s.q)},66434(t,e,n){"use strict";n.d(e,{T:()=>a,s:()=>d});var s=n(88961),r=n(63200),i=n(25964),o=n(72270);const a=(0,i.xE)("text");class l extends((0,o.qu)({componentName:a,baseSelector:":host > slot"})){constructor(){super(),this.attachShadow({mode:"open"}).innerHTML='\n <slot part="text-wrapper"></slot>\n ',(0,i.fz)("\n :host {\n display: inline-block;\n line-height: 1em;\n }\n :host > slot {\n width: 100%;\n display: inline-block;\n }\n ",this)}get hideWhenEmpty(){return"true"===this.getAttribute("hide-when-empty")}init(){super.init(),(0,i.Ge)(this,()=>{const t=!!this.childNodes.length;this.style.display=!t&&this.hideWhenEmpty?"none":""})}}const{host:c}={host:{selector:()=>":host"}},d=(0,r.Zz)((0,s.RF)({mappings:{hostWidth:{...c,property:"width"},hostDirection:{...c,property:"direction"},fontSize:{},textColor:[{property:"color"}],textLineHeight:{property:"line-height"},textLetterSpacing:{property:"letter-spacing"},textShadow:{},textAlign:{},textTransform:{},fontFamily:{},fontStyle:{},fontWeight:{},borderWidth:{},borderStyle:{},borderColor:{}}}),(0,s.DM)({triggers:[{attr:"full-width",value:"true"}]}),s.VO,s.tQ)(l)},63595(t,e,n){"use strict";n.r(e),n.d(e,{TextClass:()=>s.s,componentName:()=>s.T});var s=n(66434);customElements.define(s.T,s.s)}}]);
|
|
2
2
|
//# sourceMappingURL=descope-collapsible-container.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"descope-collapsible-container.js","mappings":"oIAAAA,EAAOC,QAAU,ooB,iMCeV,MAAMC,GAAgB,QAAiB,yBAE9C,MAAMC,WAAgC,QAAgB,CACpDD,gBACAE,aAAc,UAEd,6BAAWC,GACT,MAAO,CAAC,YAAa,cAAe,OACtC,CAEA,WAAAC,GACEC,QAEAC,KAAKC,aAAa,CAAEC,KAAM,SAAUC,UAAY,+LAKG,2LAWnD,QACE,2gBAwBkBC,EAAA,EAAUC,WAAWC,qmBA6BvCN,MAGFA,KAAKO,OAASP,KAAKQ,WAAWC,cAAc,WAC5CT,KAAKU,QAAUV,KAAKQ,WAAWC,cAAc,eAC7CT,KAAKW,KAAOX,KAAKO,OAAOE,cAAc,gBACtCT,KAAKY,WAAaZ,KAAKO,OAAOE,cAAc,QAC5CT,KAAKa,cAAgBb,KAAKQ,WAAWC,cAAc,eACrD,CAEA,iBAAIK,GACF,MAA4C,SAArCd,KAAKe,aAAa,cAC3B,CAEA,iBAAAC,GACE,OAAOhB,KAAKU,QAAQO,cAAgBjB,KAAKU,QAAQQ,YACnD,CAEA,eAAIC,GACF,MAA0C,SAAnCnB,KAAKe,aAAa,YAC3B,CAEA,MAAAK,GACEpB,KAAKqB,aAAa,YAAarB,KAAKmB,YAAc,QAAU,OAC9D,CAEA,QAAAG,CAASC,GAAW,GAClB,MAAMC,EAAQ,KACZxB,KAAKU,QAAQe,MAAMC,UAAY,OAGjC,GADA1B,KAAKW,KAAKgB,UAAUC,IAAI,WACnBL,EAAU,OAAOC,IAEtBxB,KAAKU,QAAQe,MAAMC,UAAY1B,KAAKgB,oBAAsB,KAC1Da,WAAWL,EACb,CAEA,MAAAM,CAAOP,GAAW,GAChB,MAAMC,EAAQ,KACZxB,KAAKU,QAAQe,MAAMC,UAAY,IAGjC,GADA1B,KAAKW,KAAKgB,UAAUI,OAAO,WACtBR,EAAU,OAAOC,IAEtBxB,KAAKU,QAAQsB,iBAAiB,gBAAiBR,EAAO,CAAES,MAAM,IAC9DjC,KAAKU,QAAQe,MAAMC,UAAY1B,KAAKgB,oBAAsB,IAC5D,CAEA,IAAsB,EAEtB,IAAAkB,GACEnC,MAAMmC,SAGNlC,MAAK,GAAsB,EAE3BA,KAAKO,OAAOyB,iBAAiB,QAAS,KAC/BhC,KAAKc,eACVd,KAAKoB,YAEP,QAAapB,KAAMA,KAAKa,cAAe,CACrCsB,aAAc,CAAC,aAAc,eAAgB,aAC7CC,SAAU,CAAE,YAAa,OAAQ,eAAgB,YAErD,CAEA,gBAAAC,GACE,MAAMC,EAAOtC,KAAKe,aAAa,SAAW,GAC1Cf,KAAKY,WAAW2B,UAAYD,CAC9B,CAEA,wBAAAE,CAAyBC,EAAMC,EAAUC,GAC1B,SAATF,EAIczC,KAAKmB,aAAenB,KAAKc,cAEzCd,KAAKsB,SAAStB,MAAK,GAEnBA,KAAK8B,OAAO9B,MAAK,GAPjBA,KAAKqC,kBAST,EAGF,MAAMO,EAAY,CAChBC,KAAM,IAAM,QACZlC,KAAM,IAAM,eACZmC,YAAa,IAAM,QACnBvC,OAAQ,IAAM,UACd+B,KAAM,IAAM,OACZS,QAAS,IAAM,WACfrC,QAAS,IAAM,eAGJsC,GAA4B,SACvC,QAAiB,CACfC,SAAU,CACRC,UAAW,CAAEC,SAAUP,EAAUC,KAAMO,SAAU,SACjDC,cAAe,CAAEF,SAAUP,EAAUC,KAAMO,SAAU,aACrDE,gBAAiB,CACf,CAAEH,SAAUP,EAAUG,QAASK,SAAU,eACzC,CAAED,SAAUP,EAAUG,QAASK,SAAU,mBAE3CG,kBAAmB,CACjB,CAAEJ,SAAUP,EAAUG,QAASK,SAAU,gBACzC,CAAED,SAAUP,EAAUG,QAASK,SAAU,kBAG3CI,cAAe,CAAC,EAChBC,eAAgB,CAAC,EACjBC,WAAY,CAAC,EACbC,IAAK,CAAC,CAAC,EAAG,CAAEP,SAAU,eAEtBQ,gBAAiB,CAAET,SAAUP,EAAUG,SACvCc,gBAAiB,CAAEV,SAAUP,EAAUG,SACvCe,oBAAqB,CAAEX,SAAUP,EAAUG,SAC3CgB,oBAAqB,CAAEZ,SAAUP,EAAUG,SAC3CiB,eAAgB,CAAEb,SAAUP,EAAUG,SACtCkB,iBAAkB,CAAEd,SAAUP,EAAUG,SAExCmB,aAAc,CAAEf,SAAUP,EAAUG,SACpCoB,YAAa,CAAEhB,SAAUP,EAAUG,SACnCqB,YAAa,CAAEjB,SAAUP,EAAUG,SACnCsB,YAAa,CAAElB,SAAUP,EAAUG,SAEnCuB,UAAW,CAAEnB,SAAUP,EAAUG,SAEjCwB,gBAAiB,CAAEpB,SAAUP,EAAUE,YAAaM,SAAU,SAC9DoB,aAAc,CAAErB,SAAUP,EAAUrC,OAAQ6C,SAAU,UACtDqB,UAAW,CAAEtB,SAAUP,EAAUrC,OAAQ6C,SAAU,OACnDsB,SAAU,CAAEvB,SAAUP,EAAUN,KAAMc,SAAU,aAChDuB,cAAe,CAAExB,SAAUP,EAAUN,KAAMc,SAAU,aACrDwB,sBAAuB,CACrBzB,SAAUP,EAAUjC,KACpByC,SAAU,uBAEZyB,yBAA0B,CACxB1B,SAAUP,EAAUlC,QACpB0C,SAAU,0BAIhB,KACA,KAjDuC,CAkDvCzD,GC/OFmF,eAAeC,OAAOrF,EAAesD,E,oGCM9B,MAAMtD,GAAgB,QAAiB,QAEjCsF,GAAY,SACvB,QAAiB,CACf/B,SAAU,CACRgC,KAAM,CAAC,CAAC,EAAG,CAAE7B,SAAU,IAAW/C,WAAW4E,UAGjD,KACA,KAPuB,EASvB,QAAY,CACVC,MAAO,GACPC,eAAgB,gBAChB1D,MAAO,IAAM,6FAMb2D,iBAAkB,CAAC,WAAY,QAAS,SACxC1F,kB,4GC3BJoF,eAAeC,OAAO,IAAe,I,+GCQ9B,MAAMrF,GAAgB,QAAiB,SAExC2F,EAAW,CAAC,MAAO,YAEzB,MAAMC,WAAiB,QAAgB,CACrC5F,gBACAE,aAAc,UAEd,6BAAWC,GACT,OAAOwF,CACT,CAEA,WAAAvF,GACEC,QAEAC,KAAKC,aAAa,CAAEC,KAAM,SAAUC,UAAY,2BAIhD,QACE,6UAoBAH,KAEJ,CAEA,IAAAkC,GACEnC,MAAMmC,SACNlC,KAAKuF,iBAAiBvF,KAAKwF,OAC7B,CAEA,aAAAC,GACEzF,KAAK0F,aACP,CAEA,gBAAAH,CAAiBI,GACXA,EACF3F,KAAK2B,UAAUI,OAAO,UAEtB/B,KAAK2B,UAAUC,IAAI,SAEvB,CAEA,WAAIgE,GACF,OAAO5F,KAAKe,aAAa,QAAU,EACrC,CAEA,aAAI8E,GACF,OAAO7F,KAAKe,aAAa,MAC3B,CAEA,YAAI+E,GACF,OAAO9F,KAAKe,aAAa,OAAOf,KAAK+F,mBACvC,CAEA,UAAIP,GACF,OAAOxF,KAAK8F,UAAY9F,KAAK6F,SAC/B,CAKA,eAAAG,CAAgBC,GAEY,CAACA,KAASA,EAAKC,iBAAiB,YAExCC,QAASC,IACzBA,EAAI/E,aACF,OACA,OAAOgF,EAAWhG,WAAW4E,SAASmB,EAAIrF,aAAa,SAAW,UAGxE,CAEA,WAAA2E,GACE1F,KAAKuF,iBAAiBvF,KAAKwF,SAE3B,OAAYxF,KAAKwF,OAAQxF,KAAK4F,SAASU,KAAMC,IAC3CvG,KAAKG,UAAY,GACboG,IACFvG,KAAKgG,gBAAgBO,GACrBvG,KAAKwG,YAAYD,KAGvB,CAGA,YAAAE,CAAaC,GACX,MAAMC,EAAS3G,KAAKe,aAAa2F,GACjC,OAAO1G,KAAKwF,SAAWmB,CACzB,CAEA,wBAAAnE,CAAyBoE,EAAUlE,EAAUC,GAC3C5C,MAAMyC,2BAA2BoE,EAAUlE,EAAUC,GAEjDD,IAAaC,GAEb3C,KAAKyG,aAAaG,IACpB5G,KAAK0F,aAET,EAGK,MAAMW,GAAa,SACxB,QAAiB,CACfpD,SAAU,CACRgC,KAAM,CAAC,EACP4B,OAAQ,CAAE1D,SAAU,IAAM,SAC1B2D,MAAO,CAAE3D,SAAU,IAAM,YAG7B,KACA,KATwB,CAUxBmC,E,4DC7IF,MAgBMyB,EAAgBzE,IAEpB,MAAM0E,EAAQ,IAAUC,SAAS3E,EAAM,CACrC4E,aAAc,CAAEC,KAAK,EAAMC,YAAY,GAEvCC,SAAU,CAAC,SAEXC,YAAa,CAAC,UAOhB,OAJe,IAAIC,WAEhBC,gBAAgBR,EAAO,iBACvBvG,cAAc,QAINgH,EAAcC,MAAOhB,EAAKd,KACrC,IACE,IAAIQ,EACJ,GA7BgB,CAACM,GAAQA,EAAIiB,WAFZ,8BA+BbC,CAAYlB,GAAM,CAEpB,MAAMmB,EAASC,KAAKpB,EAAIqB,MAAMC,KAC9B5B,EAAMW,EAAac,EACrB,MAAO,GAA8B,QAxChB,CAACI,IACxB,MAAMC,EAAQD,EAAKC,MAAM,8BACzB,OAAOA,EAAQA,EAAM,GAAK,MAsCbC,CAAiBzB,GAAgB,CAE1C,MAAM0B,QAAmBC,MAAM3B,GACzBpE,QAAa8F,EAAW9F,OAC9B8D,EAAMW,EAAazE,EACrB,MAEE8D,EAtCe,EAACM,EAAKd,KACzB,MAAMQ,EAAMkC,SAASC,cAAc,OAGnC,OAFAnC,EAAI/E,aAAa,MAAOqF,GACxBN,EAAI/E,aAAa,MAAOuE,GACjBQ,GAkCGoC,CAAa9B,EAAKd,GAM1B,OAHAQ,EAAI3E,MAAMgH,YAAY,YAAa,QACnCrC,EAAI3E,MAAMgH,YAAY,aAAc,QAE7BrC,CACT,CAAE,MACA,OAAO,IACT,E,mGCxDFtB,eAAeC,OAAO,IAAe,I,qGCW9B,MAAMrF,GAAgB,QAAiB,QAE9C,MAAMgJ,WAAgB,QAAgB,CACpChJ,gBACAE,aAAc,kBAEd,WAAAE,GACEC,QAEAC,KAAKC,aAAa,CAAEC,KAAM,SAAUC,UAAY,iDAIhD,QAAY,iLASTH,KACL,CAEA,iBAAI2I,GACF,MAAgD,SAAzC3I,KAAKe,aAAa,kBAC3B,CAEA,IAAAmB,GACEnC,MAAMmC,QAEN,QAAgBlC,KAAM,KACpB,MAAM4I,IAAgB5I,KAAK6I,WAAWC,OACtC9I,KAAKyB,MAAMsH,SAAWH,GAAe5I,KAAK2I,cAAgB,OAAS,IAEvE,EAGF,MAAM,KAAE9F,GAAS,CACfA,KAAM,CAAEM,SAAU,IAAM,UAGb/C,GAAY,SACvB,QAAiB,CACf6C,SAAU,CACRC,UAAW,IAAKL,EAAMO,SAAU,SAChCC,cAAe,IAAKR,EAAMO,SAAU,aACpC4F,SAAU,CAAC,EACXC,UAAW,CACT,CAAE7F,SAAU,UAEd9C,eAAgB,CAAE8C,SAAU,eAC5B8F,kBAAmB,CAAE9F,SAAU,kBAC/B+F,WAAY,CAAC,EACbC,UAAW,CAAC,EACZC,cAAe,CAAC,EAChBC,WAAY,CAAC,EACbC,UAAW,CAAC,EACZC,WAAY,CAAC,EACbnF,YAAa,CAAC,EACdD,YAAa,CAAC,EACdD,YAAa,CAAC,KAGlB,KACA,KAvBuB,CAwBvBuE,E,mGC9EF5D,eAAeC,OAAO,IAAe,I","sources":["webpack://@descope/web-components-ui/../components/descope-collapsible-container/src/component/chevron.svg","webpack://@descope/web-components-ui/../components/descope-collapsible-container/src/component/CollapsibleContainerClass.js","webpack://@descope/web-components-ui/../components/descope-collapsible-container/src/component/index.js","webpack://@descope/web-components-ui/../components/descope-icon/src/component/IconClass.js","webpack://@descope/web-components-ui/../components/descope-icon/src/component/index.js","webpack://@descope/web-components-ui/../components/descope-image/src/component/ImageClass.js","webpack://@descope/web-components-ui/../components/descope-image/src/component/helpers.js","webpack://@descope/web-components-ui/../components/descope-image/src/component/index.js","webpack://@descope/web-components-ui/../components/descope-text/src/component/TextClass.js","webpack://@descope/web-components-ui/../components/descope-text/src/component/index.js"],"sourcesContent":["module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0iYmxhY2siIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+IDxwYXRoIGQ9Ik0xNy4yMTkzIDkuMjcyODNDMTcuNjU4NCA4Ljg3OTEyIDE4LjMzMzQgOC45MTU4NyAxOC43MjcyIDkuMzU0OTJDMTkuMTIwOSA5Ljc5Mzk3IDE5LjA4NDEgMTAuNDY5MSAxOC42NDUxIDEwLjg2MjhDMTguNjQ1MSAxMC44NjI4IDEzLjA0NTcgMTYuMDAyMiAxMi42NCAxNi4zNjZDMTIuMjM0MyAxNi43Mjk4IDExLjc2MDggMTYuNzI5OCAxMS4zNTUyIDE2LjM2Nkw1LjM1NDkyIDEwLjg2MjhDNC45MTU4NyAxMC40NjkxIDQuODc5MTIgOS43OTM5NyA1LjI3MjgzIDkuMzU0OTJDNS42NjY1NSA4LjkxNTg3IDYuMzQxNjQgOC44NzkxMiA2Ljc4MDY5IDkuMjcyODNMMTIgMTQuMTM2OEwxNy4yMTkzIDkuMjcyODNaIi8+IDwvc3ZnPiA=\"","import {\n createStyleMixin,\n draggableMixin,\n componentNameValidationMixin,\n} from '@descope-ui/common/components-mixins';\nimport { createBaseClass } from '@descope-ui/common/base-classes';\nimport { compose } from '@descope-ui/common/utils';\nimport {\n forwardAttrs,\n getComponentName,\n injectStyle,\n} from '@descope-ui/common/components-helpers';\nimport chevronIcon from './chevron.svg';\nimport { TextClass } from '@descope-ui/descope-text/class';\n\nexport const componentName = getComponentName('collapsible-container');\n\nclass RawCollapsibleContainer extends createBaseClass({\n componentName,\n baseSelector: 'slot',\n}) {\n static get observedAttributes() {\n return ['collapsed', 'collapsible', 'text'];\n }\n\n constructor() {\n super();\n\n this.attachShadow({ mode: 'open' }).innerHTML = `\n <div class=\"wrapper\">\n <descope-text st-host-direction=\"ltr\">\n <div class=\"header\">\n <div class=\"icon\">\n <descope-icon st-fill=\"currentcolor\" src=${chevronIcon}></descope-icon>\n </div>\n <span></span>\n </div>\n </descope-text>\n <div class=\"content\">\n <slot></slot>\n </div>\n </div>\n\t`;\n\n injectStyle(\n `\n div.content {\n transition-property: max-height;\n overflow: auto;\n height: auto;\n\t\t\t}\n\t\t\tslot {\n\t\t\t\tbox-sizing: border-box;\n\t\t\t\twidth: 100%;\n\t\t\t\tdisplay: flex;\n\t\t\t}\n slot:focus-visible {\n outline: none;\n }\n\t\t\t:host {\n\t\t\t\tdisplay: inline-flex;\n\t\t\t}\n .header {\n user-select: none;\n display: flex;\n align-items: baseline;\n }\n .icon {\n flex-shrink: 0;\n height: var(${TextClass.cssVarList.textLineHeight});\n min-height: 24px;\n display: flex;\n align-items: center;\n }\n descope-icon {\n transition-property: transform;\n }\n .rotate {\n transform: rotate(-180deg);\n }\n descope-text {\n width: 100%;\n display: flex;\n }\n span {\n align-self: center;\n word-break: break-word;\n }\n span:empty {\n display: none;\n }\n .wrapper {\n overflow: hidden;\n display: inline-flex;\n width: 100%;\n flex-direction: column;\n }\n `,\n this,\n );\n\n this.header = this.shadowRoot.querySelector('.header');\n this.content = this.shadowRoot.querySelector('div.content');\n this.icon = this.header.querySelector('descope-icon');\n this.headerText = this.header.querySelector('span');\n this.textComponent = this.shadowRoot.querySelector('descope-text');\n }\n\n get isCollapsible() {\n return this.getAttribute('collapsible') === 'true';\n }\n\n calcContentHeight() {\n return this.content.offsetHeight || this.content.scrollHeight;\n }\n\n get isCollapsed() {\n return this.getAttribute('collapsed') === 'true';\n }\n\n toggle() {\n this.setAttribute('collapsed', this.isCollapsed ? 'false' : 'true');\n }\n\n collapse(animated = false) {\n const final = () => {\n this.content.style.maxHeight = '0px';\n };\n this.icon.classList.add('rotate');\n if (!animated) return final();\n\n this.content.style.maxHeight = this.calcContentHeight() + 'px';\n setTimeout(final);\n }\n\n expand(animated = false) {\n const final = () => {\n this.content.style.maxHeight = '';\n };\n this.icon.classList.remove('rotate');\n if (!animated) return final();\n\n this.content.addEventListener('transitionend', final, { once: true });\n this.content.style.maxHeight = this.calcContentHeight() + 'px';\n }\n\n #isComponentMounted = false;\n\n init() {\n super.init?.();\n // we want to animate the collapse/expand only after the first time the component is connected\n // so when setting a default value for the collapsed attribute, it will not animate\n this.#isComponentMounted = true;\n\n this.header.addEventListener('click', () => {\n if (!this.isCollapsible) return;\n this.toggle();\n });\n forwardAttrs(this, this.textComponent, {\n includeAttrs: ['text-align', 'text-variant', 'text-mode'],\n mapAttrs: { 'text-mode': 'mode', 'text-variant': 'variant' },\n });\n }\n\n updateHeaderText() {\n const text = this.getAttribute('text') || '';\n this.headerText.innerText = text;\n }\n\n attributeChangedCallback(name, oldValue, newValue) {\n if (name === 'text') {\n this.updateHeaderText();\n return;\n }\n const collapsed = this.isCollapsed && this.isCollapsible;\n if (collapsed) {\n this.collapse(this.#isComponentMounted);\n } else {\n this.expand(this.#isComponentMounted);\n }\n }\n}\n\nconst selectors = {\n host: () => ':host',\n icon: () => 'descope-icon',\n iconWrapper: () => '.icon',\n header: () => '.header',\n text: () => 'span',\n wrapper: () => '.wrapper',\n content: () => 'div.content',\n};\n\nexport const CollapsibleContainerClass = compose(\n createStyleMixin({\n mappings: {\n hostWidth: { selector: selectors.host, property: 'width' },\n hostDirection: { selector: selectors.host, property: 'direction' },\n verticalPadding: [\n { selector: selectors.wrapper, property: 'padding-top' },\n { selector: selectors.wrapper, property: 'padding-bottom' },\n ],\n horizontalPadding: [\n { selector: selectors.wrapper, property: 'padding-left' },\n { selector: selectors.wrapper, property: 'padding-right' },\n ],\n\n flexDirection: {},\n justifyContent: {},\n alignItems: {},\n gap: [{}, { property: 'margin-top' }],\n\n backgroundColor: { selector: selectors.wrapper },\n backgroundImage: { selector: selectors.wrapper },\n backgroundPositionX: { selector: selectors.wrapper },\n backgroundPositionY: { selector: selectors.wrapper },\n backgroundSize: { selector: selectors.wrapper },\n backgroundRepeat: { selector: selectors.wrapper },\n\n borderRadius: { selector: selectors.wrapper },\n borderColor: { selector: selectors.wrapper },\n borderStyle: { selector: selectors.wrapper },\n borderWidth: { selector: selectors.wrapper },\n\n boxShadow: { selector: selectors.wrapper },\n\n headerIconOrder: { selector: selectors.iconWrapper, property: 'order' },\n headerCursor: { selector: selectors.header, property: 'cursor' },\n headerGap: { selector: selectors.header, property: 'gap' },\n textGrow: { selector: selectors.text, property: 'flex-grow' },\n textDirection: { selector: selectors.text, property: 'direction' },\n iconAnimationDuration: {\n selector: selectors.icon,\n property: 'transition-duration',\n },\n contentAnimationDuration: {\n selector: selectors.content,\n property: 'transition-duration',\n },\n },\n }),\n draggableMixin,\n componentNameValidationMixin,\n)(RawCollapsibleContainer);\n","import '@descope-ui/descope-text'\nimport '@descope-ui/descope-icon'\nimport { componentName, CollapsibleContainerClass } from './CollapsibleContainerClass';\n\ncustomElements.define(componentName, CollapsibleContainerClass);\n\nexport { CollapsibleContainerClass, componentName };\n","import {\n componentNameValidationMixin,\n createProxy,\n createStyleMixin,\n draggableMixin,\n} from '@descope-ui/common/components-mixins';\nimport { getComponentName } from '@descope-ui/common/components-helpers';\nimport { ImageClass } from '@descope-ui/descope-image/class';\nimport { compose } from '@descope-ui/common/utils';\n\nexport const componentName = getComponentName('icon');\n\nexport const IconClass = compose(\n createStyleMixin({\n mappings: {\n fill: [{}, { property: ImageClass.cssVarList.fill }],\n },\n }),\n draggableMixin,\n componentNameValidationMixin,\n)(\n createProxy({\n slots: [],\n wrappedEleName: 'descope-image',\n style: () => `\n :host {\n display: inline-flex;\n max-height: 100%;\n }\n `,\n excludeAttrsSync: ['tabindex', 'class', 'style'],\n componentName,\n }),\n);\n","import '@descope-ui/descope-image';\n\nimport { componentName, IconClass } from './IconClass';\n\ncustomElements.define(componentName, IconClass);\n\nexport { IconClass, componentName };\n","/* eslint-disable no-use-before-define */\nimport {\n createStyleMixin,\n draggableMixin,\n componentNameValidationMixin,\n} from '@descope-ui/common/components-mixins';\nimport { createBaseClass } from '@descope-ui/common/base-classes';\nimport { compose } from '@descope-ui/common/utils';\nimport { getComponentName } from '@descope-ui/common/components-helpers';\nimport { createImage } from './helpers';\nimport { injectStyle } from '@descope-ui/common/components-helpers';\n\nexport const componentName = getComponentName('image');\n\nconst srcAttrs = ['src', 'src-dark'];\n\nclass RawImage extends createBaseClass({\n componentName,\n baseSelector: 'slot',\n}) {\n static get observedAttributes() {\n return srcAttrs;\n }\n\n constructor() {\n super();\n\n this.attachShadow({ mode: 'open' }).innerHTML = `\n\t\t<slot></slot>\n\t`;\n\n injectStyle(\n `\n\t\t\t:host {\n\t\t\t\tdisplay: inline-flex;\n\t\t\t}\n :host > slot {\n width: 100%;\n height: 100%;\n\t\t\t\tbox-sizing: border-box;\n\t\t\t\tdisplay: flex;\n\t\t\t\toverflow: hidden;\n\t\t\t}\n\n ::slotted(*) {\n width: 100%;\n\t\t\t}\n\n .hidden {\n display: none;\n }\n `,\n this,\n );\n }\n\n init() {\n super.init?.();\n this.toggleVisibility(this.getSrc);\n }\n\n onThemeChange() {\n this.renderImage();\n }\n\n toggleVisibility(isVisible) {\n if (isVisible) {\n this.classList.remove('hidden');\n } else {\n this.classList.add('hidden');\n }\n }\n\n get altText() {\n return this.getAttribute('alt') || '';\n }\n\n get legacySrc() {\n return this.getAttribute('src');\n }\n\n get themeSrc() {\n return this.getAttribute(`src-${this.currentThemeName}`);\n }\n\n get getSrc() {\n return this.themeSrc || this.legacySrc;\n }\n\n // in order to fill an SVG with `currentColor` override all of its `fill` and `path` nodes\n // with the value from the `st-fill` attribute\n // eslint-disable-next-line class-methods-use-this\n updateFillColor(node) {\n // set fill to root node and all its relevant selectors\n const elementsToReplace = [node, ...node.querySelectorAll('*[fill]')];\n\n elementsToReplace.forEach((ele) => {\n ele.setAttribute(\n 'fill',\n `var(${ImageClass.cssVarList.fill}, ${ele.getAttribute('fill') || \"''\"})`,\n );\n });\n }\n\n renderImage() {\n this.toggleVisibility(this.getSrc);\n\n createImage(this.getSrc, this.altText).then((res) => {\n this.innerHTML = '';\n if (res) {\n this.updateFillColor(res);\n this.appendChild(res);\n }\n });\n }\n\n // render only when src attribute matches current theme\n shouldRender(src) {\n const srcVal = this.getAttribute(src);\n return this.getSrc === srcVal;\n }\n\n attributeChangedCallback(attrName, oldValue, newValue) {\n super.attributeChangedCallback?.(attrName, oldValue, newValue);\n\n if (oldValue === newValue) return;\n\n if (this.shouldRender(attrName)) {\n this.renderImage();\n }\n }\n}\n\nexport const ImageClass = compose(\n createStyleMixin({\n mappings: {\n fill: {},\n height: { selector: () => ':host' },\n width: { selector: () => ':host' },\n },\n }),\n draggableMixin,\n componentNameValidationMixin,\n)(RawImage);\n","import DOMPurify from 'dompurify';\n\nconst getFileExtension = (path) => {\n const match = path.match(/\\.([0-9a-z]+)(?:[\\\\?#]|$)/i);\n return match ? match[1] : null;\n};\n\nconst base64Prefix = 'data:image/svg+xml;base64,';\n\nconst isBase64Svg = (src) => src.startsWith(base64Prefix);\n\nconst createImgEle = (src, altText) => {\n const ele = document.createElement('img');\n ele.setAttribute('src', src);\n ele.setAttribute('alt', altText);\n return ele;\n};\n\nconst createSvgEle = (text) => {\n // we want to purify the SVG to avoid XSS attacks\n const clean = DOMPurify.sanitize(text, {\n USE_PROFILES: { svg: true, svgFilters: true },\n // allow image to render\n ADD_TAGS: ['image'],\n // forbid interactiviy via `use` tags (which are sanitized by default)\n FORBID_TAGS: ['defs']\n });\n\n const parser = new DOMParser();\n const ele = parser\n .parseFromString(clean, 'image/svg+xml')\n .querySelector('svg');\n return ele;\n};\n\nexport const createImage = async (src, altText) => {\n try {\n let ele;\n if (isBase64Svg(src)) {\n // handle base64 source\n const svgXml = atob(src.slice(base64Prefix.length));\n ele = createSvgEle(svgXml);\n } else if (getFileExtension(src) === 'svg') {\n // handle urls\n const fetchedSrc = await fetch(src);\n const text = await fetchedSrc.text();\n ele = createSvgEle(text);\n } else {\n // handle binary\n ele = createImgEle(src, altText);\n }\n\n ele.style.setProperty('max-width', '100%');\n ele.style.setProperty('max-height', '100%');\n\n return ele;\n } catch {\n return null;\n }\n};\n","import { componentName, ImageClass } from './ImageClass';\n\ncustomElements.define(componentName, ImageClass);\n\nexport { ImageClass, componentName };\n","import {\n createStyleMixin,\n draggableMixin,\n componentNameValidationMixin,\n} from '@descope-ui/common/components-mixins';\nimport { compose } from '@descope-ui/common/utils';\nimport {\n getComponentName,\n injectStyle,\n observeChildren,\n} from '@descope-ui/common/components-helpers';\nimport { createBaseClass } from '@descope-ui/common/base-classes';\n\nexport const componentName = getComponentName('text');\n\nclass RawText extends createBaseClass({\n componentName,\n baseSelector: ':host > slot',\n}) {\n constructor() {\n super();\n\n this.attachShadow({ mode: 'open' }).innerHTML = `\n <slot part=\"text-wrapper\"></slot>\n `;\n\n injectStyle(`\n :host {\n display: inline-block;\n line-height: 1em;\n }\n :host > slot {\n width: 100%;\n display: inline-block;\n }\n `, this);\n }\n\n get hideWhenEmpty() {\n return this.getAttribute('hide-when-empty') === 'true';\n }\n\n init() {\n super.init();\n\n observeChildren(this, () => {\n const hasChildren = !!this.childNodes.length;\n this.style.display = !hasChildren && this.hideWhenEmpty ? 'none' : '';\n });\n }\n}\n\nconst { host } = {\n host: { selector: () => ':host' }\n}\n\nexport const TextClass = compose(\n createStyleMixin({\n mappings: {\n hostWidth: { ...host, property: 'width' },\n hostDirection: { ...host, property: 'direction' },\n fontSize: {},\n textColor: [\n { property: 'color' }\n ],\n textLineHeight: { property: 'line-height' },\n textLetterSpacing: { property: 'letter-spacing' },\n textShadow: {},\n textAlign: {},\n textTransform: {},\n fontFamily: {},\n fontStyle: {},\n fontWeight: {},\n borderWidth: {},\n borderStyle: {},\n borderColor: {},\n },\n }),\n draggableMixin,\n componentNameValidationMixin,\n)(RawText);\n","import { componentName, TextClass } from './TextClass';\n\ncustomElements.define(componentName, TextClass);\n\nexport { TextClass, componentName };\n"],"names":["module","exports","componentName","RawCollapsibleContainer","baseSelector","observedAttributes","constructor","super","this","attachShadow","mode","innerHTML","TextClass","cssVarList","textLineHeight","header","shadowRoot","querySelector","content","icon","headerText","textComponent","isCollapsible","getAttribute","calcContentHeight","offsetHeight","scrollHeight","isCollapsed","toggle","setAttribute","collapse","animated","final","style","maxHeight","classList","add","setTimeout","expand","remove","addEventListener","once","init","includeAttrs","mapAttrs","updateHeaderText","text","innerText","attributeChangedCallback","name","oldValue","newValue","selectors","host","iconWrapper","wrapper","CollapsibleContainerClass","mappings","hostWidth","selector","property","hostDirection","verticalPadding","horizontalPadding","flexDirection","justifyContent","alignItems","gap","backgroundColor","backgroundImage","backgroundPositionX","backgroundPositionY","backgroundSize","backgroundRepeat","borderRadius","borderColor","borderStyle","borderWidth","boxShadow","headerIconOrder","headerCursor","headerGap","textGrow","textDirection","iconAnimationDuration","contentAnimationDuration","customElements","define","IconClass","fill","slots","wrappedEleName","excludeAttrsSync","srcAttrs","RawImage","toggleVisibility","getSrc","onThemeChange","renderImage","isVisible","altText","legacySrc","themeSrc","currentThemeName","updateFillColor","node","querySelectorAll","forEach","ele","ImageClass","then","res","appendChild","shouldRender","src","srcVal","attrName","height","width","createSvgEle","clean","sanitize","USE_PROFILES","svg","svgFilters","ADD_TAGS","FORBID_TAGS","DOMParser","parseFromString","createImage","async","startsWith","isBase64Svg","svgXml","atob","slice","base64Prefix","path","match","getFileExtension","fetchedSrc","fetch","document","createElement","createImgEle","setProperty","RawText","hideWhenEmpty","hasChildren","childNodes","length","display","fontSize","textColor","textLetterSpacing","textShadow","textAlign","textTransform","fontFamily","fontStyle","fontWeight"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"descope-collapsible-container.js","mappings":"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","sources":["webpack://@descope/web-components-ui/../components/descope-collapsible-container/src/component/chevron.svg","webpack://@descope/web-components-ui/../components/descope-collapsible-container/src/component/CollapsibleContainerClass.js","webpack://@descope/web-components-ui/../components/descope-collapsible-container/src/component/index.js","webpack://@descope/web-components-ui/../components/descope-icon/src/component/IconClass.js","webpack://@descope/web-components-ui/../components/descope-icon/src/component/index.js","webpack://@descope/web-components-ui/../components/descope-image/src/component/ImageClass.js","webpack://@descope/web-components-ui/../components/descope-image/src/component/helpers.js","webpack://@descope/web-components-ui/../components/descope-image/src/component/index.js","webpack://@descope/web-components-ui/../components/descope-text/src/component/TextClass.js","webpack://@descope/web-components-ui/../components/descope-text/src/component/index.js"],"sourcesContent":["module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0iYmxhY2siIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+IDxwYXRoIGQ9Ik0xNy4yMTkzIDkuMjcyODNDMTcuNjU4NCA4Ljg3OTEyIDE4LjMzMzQgOC45MTU4NyAxOC43MjcyIDkuMzU0OTJDMTkuMTIwOSA5Ljc5Mzk3IDE5LjA4NDEgMTAuNDY5MSAxOC42NDUxIDEwLjg2MjhDMTguNjQ1MSAxMC44NjI4IDEzLjA0NTcgMTYuMDAyMiAxMi42NCAxNi4zNjZDMTIuMjM0MyAxNi43Mjk4IDExLjc2MDggMTYuNzI5OCAxMS4zNTUyIDE2LjM2Nkw1LjM1NDkyIDEwLjg2MjhDNC45MTU4NyAxMC40NjkxIDQuODc5MTIgOS43OTM5NyA1LjI3MjgzIDkuMzU0OTJDNS42NjY1NSA4LjkxNTg3IDYuMzQxNjQgOC44NzkxMiA2Ljc4MDY5IDkuMjcyODNMMTIgMTQuMTM2OEwxNy4yMTkzIDkuMjcyODNaIi8+IDwvc3ZnPiA=\"","import {\n createStyleMixin,\n draggableMixin,\n componentNameValidationMixin,\n} from '@descope-ui/common/components-mixins';\nimport { createBaseClass } from '@descope-ui/common/base-classes';\nimport { compose } from '@descope-ui/common/utils';\nimport {\n forwardAttrs,\n getComponentName,\n injectStyle,\n} from '@descope-ui/common/components-helpers';\nimport chevronIcon from './chevron.svg';\nimport { TextClass } from '@descope-ui/descope-text/class';\n\nexport const componentName = getComponentName('collapsible-container');\n\nclass RawCollapsibleContainer extends createBaseClass({\n componentName,\n baseSelector: 'slot',\n}) {\n static get observedAttributes() {\n return ['collapsed', 'collapsible', 'text'];\n }\n\n constructor() {\n super();\n\n this.attachShadow({ mode: 'open' }).innerHTML = `\n <div class=\"wrapper\">\n <descope-text st-host-direction=\"ltr\">\n <div class=\"header\">\n <div class=\"icon\">\n <descope-icon st-fill=\"currentcolor\" src=${chevronIcon}></descope-icon>\n </div>\n <span></span>\n </div>\n </descope-text>\n <div class=\"content\">\n <slot></slot>\n </div>\n </div>\n\t`;\n\n injectStyle(\n `\n div.content {\n transition-property: max-height;\n overflow: auto;\n height: auto;\n\t\t\t}\n\t\t\tslot {\n\t\t\t\tbox-sizing: border-box;\n\t\t\t\twidth: 100%;\n\t\t\t\tdisplay: flex;\n\t\t\t}\n slot:focus-visible {\n outline: none;\n }\n\t\t\t:host {\n\t\t\t\tdisplay: inline-flex;\n\t\t\t}\n .header {\n user-select: none;\n display: flex;\n align-items: baseline;\n }\n .icon {\n flex-shrink: 0;\n height: var(${TextClass.cssVarList.textLineHeight});\n min-height: 24px;\n display: flex;\n align-items: center;\n }\n descope-icon {\n transition-property: transform;\n }\n .rotate {\n transform: rotate(-180deg);\n }\n descope-text {\n width: 100%;\n display: flex;\n }\n span {\n align-self: center;\n word-break: break-word;\n }\n span:empty {\n display: none;\n }\n .wrapper {\n overflow: hidden;\n display: inline-flex;\n width: 100%;\n flex-direction: column;\n }\n `,\n this,\n );\n\n this.header = this.shadowRoot.querySelector('.header');\n this.content = this.shadowRoot.querySelector('div.content');\n this.icon = this.header.querySelector('descope-icon');\n this.headerText = this.header.querySelector('span');\n this.textComponent = this.shadowRoot.querySelector('descope-text');\n }\n\n get isCollapsible() {\n return this.getAttribute('collapsible') === 'true';\n }\n\n calcContentHeight() {\n return this.content.offsetHeight || this.content.scrollHeight;\n }\n\n get isCollapsed() {\n return this.getAttribute('collapsed') === 'true';\n }\n\n toggle() {\n this.setAttribute('collapsed', this.isCollapsed ? 'false' : 'true');\n }\n\n collapse(animated = false) {\n const final = () => {\n this.content.style.maxHeight = '0px';\n };\n this.icon.classList.add('rotate');\n if (!animated) return final();\n\n this.content.style.maxHeight = this.calcContentHeight() + 'px';\n setTimeout(final);\n }\n\n expand(animated = false) {\n const final = () => {\n this.content.style.maxHeight = '';\n };\n this.icon.classList.remove('rotate');\n if (!animated) return final();\n\n this.content.addEventListener('transitionend', final, { once: true });\n this.content.style.maxHeight = this.calcContentHeight() + 'px';\n }\n\n #isComponentMounted = false;\n\n init() {\n super.init?.();\n // we want to animate the collapse/expand only after the first time the component is connected\n // so when setting a default value for the collapsed attribute, it will not animate\n this.#isComponentMounted = true;\n\n this.header.addEventListener('click', () => {\n if (!this.isCollapsible) return;\n this.toggle();\n });\n forwardAttrs(this, this.textComponent, {\n includeAttrs: ['text-align', 'text-variant', 'text-mode'],\n mapAttrs: { 'text-mode': 'mode', 'text-variant': 'variant' },\n });\n }\n\n updateHeaderText() {\n const text = this.getAttribute('text') || '';\n this.headerText.innerText = text;\n }\n\n attributeChangedCallback(name, oldValue, newValue) {\n if (name === 'text') {\n this.updateHeaderText();\n return;\n }\n const collapsed = this.isCollapsed && this.isCollapsible;\n if (collapsed) {\n this.collapse(this.#isComponentMounted);\n } else {\n this.expand(this.#isComponentMounted);\n }\n }\n}\n\nconst selectors = {\n host: () => ':host',\n icon: () => 'descope-icon',\n iconWrapper: () => '.icon',\n header: () => '.header',\n text: () => 'span',\n wrapper: () => '.wrapper',\n content: () => 'div.content',\n};\n\nexport const CollapsibleContainerClass = compose(\n createStyleMixin({\n mappings: {\n hostWidth: { selector: selectors.host, property: 'width' },\n hostDirection: { selector: selectors.host, property: 'direction' },\n verticalPadding: [\n { selector: selectors.wrapper, property: 'padding-top' },\n { selector: selectors.wrapper, property: 'padding-bottom' },\n ],\n horizontalPadding: [\n { selector: selectors.wrapper, property: 'padding-left' },\n { selector: selectors.wrapper, property: 'padding-right' },\n ],\n\n flexDirection: {},\n justifyContent: {},\n alignItems: {},\n gap: [{}, { property: 'margin-top' }],\n\n backgroundColor: { selector: selectors.wrapper },\n backgroundImage: { selector: selectors.wrapper },\n backgroundPositionX: { selector: selectors.wrapper },\n backgroundPositionY: { selector: selectors.wrapper },\n backgroundSize: { selector: selectors.wrapper },\n backgroundRepeat: { selector: selectors.wrapper },\n\n borderRadius: { selector: selectors.wrapper },\n borderColor: { selector: selectors.wrapper },\n borderStyle: { selector: selectors.wrapper },\n borderWidth: { selector: selectors.wrapper },\n\n boxShadow: { selector: selectors.wrapper },\n\n headerIconOrder: { selector: selectors.iconWrapper, property: 'order' },\n headerCursor: { selector: selectors.header, property: 'cursor' },\n headerGap: { selector: selectors.header, property: 'gap' },\n textGrow: { selector: selectors.text, property: 'flex-grow' },\n textDirection: { selector: selectors.text, property: 'direction' },\n iconAnimationDuration: {\n selector: selectors.icon,\n property: 'transition-duration',\n },\n contentAnimationDuration: {\n selector: selectors.content,\n property: 'transition-duration',\n },\n },\n }),\n draggableMixin,\n componentNameValidationMixin,\n)(RawCollapsibleContainer);\n","import '@descope-ui/descope-text'\nimport '@descope-ui/descope-icon'\nimport { componentName, CollapsibleContainerClass } from './CollapsibleContainerClass';\n\ncustomElements.define(componentName, CollapsibleContainerClass);\n\nexport { CollapsibleContainerClass, componentName };\n","import {\n componentNameValidationMixin,\n createProxy,\n createStyleMixin,\n draggableMixin,\n} from '@descope-ui/common/components-mixins';\nimport { getComponentName } from '@descope-ui/common/components-helpers';\nimport { ImageClass } from '@descope-ui/descope-image/class';\nimport { compose } from '@descope-ui/common/utils';\n\nexport const componentName = getComponentName('icon');\n\nexport const IconClass = compose(\n createStyleMixin({\n mappings: {\n fill: [{}, { property: ImageClass.cssVarList.fill }],\n },\n }),\n draggableMixin,\n componentNameValidationMixin,\n)(\n createProxy({\n slots: [],\n wrappedEleName: 'descope-image',\n style: () => `\n :host {\n display: inline-flex;\n max-height: 100%;\n }\n `,\n excludeAttrsSync: ['tabindex', 'class', 'style'],\n componentName,\n }),\n);\n","import '@descope-ui/descope-image';\n\nimport { componentName, IconClass } from './IconClass';\n\ncustomElements.define(componentName, IconClass);\n\nexport { IconClass, componentName };\n","/* eslint-disable no-use-before-define */\nimport {\n createStyleMixin,\n draggableMixin,\n componentNameValidationMixin,\n} from '@descope-ui/common/components-mixins';\nimport { createBaseClass } from '@descope-ui/common/base-classes';\nimport { compose } from '@descope-ui/common/utils';\nimport { getComponentName } from '@descope-ui/common/components-helpers';\nimport { createImage } from './helpers';\nimport { injectStyle } from '@descope-ui/common/components-helpers';\n\nexport const componentName = getComponentName('image');\n\nconst srcAttrs = ['src', 'src-dark'];\n\nclass RawImage extends createBaseClass({\n componentName,\n baseSelector: 'slot',\n}) {\n static get observedAttributes() {\n return srcAttrs;\n }\n\n constructor() {\n super();\n\n this.attachShadow({ mode: 'open' }).innerHTML = `\n\t\t<slot></slot>\n\t`;\n\n injectStyle(\n `\n\t\t\t:host {\n\t\t\t\tdisplay: inline-flex;\n\t\t\t}\n :host > slot {\n width: 100%;\n height: 100%;\n\t\t\t\tbox-sizing: border-box;\n\t\t\t\tdisplay: flex;\n\t\t\t\toverflow: hidden;\n\t\t\t}\n\n ::slotted(*) {\n width: 100%;\n\t\t\t}\n\n .hidden {\n display: none;\n }\n `,\n this,\n );\n }\n\n init() {\n super.init?.();\n this.toggleVisibility(this.getSrc);\n }\n\n onThemeChange() {\n this.renderImage();\n }\n\n toggleVisibility(isVisible) {\n if (isVisible) {\n this.classList.remove('hidden');\n } else {\n this.classList.add('hidden');\n }\n }\n\n get altText() {\n return this.getAttribute('alt') || '';\n }\n\n get legacySrc() {\n return this.getAttribute('src');\n }\n\n get themeSrc() {\n return this.getAttribute(`src-${this.currentThemeName}`);\n }\n\n get getSrc() {\n return this.themeSrc || this.legacySrc;\n }\n\n // in order to fill an SVG with `currentColor` override all of its `fill` and `path` nodes\n // with the value from the `st-fill` attribute\n // eslint-disable-next-line class-methods-use-this\n updateFillColor(node) {\n // set fill to root node and all its relevant selectors\n const elementsToReplace = [node, ...node.querySelectorAll('*[fill]')];\n\n elementsToReplace.forEach((ele) => {\n ele.setAttribute(\n 'fill',\n `var(${ImageClass.cssVarList.fill}, ${ele.getAttribute('fill') || \"''\"})`,\n );\n });\n }\n\n renderImage() {\n this.toggleVisibility(this.getSrc);\n\n createImage(this.getSrc, this.altText).then((res) => {\n this.innerHTML = '';\n if (res) {\n this.updateFillColor(res);\n this.appendChild(res);\n }\n });\n }\n\n // render only when src attribute matches current theme\n shouldRender(src) {\n const srcVal = this.getAttribute(src);\n return this.getSrc === srcVal;\n }\n\n attributeChangedCallback(attrName, oldValue, newValue) {\n super.attributeChangedCallback?.(attrName, oldValue, newValue);\n\n if (oldValue === newValue) return;\n\n if (this.shouldRender(attrName)) {\n this.renderImage();\n }\n }\n}\n\nexport const ImageClass = compose(\n createStyleMixin({\n mappings: {\n fill: {},\n height: { selector: () => ':host' },\n width: { selector: () => ':host' },\n },\n }),\n draggableMixin,\n componentNameValidationMixin,\n)(RawImage);\n","import DOMPurify from 'dompurify';\n\nconst getFileExtension = (path) => {\n const match = path.match(/\\.([0-9a-z]+)(?:[\\\\?#]|$)/i);\n return match ? match[1] : null;\n};\n\nconst base64Prefix = 'data:image/svg+xml;base64,';\n\nconst isBase64Svg = (src) => src.startsWith(base64Prefix);\n\nconst createImgEle = (src, altText) => {\n const ele = document.createElement('img');\n ele.setAttribute('src', src);\n ele.setAttribute('alt', altText);\n return ele;\n};\n\nconst createSvgEle = (text) => {\n // we want to purify the SVG to avoid XSS attacks\n const clean = DOMPurify.sanitize(text, {\n USE_PROFILES: { svg: true, svgFilters: true },\n // allow image to render\n ADD_TAGS: ['image'],\n // forbid interactiviy via `use` tags (which are sanitized by default)\n FORBID_TAGS: ['defs']\n });\n\n const parser = new DOMParser();\n const ele = parser\n .parseFromString(clean, 'image/svg+xml')\n .querySelector('svg');\n return ele;\n};\n\nexport const createImage = async (src, altText) => {\n try {\n let ele;\n if (isBase64Svg(src)) {\n // handle base64 source\n const svgXml = atob(src.slice(base64Prefix.length));\n ele = createSvgEle(svgXml);\n } else if (getFileExtension(src) === 'svg') {\n // handle urls\n const fetchedSrc = await fetch(src);\n const text = await fetchedSrc.text();\n ele = createSvgEle(text);\n } else {\n // handle binary\n ele = createImgEle(src, altText);\n }\n\n ele.style.setProperty('max-width', '100%');\n ele.style.setProperty('max-height', '100%');\n\n return ele;\n } catch {\n return null;\n }\n};\n","import { componentName, ImageClass } from './ImageClass';\n\ncustomElements.define(componentName, ImageClass);\n\nexport { ImageClass, componentName };\n","import {\n createStyleMixin,\n draggableMixin,\n componentNameValidationMixin,\n stretchMixin,\n} from '@descope-ui/common/components-mixins';\nimport { compose } from '@descope-ui/common/utils';\nimport {\n getComponentName,\n injectStyle,\n observeChildren,\n} from '@descope-ui/common/components-helpers';\nimport { createBaseClass } from '@descope-ui/common/base-classes';\n\nexport const componentName = getComponentName('text');\n\nclass RawText extends createBaseClass({\n componentName,\n baseSelector: ':host > slot',\n}) {\n constructor() {\n super();\n\n this.attachShadow({ mode: 'open' }).innerHTML = `\n <slot part=\"text-wrapper\"></slot>\n `;\n\n injectStyle(\n `\n :host {\n display: inline-block;\n line-height: 1em;\n }\n :host > slot {\n width: 100%;\n display: inline-block;\n }\n `,\n this,\n );\n }\n\n get hideWhenEmpty() {\n return this.getAttribute('hide-when-empty') === 'true';\n }\n\n init() {\n super.init();\n\n observeChildren(this, () => {\n const hasChildren = !!this.childNodes.length;\n this.style.display = !hasChildren && this.hideWhenEmpty ? 'none' : '';\n });\n }\n}\n\nconst { host } = {\n host: { selector: () => ':host' },\n};\n\nexport const TextClass = compose(\n createStyleMixin({\n mappings: {\n hostWidth: { ...host, property: 'width' },\n hostDirection: { ...host, property: 'direction' },\n fontSize: {},\n textColor: [{ property: 'color' }],\n textLineHeight: { property: 'line-height' },\n textLetterSpacing: { property: 'letter-spacing' },\n textShadow: {},\n textAlign: {},\n textTransform: {},\n fontFamily: {},\n fontStyle: {},\n fontWeight: {},\n borderWidth: {},\n borderStyle: {},\n borderColor: {},\n },\n }),\n stretchMixin({ triggers: [{ attr: 'full-width', value: 'true' }] }),\n draggableMixin,\n componentNameValidationMixin,\n)(RawText);\n","import { componentName, TextClass } from './TextClass';\n\ncustomElements.define(componentName, TextClass);\n\nexport { TextClass, componentName };\n"],"names":["module","exports","componentName","RawCollapsibleContainer","baseSelector","observedAttributes","constructor","super","this","attachShadow","mode","innerHTML","TextClass","cssVarList","textLineHeight","header","shadowRoot","querySelector","content","icon","headerText","textComponent","isCollapsible","getAttribute","calcContentHeight","offsetHeight","scrollHeight","isCollapsed","toggle","setAttribute","collapse","animated","final","style","maxHeight","classList","add","setTimeout","expand","remove","addEventListener","once","init","includeAttrs","mapAttrs","updateHeaderText","text","innerText","attributeChangedCallback","name","oldValue","newValue","selectors","host","iconWrapper","wrapper","CollapsibleContainerClass","mappings","hostWidth","selector","property","hostDirection","verticalPadding","horizontalPadding","flexDirection","justifyContent","alignItems","gap","backgroundColor","backgroundImage","backgroundPositionX","backgroundPositionY","backgroundSize","backgroundRepeat","borderRadius","borderColor","borderStyle","borderWidth","boxShadow","headerIconOrder","headerCursor","headerGap","textGrow","textDirection","iconAnimationDuration","contentAnimationDuration","customElements","define","IconClass","fill","slots","wrappedEleName","excludeAttrsSync","srcAttrs","RawImage","toggleVisibility","getSrc","onThemeChange","renderImage","isVisible","altText","legacySrc","themeSrc","currentThemeName","updateFillColor","node","querySelectorAll","forEach","ele","ImageClass","then","res","appendChild","shouldRender","src","srcVal","attrName","height","width","createSvgEle","clean","sanitize","USE_PROFILES","svg","svgFilters","ADD_TAGS","FORBID_TAGS","DOMParser","parseFromString","createImage","async","startsWith","isBase64Svg","svgXml","atob","slice","base64Prefix","path","match","getFileExtension","fetchedSrc","fetch","document","createElement","createImgEle","setProperty","RawText","hideWhenEmpty","hasChildren","childNodes","length","display","fontSize","textColor","textLetterSpacing","textShadow","textAlign","textTransform","fontFamily","fontStyle","fontWeight","triggers","attr","value"],"sourceRoot":""}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_descope_web_components_ui=self.webpackChunk_descope_web_components_ui||[]).push([[2294,8819],{66434(t,e,o){o.d(e,{T:()=>p,s:()=>
|
|
1
|
+
"use strict";(self.webpackChunk_descope_web_components_ui=self.webpackChunk_descope_web_components_ui||[]).push([[2294,8819],{66434(t,e,o){o.d(e,{T:()=>p,s:()=>d});var n=o(88961),r=o(63200),i=o(25964),s=o(72270);const p=(0,i.xE)("text");class h extends((0,s.qu)({componentName:p,baseSelector:":host > slot"})){constructor(){super(),this.attachShadow({mode:"open"}).innerHTML='\n <slot part="text-wrapper"></slot>\n ',(0,i.fz)("\n :host {\n display: inline-block;\n line-height: 1em;\n }\n :host > slot {\n width: 100%;\n display: inline-block;\n }\n ",this)}get hideWhenEmpty(){return"true"===this.getAttribute("hide-when-empty")}init(){super.init(),(0,i.Ge)(this,()=>{const t=!!this.childNodes.length;this.style.display=!t&&this.hideWhenEmpty?"none":""})}}const{host:l}={host:{selector:()=>":host"}},d=(0,r.Zz)((0,n.RF)({mappings:{hostWidth:{...l,property:"width"},hostDirection:{...l,property:"direction"},fontSize:{},textColor:[{property:"color"}],textLineHeight:{property:"line-height"},textLetterSpacing:{property:"letter-spacing"},textShadow:{},textAlign:{},textTransform:{},fontFamily:{},fontStyle:{},fontWeight:{},borderWidth:{},borderStyle:{},borderColor:{}}}),(0,n.DM)({triggers:[{attr:"full-width",value:"true"}]}),n.VO,n.tQ)(h)},63595(t,e,o){o.r(e),o.d(e,{TextClass:()=>n.s,componentName:()=>n.T});var n=o(66434);customElements.define(n.T,n.s)},48995(t,e,o){o.r(e),o.d(e,{DividerClass:()=>m,componentName:()=>l});var n=o(66434),r=o(25964),i=o(79365),s=o(81365),p=o(9696),h=o(97810);const l=(0,h.xE)("divider");class d extends((0,s.q)({componentName:l,baseSelector:":host > div"})){constructor(){super(),this.attachShadow({mode:"open"}).innerHTML="\n\t\t\t<div>\n\t\t\t\t<descope-text>\n\t\t\t\t\t<slot></slot>\n\t\t\t\t</descope-text>\n\t\t\t</div>\n\t\t",(0,r.fz)("\n \t:host {\n\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t}\n\t\t\t\t:host > div {\n\t\t\t\t\tdisplay: flex;\n\t\t\t\t\theight: 100%;\n\t\t\t\t\twidth: 100%;\n\t\t\t\t}\n\t\t\t\t:host > div::before,\n\t\t\t\t:host > div::after {\n\t\t\t\t\tcontent: '';\n\t\t\t\t\tflex-grow: 1;\n\t\t\t\t}\n\t\t\t\tdescope-text {\n\t\t\t\t\tflex-grow: 0;\n\t\t\t\t\tflex-shrink: 0;\n\t\t\t\t}\n\t\t\t\t:host(:empty) descope-text {\n\t\t\t\t\tdisplay: none;\n\t\t\t\t}\n\t\t\t\t:host([vertical=\"true\"]) div {\n\t\t\t\t\twidth: fit-content;\n\t\t\t\t}\n ",this),this.textComponent=this.shadowRoot.querySelector("descope-text"),(0,h.EA)(this,this.textComponent,{includeAttrs:["mode","variant","italic"]})}}const a=n.s.cssVarList,{host:c,before:y,after:x,text:g}={host:{selector:()=>":host"},before:{selector:"::before"},after:{selector:"::after"},text:{selector:"descope-text"}},m=(0,p.Zz)((0,i.RF)({mappings:{hostWidth:{...c,property:"width"},hostPadding:{...c,property:"padding"},hostDirection:{...g,property:"direction"},minHeight:{},alignItems:{},alignSelf:{},flexDirection:{},textAlign:{...g,property:a.textAlign},labelTextWidth:{...g,property:"width"},labelTextMaxWidth:{...g,property:"max-width"},labelTextVerticalSpacing:[{...g,property:"padding-top"},{...g,property:"padding-bottom"}],labelTextHorizontalSpacing:[{...g,property:"padding-right"},{...g,property:"padding-left"}],stripeColor:[{...y,property:"background-color"},{...x,property:"background-color"}],stripeHorizontalThickness:[{...y,property:"height"},{...x,property:"height"}],stripeVerticalThickness:[{...y,property:"width"},{...x,property:"width"}],stripeColorOpacity:[{...y,property:"opacity"},{...x,property:"opacity"}]}}),i.VO,i.tQ)(d);o(63595),customElements.define(l,m)}}]);
|
|
2
2
|
//# sourceMappingURL=descope-divider-index-js.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"descope-divider-index-js.js","mappings":"
|
|
1
|
+
{"version":3,"file":"descope-divider-index-js.js","mappings":"oNAcO,MAAMA,GAAgB,QAAiB,QAE9C,MAAMC,WAAgB,QAAgB,CACpCD,gBACAE,aAAc,kBAEd,WAAAC,GACEC,QAEAC,KAAKC,aAAa,CAAEC,KAAM,SAAUC,UAAY,iDAIhD,QACE,iLAUAH,KAEJ,CAEA,iBAAII,GACF,MAAgD,SAAzCJ,KAAKK,aAAa,kBAC3B,CAEA,IAAAC,GACEP,MAAMO,QAEN,QAAgBN,KAAM,KACpB,MAAMO,IAAgBP,KAAKQ,WAAWC,OACtCT,KAAKU,MAAMC,SAAWJ,GAAeP,KAAKI,cAAgB,OAAS,IAEvE,EAGF,MAAM,KAAEQ,GAAS,CACfA,KAAM,CAAEC,SAAU,IAAM,UAGbC,GAAY,SACvB,QAAiB,CACfC,SAAU,CACRC,UAAW,IAAKJ,EAAMK,SAAU,SAChCC,cAAe,IAAKN,EAAMK,SAAU,aACpCE,SAAU,CAAC,EACXC,UAAW,CAAC,CAAEH,SAAU,UACxBI,eAAgB,CAAEJ,SAAU,eAC5BK,kBAAmB,CAAEL,SAAU,kBAC/BM,WAAY,CAAC,EACbC,UAAW,CAAC,EACZC,cAAe,CAAC,EAChBC,WAAY,CAAC,EACbC,UAAW,CAAC,EACZC,WAAY,CAAC,EACbC,YAAa,CAAC,EACdC,YAAa,CAAC,EACdC,YAAa,CAAC,MAGlB,QAAa,CAAEC,SAAU,CAAC,CAAEC,KAAM,aAAcC,MAAO,WACvD,KACA,KAtBuB,CAuBvBtC,E,sFCjFFuC,eAAeC,OAAO,IAAe,I,2ICK9B,MAAMzC,GAAgB,QAAiB,WAC9C,MAAM0C,WAAmB,EAAAC,EAAA,GAAgB,CAAE3C,gBAAeE,aAAc,iBACtE,WAAAC,GACEC,QAEAC,KAAKC,aAAa,CAAEC,KAAM,SAAUC,UAAY,+GAQhD,QACE,wiBAyBAH,MAGFA,KAAKuC,cAAgBvC,KAAKwC,WAAWC,cAAc,iBAEnD,QAAazC,KAAMA,KAAKuC,cAAe,CACrCG,aAAc,CAAC,OAAQ,UAAW,WAEtC,EAGF,MAAMC,EAAW7B,EAAA,EAAU8B,YACrB,KAAEhC,EAAI,OAAEiC,EAAM,MAAEC,EAAOC,KAAI,GAAK,CACpCnC,KAAM,CAAEC,SAAU,IAAM,SACxBgC,OAAQ,CAAEhC,SAAU,YACpBiC,MAAO,CAAEjC,SAAU,WACnBkC,KAAM,CAAElC,SAAU,iBAGPmC,GAAe,SAC1B,QAAiB,CACfjC,SAAU,CACRC,UAAW,IAAKJ,EAAMK,SAAU,SAChCgC,YAAa,IAAKrC,EAAMK,SAAU,WAClCC,cAAe,IAAK,EAAMD,SAAU,aAEpCiC,UAAW,CAAC,EACZC,WAAY,CAAC,EACbC,UAAW,CAAC,EACZC,cAAe,CAAC,EAChB7B,UAAW,IAAK,EAAMP,SAAU0B,EAASnB,WAEzC8B,eAAgB,IAAK,EAAMrC,SAAU,SACrCsC,kBAAmB,IAAK,EAAMtC,SAAU,aACxCuC,yBAA0B,CACxB,IAAK,EAAMvC,SAAU,eACrB,IAAK,EAAMA,SAAU,mBAEvBwC,2BAA4B,CAC1B,IAAK,EAAMxC,SAAU,iBACrB,IAAK,EAAMA,SAAU,iBAGvByC,YAAa,CACX,IAAKb,EAAQ5B,SAAU,oBACvB,IAAK6B,EAAO7B,SAAU,qBAExB0C,0BAA2B,CACzB,IAAKd,EAAQ5B,SAAU,UACvB,IAAK6B,EAAO7B,SAAU,WAExB2C,wBAAyB,CACvB,IAAKf,EAAQ5B,SAAU,SACvB,IAAK6B,EAAO7B,SAAU,UAExB4C,mBAAoB,CAClB,IAAKhB,EAAQ5B,SAAU,WACvB,IAAK6B,EAAO7B,SAAU,eAI5B,KACA,KA3C0B,CA4C1BoB,G,SC1GFF,eAAeC,OAAOzC,EAAeqD,E","sources":["webpack://@descope/web-components-ui/../components/descope-text/src/component/TextClass.js","webpack://@descope/web-components-ui/../components/descope-text/src/component/index.js","webpack://@descope/web-components-ui/./src/components/descope-divider/DividerClass.js","webpack://@descope/web-components-ui/./src/components/descope-divider/index.js"],"sourcesContent":["import {\n createStyleMixin,\n draggableMixin,\n componentNameValidationMixin,\n stretchMixin,\n} from '@descope-ui/common/components-mixins';\nimport { compose } from '@descope-ui/common/utils';\nimport {\n getComponentName,\n injectStyle,\n observeChildren,\n} from '@descope-ui/common/components-helpers';\nimport { createBaseClass } from '@descope-ui/common/base-classes';\n\nexport const componentName = getComponentName('text');\n\nclass RawText extends createBaseClass({\n componentName,\n baseSelector: ':host > slot',\n}) {\n constructor() {\n super();\n\n this.attachShadow({ mode: 'open' }).innerHTML = `\n <slot part=\"text-wrapper\"></slot>\n `;\n\n injectStyle(\n `\n :host {\n display: inline-block;\n line-height: 1em;\n }\n :host > slot {\n width: 100%;\n display: inline-block;\n }\n `,\n this,\n );\n }\n\n get hideWhenEmpty() {\n return this.getAttribute('hide-when-empty') === 'true';\n }\n\n init() {\n super.init();\n\n observeChildren(this, () => {\n const hasChildren = !!this.childNodes.length;\n this.style.display = !hasChildren && this.hideWhenEmpty ? 'none' : '';\n });\n }\n}\n\nconst { host } = {\n host: { selector: () => ':host' },\n};\n\nexport const TextClass = compose(\n createStyleMixin({\n mappings: {\n hostWidth: { ...host, property: 'width' },\n hostDirection: { ...host, property: 'direction' },\n fontSize: {},\n textColor: [{ property: 'color' }],\n textLineHeight: { property: 'line-height' },\n textLetterSpacing: { property: 'letter-spacing' },\n textShadow: {},\n textAlign: {},\n textTransform: {},\n fontFamily: {},\n fontStyle: {},\n fontWeight: {},\n borderWidth: {},\n borderStyle: {},\n borderColor: {},\n },\n }),\n stretchMixin({ triggers: [{ attr: 'full-width', value: 'true' }] }),\n draggableMixin,\n componentNameValidationMixin,\n)(RawText);\n","import { componentName, TextClass } from './TextClass';\n\ncustomElements.define(componentName, TextClass);\n\nexport { TextClass, componentName };\n","import { TextClass } from '@descope-ui/descope-text/class';\nimport { injectStyle } from '@descope-ui/common/components-helpers';\nimport { createStyleMixin, draggableMixin, componentNameValidationMixin } from '../../mixins';\nimport { createBaseClass } from '../../baseClasses/createBaseClass';\nimport { compose } from '../../helpers';\nimport { forwardAttrs, getComponentName } from '../../helpers/componentHelpers';\n\nexport const componentName = getComponentName('divider');\nclass RawDivider extends createBaseClass({ componentName, baseSelector: ':host > div' }) {\n constructor() {\n super();\n\n this.attachShadow({ mode: 'open' }).innerHTML = `\n\t\t\t<div>\n\t\t\t\t<descope-text>\n\t\t\t\t\t<slot></slot>\n\t\t\t\t</descope-text>\n\t\t\t</div>\n\t\t`;\n\n injectStyle(\n `\n \t:host {\n\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t}\n\t\t\t\t:host > div {\n\t\t\t\t\tdisplay: flex;\n\t\t\t\t\theight: 100%;\n\t\t\t\t\twidth: 100%;\n\t\t\t\t}\n\t\t\t\t:host > div::before,\n\t\t\t\t:host > div::after {\n\t\t\t\t\tcontent: '';\n\t\t\t\t\tflex-grow: 1;\n\t\t\t\t}\n\t\t\t\tdescope-text {\n\t\t\t\t\tflex-grow: 0;\n\t\t\t\t\tflex-shrink: 0;\n\t\t\t\t}\n\t\t\t\t:host(:empty) descope-text {\n\t\t\t\t\tdisplay: none;\n\t\t\t\t}\n\t\t\t\t:host([vertical=\"true\"]) div {\n\t\t\t\t\twidth: fit-content;\n\t\t\t\t}\n `,\n this\n );\n\n this.textComponent = this.shadowRoot.querySelector('descope-text');\n\n forwardAttrs(this, this.textComponent, {\n includeAttrs: ['mode', 'variant', 'italic'],\n });\n }\n}\n\nconst textVars = TextClass.cssVarList;\nconst { host, before, after, text } = {\n host: { selector: () => ':host' },\n before: { selector: '::before' },\n after: { selector: '::after' },\n text: { selector: 'descope-text' },\n};\n\nexport const DividerClass = compose(\n createStyleMixin({\n mappings: {\n hostWidth: { ...host, property: 'width' },\n hostPadding: { ...host, property: 'padding' },\n hostDirection: { ...text, property: 'direction' },\n\n minHeight: {},\n alignItems: {},\n alignSelf: {},\n flexDirection: {},\n textAlign: { ...text, property: textVars.textAlign },\n\n labelTextWidth: { ...text, property: 'width' },\n labelTextMaxWidth: { ...text, property: 'max-width' },\n labelTextVerticalSpacing: [\n { ...text, property: 'padding-top' },\n { ...text, property: 'padding-bottom' },\n ],\n labelTextHorizontalSpacing: [\n { ...text, property: 'padding-right' },\n { ...text, property: 'padding-left' },\n ],\n\n stripeColor: [\n { ...before, property: 'background-color' },\n { ...after, property: 'background-color' },\n ],\n stripeHorizontalThickness: [\n { ...before, property: 'height' },\n { ...after, property: 'height' },\n ],\n stripeVerticalThickness: [\n { ...before, property: 'width' },\n { ...after, property: 'width' },\n ],\n stripeColorOpacity: [\n { ...before, property: 'opacity' },\n { ...after, property: 'opacity' },\n ],\n },\n }),\n draggableMixin,\n componentNameValidationMixin\n)(RawDivider);\n","import { componentName, DividerClass } from './DividerClass';\nimport '@descope-ui/descope-text';\n\ncustomElements.define(componentName, DividerClass);\n\nexport { DividerClass, componentName };\n"],"names":["componentName","RawText","baseSelector","constructor","super","this","attachShadow","mode","innerHTML","hideWhenEmpty","getAttribute","init","hasChildren","childNodes","length","style","display","host","selector","TextClass","mappings","hostWidth","property","hostDirection","fontSize","textColor","textLineHeight","textLetterSpacing","textShadow","textAlign","textTransform","fontFamily","fontStyle","fontWeight","borderWidth","borderStyle","borderColor","triggers","attr","value","customElements","define","RawDivider","createBaseClass","textComponent","shadowRoot","querySelector","includeAttrs","textVars","cssVarList","before","after","text","DividerClass","hostPadding","minHeight","alignItems","alignSelf","flexDirection","labelTextWidth","labelTextMaxWidth","labelTextVerticalSpacing","labelTextHorizontalSpacing","stripeColor","stripeHorizontalThickness","stripeVerticalThickness","stripeColorOpacity"],"sourceRoot":""}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_descope_web_components_ui=self.webpackChunk_descope_web_components_ui||[]).push([[2294,4159,9261],{76231(e,t,r){r.d(t,{T:()=>c,m:()=>p});var n=r(92540),o=r(88961),s=r(63200),i=r(36976),l=r(72270),
|
|
1
|
+
"use strict";(self.webpackChunk_descope_web_components_ui=self.webpackChunk_descope_web_components_ui||[]).push([[2294,4159,9261],{76231(e,t,r){r.d(t,{T:()=>c,m:()=>p});var n=r(92540),o=r(88961),s=r(63200),i=r(36976),l=r(72270),a=r(54847),h=r(25964);const c=(0,h.xE)("enriched-text");class d extends((0,l.qu)({componentName:c,baseSelector:":host > div"})){#e;#t;constructor(){super(),this.attachShadow({mode:"open"}).innerHTML='\n <div class="content"></div>\n ',(0,h.fz)("\n :host {\n line-height: 1em;\n word-break: break-word;\n }\n :host > slot {\n width: 100%;\n display: inline-block;\n }\n *, *:last-child {\n margin: 0;\n }\n h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n p {\n margin-bottom: 1em;\n }\n a {\n cursor: pointer;\n }\n blockquote {\n padding: 0 2em;\n }\n u {\n text-decoration: underline\n }\n s {\n color: currentColor;\n }\n ",this),this.#r(),(0,h.Ge)(this,this.#n.bind(this)),this.contentNode?.addEventListener("click",e=>{e.target instanceof HTMLAnchorElement&&e.stopPropagation()})}static get observedAttributes(){return["readonly","link-target-blank"]}attributeChangedCallback(e,t,r){super.attributeChangedCallback?.(e,t,r),r!==t&&("readonly"===e&&this.onReadOnlyChange("true"===r),"link-target-blank"===e&&this.#r())}customUnderlineRenderer(){this.processor.renderer.rules.em_open=(e,t,r,n,o)=>("_"===e[t].markup&&(e[t].tag="u"),this.#t(e,t,r,n,o)),this.processor.renderer.rules.em_close=(e,t,r,n,o)=>("_"===e[t].markup&&(e[t].tag="u"),this.#t(e,t,r,n,o))}#o(){this.linkTargetBlank?this.processor.renderer.rules.link_open=(e,t,r,n,o)=>(e[t].attrSet("target","_blank"),this.#e(e,t,r,n,o)):this.processor.renderer.rules.link_open=this.#e}#s(){this.processor&&this.processor.disable(i.M)}#i(){this.#s()}#l(){this.#e=this.processor.renderer.rules.link_open||((e,t,r,n,o)=>o.renderToken(e,t,r)),this.#t=this.processor.renderer.rules.em_open||((e,t,r,n,o)=>o.renderToken(e,t,r))}#r(){this.processor=new n.A("commonmark",{html:!0}),this.#l(),this.#i(),this.#o(),this.customUnderlineRenderer()}get linkTargetBlank(){return"true"===this.getAttribute("link-target-blank")}get contentNode(){return this.shadowRoot.querySelector(".content")}#n(){if(!this.processor)return;let e=(0,a.G)(this.innerHTML);!e?.trim()&&this.isConnected?this.setAttribute("empty","true"):this.removeAttribute("empty");try{const t=this.processor.parse(e,{references:void 0});e=this.processor.renderer.render(t,{html:!0,breaks:!0})}catch{console.warn("Not parsing invalid markdown token")}this.contentNode.innerHTML=e,this.contentNode.firstChild?.setAttribute("part","content")}onReadOnlyChange(e){e?this.contentNode.setAttribute("inert",e):this.contentNode.removeAttribute("inert")}}const p=(0,s.Zz)((0,o.RF)({mappings:{hostWidth:{selector:()=>":host",property:"width"},hostDisplay:{selector:()=>":host",property:"display",fallback:"inline-block"},hostDirection:{selector:()=>":host",property:"direction"},fontSize:{},fontFamily:{},fontWeight:{},fontWeightBold:[{selector:()=>":host strong",property:"font-weight"},{selector:()=>":host b",property:"font-weight"}],textColor:{property:"color"},textLineHeight:{property:"line-height"},textAlign:{},linkColor:{selector:"a",property:"color"},linkTextDecoration:{selector:"a",property:"text-decoration"},linkHoverTextDecoration:{selector:"a:hover",property:"text-decoration"},minHeight:{},minWidth:{}}}),(0,o.RF)({componentNameOverride:(0,h.xE)("link")}),(0,o.RF)({componentNameOverride:(0,h.xE)("text")}),(0,o.DM)({triggers:[{attr:"full-width",value:"true"}]}),o.VO,o.tQ)(d)},36976(e,t,r){r.d(t,{M:()=>n});const n=["blockquote","list","image","table","code","hr","backticks","fence","reference","heading","lheading","html_block"]},54847(e,t,r){r.d(t,{G:()=>n});const n=e=>{const t=document.createElement("textarea");return t.innerHTML=e,t.value}},55838(e,t,r){r.r(t),r.d(t,{EnrichedTextClass:()=>n.m,componentName:()=>n.T}),r(90512);var n=r(76231);customElements.define(n.T,n.m)},75464(e,t,r){r.d(t,{J:()=>b,T:()=>a});var n=r(88961),o=r(63200),s=r(25964),i=r(72270),l=r(66434);const a=(0,s.xE)("link"),h=["href","readonly"];class c extends((0,i.qu)({componentName:a,baseSelector:":host a"})){static get observedAttributes(){return h.concat(super.observedAttributes||[])}constructor(){super(),this.attachShadow({mode:"open"}).innerHTML='\n\t\t<div>\n\t\t\t<descope-text part="wrapper">\n\t\t\t\t<a>\n\t\t\t\t\t<slot></slot>\n\t\t\t\t</a>\n\t\t\t</descope-text>\n\t\t</div>\n\t\t',(0,s.fz)('\n :host {\n\t\t\tdisplay: inline-block;\n line-height: 1em;\n\t\t}\n\t\t:host a {\n\t\t\tdisplay: inline;\n\t\t}\n\n :host([ellipsis="true"]) descope-text {\n display: inline-flex;\n }\n :host([ellipsis="true"]) descope-text::part(text-wrapper) {\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n }\n ',this),this.anchor=this.shadowRoot.querySelector("a"),(0,s.EA)(this,this.anchor,{includeAttrs:["href","target","tooltip"],mapAttrs:{tooltip:"title"}}),(0,s.EA)(this,this.shadowRoot.querySelector("descope-text"),{includeAttrs:["mode","variant"]}),this.anchor.addEventListener("click",e=>{this.readOnly&&e.preventDefault()})}get readOnly(){return"true"===this.getAttribute("readonly")}}const d={host:{selector:()=>":host"},link:{selector:()=>":host a"},anchor:{},wrapper:{selector:()=>":host > div"},text:{selector:()=>l.s.componentName}},{anchor:p,text:u,host:m,wrapper:g,link:k}=d,b=(0,o.Zz)((0,n.RF)({mappings:{hostWidth:{...m,property:"width"},hostDirection:{...u,property:"direction"},textAlign:g,textDecoration:{...k,property:"text-decoration",fallback:"none"},textColor:[{...p,property:"color"},{...u,property:l.s.cssVarList.textColor}],cursor:p}}),(0,n.DM)({triggers:[{attr:"full-width",value:"true"}]}),n.VO,n.tQ)(c)},90512(e,t,r){r.r(t),r.d(t,{LinkClass:()=>n.J,componentName:()=>n.T});var n=r(75464);r(63595),customElements.define(n.T,n.J)},66434(e,t,r){r.d(t,{T:()=>l,s:()=>c});var n=r(88961),o=r(63200),s=r(25964),i=r(72270);const l=(0,s.xE)("text");class a extends((0,i.qu)({componentName:l,baseSelector:":host > slot"})){constructor(){super(),this.attachShadow({mode:"open"}).innerHTML='\n <slot part="text-wrapper"></slot>\n ',(0,s.fz)("\n :host {\n display: inline-block;\n line-height: 1em;\n }\n :host > slot {\n width: 100%;\n display: inline-block;\n }\n ",this)}get hideWhenEmpty(){return"true"===this.getAttribute("hide-when-empty")}init(){super.init(),(0,s.Ge)(this,()=>{const e=!!this.childNodes.length;this.style.display=!e&&this.hideWhenEmpty?"none":""})}}const{host:h}={host:{selector:()=>":host"}},c=(0,o.Zz)((0,n.RF)({mappings:{hostWidth:{...h,property:"width"},hostDirection:{...h,property:"direction"},fontSize:{},textColor:[{property:"color"}],textLineHeight:{property:"line-height"},textLetterSpacing:{property:"letter-spacing"},textShadow:{},textAlign:{},textTransform:{},fontFamily:{},fontStyle:{},fontWeight:{},borderWidth:{},borderStyle:{},borderColor:{}}}),(0,n.DM)({triggers:[{attr:"full-width",value:"true"}]}),n.VO,n.tQ)(a)},63595(e,t,r){r.r(t),r.d(t,{TextClass:()=>n.s,componentName:()=>n.T});var n=r(66434);customElements.define(n.T,n.s)}}]);
|
|
2
2
|
//# sourceMappingURL=descope-enriched-text.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"descope-enriched-text.js","mappings":"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","sources":["webpack://@descope/web-components-ui/../components/descope-enriched-text/src/component/EnrichedTextClass.js","webpack://@descope/web-components-ui/../components/descope-enriched-text/src/component/consts.js","webpack://@descope/web-components-ui/../components/descope-enriched-text/src/component/helpers.js","webpack://@descope/web-components-ui/../components/descope-enriched-text/src/component/index.js","webpack://@descope/web-components-ui/../components/descope-link/src/component/LinkClass.js","webpack://@descope/web-components-ui/../components/descope-link/src/component/index.js","webpack://@descope/web-components-ui/../components/descope-text/src/component/TextClass.js","webpack://@descope/web-components-ui/../components/descope-text/src/component/index.js"],"sourcesContent":["/* eslint-disable no-param-reassign */\n\nimport MarkdownIt from 'markdown-it';\nimport { createStyleMixin, draggableMixin, componentNameValidationMixin } from '@descope-ui/common/components-mixins';\nimport { compose } from '@descope-ui/common/utils';\nimport { disableRules } from './consts';\nimport { createBaseClass } from '@descope-ui/common/base-classes';\nimport { decodeHTML } from './helpers';\nimport { getComponentName, injectStyle, observeChildren } from '@descope-ui/common/components-helpers';\n\nexport const componentName = getComponentName('enriched-text');\n\nclass EnrichedText extends createBaseClass({ componentName, baseSelector: ':host > div' }) {\n #origLinkRenderer;\n\n #origEmRenderer;\n\n constructor() {\n super();\n\n this.attachShadow({ mode: 'open' }).innerHTML = `\n <div class=\"content\"></div>\n `;\n\n injectStyle(\n `\n :host {\n line-height: 1em;\n word-break: break-word;\n }\n :host > slot {\n width: 100%;\n display: inline-block;\n }\n *, *:last-child {\n margin: 0;\n }\n h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n p {\n margin-bottom: 1em;\n }\n a {\n cursor: pointer;\n }\n blockquote {\n padding: 0 2em;\n }\n u {\n text-decoration: underline\n }\n s {\n color: currentColor;\n }\n `,\n this\n );\n\n this.#initProcessor();\n\n observeChildren(this, this.#parseChildren.bind(this));\n\n // Stop propagation on link clicks to prevent parent handlers from firing\n this.contentNode?.addEventListener('click', (e) => {\n if (e.target instanceof HTMLAnchorElement) {\n e.stopPropagation();\n }\n });\n }\n\n static get observedAttributes() {\n return ['readonly', 'link-target-blank'];\n }\n\n attributeChangedCallback(attrName, oldValue, newValue) {\n super.attributeChangedCallback?.(attrName, oldValue, newValue);\n\n if (newValue !== oldValue) {\n if (attrName === 'readonly') {\n this.onReadOnlyChange(newValue === 'true');\n }\n\n if (attrName === 'link-target-blank') {\n this.#initProcessor();\n }\n }\n }\n\n // We're overriding the rule for em with single underscore to perform as underline. (_underline_)\n customUnderlineRenderer() {\n this.processor.renderer.rules.em_open = (tokens, idx, options, env, self) => {\n if (tokens[idx].markup === '_') tokens[idx].tag = 'u';\n return this.#origEmRenderer(tokens, idx, options, env, self);\n };\n this.processor.renderer.rules.em_close = (tokens, idx, options, env, self) => {\n if (tokens[idx].markup === '_') tokens[idx].tag = 'u';\n return this.#origEmRenderer(tokens, idx, options, env, self);\n };\n }\n\n #customizeLinkRenderer() {\n if (this.linkTargetBlank) {\n this.processor.renderer.rules.link_open = (tokens, idx, options, env, self) => {\n // Add a new `target` attribute, or replace the value of the existing one.\n tokens[idx].attrSet('target', '_blank');\n // Pass the token to the default renderer.\n return this.#origLinkRenderer(tokens, idx, options, env, self);\n };\n } else {\n this.processor.renderer.rules.link_open = this.#origLinkRenderer;\n }\n }\n\n #disableCustomRules() {\n if (!this.processor) {\n return;\n }\n this.processor.disable(disableRules);\n }\n\n #updateProcessorRules() {\n this.#disableCustomRules();\n }\n\n #storeOrigRenderers() {\n const defaultLinkRenderer = (tokens, idx, options, _, self) =>\n self.renderToken(tokens, idx, options);\n this.#origLinkRenderer = this.processor.renderer.rules.link_open || defaultLinkRenderer;\n\n const defaultStrongRenderer = (tokens, idx, options, _, self) =>\n self.renderToken(tokens, idx, options);\n this.#origEmRenderer = this.processor.renderer.rules.em_open || defaultStrongRenderer;\n }\n\n #initProcessor() {\n this.processor = new MarkdownIt('commonmark', { html: true });\n this.#storeOrigRenderers();\n this.#updateProcessorRules();\n this.#customizeLinkRenderer();\n this.customUnderlineRenderer();\n }\n\n get linkTargetBlank() {\n return this.getAttribute('link-target-blank') === 'true';\n }\n\n get contentNode() {\n return this.shadowRoot.querySelector('.content');\n }\n\n #parseChildren() {\n if (!this.processor) {\n return;\n }\n\n let html = decodeHTML(this.innerHTML);\n\n if (!html?.trim() && this.isConnected) {\n this.setAttribute('empty', 'true');\n } else {\n this.removeAttribute('empty');\n }\n\n try {\n const tokens = this.processor.parse(html, { references: undefined });\n html = this.processor.renderer.render(tokens, { html: true, breaks: true });\n } catch (e) {\n // eslint-disable-next-line no-console\n console.warn('Not parsing invalid markdown token');\n }\n\n this.contentNode.innerHTML = html;\n this.contentNode.firstChild?.setAttribute('part', 'content');\n }\n\n onReadOnlyChange(isReadOnly) {\n if (isReadOnly) {\n this.contentNode.setAttribute('inert', isReadOnly);\n } else {\n this.contentNode.removeAttribute('inert');\n }\n }\n}\n\nexport const EnrichedTextClass = compose(\n createStyleMixin({\n mappings: {\n hostWidth: { selector: () => ':host', property: 'width' },\n hostDisplay: { selector: () => ':host', property: 'display', fallback: 'inline-block' },\n hostDirection: { selector: () => ':host', property: 'direction' },\n fontSize: {},\n fontFamily: {},\n fontWeight: {},\n fontWeightBold: [\n { selector: () => ':host strong', property: 'font-weight' },\n { selector: () => ':host b', property: 'font-weight' },\n ],\n textColor: { property: 'color' },\n textLineHeight: { property: 'line-height' },\n textAlign: {},\n linkColor: { selector: 'a', property: 'color' },\n linkTextDecoration: { selector: 'a', property: 'text-decoration' },\n linkHoverTextDecoration: { selector: 'a:hover', property: 'text-decoration' },\n minHeight: {},\n minWidth: {},\n },\n }),\n createStyleMixin({ componentNameOverride: getComponentName('link') }),\n createStyleMixin({ componentNameOverride: getComponentName('text') }),\n draggableMixin,\n componentNameValidationMixin\n)(EnrichedText);\n","export const disableRules = [\n 'blockquote',\n 'list',\n 'image',\n 'table',\n 'code',\n 'hr',\n 'backticks',\n 'fence',\n 'reference',\n 'heading',\n 'lheading',\n 'html_block',\n];\n","export const decodeHTML = (html) => {\n const textArea = document.createElement('textarea');\n textArea.innerHTML = html;\n return textArea.value;\n};\n","import '@descope-ui/descope-link';\n\nimport { componentName, EnrichedTextClass } from './EnrichedTextClass';\n\ncustomElements.define(componentName, EnrichedTextClass);\n\nexport { EnrichedTextClass, componentName };\n","import {\n createStyleMixin,\n draggableMixin,\n componentNameValidationMixin,\n} from '@descope-ui/common/components-mixins';\nimport { compose } from '@descope-ui/common/utils';\nimport {\n getComponentName,\n forwardAttrs,\n injectStyle,\n} from '@descope-ui/common/components-helpers';\nimport { createBaseClass } from '@descope-ui/common/base-classes';\nimport { TextClass } from '@descope-ui/descope-text/class';\n\nexport const componentName = getComponentName('link');\n\nconst observedAttrs = ['href', 'readonly'];\n\nclass RawLink extends createBaseClass({\n componentName,\n baseSelector: ':host a',\n}) {\n static get observedAttributes() {\n return observedAttrs.concat(super.observedAttributes || []);\n }\n\n constructor() {\n super();\n\n this.attachShadow({ mode: 'open' }).innerHTML = `\n\t\t<div>\n\t\t\t<descope-text part=\"wrapper\">\n\t\t\t\t<a>\n\t\t\t\t\t<slot></slot>\n\t\t\t\t</a>\n\t\t\t</descope-text>\n\t\t</div>\n\t\t`;\n\n injectStyle(\n `\n :host {\n\t\t\tdisplay: inline-block;\n line-height: 1em;\n\t\t}\n\t\t:host a {\n\t\t\tdisplay: inline;\n\t\t}\n\n :host([ellipsis=\"true\"]) descope-text {\n display: inline-flex;\n }\n :host([ellipsis=\"true\"]) descope-text::part(text-wrapper) {\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n }\n `,\n this,\n );\n\n this.anchor = this.shadowRoot.querySelector('a');\n\n forwardAttrs(this, this.anchor, {\n includeAttrs: ['href', 'target', 'tooltip'],\n mapAttrs: {\n tooltip: 'title',\n },\n });\n\n forwardAttrs(this, this.shadowRoot.querySelector('descope-text'), {\n includeAttrs: ['mode', 'variant'],\n });\n\n this.anchor.addEventListener('click', (e) => {\n if (this.readOnly) {\n e.preventDefault();\n }\n });\n }\n\n get readOnly() {\n return this.getAttribute('readonly') === 'true';\n }\n}\n\nconst selectors = {\n host: { selector: () => ':host' },\n link: { selector: () => ':host a' },\n anchor: {},\n wrapper: { selector: () => ':host > div' },\n text: { selector: () => TextClass.componentName },\n};\n\nconst { anchor, text, host, wrapper, link } = selectors;\n\nexport const LinkClass = compose(\n createStyleMixin({\n mappings: {\n hostWidth: { ...host, property: 'width' },\n hostDirection: { ...text, property: 'direction' },\n textAlign: wrapper,\n textDecoration: {\n ...link,\n property: 'text-decoration',\n fallback: 'none',\n },\n textColor: [\n { ...anchor, property: 'color' },\n { ...text, property: TextClass.cssVarList.textColor },\n ],\n cursor: anchor,\n },\n }),\n draggableMixin,\n componentNameValidationMixin,\n)(RawLink);\n","import { componentName, LinkClass } from './LinkClass';\nimport '@descope-ui/descope-text';\n\ncustomElements.define(componentName, LinkClass);\n\nexport { LinkClass, componentName };\n","import {\n createStyleMixin,\n draggableMixin,\n componentNameValidationMixin,\n} from '@descope-ui/common/components-mixins';\nimport { compose } from '@descope-ui/common/utils';\nimport {\n getComponentName,\n injectStyle,\n observeChildren,\n} from '@descope-ui/common/components-helpers';\nimport { createBaseClass } from '@descope-ui/common/base-classes';\n\nexport const componentName = getComponentName('text');\n\nclass RawText extends createBaseClass({\n componentName,\n baseSelector: ':host > slot',\n}) {\n constructor() {\n super();\n\n this.attachShadow({ mode: 'open' }).innerHTML = `\n <slot part=\"text-wrapper\"></slot>\n `;\n\n injectStyle(`\n :host {\n display: inline-block;\n line-height: 1em;\n }\n :host > slot {\n width: 100%;\n display: inline-block;\n }\n `, this);\n }\n\n get hideWhenEmpty() {\n return this.getAttribute('hide-when-empty') === 'true';\n }\n\n init() {\n super.init();\n\n observeChildren(this, () => {\n const hasChildren = !!this.childNodes.length;\n this.style.display = !hasChildren && this.hideWhenEmpty ? 'none' : '';\n });\n }\n}\n\nconst { host } = {\n host: { selector: () => ':host' }\n}\n\nexport const TextClass = compose(\n createStyleMixin({\n mappings: {\n hostWidth: { ...host, property: 'width' },\n hostDirection: { ...host, property: 'direction' },\n fontSize: {},\n textColor: [\n { property: 'color' }\n ],\n textLineHeight: { property: 'line-height' },\n textLetterSpacing: { property: 'letter-spacing' },\n textShadow: {},\n textAlign: {},\n textTransform: {},\n fontFamily: {},\n fontStyle: {},\n fontWeight: {},\n borderWidth: {},\n borderStyle: {},\n borderColor: {},\n },\n }),\n draggableMixin,\n componentNameValidationMixin,\n)(RawText);\n","import { componentName, TextClass } from './TextClass';\n\ncustomElements.define(componentName, TextClass);\n\nexport { TextClass, componentName };\n"],"names":["componentName","EnrichedText","baseSelector","constructor","super","this","attachShadow","mode","innerHTML","bind","contentNode","addEventListener","e","target","HTMLAnchorElement","stopPropagation","observedAttributes","attributeChangedCallback","attrName","oldValue","newValue","onReadOnlyChange","customUnderlineRenderer","processor","renderer","rules","em_open","tokens","idx","options","env","self","markup","tag","em_close","linkTargetBlank","link_open","attrSet","disable","_","renderToken","html","getAttribute","shadowRoot","querySelector","trim","isConnected","setAttribute","removeAttribute","parse","references","undefined","render","breaks","console","warn","firstChild","isReadOnly","EnrichedTextClass","mappings","hostWidth","selector","property","hostDisplay","fallback","hostDirection","fontSize","fontFamily","fontWeight","fontWeightBold","textColor","textLineHeight","textAlign","linkColor","linkTextDecoration","linkHoverTextDecoration","minHeight","minWidth","componentNameOverride","disableRules","decodeHTML","textArea","document","createElement","value","customElements","define","observedAttrs","RawLink","concat","anchor","includeAttrs","mapAttrs","tooltip","readOnly","preventDefault","selectors","host","link","wrapper","text","LinkClass","textDecoration","cssVarList","cursor","RawText","hideWhenEmpty","init","hasChildren","childNodes","length","style","display","TextClass","textLetterSpacing","textShadow","textTransform","fontStyle","borderWidth","borderStyle","borderColor"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"descope-enriched-text.js","mappings":"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","sources":["webpack://@descope/web-components-ui/../components/descope-enriched-text/src/component/EnrichedTextClass.js","webpack://@descope/web-components-ui/../components/descope-enriched-text/src/component/consts.js","webpack://@descope/web-components-ui/../components/descope-enriched-text/src/component/helpers.js","webpack://@descope/web-components-ui/../components/descope-enriched-text/src/component/index.js","webpack://@descope/web-components-ui/../components/descope-link/src/component/LinkClass.js","webpack://@descope/web-components-ui/../components/descope-link/src/component/index.js","webpack://@descope/web-components-ui/../components/descope-text/src/component/TextClass.js","webpack://@descope/web-components-ui/../components/descope-text/src/component/index.js"],"sourcesContent":["import MarkdownIt from 'markdown-it';\nimport {\n createStyleMixin,\n draggableMixin,\n componentNameValidationMixin,\n stretchMixin,\n} from '@descope-ui/common/components-mixins';\nimport { compose } from '@descope-ui/common/utils';\nimport { disableRules } from './consts';\nimport { createBaseClass } from '@descope-ui/common/base-classes';\nimport { decodeHTML } from './helpers';\nimport {\n getComponentName,\n injectStyle,\n observeChildren,\n} from '@descope-ui/common/components-helpers';\n\nexport const componentName = getComponentName('enriched-text');\n\nclass EnrichedText extends createBaseClass({\n componentName,\n baseSelector: ':host > div',\n}) {\n #origLinkRenderer;\n\n #origEmRenderer;\n\n constructor() {\n super();\n\n this.attachShadow({ mode: 'open' }).innerHTML = `\n <div class=\"content\"></div>\n `;\n\n injectStyle(\n `\n :host {\n line-height: 1em;\n word-break: break-word;\n }\n :host > slot {\n width: 100%;\n display: inline-block;\n }\n *, *:last-child {\n margin: 0;\n }\n h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n p {\n margin-bottom: 1em;\n }\n a {\n cursor: pointer;\n }\n blockquote {\n padding: 0 2em;\n }\n u {\n text-decoration: underline\n }\n s {\n color: currentColor;\n }\n `,\n this,\n );\n\n this.#initProcessor();\n\n observeChildren(this, this.#parseChildren.bind(this));\n\n // Stop propagation on link clicks to prevent parent handlers from firing\n this.contentNode?.addEventListener('click', (e) => {\n if (e.target instanceof HTMLAnchorElement) {\n e.stopPropagation();\n }\n });\n }\n\n static get observedAttributes() {\n return ['readonly', 'link-target-blank'];\n }\n\n attributeChangedCallback(attrName, oldValue, newValue) {\n super.attributeChangedCallback?.(attrName, oldValue, newValue);\n\n if (newValue !== oldValue) {\n if (attrName === 'readonly') {\n this.onReadOnlyChange(newValue === 'true');\n }\n\n if (attrName === 'link-target-blank') {\n this.#initProcessor();\n }\n }\n }\n\n // We're overriding the rule for em with single underscore to perform as underline. (_underline_)\n customUnderlineRenderer() {\n this.processor.renderer.rules.em_open = (\n tokens,\n idx,\n options,\n env,\n self,\n ) => {\n if (tokens[idx].markup === '_') tokens[idx].tag = 'u';\n return this.#origEmRenderer(tokens, idx, options, env, self);\n };\n this.processor.renderer.rules.em_close = (\n tokens,\n idx,\n options,\n env,\n self,\n ) => {\n if (tokens[idx].markup === '_') tokens[idx].tag = 'u';\n return this.#origEmRenderer(tokens, idx, options, env, self);\n };\n }\n\n #customizeLinkRenderer() {\n if (this.linkTargetBlank) {\n this.processor.renderer.rules.link_open = (\n tokens,\n idx,\n options,\n env,\n self,\n ) => {\n // Add a new `target` attribute, or replace the value of the existing one.\n tokens[idx].attrSet('target', '_blank');\n // Pass the token to the default renderer.\n return this.#origLinkRenderer(tokens, idx, options, env, self);\n };\n } else {\n this.processor.renderer.rules.link_open = this.#origLinkRenderer;\n }\n }\n\n #disableCustomRules() {\n if (!this.processor) {\n return;\n }\n this.processor.disable(disableRules);\n }\n\n #updateProcessorRules() {\n this.#disableCustomRules();\n }\n\n #storeOrigRenderers() {\n const defaultLinkRenderer = (tokens, idx, options, _, self) =>\n self.renderToken(tokens, idx, options);\n this.#origLinkRenderer =\n this.processor.renderer.rules.link_open || defaultLinkRenderer;\n\n const defaultStrongRenderer = (tokens, idx, options, _, self) =>\n self.renderToken(tokens, idx, options);\n this.#origEmRenderer =\n this.processor.renderer.rules.em_open || defaultStrongRenderer;\n }\n\n #initProcessor() {\n this.processor = new MarkdownIt('commonmark', { html: true });\n this.#storeOrigRenderers();\n this.#updateProcessorRules();\n this.#customizeLinkRenderer();\n this.customUnderlineRenderer();\n }\n\n get linkTargetBlank() {\n return this.getAttribute('link-target-blank') === 'true';\n }\n\n get contentNode() {\n return this.shadowRoot.querySelector('.content');\n }\n\n #parseChildren() {\n if (!this.processor) {\n return;\n }\n\n let html = decodeHTML(this.innerHTML);\n\n if (!html?.trim() && this.isConnected) {\n this.setAttribute('empty', 'true');\n } else {\n this.removeAttribute('empty');\n }\n\n try {\n const tokens = this.processor.parse(html, { references: undefined });\n html = this.processor.renderer.render(tokens, {\n html: true,\n breaks: true,\n });\n } catch {\n console.warn('Not parsing invalid markdown token');\n }\n\n this.contentNode.innerHTML = html;\n this.contentNode.firstChild?.setAttribute('part', 'content');\n }\n\n onReadOnlyChange(isReadOnly) {\n if (isReadOnly) {\n this.contentNode.setAttribute('inert', isReadOnly);\n } else {\n this.contentNode.removeAttribute('inert');\n }\n }\n}\n\nexport const EnrichedTextClass = compose(\n createStyleMixin({\n mappings: {\n hostWidth: { selector: () => ':host', property: 'width' },\n hostDisplay: {\n selector: () => ':host',\n property: 'display',\n fallback: 'inline-block',\n },\n hostDirection: { selector: () => ':host', property: 'direction' },\n fontSize: {},\n fontFamily: {},\n fontWeight: {},\n fontWeightBold: [\n { selector: () => ':host strong', property: 'font-weight' },\n { selector: () => ':host b', property: 'font-weight' },\n ],\n textColor: { property: 'color' },\n textLineHeight: { property: 'line-height' },\n textAlign: {},\n linkColor: { selector: 'a', property: 'color' },\n linkTextDecoration: { selector: 'a', property: 'text-decoration' },\n linkHoverTextDecoration: {\n selector: 'a:hover',\n property: 'text-decoration',\n },\n minHeight: {},\n minWidth: {},\n },\n }),\n createStyleMixin({ componentNameOverride: getComponentName('link') }),\n createStyleMixin({ componentNameOverride: getComponentName('text') }),\n stretchMixin({ triggers: [{ attr: 'full-width', value: 'true' }] }),\n draggableMixin,\n componentNameValidationMixin,\n)(EnrichedText);\n","export const disableRules = [\n 'blockquote',\n 'list',\n 'image',\n 'table',\n 'code',\n 'hr',\n 'backticks',\n 'fence',\n 'reference',\n 'heading',\n 'lheading',\n 'html_block',\n];\n","export const decodeHTML = (html) => {\n const textArea = document.createElement('textarea');\n textArea.innerHTML = html;\n return textArea.value;\n};\n","import '@descope-ui/descope-link';\n\nimport { componentName, EnrichedTextClass } from './EnrichedTextClass';\n\ncustomElements.define(componentName, EnrichedTextClass);\n\nexport { EnrichedTextClass, componentName };\n","import {\n createStyleMixin,\n draggableMixin,\n componentNameValidationMixin,\n stretchMixin,\n} from '@descope-ui/common/components-mixins';\nimport { compose } from '@descope-ui/common/utils';\nimport {\n getComponentName,\n forwardAttrs,\n injectStyle,\n} from '@descope-ui/common/components-helpers';\nimport { createBaseClass } from '@descope-ui/common/base-classes';\nimport { TextClass } from '@descope-ui/descope-text/class';\n\nexport const componentName = getComponentName('link');\n\nconst observedAttrs = ['href', 'readonly'];\n\nclass RawLink extends createBaseClass({\n componentName,\n baseSelector: ':host a',\n}) {\n static get observedAttributes() {\n return observedAttrs.concat(super.observedAttributes || []);\n }\n\n constructor() {\n super();\n\n this.attachShadow({ mode: 'open' }).innerHTML = `\n\t\t<div>\n\t\t\t<descope-text part=\"wrapper\">\n\t\t\t\t<a>\n\t\t\t\t\t<slot></slot>\n\t\t\t\t</a>\n\t\t\t</descope-text>\n\t\t</div>\n\t\t`;\n\n injectStyle(\n `\n :host {\n\t\t\tdisplay: inline-block;\n line-height: 1em;\n\t\t}\n\t\t:host a {\n\t\t\tdisplay: inline;\n\t\t}\n\n :host([ellipsis=\"true\"]) descope-text {\n display: inline-flex;\n }\n :host([ellipsis=\"true\"]) descope-text::part(text-wrapper) {\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n }\n `,\n this,\n );\n\n this.anchor = this.shadowRoot.querySelector('a');\n\n forwardAttrs(this, this.anchor, {\n includeAttrs: ['href', 'target', 'tooltip'],\n mapAttrs: {\n tooltip: 'title',\n },\n });\n\n forwardAttrs(this, this.shadowRoot.querySelector('descope-text'), {\n includeAttrs: ['mode', 'variant'],\n });\n\n this.anchor.addEventListener('click', (e) => {\n if (this.readOnly) {\n e.preventDefault();\n }\n });\n }\n\n get readOnly() {\n return this.getAttribute('readonly') === 'true';\n }\n}\n\nconst selectors = {\n host: { selector: () => ':host' },\n link: { selector: () => ':host a' },\n anchor: {},\n wrapper: { selector: () => ':host > div' },\n text: { selector: () => TextClass.componentName },\n};\n\nconst { anchor, text, host, wrapper, link } = selectors;\n\nexport const LinkClass = compose(\n createStyleMixin({\n mappings: {\n hostWidth: { ...host, property: 'width' },\n hostDirection: { ...text, property: 'direction' },\n textAlign: wrapper,\n textDecoration: {\n ...link,\n property: 'text-decoration',\n fallback: 'none',\n },\n textColor: [\n { ...anchor, property: 'color' },\n { ...text, property: TextClass.cssVarList.textColor },\n ],\n cursor: anchor,\n },\n }),\n stretchMixin({ triggers: [{ attr: 'full-width', value: 'true' }] }),\n draggableMixin,\n componentNameValidationMixin,\n)(RawLink);\n","import { componentName, LinkClass } from './LinkClass';\nimport '@descope-ui/descope-text';\n\ncustomElements.define(componentName, LinkClass);\n\nexport { LinkClass, componentName };\n","import {\n createStyleMixin,\n draggableMixin,\n componentNameValidationMixin,\n stretchMixin,\n} from '@descope-ui/common/components-mixins';\nimport { compose } from '@descope-ui/common/utils';\nimport {\n getComponentName,\n injectStyle,\n observeChildren,\n} from '@descope-ui/common/components-helpers';\nimport { createBaseClass } from '@descope-ui/common/base-classes';\n\nexport const componentName = getComponentName('text');\n\nclass RawText extends createBaseClass({\n componentName,\n baseSelector: ':host > slot',\n}) {\n constructor() {\n super();\n\n this.attachShadow({ mode: 'open' }).innerHTML = `\n <slot part=\"text-wrapper\"></slot>\n `;\n\n injectStyle(\n `\n :host {\n display: inline-block;\n line-height: 1em;\n }\n :host > slot {\n width: 100%;\n display: inline-block;\n }\n `,\n this,\n );\n }\n\n get hideWhenEmpty() {\n return this.getAttribute('hide-when-empty') === 'true';\n }\n\n init() {\n super.init();\n\n observeChildren(this, () => {\n const hasChildren = !!this.childNodes.length;\n this.style.display = !hasChildren && this.hideWhenEmpty ? 'none' : '';\n });\n }\n}\n\nconst { host } = {\n host: { selector: () => ':host' },\n};\n\nexport const TextClass = compose(\n createStyleMixin({\n mappings: {\n hostWidth: { ...host, property: 'width' },\n hostDirection: { ...host, property: 'direction' },\n fontSize: {},\n textColor: [{ property: 'color' }],\n textLineHeight: { property: 'line-height' },\n textLetterSpacing: { property: 'letter-spacing' },\n textShadow: {},\n textAlign: {},\n textTransform: {},\n fontFamily: {},\n fontStyle: {},\n fontWeight: {},\n borderWidth: {},\n borderStyle: {},\n borderColor: {},\n },\n }),\n stretchMixin({ triggers: [{ attr: 'full-width', value: 'true' }] }),\n draggableMixin,\n componentNameValidationMixin,\n)(RawText);\n","import { componentName, TextClass } from './TextClass';\n\ncustomElements.define(componentName, TextClass);\n\nexport { TextClass, componentName };\n"],"names":["componentName","EnrichedText","baseSelector","constructor","super","this","attachShadow","mode","innerHTML","bind","contentNode","addEventListener","e","target","HTMLAnchorElement","stopPropagation","observedAttributes","attributeChangedCallback","attrName","oldValue","newValue","onReadOnlyChange","customUnderlineRenderer","processor","renderer","rules","em_open","tokens","idx","options","env","self","markup","tag","em_close","linkTargetBlank","link_open","attrSet","disable","_","renderToken","html","getAttribute","shadowRoot","querySelector","trim","isConnected","setAttribute","removeAttribute","parse","references","undefined","render","breaks","console","warn","firstChild","isReadOnly","EnrichedTextClass","mappings","hostWidth","selector","property","hostDisplay","fallback","hostDirection","fontSize","fontFamily","fontWeight","fontWeightBold","textColor","textLineHeight","textAlign","linkColor","linkTextDecoration","linkHoverTextDecoration","minHeight","minWidth","componentNameOverride","triggers","attr","value","disableRules","decodeHTML","textArea","document","createElement","customElements","define","observedAttrs","RawLink","concat","anchor","includeAttrs","mapAttrs","tooltip","readOnly","preventDefault","selectors","host","link","wrapper","text","LinkClass","textDecoration","cssVarList","cursor","RawText","hideWhenEmpty","init","hasChildren","childNodes","length","style","display","TextClass","textLetterSpacing","textShadow","textTransform","fontStyle","borderWidth","borderStyle","borderColor"],"sourceRoot":""}
|