@descope/web-components-ui 1.110.0 → 1.112.0

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.
Files changed (80) hide show
  1. package/dist/cjs/index.cjs.js +2096 -1795
  2. package/dist/cjs/index.cjs.js.map +1 -1
  3. package/dist/index.esm.js +2417 -2115
  4. package/dist/index.esm.js.map +1 -1
  5. package/dist/umd/1995.js +7 -22
  6. package/dist/umd/1995.js.LICENSE.txt +0 -6
  7. package/dist/umd/1995.js.map +1 -1
  8. package/dist/umd/8961.js +1 -1
  9. package/dist/umd/8961.js.map +1 -1
  10. package/dist/umd/DescopeDev.js +1 -1
  11. package/dist/umd/DescopeDev.js.map +1 -1
  12. package/dist/umd/button-selection-group-fields-descope-button-selection-group-item-index-js.js +1 -1
  13. package/dist/umd/button-selection-group-fields-descope-button-selection-group-item-index-js.js.map +1 -1
  14. package/dist/umd/descope-alert-index-js.js +1 -1
  15. package/dist/umd/descope-alert-index-js.js.map +1 -1
  16. package/dist/umd/descope-apps-list.js +18 -0
  17. package/dist/umd/descope-apps-list.js.LICENSE.txt +23 -0
  18. package/dist/umd/descope-apps-list.js.map +1 -0
  19. package/dist/umd/descope-avatar.js +17 -1
  20. package/dist/umd/descope-avatar.js.LICENSE.txt +23 -0
  21. package/dist/umd/descope-avatar.js.map +1 -1
  22. package/dist/umd/descope-button.js +1 -1
  23. package/dist/umd/descope-button.js.map +1 -1
  24. package/dist/umd/descope-collapsible-container.js +1 -1
  25. package/dist/umd/descope-collapsible-container.js.map +1 -1
  26. package/dist/umd/descope-date-field-descope-calendar-index-js.js +1 -1
  27. package/dist/umd/descope-date-field-descope-calendar-index-js.js.map +1 -1
  28. package/dist/umd/descope-divider-index-js.js +1 -1
  29. package/dist/umd/descope-divider-index-js.js.map +1 -1
  30. package/dist/umd/descope-enriched-text.js +1 -1
  31. package/dist/umd/descope-enriched-text.js.map +1 -1
  32. package/dist/umd/descope-link.js +1 -1
  33. package/dist/umd/descope-link.js.map +1 -1
  34. package/dist/umd/descope-list-item.js +2 -0
  35. package/dist/umd/descope-list-item.js.map +1 -0
  36. package/dist/umd/descope-list.js +2 -0
  37. package/dist/umd/descope-list.js.map +1 -0
  38. package/dist/umd/descope-outbound-apps.js +339 -0
  39. package/dist/umd/descope-outbound-apps.js.LICENSE.txt +5 -0
  40. package/dist/umd/descope-outbound-apps.js.map +1 -0
  41. package/dist/umd/descope-recovery-codes.js +1 -1
  42. package/dist/umd/descope-recovery-codes.js.map +1 -1
  43. package/dist/umd/descope-scopes-list-index-js.js +1 -1
  44. package/dist/umd/descope-scopes-list-index-js.js.map +1 -1
  45. package/dist/umd/descope-security-questions-verify-index-js.js +1 -1
  46. package/dist/umd/descope-security-questions-verify-index-js.js.map +1 -1
  47. package/dist/umd/descope-text.js +1 -1
  48. package/dist/umd/descope-text.js.map +1 -1
  49. package/dist/umd/descope-timer-button.js +1 -1
  50. package/dist/umd/descope-timer-button.js.map +1 -1
  51. package/dist/umd/descope-upload-file-index-js.js +1 -1
  52. package/dist/umd/descope-upload-file-index-js.js.map +1 -1
  53. package/dist/umd/descope-user-attribute-index-js.js +1 -1
  54. package/dist/umd/descope-user-attribute-index-js.js.map +1 -1
  55. package/dist/umd/descope-user-auth-method-index-js.js +4 -4
  56. package/dist/umd/descope-user-auth-method-index-js.js.map +1 -1
  57. package/dist/umd/index.js +1 -1
  58. package/dist/umd/index.js.map +1 -1
  59. package/dist/umd/mapping-fields-descope-mappings-field-index-js.js +1 -1
  60. package/dist/umd/mapping-fields-descope-mappings-field-index-js.js.map +1 -1
  61. package/dist/umd/mapping-fields-descope-saml-group-mappings-index-js.js +1 -1
  62. package/dist/umd/mapping-fields-descope-saml-group-mappings-index-js.js.map +1 -1
  63. package/package.json +21 -17
  64. package/src/components/descope-scopes-list/index.js +2 -1
  65. package/src/components/descope-user-auth-method/UserAuthMethodClass.js +72 -18
  66. package/src/index.cjs.js +0 -3
  67. package/src/index.js +0 -2
  68. package/src/theme/components/index.js +5 -3
  69. package/dist/umd/descope-apps-list-index-js.js +0 -2
  70. package/dist/umd/descope-apps-list-index-js.js.map +0 -1
  71. package/dist/umd/descope-list-index-js.js +0 -2
  72. package/dist/umd/descope-list-index-js.js.map +0 -1
  73. package/src/components/descope-apps-list/AppsListClass.js +0 -97
  74. package/src/components/descope-apps-list/index.js +0 -8
  75. package/src/components/descope-list/ListClass.js +0 -156
  76. package/src/components/descope-list/ListItemClass.js +0 -58
  77. package/src/components/descope-list/index.js +0 -7
  78. package/src/theme/components/appsList.js +0 -36
  79. package/src/theme/components/list/list.js +0 -56
  80. package/src/theme/components/list/listItem.js +0 -41
@@ -1 +1 @@
1
- {"version":3,"file":"mapping-fields-descope-saml-group-mappings-index-js.js","mappings":"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","sources":["webpack://@descope/web-components-ui/./src/components/mapping-fields/descope-mappings-field/descope-mappings-field-internal/MappingsFieldInternal.js","webpack://@descope/web-components-ui/./src/baseClasses/createBaseInputClass.js","webpack://@descope/web-components-ui/./src/components/descope-text-field/textFieldMappings.js","webpack://@descope/web-components-ui/../components/descope-image/src/component/ImageClass.js","webpack://@descope/web-components-ui/./src/components/mapping-fields/descope-saml-group-mappings/descope-saml-group-mappings-internal/index.js","webpack://@descope/web-components-ui/../components/descope-button/src/component/clickableMixin.js","webpack://@descope/web-components-ui/../components/descope-image/src/component/helpers.js","webpack://@descope/web-components-ui/../components/descope-button/src/component/ButtonClass.js","webpack://@descope/web-components-ui/./src/components/descope-text-field/index.js","webpack://@descope/web-components-ui/./src/components/mapping-fields/descope-mappings-field/descope-mapping-item/MappingItem.js","webpack://@descope/web-components-ui/./src/components/mapping-fields/descope-mappings-field/descope-mapping-item/index.js","webpack://@descope/web-components-ui/../components/descope-button/src/component/index.js","webpack://@descope/web-components-ui/./src/components/mapping-fields/descope-mappings-field/descope-mappings-field-internal/index.js","webpack://@descope/web-components-ui/./src/components/mapping-fields/descope-saml-group-mappings/SamlGroupMappingsClass.js","webpack://@descope/web-components-ui/./src/components/mapping-fields/descope-saml-group-mappings/index.js","webpack://@descope/web-components-ui/../components/descope-text/src/component/index.js","webpack://@descope/web-components-ui/../components/descope-text/src/component/TextClass.js","webpack://@descope/web-components-ui/./src/helpers/themeHelpers/resetHelpers.js","webpack://@descope/web-components-ui/./src/components/descope-text-field/TextFieldClass.js","webpack://@descope/web-components-ui/./src/components/mapping-fields/descope-mappings-field/MappingsFieldClass.js","webpack://@descope/web-components-ui/./src/components/mapping-fields/descope-mappings-field/index.js","webpack://@descope/web-components-ui/./src/components/mapping-fields/descope-saml-group-mappings/descope-saml-group-mappings-internal/SamlGroupMappingsInternal.js","webpack://@descope/web-components-ui/../components/descope-icon/src/component/IconClass.js"],"sourcesContent":["import { createBaseInputClass } from '../../../../baseClasses/createBaseInputClass';\nimport {\n getComponentName,\n forwardAttrs,\n observeChildren,\n} from '../../../../helpers/componentHelpers';\n\nexport const componentName = getComponentName('mappings-field-internal');\n\nconst BaseInputClass = createBaseInputClass({ componentName, baseSelector: 'div' });\n\nclass MappingsFieldInternal extends BaseInputClass {\n #errorItem;\n\n static get observedAttributes() {\n return [].concat(BaseInputClass.observedAttributes || [], [\n 'label-value',\n 'label-attr',\n 'button-label',\n 'invalid',\n 'readonly',\n 'disabled',\n 'st-error-message-icon',\n 'st-error-message-icon-size',\n 'st-error-message-icon-padding',\n ]);\n }\n\n // eslint-disable-next-line class-methods-use-this\n isValidDataType(data) {\n try {\n return data.every(\n (obj) =>\n typeof obj === 'object' &&\n !Array.isArray(obj) &&\n Object.getOwnPropertyNames(obj).length === 1 &&\n typeof obj[Object.keys(obj)[0]] === 'string' &&\n obj[Object.keys(obj)[0]].trim() !== ''\n );\n } catch (e) {\n return false;\n }\n }\n\n get labelValue() {\n return this.getAttribute('label-value') || 'Value';\n }\n\n get labelAttr() {\n return this.getAttribute('label-attr') || 'Attribute';\n }\n\n get buttonLabel() {\n return this.getAttribute('button-label') || 'Add mapping';\n }\n\n get options() {\n return this.getAttribute('options') || [];\n }\n\n addNewMappingItem(focusNewItem) {\n const newMappingItem = document.createElement('descope-mapping-item');\n newMappingItem.setAttribute('bordered', 'true');\n this.mappingsContainerEle.appendChild(newMappingItem);\n forwardAttrs(this, newMappingItem, {\n includeAttrs: [\n 'size',\n 'full-width',\n 'separator',\n 'options',\n 'disabled',\n 'st-error-message-icon',\n 'st-error-message-icon-size',\n 'st-error-message-icon-padding',\n ],\n });\n // This needs to be done with the timeout, otherwise the validation is performed\n // before the new item is added and thus returns a wrong result\n setTimeout(() => {\n this.setCustomValidity('');\n newMappingItem.addEventListener('mapping-item-removed', () => {\n // If the removed item was the one that was invalid, we need to reset the invalid indication for the internal\n if (newMappingItem === this.#errorItem) {\n this.resetInvalidIndication();\n this.#errorItem = undefined;\n }\n newMappingItem.remove();\n this.setCustomValidity('');\n });\n this.dispatchEvent(new CustomEvent('mapping-item-added', { bubbles: true, composed: true }));\n if (focusNewItem) {\n newMappingItem.focus();\n }\n }, 0);\n return newMappingItem;\n }\n\n get items() {\n return Array.from(this.mappingsContainerEle.querySelectorAll('descope-mapping-item'));\n }\n\n get value() {\n return this.items.reduce((acc, item) => {\n if (!item.value) {\n return acc;\n }\n\n return [...acc, item.value];\n }, []);\n }\n\n set value(mappings) {\n if (!this.isValidDataType(mappings)) {\n // eslint-disable-next-line no-console\n console.error(\n 'received invalid value to set - should be an array of objects with one key-value pair'\n );\n return;\n }\n\n const currentItems = this.items;\n\n // Remove extra mapping items we don't need\n if (currentItems.length > mappings.length) {\n for (let i = mappings.length; i < currentItems.length; i++) {\n this.mappingsContainerEle.removeChild(currentItems[i]);\n }\n }\n\n // Add or update items\n mappings.forEach((mapping, index) => {\n const mappingItem = currentItems[index];\n if (mappingItem) {\n // Set existing item value\n mappingItem.value = mapping;\n } else {\n // Add new item\n const newMappingItem = this.addNewMappingItem(false);\n // Setting the new item value needs to be done with the timeout,\n // otherwise the value is not set correctly\n setTimeout(() => {\n newMappingItem.value = mapping;\n }, 0);\n }\n });\n }\n\n constructor() {\n super();\n\n this.innerHTML = `\n <div class=\"labels-container\" part=\"labels\"></div>\n <div class=\"mappings-container\"></div>\n <div class=\"button-container\"></div>\n `;\n\n this.labelsEle = this.querySelector('.labels-container');\n this.mappingsContainerEle = this.querySelector('.mappings-container');\n this.buttonContainer = this.querySelector('.button-container');\n }\n\n initLabels() {\n this.labelsEle.innerHTML = `\n <descope-text variant=\"body2\" part=\"value-label\">${this.labelValue}</descope-text>\n <descope-text variant=\"body2\" part=\"attr-label\">${this.labelAttr}</descope-text>\n `;\n }\n\n initAddButton() {\n this.buttonContainer.innerHTML = `\n <descope-button variant=\"link\" mode=\"primary\" disabled=\"${this.isDisabled}\">\n <vaadin-icon icon=\"vaadin:plus\"></vaadin-icon>\n ${this.buttonLabel}\n </descope-button>\n `;\n const button = this.querySelector('descope-button');\n button.onclick = () => {\n this.addNewMappingItem(true);\n };\n forwardAttrs(this, button, {\n includeAttrs: ['disabled'],\n });\n }\n\n #onMappingsContainerChildrenChange() {\n this.labelsEle.style.display = this.items.length ? 'grid' : 'none';\n }\n\n init() {\n // This event listener needs to be placed before the super.init() call\n this.addEventListener('focus', (e) => {\n // we want to ignore focus events we are dispatching\n if (e.isTrusted) {\n const focusedElement =\n this.#errorItem || this.items[0] || this.querySelector('descope-button');\n focusedElement.focus();\n }\n });\n\n super.init?.();\n this.initLabels();\n this.initAddButton();\n\n // This event listener is responsible for removing the invalid attribute\n // from the internal once the invalid item turns valid\n this.addEventListener('input', () => {\n const isErrorItemMounted = this.mappingsContainerEle.contains(this.#errorItem);\n if (isErrorItemMounted && this.#errorItem?.checkValidity()) {\n // Item has changed, it was invalid before and now it's valid\n this.resetInvalidIndication();\n this.#errorItem.removeAttribute('invalid');\n this.#errorItem = undefined;\n }\n });\n\n observeChildren(this.mappingsContainerEle, this.#onMappingsContainerChildrenChange.bind(this));\n }\n\n resetInvalidIndication() {\n this.removeAttribute('invalid');\n }\n\n getValidity() {\n const errorItem = this.items.find((item) => !item.checkValidity());\n if (errorItem) {\n return errorItem.validity;\n }\n\n return {};\n }\n\n #handleInvalidMappings(isInvalid) {\n if (isInvalid) {\n this.#errorItem = this.items.find((item) => !item.checkValidity());\n this.#errorItem?.reportValidity();\n this.#errorItem?.setAttribute('invalid', 'true');\n }\n }\n\n attributeChangedCallback(attrName, oldValue, newValue) {\n super.attributeChangedCallback?.(attrName, oldValue, newValue);\n if (attrName === 'label-value' || attrName === 'label-attr') {\n this.initLabels();\n }\n if (attrName === 'button-label') {\n this.initAddButton();\n }\n if (attrName === 'invalid') {\n this.#handleInvalidMappings(newValue === 'true');\n }\n if (attrName === 'readonly') {\n this.toggleAttribute('inert', newValue === 'true');\n }\n }\n}\n\nexport default MappingsFieldInternal;\n","import { compose } from '../helpers';\nimport {\n changeMixin,\n inputEventsDispatchingMixin,\n inputValidationMixin,\n normalizeBooleanAttributesMixin,\n} from '../mixins';\nimport { createBaseClass } from './createBaseClass';\n\nexport const createBaseInputClass = (...args) =>\n compose(\n inputValidationMixin,\n changeMixin,\n normalizeBooleanAttributesMixin,\n inputEventsDispatchingMixin\n )(createBaseClass(...args));\n","const {\n host,\n label,\n placeholder,\n requiredIndicator,\n inputField,\n input,\n inputMask,\n helperText,\n errorMessage,\n disabledPlaceholder,\n inputDisabled,\n inputIcon,\n externalInput,\n externalInputDisabled,\n externalPlaceholder,\n externalDisabledPlaceholder,\n} = {\n host: { selector: () => ':host' },\n label: { selector: '::part(label)' },\n requiredIndicator: { selector: '[required]::part(required-indicator)::after' },\n placeholder: [\n { selector: '> input:placeholder-shown' },\n { selector: () => ':host::slotted(input:placeholder-shown)' },\n ],\n disabledPlaceholder: { selector: '> input:disabled::placeholder' },\n inputField: { selector: '::part(input-field)' },\n input: { selector: 'input' },\n inputMask: { selector: '::part(input-field)::before' },\n inputDisabled: { selector: 'input:disabled' },\n helperText: { selector: '::part(helper-text)' },\n errorMessage: { selector: '::part(error-message)' },\n inputIcon: { selector: 'vaadin-icon' },\n externalInput: { selector: () => '::slotted(input)' },\n externalInputDisabled: { selector: () => '::slotted(input:disabled)' },\n externalPlaceholder: { selector: () => '::slotted(input:placeholder-shown)' },\n externalDisabledPlaceholder: { selector: () => '::slotted(input:disabled::placeholder)' },\n};\n\nexport default {\n // we apply font-size also on the host so we can set its width with em\n fontSize: [{}, host],\n fontFamily: [label, inputField, helperText, errorMessage],\n\n labelFontSize: { ...label, property: 'font-size' },\n labelFontWeight: { ...label, property: 'font-weight' },\n\n labelTextColor: [\n { ...label, property: 'color' },\n { ...requiredIndicator, property: 'color' },\n { ...label, property: '-webkit-text-fill-color' },\n { ...requiredIndicator, property: '-webkit-text-fill-color' },\n ],\n\n hostWidth: { ...host, property: 'width' },\n hostMinWidth: { ...host, property: 'min-width' },\n hostDirection: { ...host, property: 'direction' },\n inputDirection: { ...input, property: 'direction' },\n\n inputBackgroundColor: [\n { ...inputField, property: 'background-color' },\n { ...inputMask, property: 'background-color' },\n ],\n\n errorMessageTextColor: { ...errorMessage, property: 'color' },\n errorMessageIcon: { ...errorMessage, property: 'background-image' },\n errorMessageIconSize: { ...errorMessage, property: 'background-size' },\n errorMessageIconPadding: { ...errorMessage, property: 'padding-inline-start' },\n errorMessageIconRepeat: { ...errorMessage, property: 'background-repeat' },\n errorMessageIconPosition: { ...errorMessage, property: 'background-position' },\n errorMessageFontSize: { ...errorMessage, property: 'font-size' },\n\n helperTextColor: { ...helperText, property: '-webkit-text-fill-color' },\n\n inputValueTextColor: [\n { ...inputField, property: 'color' },\n { ...inputDisabled, property: '-webkit-text-fill-color' },\n { ...externalInputDisabled, property: '-webkit-text-fill-color' },\n ],\n inputCaretTextColor: [\n { ...input, property: 'caret-color' },\n { ...externalInput, property: 'caret-color' },\n ],\n\n labelRequiredIndicator: { ...requiredIndicator, property: 'content' },\n\n inputBorderColor: { ...inputField, property: 'border-color' },\n inputBorderWidth: { ...inputField, property: 'border-width' },\n inputBorderStyle: { ...inputField, property: 'border-style' },\n inputBorderRadius: { ...inputField, property: 'border-radius' },\n\n inputHeight: { ...inputField, property: 'height' },\n inputHorizontalPadding: [\n { ...input, property: 'padding-left' },\n { ...input, property: 'padding-right' },\n { ...externalInput, property: 'padding-left' },\n { ...externalInput, property: 'padding-right' },\n ],\n\n inputOutlineColor: { ...inputField, property: 'outline-color' },\n inputOutlineStyle: { ...inputField, property: 'outline-style' },\n inputOutlineWidth: { ...inputField, property: 'outline-width' },\n inputOutlineOffset: { ...inputField, property: 'outline-offset' },\n\n textAlign: {},\n\n inputTextAlign: [\n { ...input, property: 'text-align' },\n { ...externalInput, property: 'text-align' },\n ],\n\n inputPlaceholderColor: [\n { selector: () => ':host input:placeholder-shown', property: 'color' },\n { ...externalPlaceholder, property: 'color' },\n { ...placeholder, property: 'color' },\n { ...disabledPlaceholder, property: '-webkit-text-fill-color' },\n { ...externalDisabledPlaceholder, property: '-webkit-text-fill-color' },\n ],\n\n labelPosition: { ...label, property: 'position' },\n labelTopPosition: { ...label, property: 'top' },\n labelHorizontalPosition: [\n { ...label, property: 'left' },\n { ...label, property: 'right' },\n ],\n inputTransformY: { ...label, property: 'transform' },\n inputTransition: { ...label, property: 'transition' },\n marginInlineStart: { ...label, property: 'margin-inline-start' },\n placeholderOpacity: [\n { selector: '> input:placeholder-shown', property: 'opacity' },\n { ...externalPlaceholder, property: 'opacity' },\n ],\n inputVerticalAlignment: [\n { ...inputField, property: 'align-items' },\n { ...externalInput, property: 'align-items' },\n ],\n valueInputHeight: [\n { ...input, property: 'height' },\n { ...externalInput, property: 'height' },\n ],\n valueInputMarginBottom: [\n { ...input, property: 'margin-bottom' },\n { ...externalInput, property: 'margin-bottom' },\n ],\n\n inputIconOffset: [\n { ...inputIcon, property: 'margin-right' },\n { ...inputIcon, property: 'margin-left' },\n ],\n inputIconSize: { ...inputIcon, property: 'font-size' },\n inputIconColor: { ...inputIcon, property: 'color' },\n};\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.src);\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 src() {\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.src);\n\n createImage(this.src, 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.src === 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 SamlGroupMappingsInternal, { componentName } from './SamlGroupMappingsInternal';\n\ncustomElements.define(componentName, SamlGroupMappingsInternal);\n","export const clickableMixin = (superclass) =>\n class ClickableMixinClass extends superclass {\n get isLoading() {\n return this.getAttribute('loading') === 'true';\n }\n\n click() {\n this.isLoading || super.click();\n }\n };\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 { compose } from '@descope-ui/common/utils';\nimport { getComponentName } from '@descope-ui/common/components-helpers';\nimport {\n createStyleMixin,\n draggableMixin,\n createProxy,\n componentNameValidationMixin,\n} from '@descope-ui/common/components-mixins';\nimport { IconClass } from '@descope-ui/descope-icon/class';\nimport { clickableMixin } from './clickableMixin';\n\nexport const componentName = getComponentName('button');\n\nconst resetStyles = `\n\t:host {\n\t\tdisplay: inline-block;\n\t\tbox-sizing: border-box;\n\t}\n\tvaadin-button::before,\n\tvaadin-button::after {\n\t\topacity: 0;\n\t}\n\tvaadin-button {\n\t\tmargin: 0;\n\t\tmin-width: 0;\n\t\twidth: 100%;\n\t\theight: auto;\n\t\tbox-shadow: none;\n\t}\n\tvaadin-button::part(label) {\n\t\tpadding: 0;\n width: 100%;\n\t}\n\tvaadin-button::part(prefix) {\n\t\tmargin-left: 0;\n\t\tmargin-right: 0;\n\t}\n`;\n\nconst iconStyles = `\n\tvaadin-button::part(prefix),\n\tvaadin-button::part(label) {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t}\n`;\n\nconst editorOverrides = `vaadin-button::part(label) { pointer-events: none; }`;\n\nconst { host, label, slottedIcon } = {\n host: { selector: () => ':host' },\n label: { selector: '::part(label)' },\n slottedIcon: { selector: () => '::slotted(descope-icon)' },\n};\n\nlet loadingIndicatorStyles;\n\nexport const ButtonClass = compose(\n createStyleMixin({\n mappings: {\n hostWidth: { property: 'width' },\n hostHeight: { property: 'height' },\n hostDirection: { ...host, property: 'direction' },\n fontSize: {},\n fontFamily: {},\n\n cursor: {},\n backgroundColor: {},\n\n outlineOffset: {},\n outlineColor: {},\n outlineStyle: {},\n outlineWidth: {},\n\n borderRadius: {},\n borderColor: {},\n borderStyle: {},\n borderWidth: {},\n\n verticalPadding: [{ property: 'padding-top' }, { property: 'padding-bottom' }],\n horizontalPadding: [\n { property: 'padding-right', fallback: '0.875em' },\n { property: 'padding-left', fallback: '0.875em' },\n ],\n\n labelTextColor: { property: 'color' },\n iconColor: {\n\t\tselector: () => `::slotted(*)`,\n\t\tproperty: IconClass.cssVarList.fill\n\t },\n labelTextDecoration: { ...label, property: 'text-decoration' },\n labelSpacing: { ...label, property: 'gap' },\n textAlign: { ...label, property: 'justify-content', fallback: 'center' },\n\n iconSize: [\n { ...slottedIcon, property: 'width' },\n { ...slottedIcon, property: 'height' },\n ],\n },\n }),\n clickableMixin,\n draggableMixin,\n componentNameValidationMixin\n)(\n createProxy({\n slots: ['', 'prefix', 'label', 'suffix'],\n wrappedEleName: 'vaadin-button',\n style: () => `\n\t\t\t${resetStyles}\n\t\t\t${iconStyles}\n\t\t\t${loadingIndicatorStyles}\n\t\t\t${editorOverrides}\n\t\t\t:host {\n\t\t\t\tpadding: calc(var(${ButtonClass.cssVarList.outlineWidth}) + var(${ButtonClass.cssVarList.outlineOffset}));\n\t\t\t}\n :host([full-width=\"true\"]) {\n width: var(${ButtonClass.cssVarList.hostWidth});\n }\n\t\t\tvaadin-button {\n\t\t\t\theight: calc(var(${ButtonClass.cssVarList.hostHeight}) - var(${ButtonClass.cssVarList.outlineWidth}) - var(${ButtonClass.cssVarList.outlineOffset}));\n\t\t\t}\n\t\t\t[square=\"true\"]:not([full-width=\"true\"]) {\n\t\t\t\twidth: calc(var(${ButtonClass.cssVarList.hostWidth}) - var(${ButtonClass.cssVarList.outlineWidth}) - var(${ButtonClass.cssVarList.outlineOffset}));\n padding: 0;\n\t\t\t}\n\t\t`,\n excludeAttrsSync: ['tabindex'],\n componentName,\n })\n);\n\nconst { color, fontSize } = ButtonClass.cssVarList;\nloadingIndicatorStyles = `\n\t@keyframes spin {\n\t\t0% { -webkit-transform: rotate(0deg); }\n\t\t100% { -webkit-transform: rotate(360deg); }\n\t}\n\t:host([loading=\"true\"]) ::before {\n\t\tanimation: spin 2s linear infinite;\n\t\tposition: absolute;\n\t\tcontent: '';\n\t\tz-index: 1;\n\t\tbox-sizing: border-box;\n\t\tborder-radius: 50%;\n\t\tborder-bottom-color: transparent;\n\t\tborder-left-color: transparent;\n\t\tborder-style: solid;\n\t\tcolor: var(${color});\n\t\ttop: calc(50% - (var(${fontSize}) / 2));\n\t\tleft: calc(50% - (var(${fontSize}) / 2));\n\t\tborder-width: calc(var(${fontSize}) / 10);\n\t\twidth: var(${fontSize});\n\t\theight: var(${fontSize});\n\t}\n\t:host([disabled=\"true\"]),\n\t:host([loading=\"true\"]) {\n\t\tpointer-events: none;\n\t}\n\t:host([loading=\"true\"]) ::part(prefix),\n\t:host([loading=\"true\"]) ::part(label) {\n\t\tvisibility: hidden;\n\t}\n`;\n","import '@vaadin/text-field';\nimport '@vaadin/icons';\nimport '@vaadin/icon';\n\nimport { componentName, TextFieldClass } from './TextFieldClass';\n\ncustomElements.define(componentName, TextFieldClass);\n\nexport { TextFieldClass, componentName };\n","import { injectStyle } from '@descope-ui/common/components-helpers';\nimport { createBaseInputClass } from '../../../../baseClasses/createBaseInputClass';\nimport { forwardAttrs, getComponentName } from '../../../../helpers/componentHelpers';\n\nexport const componentName = getComponentName('mapping-item');\n\nconst inputAttrs = [\n 'size',\n 'bordered',\n 'readonly',\n 'full-width',\n 'disabled',\n 'st-error-message-icon',\n 'st-error-message-icon-size',\n 'st-error-message-icon-padding',\n];\n\nconst BaseInputClass = createBaseInputClass({ componentName, baseSelector: 'div' });\n\nclass MappingItem extends BaseInputClass {\n static get observedAttributes() {\n return [].concat(BaseInputClass.observedAttributes || [], inputAttrs, [\n 'separator',\n 'options',\n 'invalid',\n 'disabled',\n ]);\n }\n\n get separator() {\n return this.getAttribute('separator') || 'map to';\n }\n\n get value() {\n const attributeValue = this.attributeInput.value;\n const inputValue = this.valueInput.value;\n if (attributeValue && inputValue) {\n return { [attributeValue]: inputValue };\n }\n return null;\n }\n\n set value(mapping) {\n if (Object.entries(mapping).length !== 1) {\n // eslint-disable-next-line no-console\n console.error(\n 'descope-mapping item expected expects only one key-value pair in the value but received: ',\n mapping\n );\n return;\n }\n const [attribute, value] = Object.entries(mapping)[0];\n this.valueInput.value = value;\n this.attributeInput.value = attribute;\n // The event needs to be dispatched to trigger the validation if setting the value externally\n this.dispatchEvent(new InputEvent('input', { bubbles: true, composed: true }));\n }\n\n constructor() {\n super();\n\n this.attachShadow({ mode: 'open' }).innerHTML = `\n <div class=\"wrapper\" part=\"wrapper\">\n <descope-text-field required=\"true\"></descope-text-field>\n <div class=\"separator\" part=\"separator\">${this.separator}</div>\n <descope-combo-box\n item-label-path=\"data-name\"\n item-value-path=\"data-id\"\n required=\"true\"\n >\n </descope-combo-box>\n <descope-button variant=\"link\" mode=\"primary\">\n <vaadin-icon icon=\"vaadin:minus\"></vaadin-icon>\n </descope-button>\n </div>\n\t`;\n\n injectStyle(\n `\n .wrapper {\n display: flex;\n }\n .separator {\n text-align: center;\n flex-shrink: 0;\n }\n `,\n this\n );\n\n this.valueInput = this.shadowRoot.querySelector('descope-text-field');\n this.attributeInput = this.shadowRoot.querySelector('descope-combo-box');\n this.inputs = [this.valueInput, this.attributeInput];\n this.removeButton = this.shadowRoot.querySelector('descope-button');\n\n forwardAttrs(this, this.valueInput, {\n includeAttrs: inputAttrs,\n });\n forwardAttrs(this, this.attributeInput, {\n includeAttrs: [...inputAttrs, 'options'],\n mapAttrs: { options: 'data' },\n });\n forwardAttrs(this, this.removeButton, {\n includeAttrs: ['disabled'],\n });\n }\n\n initRemoveButton() {\n this.removeButton.addEventListener('click', () =>\n this.dispatchEvent(new CustomEvent('mapping-item-removed', { bubbles: true, composed: true }))\n );\n }\n\n init() {\n super.init?.();\n this.initRemoveButton();\n }\n\n getValidity() {\n const attributeValue = this.attributeInput.value;\n const inputValue = this.valueInput.value;\n if (!attributeValue || !inputValue) {\n return { badInput: true };\n }\n return {};\n }\n\n reportValidity() {\n this.inputs.forEach((input) => input.reportValidity());\n }\n\n focus() {\n const focusedElement =\n this.checkValidity() || !this.valueInput.checkValidity()\n ? this.valueInput\n : this.attributeInput;\n focusedElement.focus();\n }\n\n handleSeparatorChange() {\n this.shadowRoot.querySelector('.separator').textContent = this.separator;\n }\n\n #handleInvalidMapping(invalid) {\n if (invalid === 'true') {\n const inputValue = this.valueInput.value;\n if (!inputValue) {\n this.valueInput.setAttribute('invalid', 'true');\n this.valueInput.setAttribute('error-message', this.defaultErrorMsgValueMissing);\n }\n\n const attributeValue = this.attributeInput.value;\n if (!attributeValue) {\n this.attributeInput.setAttribute('invalid', 'true');\n this.attributeInput.setAttribute('error-message', this.defaultErrorMsgValueMissing);\n }\n }\n }\n\n attributeChangedCallback(attrName, oldValue, newValue) {\n super.attributeChangedCallback?.(attrName, oldValue, newValue);\n\n if (attrName === 'separator') {\n this.handleSeparatorChange();\n }\n\n if (attrName === 'invalid') {\n this.#handleInvalidMapping(newValue);\n }\n }\n}\n\nexport default MappingItem;\n","import MappingItem, { componentName } from './MappingItem';\n\ncustomElements.define(componentName, MappingItem);\n","import { componentName, ButtonClass } from './ButtonClass';\nimport '@vaadin/button';\n\ncustomElements.define(componentName, ButtonClass);\n\nexport { ButtonClass, componentName };\n","import MappingsFieldInternal, { componentName } from './MappingsFieldInternal';\n\ncustomElements.define(componentName, MappingsFieldInternal);\n","import {\n createStyleMixin,\n draggableMixin,\n createProxy,\n proxyInputMixin,\n componentNameValidationMixin,\n} from '../../../mixins';\nimport { compose } from '../../../helpers';\nimport { forwardAttrs, getComponentName, syncAttrs } from '../../../helpers/componentHelpers';\nimport { componentName as descopeInternalComponentName } from './descope-saml-group-mappings-internal/SamlGroupMappingsInternal';\n\nexport const componentName = getComponentName('saml-group-mappings');\n\nconst customMixin = (superclass) =>\n class SamlGroupMappingsMixinClass extends superclass {\n init() {\n super.init?.();\n\n const template = document.createElement('template');\n\n template.innerHTML = `\n <${descopeInternalComponentName}\n tabindex=\"-1\"\n ></${descopeInternalComponentName}>\n `;\n\n this.baseElement.appendChild(template.content.cloneNode(true));\n\n this.inputElement = this.shadowRoot.querySelector(descopeInternalComponentName);\n\n forwardAttrs(this, this.inputElement, {\n includeAttrs: [\n 'size',\n 'full-width',\n 'label-group',\n 'label-value',\n 'label-attr',\n 'button-label',\n 'separator',\n 'options',\n 'readonly',\n 'disabled',\n ],\n });\n\n syncAttrs(this, this.inputElement, { includeAttrs: ['invalid'] });\n }\n };\n\nconst { host, groupInput, errorMessage } = {\n host: { selector: () => ':host' },\n groupInput: { selector: 'descope-text-field' },\n errorMessage: { selector: '::part(error-message)' },\n};\n\nexport const SamlGroupMappingsClass = compose(\n createStyleMixin({\n mappings: {\n hostWidth: { ...host, property: 'width' },\n hostDirection: { ...host, property: 'direction' },\n groupNameInputMarginBottom: { ...groupInput, property: 'margin-bottom' },\n errorMessageIcon: { ...errorMessage, property: 'background-image' },\n errorMessageIconSize: { ...errorMessage, property: 'background-size' },\n errorMessageIconPadding: { ...errorMessage, property: 'padding-inline-start' },\n errorMessageIconRepeat: { ...errorMessage, property: 'background-repeat' },\n errorMessageIconPosition: { ...errorMessage, property: 'background-position' },\n errorMessageFontSize: { ...errorMessage, property: 'font-size' },\n },\n }),\n draggableMixin,\n proxyInputMixin({\n proxyProps: ['value', 'selectionStart'],\n inputEvent: 'input',\n triggerValidationEvents: ['mapping-item-added', 'mapping-item-removed'],\n proxyParentValidation: true,\n }),\n componentNameValidationMixin,\n customMixin\n)(\n createProxy({\n slots: [],\n wrappedEleName: 'vaadin-custom-field',\n style: () => `\n :host {\n display: inline-flex;\n max-width: 100%;\n direction: ltr;\n }\n\n vaadin-custom-field {\n line-height: unset;\n width: 100%;\n }\n\n descope-text-field {\n width: auto;\n }\n\n descope-mappings-field {\n display: block;\n }\n `,\n excludeAttrsSync: [\n 'tabindex',\n 'label-group',\n 'label-value',\n 'label-attr',\n 'button-label',\n 'separator',\n 'options',\n 'error-message',\n ],\n componentName,\n })\n);\n\nexport default SamlGroupMappingsClass;\n","import '@vaadin/custom-field';\n\nimport { componentName, SamlGroupMappingsClass } from './SamlGroupMappingsClass';\nimport '../../descope-text-field';\nimport '../descope-mappings-field';\nimport './descope-saml-group-mappings-internal';\n\ncustomElements.define(componentName, SamlGroupMappingsClass);\n\nexport { SamlGroupMappingsClass, componentName };\n","import { componentName, TextClass } from './TextClass';\n\ncustomElements.define(componentName, TextClass);\n\nexport { TextClass, 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: { selector: () => ':host', property: 'width' },\n hostDirection: { selector: () => ':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","export const useHostExternalPadding = (cssVarList) => `\n :host {\n padding: calc(var(${cssVarList.inputOutlineWidth}) + var(${cssVarList.inputOutlineOffset}))\n }\n`;\n\nexport const resetInputFieldUnderlayingBorder = (name) => `\n ${name}::part(input-field)::after {\n border: none;\n }\n`;\n\nexport const resetInitialHeight = (name) => `\n ${name}::before {\n\t\theight: unset;\n\t}\n`;\n\nexport const resetInputElement = (name) => `\n ${name} > input {\n -webkit-mask-image: none;\n min-height: 0;\n box-sizing: border-box;\n }\n`;\n\nexport const resetInputContainer = (name) => `\n ${name} {\n margin: 0;\n padding: 0;\n width: 100%;\n height: 100%;\n box-sizing: border-box;\n }\n`;\n\nexport const resetInputField = (name) => `\n ${name}::part(input-field) {\n overflow: hidden;\n padding: 0;\n box-shadow: none;\n }\n`;\n\nexport const resetInputCursor = (name) => `\n ${name} > label,\n ${name}::part(label),\n ${name}::part(required-indicator) {\n cursor: pointer;\n }\n`;\n\nexport const resetInputPlaceholder = (name, ele = 'input') => `\n ${name}[disabled] > ${ele}:placeholder-shown,\n\t${name}[readonly] > ${ele}:placeholder-shown {\n\t\topacity: 1;\n\t}\n`;\n\nexport const resetInputAutoFill = (name, cssVarList) => `\n ${name} input:-webkit-autofill,\n ${name} input:-webkit-autofill::first-line,\n ${name} input:-webkit-autofill:hover,\n ${name} input:-webkit-autofill:active,\n ${name} input:-webkit-autofill:focus {\n -webkit-text-fill-color: var(${cssVarList.inputValueTextColor});\n box-shadow: 0 0 0 var(${cssVarList.inputHeight}) var(${cssVarList.inputBackgroundColor}) inset;\n }\n`;\n\nexport const resetInputFieldDefaultWidth = () => `\n :host {\n --vaadin-field-default-width: auto;\n box-sizing: border-box;\n }\n`;\n\nexport const resetInputReadonlyStyle = (name) => `\n ${name}::part(input-field)::after {\n opacity: 0;\n }\n`;\n\nexport const resetInputFieldInvalidBackgroundColor = (name) => `\n ${name}::part(input-field)::after {\n background: none;\n }\n`;\n\nexport const resetInputOverrides = (name, cssVarList) => `\n ${resetInputContainer(name)}\n ${resetInputCursor(name)}\n ${resetInputPlaceholder(name)}\n ${resetInputField(name)}\n ${resetInputAutoFill(name, cssVarList)}\n ${resetInputFieldInvalidBackgroundColor(name)}\n ${resetInitialHeight(name)}\n ${resetInputElement(name)}\n ${resetInputFieldUnderlayingBorder(name)}\n`;\n\n// This function is used to support RTL correctly for input components.\n// It also fixes the error message to be displayed LTR since we currently\n// don't support RTL for error messages.\nexport const resetInputLabelPosition = (name) => `\n :host ::part(error-message) {\n direction: ltr;\n }\n :host([required]) ::part(required-indicator) {\n width: 1em;\n display: inline-flex;\n }\n :host([required]) ::part(required-indicator)::after {\n position: static;\n }\n :host([has-label]) ::part(label) {\n padding-right: 0;\n padding-bottom: 0;\n display: flex;\n width: 100%;\n }\n ${name} [slot=\"label\"] {\n max-width: calc(100% - 1em);\n overflow: hidden;\n text-overflow: ellipsis;\n padding-bottom: 0.5em;\n }\n`;\n\nexport const inputFloatingLabelStyle = () => {\n return `\n :host([label-type=\"floating\"]) {\n position: relative;\n }\n :host([label-type=\"floating\"][has-label]) > ::part(label) {\n z-index: 1;\n padding: 0;\n width: auto;\n }\n `;\n};\n","import {\n createStyleMixin,\n draggableMixin,\n createProxy,\n proxyInputMixin,\n componentNameValidationMixin,\n} from '../../mixins';\nimport textFieldMappings from './textFieldMappings';\nimport { compose } from '../../helpers';\nimport { getComponentName } from '../../helpers/componentHelpers';\nimport {\n inputFloatingLabelStyle,\n resetInputLabelPosition,\n resetInputOverrides,\n useHostExternalPadding,\n} from '../../helpers/themeHelpers/resetHelpers';\n\nexport const componentName = getComponentName('text-field');\n\nconst observedAttrs = ['type', 'label-type', 'copy-to-clipboard'];\n\nconst customMixin = (superclass) =>\n class TextFieldClass extends superclass {\n static get observedAttributes() {\n return observedAttrs.concat(superclass.observedAttributes || []);\n }\n\n icon;\n\n init() {\n super.init?.();\n }\n\n renderCopyToClipboard(shouldRender) {\n if (!shouldRender) {\n this.icon?.remove();\n return;\n }\n\n const iconInitConfig = {\n icon: 'vaadin:copy-o',\n title: 'Copy',\n style: 'cursor: pointer',\n };\n\n const iconCopiedConfig = {\n icon: 'vaadin:check-circle-o',\n title: 'Copied',\n style: 'cursor: initial',\n };\n\n this.icon = Object.assign(document.createElement('vaadin-icon'), {\n slot: 'suffix',\n ...iconInitConfig,\n });\n\n this.baseElement.appendChild(this.icon);\n this.icon.addEventListener('click', () => {\n navigator.clipboard.writeText(this.value);\n Object.assign(this.icon, iconCopiedConfig);\n\n // we want the icon to go back to the initial state after 5 seconds\n setTimeout(() => {\n Object.assign(this.icon, iconInitConfig);\n }, 5000);\n });\n }\n\n onLabelClick() {\n this.focus();\n }\n\n attributeChangedCallback(attrName, oldVal, newVal) {\n super.attributeChangeCallback?.(attrName, oldVal, newVal);\n\n // Vaadin doesn't allow to change the input type attribute.\n // We need the ability to do that, so we're overriding their\n // behavior with their private API.\n // When receiving a `type` attribute, we use their private API\n // to set it on the input.\n if (attrName === 'type') {\n this.baseElement._setType(newVal);\n }\n\n if (oldVal !== newVal) {\n if (attrName === 'label-type') {\n if (newVal === 'floating') {\n this.addEventListener('click', this.onLabelClick);\n } else {\n this.removeEventListener('click', this.onLabelClick);\n }\n } else if (attrName === 'copy-to-clipboard') {\n this.renderCopyToClipboard(newVal === 'true');\n }\n }\n }\n };\n\nexport const TextFieldClass = compose(\n createStyleMixin({\n mappings: textFieldMappings,\n }),\n draggableMixin,\n proxyInputMixin({ proxyProps: ['value', 'selectionStart'], useProxyTargets: true }),\n componentNameValidationMixin,\n customMixin\n)(\n createProxy({\n slots: ['prefix', 'suffix'],\n wrappedEleName: 'vaadin-text-field',\n style: () => `\n\t\t\t:host {\n\t\t\t\tdisplay: inline-block;\n\t\t\t\tmax-width: 100%;\n\t\t\t\tpadding: calc(var(${TextFieldClass.cssVarList.inputOutlineWidth}) + var(${\n TextFieldClass.cssVarList.inputOutlineOffset\n }));\n box-sizing: border-box;\n\t\t\t}\n :host(:is([readonly], [disabled])) ::slotted(:is(input, textarea):placeholder-shown) {\n opacity: 1;\n }\n\n vaadin-text-field[label-type=\"floating\"]:not([focused])[readonly] > input:placeholder-shown {\n opacity: 0;\n }\n vaadin-text-field[label-type=\"floating\"]:not([focused])[disabled] > input:placeholder-shown {\n opacity: 0;\n }\n ${resetInputLabelPosition('vaadin-text-field')}\n\t\t\t${useHostExternalPadding(TextFieldClass.cssVarList)}\n\t\t\t${resetInputOverrides('vaadin-text-field', TextFieldClass.cssVarList)}\n ${inputFloatingLabelStyle()}\n\n vaadin-text-field vaadin-icon {\n align-self: center;\n }\n\t\t`,\n excludeAttrsSync: ['tabindex', 'style'],\n componentName,\n })\n);\n","import {\n createStyleMixin,\n draggableMixin,\n createProxy,\n proxyInputMixin,\n componentNameValidationMixin,\n} from '../../../mixins';\nimport { TextClass } from '@descope-ui/descope-text/class';\nimport { compose } from '../../../helpers';\nimport { forwardAttrs, getComponentName, syncAttrs } from '../../../helpers/componentHelpers';\nimport { componentName as descopeInternalComponentName } from './descope-mappings-field-internal/MappingsFieldInternal';\n\nexport const componentName = getComponentName('mappings-field');\n\nconst customMixin = (superclass) =>\n class MappingsFieldMixinClass extends superclass {\n get defaultValues() {\n const defaultValuesAttr = this.getAttribute('default-values');\n if (defaultValuesAttr) {\n try {\n return JSON.parse(defaultValuesAttr);\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error('could not parse data string from attribute \"default-values\" -', e.message);\n }\n }\n return [];\n }\n\n setDefaultValues() {\n const initialDefaultValues = this.defaultValues;\n if (Object.keys(initialDefaultValues).length > 0) {\n this.inputElement.value = initialDefaultValues;\n }\n }\n\n init() {\n super.init?.();\n const template = document.createElement('template');\n\n template.innerHTML = `\n <${descopeInternalComponentName}\n tabindex=\"-1\"\n ></${descopeInternalComponentName}>\n `;\n\n this.baseElement.appendChild(template.content.cloneNode(true));\n\n this.inputElement = this.shadowRoot.querySelector(descopeInternalComponentName);\n\n forwardAttrs(this, this.inputElement, {\n includeAttrs: [\n 'size',\n 'full-width',\n 'label-value',\n 'label-attr',\n 'button-label',\n 'separator',\n 'options',\n 'default-values',\n 'invalid',\n 'readonly',\n 'disabled',\n 'st-error-message-icon',\n 'st-error-message-icon-size',\n 'st-error-message-icon-padding',\n ],\n });\n\n // This is required since when we remove the invalid attribute from the internal mappings field,\n // we want to reflect the change in the parent component\n syncAttrs(this, this.inputElement, { includeAttrs: ['invalid'] });\n\n this.setDefaultValues();\n }\n };\n\nconst {\n host,\n helperText,\n errorMessage,\n mappingItem,\n labels,\n labelsText,\n valueLabel,\n attrLabel,\n separator,\n labelsContainer,\n} = {\n host: { selector: () => ':host' },\n helperText: { selector: '::part(helper-text)' },\n errorMessage: { selector: '::part(error-message)' },\n mappingItem: { selector: 'descope-mapping-item::part(wrapper)' },\n labels: { selector: 'descope-mappings-field-internal [part=\"labels\"] descope-text' },\n labelsText: {\n selector: 'descope-mappings-field-internal [part=\"labels\"] descope-text::part(text-wrapper)',\n },\n valueLabel: { selector: 'descope-mappings-field-internal [part=\"labels\"] [part=\"value-label\"]' },\n attrLabel: { selector: 'descope-mappings-field-internal [part=\"labels\"] [part=\"attr-label\"]' },\n separator: { selector: 'descope-mapping-item::part(separator)' },\n labelsContainer: { selector: 'descope-mappings-field-internal [part=\"labels\"]' },\n};\n\nexport const MappingsFieldClass = compose(\n createStyleMixin({\n mappings: {\n hostWidth: { ...host, property: 'width' },\n hostDirection: { ...host, property: 'direction' },\n // we apply font-size also on the host so we can set its width with em\n fontSize: [{}, host, { ...separator, property: 'margin-top' }],\n fontFamily: [helperText, errorMessage, labels],\n separatorFontSize: { ...separator, property: 'font-size' },\n labelsFontSize: { ...labelsText, property: 'font-size' },\n labelsLineHeight: [\n { ...labelsText, property: 'line-height' },\n { ...labels, property: 'line-height' },\n ],\n labelTextColor: [\n { ...labels, property: TextClass.cssVarList.textColor },\n { ...separator, property: 'color' },\n ],\n itemMarginBottom: { ...mappingItem, property: 'margin-bottom' },\n valueLabelMinWidth: { ...valueLabel, property: 'min-width' },\n attrLabelMinWidth: { ...attrLabel, property: 'min-width' },\n labelsMarginBottom: { ...labelsContainer, property: 'margin-bottom' },\n separatorWidth: {},\n removeButtonWidth: {},\n },\n }),\n draggableMixin,\n proxyInputMixin({\n proxyProps: ['value', 'selectionStart'],\n inputEvent: 'input',\n proxyParentValidation: true,\n }),\n componentNameValidationMixin,\n customMixin\n)(\n createProxy({\n slots: [],\n wrappedEleName: 'vaadin-custom-field',\n style: () => `\n :host {\n display: inline-flex;\n max-width: 100%;\n direction: ltr;\n }\n vaadin-custom-field {\n line-height: unset;\n width: 100%;\n }\n\n descope-mappings-field-internal [part=\"labels\"] {\n display: none;\n grid-template-columns: 1fr var(${MappingsFieldClass.cssVarList.separatorWidth}) 1fr var(${MappingsFieldClass.cssVarList.removeButtonWidth});\n }\n\n descope-mappings-field-internal [part=\"labels\"] [part=\"value-label\"],\n descope-mappings-field-internal [part=\"labels\"] [part=\"attr-label\"] {\n ${TextClass.cssVarList.fontWeight}: 500;\n }\n\n descope-mappings-field-internal [part=\"labels\"] [part=\"value-label\"] {\n grid-column: 1 / span 1;\n }\n\n descope-mappings-field-internal [part=\"labels\"] [part=\"attr-label\"] {\n grid-column: 3 / span 1;\n }\n\n descope-mapping-item::part(wrapper) {\n display: grid;\n grid-template-columns: 1fr var(${MappingsFieldClass.cssVarList.separatorWidth}) 1fr var(${MappingsFieldClass.cssVarList.removeButtonWidth});\n }\n `,\n excludeAttrsSync: [\n 'tabindex',\n 'label-value',\n 'label-attr',\n 'button-label',\n 'options',\n 'error-message',\n ],\n componentName,\n })\n);\n\nexport default MappingsFieldClass;\n","import '@vaadin/custom-field';\nimport '@vaadin/icon';\nimport '@vaadin/icons';\nimport { componentName, MappingsFieldClass } from './MappingsFieldClass';\nimport '@descope-ui/descope-text';\nimport '@descope-ui/descope-button';\nimport '../../descope-text-field';\nimport '@descope-ui/descope-combo-box';\nimport './descope-mappings-field-internal';\nimport './descope-mapping-item';\n\ncustomElements.define(componentName, MappingsFieldClass);\n\nexport { MappingsFieldClass, componentName };\n","import { createBaseInputClass } from '../../../../baseClasses/createBaseInputClass';\nimport {\n getComponentName,\n forwardAttrs,\n observeAttributes,\n} from '../../../../helpers/componentHelpers';\n\nexport const componentName = getComponentName('saml-group-mappings-internal');\n\nconst BaseInputClass = createBaseInputClass({ componentName, baseSelector: '' });\n\nclass SamlGroupMappingsInternal extends BaseInputClass {\n static get observedAttributes() {\n return ['invalid'].concat(BaseInputClass.observedAttributes || []);\n }\n\n constructor() {\n super();\n\n this.innerHTML = `\n <descope-text-field variant=\"body2\" bordered=\"true\"></descope-text-field>\n <descope-mappings-field></descope-mappings-field>\n `;\n\n this.groupInputElement = this.querySelector('descope-text-field');\n this.mappingsElement = this.querySelector('descope-mappings-field');\n }\n\n resetInvalidIndication() {\n this.removeAttribute('invalid');\n }\n\n handleMappingsInvalidChange(changedAttributes) {\n if (changedAttributes.includes('invalid')) {\n if (!this.mappingsElement.hasAttribute('invalid')) {\n this.resetInvalidIndication();\n }\n }\n }\n\n initFocusHandler() {\n // This event listener needs to be placed before the super.init() call\n this.addEventListener('focus', (e) => {\n // we want to ignore focus events we are dispatching\n if (e.isTrusted) {\n const focusedElement = this.mappingsElement.checkValidity()\n ? this.groupInputElement\n : this.mappingsElement;\n focusedElement.focus();\n }\n });\n }\n\n init() {\n // This needs to be placed before the super.init() call to work\n this.initFocusHandler();\n\n super.init?.();\n\n forwardAttrs(this, this.groupInputElement, {\n mapAttrs: { 'label-group': 'label' },\n includeAttrs: ['size', 'label-group', 'readonly', 'disabled'],\n });\n\n forwardAttrs(this, this.mappingsElement, {\n includeAttrs: [\n 'size',\n 'full-width',\n 'label-value',\n 'label-attr',\n 'button-label',\n 'separator',\n 'options',\n 'readonly',\n 'disabled',\n 'data-errormessage-pattern-mismatch',\n ],\n });\n\n // Observing the invalid attribute of the mappings field to reset the invalid state for this component.\n // When an invalid item turns valid, the mappings field will remove the invalid attribute, and at this component\n // level, we need to remove the invalid attribute as well to be able to mark the component as invalid the next time\n observeAttributes(this.mappingsElement, this.handleMappingsInvalidChange.bind(this), {\n includeAttrs: ['invalid'],\n });\n }\n\n get value() {\n return {\n group: this.groupInputElement.value,\n mappings: this.mappingsElement.value,\n };\n }\n\n set value(value) {\n if (value?.group && typeof value.group === 'string') {\n this.groupInputElement.value = value.group;\n }\n if (Array.isArray(value?.mappings)) {\n this.mappingsElement.value = value.mappings;\n }\n }\n\n getValidity() {\n if (!this.groupInputElement.checkValidity()) {\n return this.groupInputElement.validity;\n }\n if (!this.mappingsElement.checkValidity()) {\n return this.mappingsElement.validity;\n }\n\n return {};\n }\n\n #handleInvalidState(isInvalid) {\n if (isInvalid) {\n if (!this.groupInputElement.checkValidity()) {\n this.groupInputElement.setAttribute('invalid', 'true');\n return;\n }\n\n if (!this.mappingsElement.checkValidity()) {\n this.mappingsElement.setAttribute('invalid', 'true');\n }\n }\n }\n\n attributeChangedCallback(attrName, oldValue, newValue) {\n super.attributeChangedCallback?.(attrName, oldValue, newValue);\n if (attrName === 'invalid') {\n this.#handleInvalidState(newValue === 'true');\n }\n }\n}\n\nexport default SamlGroupMappingsInternal;\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 }\n `,\n excludeAttrsSync: ['tabindex', 'class'],\n componentName,\n }),\n);\n"],"names":["componentName","BaseInputClass","baseSelector","observedAttributes","concat","isValidDataType","data","every","obj","Array","isArray","Object","getOwnPropertyNames","length","keys","trim","e","labelValue","this","getAttribute","labelAttr","buttonLabel","options","addNewMappingItem","focusNewItem","newMappingItem","document","createElement","setAttribute","mappingsContainerEle","appendChild","includeAttrs","setTimeout","setCustomValidity","addEventListener","resetInvalidIndication","undefined","remove","dispatchEvent","CustomEvent","bubbles","composed","focus","items","from","querySelectorAll","value","reduce","acc","item","mappings","console","error","currentItems","i","removeChild","forEach","mapping","index","mappingItem","constructor","super","innerHTML","labelsEle","querySelector","buttonContainer","initLabels","initAddButton","isDisabled","button","onclick","style","display","init","isTrusted","contains","checkValidity","removeAttribute","bind","getValidity","errorItem","find","validity","isInvalid","reportValidity","attributeChangedCallback","attrName","oldValue","newValue","toggleAttribute","createBaseInputClass","args","host","label","placeholder","requiredIndicator","inputField","input","inputMask","helperText","errorMessage","disabledPlaceholder","inputDisabled","inputIcon","externalInput","externalInputDisabled","externalPlaceholder","externalDisabledPlaceholder","selector","fontSize","fontFamily","labelFontSize","property","labelFontWeight","labelTextColor","hostWidth","hostMinWidth","hostDirection","inputDirection","inputBackgroundColor","errorMessageTextColor","errorMessageIcon","errorMessageIconSize","errorMessageIconPadding","errorMessageIconRepeat","errorMessageIconPosition","errorMessageFontSize","helperTextColor","inputValueTextColor","inputCaretTextColor","labelRequiredIndicator","inputBorderColor","inputBorderWidth","inputBorderStyle","inputBorderRadius","inputHeight","inputHorizontalPadding","inputOutlineColor","inputOutlineStyle","inputOutlineWidth","inputOutlineOffset","textAlign","inputTextAlign","inputPlaceholderColor","labelPosition","labelTopPosition","labelHorizontalPosition","inputTransformY","inputTransition","marginInlineStart","placeholderOpacity","inputVerticalAlignment","valueInputHeight","valueInputMarginBottom","inputIconOffset","inputIconSize","inputIconColor","srcAttrs","RawImage","attachShadow","mode","toggleVisibility","src","onThemeChange","renderImage","isVisible","classList","add","altText","legacySrc","themeSrc","currentThemeName","updateFillColor","node","ele","ImageClass","cssVarList","fill","then","res","shouldRender","srcVal","height","width","customElements","define","clickableMixin","superclass","isLoading","click","createSvgEle","text","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","createImgEle","setProperty","slottedIcon","loadingIndicatorStyles","ButtonClass","hostHeight","cursor","backgroundColor","outlineOffset","outlineColor","outlineStyle","outlineWidth","borderRadius","borderColor","borderStyle","borderWidth","verticalPadding","horizontalPadding","fallback","iconColor","labelTextDecoration","labelSpacing","iconSize","slots","wrappedEleName","excludeAttrsSync","color","inputAttrs","separator","attributeValue","attributeInput","inputValue","valueInput","entries","attribute","InputEvent","shadowRoot","inputs","removeButton","mapAttrs","initRemoveButton","badInput","handleSeparatorChange","textContent","invalid","defaultErrorMsgValueMissing","groupInput","SamlGroupMappingsClass","groupNameInputMarginBottom","proxyProps","inputEvent","triggerValidationEvents","proxyParentValidation","template","baseElement","content","cloneNode","inputElement","RawText","hideWhenEmpty","hasChildren","childNodes","TextClass","textColor","textLineHeight","textLetterSpacing","textShadow","textTransform","fontStyle","fontWeight","useHostExternalPadding","resetInputContainer","name","resetInputField","resetInputCursor","resetInputPlaceholder","resetInputFieldDefaultWidth","resetInputReadonlyStyle","resetInputFieldInvalidBackgroundColor","resetInputOverrides","resetInputAutoFill","resetInitialHeight","resetInputElement","resetInputFieldUnderlayingBorder","resetInputLabelPosition","inputFloatingLabelStyle","observedAttrs","TextFieldClass","useProxyTargets","icon","renderCopyToClipboard","iconInitConfig","title","iconCopiedConfig","assign","slot","navigator","clipboard","writeText","onLabelClick","oldVal","newVal","attributeChangeCallback","_setType","removeEventListener","labels","labelsText","valueLabel","attrLabel","labelsContainer","MappingsFieldClass","separatorFontSize","labelsFontSize","labelsLineHeight","itemMarginBottom","valueLabelMinWidth","attrLabelMinWidth","labelsMarginBottom","separatorWidth","removeButtonWidth","defaultValues","defaultValuesAttr","JSON","parse","message","setDefaultValues","initialDefaultValues","groupInputElement","mappingsElement","handleMappingsInvalidChange","changedAttributes","includes","hasAttribute","initFocusHandler","group","IconClass"],"sourceRoot":""}
1
+ {"version":3,"file":"mapping-fields-descope-saml-group-mappings-index-js.js","mappings":"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","sources":["webpack://@descope/web-components-ui/./src/components/mapping-fields/descope-mappings-field/descope-mappings-field-internal/MappingsFieldInternal.js","webpack://@descope/web-components-ui/./src/baseClasses/createBaseInputClass.js","webpack://@descope/web-components-ui/./src/components/descope-text-field/textFieldMappings.js","webpack://@descope/web-components-ui/../components/descope-image/src/component/ImageClass.js","webpack://@descope/web-components-ui/./src/components/mapping-fields/descope-saml-group-mappings/descope-saml-group-mappings-internal/index.js","webpack://@descope/web-components-ui/../components/descope-button/src/component/clickableMixin.js","webpack://@descope/web-components-ui/../components/descope-image/src/component/helpers.js","webpack://@descope/web-components-ui/../components/descope-button/src/component/ButtonClass.js","webpack://@descope/web-components-ui/./src/components/descope-text-field/index.js","webpack://@descope/web-components-ui/./src/components/mapping-fields/descope-mappings-field/descope-mapping-item/MappingItem.js","webpack://@descope/web-components-ui/./src/components/mapping-fields/descope-mappings-field/descope-mapping-item/index.js","webpack://@descope/web-components-ui/../components/descope-button/src/component/index.js","webpack://@descope/web-components-ui/./src/components/mapping-fields/descope-mappings-field/descope-mappings-field-internal/index.js","webpack://@descope/web-components-ui/./src/components/mapping-fields/descope-saml-group-mappings/SamlGroupMappingsClass.js","webpack://@descope/web-components-ui/./src/components/mapping-fields/descope-saml-group-mappings/index.js","webpack://@descope/web-components-ui/../components/descope-text/src/component/index.js","webpack://@descope/web-components-ui/../components/descope-text/src/component/TextClass.js","webpack://@descope/web-components-ui/./src/helpers/themeHelpers/resetHelpers.js","webpack://@descope/web-components-ui/./src/components/descope-text-field/TextFieldClass.js","webpack://@descope/web-components-ui/./src/components/mapping-fields/descope-mappings-field/MappingsFieldClass.js","webpack://@descope/web-components-ui/./src/components/mapping-fields/descope-mappings-field/index.js","webpack://@descope/web-components-ui/./src/components/mapping-fields/descope-saml-group-mappings/descope-saml-group-mappings-internal/SamlGroupMappingsInternal.js","webpack://@descope/web-components-ui/../components/descope-icon/src/component/IconClass.js"],"sourcesContent":["import { createBaseInputClass } from '../../../../baseClasses/createBaseInputClass';\nimport {\n getComponentName,\n forwardAttrs,\n observeChildren,\n} from '../../../../helpers/componentHelpers';\n\nexport const componentName = getComponentName('mappings-field-internal');\n\nconst BaseInputClass = createBaseInputClass({ componentName, baseSelector: 'div' });\n\nclass MappingsFieldInternal extends BaseInputClass {\n #errorItem;\n\n static get observedAttributes() {\n return [].concat(BaseInputClass.observedAttributes || [], [\n 'label-value',\n 'label-attr',\n 'button-label',\n 'invalid',\n 'readonly',\n 'disabled',\n 'st-error-message-icon',\n 'st-error-message-icon-size',\n 'st-error-message-icon-padding',\n ]);\n }\n\n // eslint-disable-next-line class-methods-use-this\n isValidDataType(data) {\n try {\n return data.every(\n (obj) =>\n typeof obj === 'object' &&\n !Array.isArray(obj) &&\n Object.getOwnPropertyNames(obj).length === 1 &&\n typeof obj[Object.keys(obj)[0]] === 'string' &&\n obj[Object.keys(obj)[0]].trim() !== ''\n );\n } catch (e) {\n return false;\n }\n }\n\n get labelValue() {\n return this.getAttribute('label-value') || 'Value';\n }\n\n get labelAttr() {\n return this.getAttribute('label-attr') || 'Attribute';\n }\n\n get buttonLabel() {\n return this.getAttribute('button-label') || 'Add mapping';\n }\n\n get options() {\n return this.getAttribute('options') || [];\n }\n\n addNewMappingItem(focusNewItem) {\n const newMappingItem = document.createElement('descope-mapping-item');\n newMappingItem.setAttribute('bordered', 'true');\n this.mappingsContainerEle.appendChild(newMappingItem);\n forwardAttrs(this, newMappingItem, {\n includeAttrs: [\n 'size',\n 'full-width',\n 'separator',\n 'options',\n 'disabled',\n 'st-error-message-icon',\n 'st-error-message-icon-size',\n 'st-error-message-icon-padding',\n ],\n });\n // This needs to be done with the timeout, otherwise the validation is performed\n // before the new item is added and thus returns a wrong result\n setTimeout(() => {\n this.setCustomValidity('');\n newMappingItem.addEventListener('mapping-item-removed', () => {\n // If the removed item was the one that was invalid, we need to reset the invalid indication for the internal\n if (newMappingItem === this.#errorItem) {\n this.resetInvalidIndication();\n this.#errorItem = undefined;\n }\n newMappingItem.remove();\n this.setCustomValidity('');\n });\n this.dispatchEvent(new CustomEvent('mapping-item-added', { bubbles: true, composed: true }));\n if (focusNewItem) {\n newMappingItem.focus();\n }\n }, 0);\n return newMappingItem;\n }\n\n get items() {\n return Array.from(this.mappingsContainerEle.querySelectorAll('descope-mapping-item'));\n }\n\n get value() {\n return this.items.reduce((acc, item) => {\n if (!item.value) {\n return acc;\n }\n\n return [...acc, item.value];\n }, []);\n }\n\n set value(mappings) {\n if (!this.isValidDataType(mappings)) {\n // eslint-disable-next-line no-console\n console.error(\n 'received invalid value to set - should be an array of objects with one key-value pair'\n );\n return;\n }\n\n const currentItems = this.items;\n\n // Remove extra mapping items we don't need\n if (currentItems.length > mappings.length) {\n for (let i = mappings.length; i < currentItems.length; i++) {\n this.mappingsContainerEle.removeChild(currentItems[i]);\n }\n }\n\n // Add or update items\n mappings.forEach((mapping, index) => {\n const mappingItem = currentItems[index];\n if (mappingItem) {\n // Set existing item value\n mappingItem.value = mapping;\n } else {\n // Add new item\n const newMappingItem = this.addNewMappingItem(false);\n // Setting the new item value needs to be done with the timeout,\n // otherwise the value is not set correctly\n setTimeout(() => {\n newMappingItem.value = mapping;\n }, 0);\n }\n });\n }\n\n constructor() {\n super();\n\n this.innerHTML = `\n <div class=\"labels-container\" part=\"labels\"></div>\n <div class=\"mappings-container\"></div>\n <div class=\"button-container\"></div>\n `;\n\n this.labelsEle = this.querySelector('.labels-container');\n this.mappingsContainerEle = this.querySelector('.mappings-container');\n this.buttonContainer = this.querySelector('.button-container');\n }\n\n initLabels() {\n this.labelsEle.innerHTML = `\n <descope-text variant=\"body2\" part=\"value-label\">${this.labelValue}</descope-text>\n <descope-text variant=\"body2\" part=\"attr-label\">${this.labelAttr}</descope-text>\n `;\n }\n\n initAddButton() {\n this.buttonContainer.innerHTML = `\n <descope-button variant=\"link\" mode=\"primary\" disabled=\"${this.isDisabled}\">\n <vaadin-icon icon=\"vaadin:plus\"></vaadin-icon>\n ${this.buttonLabel}\n </descope-button>\n `;\n const button = this.querySelector('descope-button');\n button.onclick = () => {\n this.addNewMappingItem(true);\n };\n forwardAttrs(this, button, {\n includeAttrs: ['disabled'],\n });\n }\n\n #onMappingsContainerChildrenChange() {\n this.labelsEle.style.display = this.items.length ? 'grid' : 'none';\n }\n\n init() {\n // This event listener needs to be placed before the super.init() call\n this.addEventListener('focus', (e) => {\n // we want to ignore focus events we are dispatching\n if (e.isTrusted) {\n const focusedElement =\n this.#errorItem || this.items[0] || this.querySelector('descope-button');\n focusedElement.focus();\n }\n });\n\n super.init?.();\n this.initLabels();\n this.initAddButton();\n\n // This event listener is responsible for removing the invalid attribute\n // from the internal once the invalid item turns valid\n this.addEventListener('input', () => {\n const isErrorItemMounted = this.mappingsContainerEle.contains(this.#errorItem);\n if (isErrorItemMounted && this.#errorItem?.checkValidity()) {\n // Item has changed, it was invalid before and now it's valid\n this.resetInvalidIndication();\n this.#errorItem.removeAttribute('invalid');\n this.#errorItem = undefined;\n }\n });\n\n observeChildren(this.mappingsContainerEle, this.#onMappingsContainerChildrenChange.bind(this));\n }\n\n resetInvalidIndication() {\n this.removeAttribute('invalid');\n }\n\n getValidity() {\n const errorItem = this.items.find((item) => !item.checkValidity());\n if (errorItem) {\n return errorItem.validity;\n }\n\n return {};\n }\n\n #handleInvalidMappings(isInvalid) {\n if (isInvalid) {\n this.#errorItem = this.items.find((item) => !item.checkValidity());\n this.#errorItem?.reportValidity();\n this.#errorItem?.setAttribute('invalid', 'true');\n }\n }\n\n attributeChangedCallback(attrName, oldValue, newValue) {\n super.attributeChangedCallback?.(attrName, oldValue, newValue);\n if (attrName === 'label-value' || attrName === 'label-attr') {\n this.initLabels();\n }\n if (attrName === 'button-label') {\n this.initAddButton();\n }\n if (attrName === 'invalid') {\n this.#handleInvalidMappings(newValue === 'true');\n }\n if (attrName === 'readonly') {\n this.toggleAttribute('inert', newValue === 'true');\n }\n }\n}\n\nexport default MappingsFieldInternal;\n","import { compose } from '../helpers';\nimport {\n changeMixin,\n inputEventsDispatchingMixin,\n inputValidationMixin,\n normalizeBooleanAttributesMixin,\n} from '../mixins';\nimport { createBaseClass } from './createBaseClass';\n\nexport const createBaseInputClass = (...args) =>\n compose(\n inputValidationMixin,\n changeMixin,\n normalizeBooleanAttributesMixin,\n inputEventsDispatchingMixin\n )(createBaseClass(...args));\n","const {\n host,\n label,\n placeholder,\n requiredIndicator,\n inputField,\n input,\n inputMask,\n helperText,\n errorMessage,\n disabledPlaceholder,\n inputDisabled,\n inputIcon,\n externalInput,\n externalInputDisabled,\n externalPlaceholder,\n externalDisabledPlaceholder,\n} = {\n host: { selector: () => ':host' },\n label: { selector: '::part(label)' },\n requiredIndicator: { selector: '[required]::part(required-indicator)::after' },\n placeholder: [\n { selector: '> input:placeholder-shown' },\n { selector: () => ':host::slotted(input:placeholder-shown)' },\n ],\n disabledPlaceholder: { selector: '> input:disabled::placeholder' },\n inputField: { selector: '::part(input-field)' },\n input: { selector: 'input' },\n inputMask: { selector: '::part(input-field)::before' },\n inputDisabled: { selector: 'input:disabled' },\n helperText: { selector: '::part(helper-text)' },\n errorMessage: { selector: '::part(error-message)' },\n inputIcon: { selector: 'vaadin-icon' },\n externalInput: { selector: () => '::slotted(input)' },\n externalInputDisabled: { selector: () => '::slotted(input:disabled)' },\n externalPlaceholder: { selector: () => '::slotted(input:placeholder-shown)' },\n externalDisabledPlaceholder: { selector: () => '::slotted(input:disabled::placeholder)' },\n};\n\nexport default {\n // we apply font-size also on the host so we can set its width with em\n fontSize: [{}, host],\n fontFamily: [label, inputField, helperText, errorMessage],\n\n labelFontSize: { ...label, property: 'font-size' },\n labelFontWeight: { ...label, property: 'font-weight' },\n\n labelTextColor: [\n { ...label, property: 'color' },\n { ...requiredIndicator, property: 'color' },\n { ...label, property: '-webkit-text-fill-color' },\n { ...requiredIndicator, property: '-webkit-text-fill-color' },\n ],\n\n hostWidth: { ...host, property: 'width' },\n hostMinWidth: { ...host, property: 'min-width' },\n hostDirection: { ...host, property: 'direction' },\n inputDirection: { ...input, property: 'direction' },\n\n inputBackgroundColor: [\n { ...inputField, property: 'background-color' },\n { ...inputMask, property: 'background-color' },\n ],\n\n errorMessageTextColor: { ...errorMessage, property: 'color' },\n errorMessageIcon: { ...errorMessage, property: 'background-image' },\n errorMessageIconSize: { ...errorMessage, property: 'background-size' },\n errorMessageIconPadding: { ...errorMessage, property: 'padding-inline-start' },\n errorMessageIconRepeat: { ...errorMessage, property: 'background-repeat' },\n errorMessageIconPosition: { ...errorMessage, property: 'background-position' },\n errorMessageFontSize: { ...errorMessage, property: 'font-size' },\n\n helperTextColor: { ...helperText, property: '-webkit-text-fill-color' },\n\n inputValueTextColor: [\n { ...inputField, property: 'color' },\n { ...inputDisabled, property: '-webkit-text-fill-color' },\n { ...externalInputDisabled, property: '-webkit-text-fill-color' },\n ],\n inputCaretTextColor: [\n { ...input, property: 'caret-color' },\n { ...externalInput, property: 'caret-color' },\n ],\n\n labelRequiredIndicator: { ...requiredIndicator, property: 'content' },\n\n inputBorderColor: { ...inputField, property: 'border-color' },\n inputBorderWidth: { ...inputField, property: 'border-width' },\n inputBorderStyle: { ...inputField, property: 'border-style' },\n inputBorderRadius: { ...inputField, property: 'border-radius' },\n\n inputHeight: { ...inputField, property: 'height' },\n inputHorizontalPadding: [\n { ...input, property: 'padding-left' },\n { ...input, property: 'padding-right' },\n { ...externalInput, property: 'padding-left' },\n { ...externalInput, property: 'padding-right' },\n ],\n\n inputOutlineColor: { ...inputField, property: 'outline-color' },\n inputOutlineStyle: { ...inputField, property: 'outline-style' },\n inputOutlineWidth: { ...inputField, property: 'outline-width' },\n inputOutlineOffset: { ...inputField, property: 'outline-offset' },\n\n textAlign: {},\n\n inputTextAlign: [\n { ...input, property: 'text-align' },\n { ...externalInput, property: 'text-align' },\n ],\n\n inputPlaceholderColor: [\n { selector: () => ':host input:placeholder-shown', property: 'color' },\n { ...externalPlaceholder, property: 'color' },\n { ...placeholder, property: 'color' },\n { ...disabledPlaceholder, property: '-webkit-text-fill-color' },\n { ...externalDisabledPlaceholder, property: '-webkit-text-fill-color' },\n ],\n\n labelPosition: { ...label, property: 'position' },\n labelTopPosition: { ...label, property: 'top' },\n labelHorizontalPosition: [\n { ...label, property: 'left' },\n { ...label, property: 'right' },\n ],\n inputTransformY: { ...label, property: 'transform' },\n inputTransition: { ...label, property: 'transition' },\n marginInlineStart: { ...label, property: 'margin-inline-start' },\n placeholderOpacity: [\n { selector: '> input:placeholder-shown', property: 'opacity' },\n { ...externalPlaceholder, property: 'opacity' },\n ],\n inputVerticalAlignment: [\n { ...inputField, property: 'align-items' },\n { ...externalInput, property: 'align-items' },\n ],\n valueInputHeight: [\n { ...input, property: 'height' },\n { ...externalInput, property: 'height' },\n ],\n valueInputMarginBottom: [\n { ...input, property: 'margin-bottom' },\n { ...externalInput, property: 'margin-bottom' },\n ],\n\n inputIconOffset: [\n { ...inputIcon, property: 'margin-right' },\n { ...inputIcon, property: 'margin-left' },\n ],\n inputIconSize: { ...inputIcon, property: 'font-size' },\n inputIconColor: { ...inputIcon, property: 'color' },\n};\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.src);\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 src() {\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.src);\n\n createImage(this.src, 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.src === 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 SamlGroupMappingsInternal, { componentName } from './SamlGroupMappingsInternal';\n\ncustomElements.define(componentName, SamlGroupMappingsInternal);\n","export const clickableMixin = (superclass) =>\n class ClickableMixinClass extends superclass {\n get isLoading() {\n return this.getAttribute('loading') === 'true';\n }\n\n click() {\n this.isLoading || super.click();\n }\n };\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 { compose } from '@descope-ui/common/utils';\nimport { getComponentName } from '@descope-ui/common/components-helpers';\nimport {\n createStyleMixin,\n draggableMixin,\n createProxy,\n componentNameValidationMixin,\n} from '@descope-ui/common/components-mixins';\nimport { IconClass } from '@descope-ui/descope-icon/class';\nimport { clickableMixin } from './clickableMixin';\n\nexport const componentName = getComponentName('button');\n\nconst resetStyles = `\n\t:host {\n\t\tdisplay: inline-block;\n\t\tbox-sizing: border-box;\n\t}\n\tvaadin-button::before,\n\tvaadin-button::after {\n\t\topacity: 0;\n\t}\n\tvaadin-button {\n\t\tmargin: 0;\n\t\tmin-width: 0;\n\t\twidth: 100%;\n\t\theight: auto;\n\t\tbox-shadow: none;\n\t}\n\tvaadin-button::part(label) {\n\t\tpadding: 0;\n width: 100%;\n\t}\n\tvaadin-button::part(prefix) {\n\t\tmargin-left: 0;\n\t\tmargin-right: 0;\n\t}\n`;\n\nconst iconStyles = `\n\tvaadin-button::part(prefix),\n\tvaadin-button::part(label) {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t}\n`;\n\nconst editorOverrides = `vaadin-button::part(label) { pointer-events: none; }`;\n\nconst { host, label, slottedIcon } = {\n host: { selector: () => ':host' },\n label: { selector: '::part(label)' },\n slottedIcon: { selector: () => '::slotted(descope-icon)' },\n};\n\nlet loadingIndicatorStyles;\n\nexport const ButtonClass = compose(\n createStyleMixin({\n mappings: {\n hostWidth: { property: 'width' },\n hostHeight: { property: 'height' },\n hostDirection: { ...host, property: 'direction' },\n fontSize: {},\n fontFamily: {},\n\n cursor: {},\n backgroundColor: {},\n\n outlineOffset: {},\n outlineColor: {},\n outlineStyle: {},\n outlineWidth: {},\n\n borderRadius: {},\n borderColor: {},\n borderStyle: {},\n borderWidth: {},\n\n verticalPadding: [{ property: 'padding-top' }, { property: 'padding-bottom' }],\n horizontalPadding: [\n { property: 'padding-right', fallback: '0.875em' },\n { property: 'padding-left', fallback: '0.875em' },\n ],\n\n labelTextColor: { property: 'color' },\n iconColor: {\n\t\tselector: () => `::slotted(*)`,\n\t\tproperty: IconClass.cssVarList.fill\n\t },\n labelTextDecoration: { ...label, property: 'text-decoration' },\n labelSpacing: { ...label, property: 'gap' },\n textAlign: { ...label, property: 'justify-content', fallback: 'center' },\n\n iconSize: [\n { ...slottedIcon, property: 'width' },\n { ...slottedIcon, property: 'height' },\n ],\n },\n }),\n clickableMixin,\n draggableMixin,\n componentNameValidationMixin\n)(\n createProxy({\n slots: ['', 'prefix', 'label', 'suffix'],\n wrappedEleName: 'vaadin-button',\n style: () => `\n\t\t\t${resetStyles}\n\t\t\t${iconStyles}\n\t\t\t${loadingIndicatorStyles}\n\t\t\t${editorOverrides}\n\t\t\t:host {\n\t\t\t\tpadding: calc(var(${ButtonClass.cssVarList.outlineWidth}) + var(${ButtonClass.cssVarList.outlineOffset}));\n\t\t\t}\n :host([full-width=\"true\"]) {\n width: var(${ButtonClass.cssVarList.hostWidth});\n }\n\t\t\tvaadin-button {\n\t\t\t\theight: calc(var(${ButtonClass.cssVarList.hostHeight}) - var(${ButtonClass.cssVarList.outlineWidth}) - var(${ButtonClass.cssVarList.outlineOffset}));\n\t\t\t}\n\t\t\t[square=\"true\"]:not([full-width=\"true\"]) {\n\t\t\t\twidth: calc(var(${ButtonClass.cssVarList.hostWidth}) - var(${ButtonClass.cssVarList.outlineWidth}) - var(${ButtonClass.cssVarList.outlineOffset}));\n padding: 0;\n\t\t\t}\n\t\t`,\n excludeAttrsSync: ['tabindex', 'class'],\n componentName,\n })\n);\n\nconst { color, fontSize } = ButtonClass.cssVarList;\nloadingIndicatorStyles = `\n\t@keyframes spin {\n\t\t0% { -webkit-transform: rotate(0deg); }\n\t\t100% { -webkit-transform: rotate(360deg); }\n\t}\n\t:host([loading=\"true\"]) ::before {\n\t\tanimation: spin 2s linear infinite;\n\t\tposition: absolute;\n\t\tcontent: '';\n\t\tz-index: 1;\n\t\tbox-sizing: border-box;\n\t\tborder-radius: 50%;\n\t\tborder-bottom-color: transparent;\n\t\tborder-left-color: transparent;\n\t\tborder-style: solid;\n\t\tcolor: var(${color});\n\t\ttop: calc(50% - (var(${fontSize}) / 2));\n\t\tleft: calc(50% - (var(${fontSize}) / 2));\n\t\tborder-width: calc(var(${fontSize}) / 10);\n\t\twidth: var(${fontSize});\n\t\theight: var(${fontSize});\n\t}\n\t:host([disabled=\"true\"]),\n\t:host([loading=\"true\"]) {\n\t\tpointer-events: none;\n\t}\n\t:host([loading=\"true\"]) ::part(prefix),\n\t:host([loading=\"true\"]) ::part(label) {\n\t\tvisibility: hidden;\n\t}\n`;\n","import '@vaadin/text-field';\nimport '@vaadin/icons';\nimport '@vaadin/icon';\n\nimport { componentName, TextFieldClass } from './TextFieldClass';\n\ncustomElements.define(componentName, TextFieldClass);\n\nexport { TextFieldClass, componentName };\n","import { injectStyle } from '@descope-ui/common/components-helpers';\nimport { createBaseInputClass } from '../../../../baseClasses/createBaseInputClass';\nimport { forwardAttrs, getComponentName } from '../../../../helpers/componentHelpers';\n\nexport const componentName = getComponentName('mapping-item');\n\nconst inputAttrs = [\n 'size',\n 'bordered',\n 'readonly',\n 'full-width',\n 'disabled',\n 'st-error-message-icon',\n 'st-error-message-icon-size',\n 'st-error-message-icon-padding',\n];\n\nconst BaseInputClass = createBaseInputClass({ componentName, baseSelector: 'div' });\n\nclass MappingItem extends BaseInputClass {\n static get observedAttributes() {\n return [].concat(BaseInputClass.observedAttributes || [], inputAttrs, [\n 'separator',\n 'options',\n 'invalid',\n 'disabled',\n ]);\n }\n\n get separator() {\n return this.getAttribute('separator') || 'map to';\n }\n\n get value() {\n const attributeValue = this.attributeInput.value;\n const inputValue = this.valueInput.value;\n if (attributeValue && inputValue) {\n return { [attributeValue]: inputValue };\n }\n return null;\n }\n\n set value(mapping) {\n if (Object.entries(mapping).length !== 1) {\n // eslint-disable-next-line no-console\n console.error(\n 'descope-mapping item expected expects only one key-value pair in the value but received: ',\n mapping\n );\n return;\n }\n const [attribute, value] = Object.entries(mapping)[0];\n this.valueInput.value = value;\n this.attributeInput.value = attribute;\n // The event needs to be dispatched to trigger the validation if setting the value externally\n this.dispatchEvent(new InputEvent('input', { bubbles: true, composed: true }));\n }\n\n constructor() {\n super();\n\n this.attachShadow({ mode: 'open' }).innerHTML = `\n <div class=\"wrapper\" part=\"wrapper\">\n <descope-text-field required=\"true\"></descope-text-field>\n <div class=\"separator\" part=\"separator\">${this.separator}</div>\n <descope-combo-box\n item-label-path=\"data-name\"\n item-value-path=\"data-id\"\n required=\"true\"\n >\n </descope-combo-box>\n <descope-button variant=\"link\" mode=\"primary\">\n <vaadin-icon icon=\"vaadin:minus\"></vaadin-icon>\n </descope-button>\n </div>\n\t`;\n\n injectStyle(\n `\n .wrapper {\n display: flex;\n }\n .separator {\n text-align: center;\n flex-shrink: 0;\n }\n `,\n this\n );\n\n this.valueInput = this.shadowRoot.querySelector('descope-text-field');\n this.attributeInput = this.shadowRoot.querySelector('descope-combo-box');\n this.inputs = [this.valueInput, this.attributeInput];\n this.removeButton = this.shadowRoot.querySelector('descope-button');\n\n forwardAttrs(this, this.valueInput, {\n includeAttrs: inputAttrs,\n });\n forwardAttrs(this, this.attributeInput, {\n includeAttrs: [...inputAttrs, 'options'],\n mapAttrs: { options: 'data' },\n });\n forwardAttrs(this, this.removeButton, {\n includeAttrs: ['disabled'],\n });\n }\n\n initRemoveButton() {\n this.removeButton.addEventListener('click', () =>\n this.dispatchEvent(new CustomEvent('mapping-item-removed', { bubbles: true, composed: true }))\n );\n }\n\n init() {\n super.init?.();\n this.initRemoveButton();\n }\n\n getValidity() {\n const attributeValue = this.attributeInput.value;\n const inputValue = this.valueInput.value;\n if (!attributeValue || !inputValue) {\n return { badInput: true };\n }\n return {};\n }\n\n reportValidity() {\n this.inputs.forEach((input) => input.reportValidity());\n }\n\n focus() {\n const focusedElement =\n this.checkValidity() || !this.valueInput.checkValidity()\n ? this.valueInput\n : this.attributeInput;\n focusedElement.focus();\n }\n\n handleSeparatorChange() {\n this.shadowRoot.querySelector('.separator').textContent = this.separator;\n }\n\n #handleInvalidMapping(invalid) {\n if (invalid === 'true') {\n const inputValue = this.valueInput.value;\n if (!inputValue) {\n this.valueInput.setAttribute('invalid', 'true');\n this.valueInput.setAttribute('error-message', this.defaultErrorMsgValueMissing);\n }\n\n const attributeValue = this.attributeInput.value;\n if (!attributeValue) {\n this.attributeInput.setAttribute('invalid', 'true');\n this.attributeInput.setAttribute('error-message', this.defaultErrorMsgValueMissing);\n }\n }\n }\n\n attributeChangedCallback(attrName, oldValue, newValue) {\n super.attributeChangedCallback?.(attrName, oldValue, newValue);\n\n if (attrName === 'separator') {\n this.handleSeparatorChange();\n }\n\n if (attrName === 'invalid') {\n this.#handleInvalidMapping(newValue);\n }\n }\n}\n\nexport default MappingItem;\n","import MappingItem, { componentName } from './MappingItem';\n\ncustomElements.define(componentName, MappingItem);\n","import { componentName, ButtonClass } from './ButtonClass';\nimport '@vaadin/button';\n\ncustomElements.define(componentName, ButtonClass);\n\nexport { ButtonClass, componentName };\n","import MappingsFieldInternal, { componentName } from './MappingsFieldInternal';\n\ncustomElements.define(componentName, MappingsFieldInternal);\n","import {\n createStyleMixin,\n draggableMixin,\n createProxy,\n proxyInputMixin,\n componentNameValidationMixin,\n} from '../../../mixins';\nimport { compose } from '../../../helpers';\nimport { forwardAttrs, getComponentName, syncAttrs } from '../../../helpers/componentHelpers';\nimport { componentName as descopeInternalComponentName } from './descope-saml-group-mappings-internal/SamlGroupMappingsInternal';\n\nexport const componentName = getComponentName('saml-group-mappings');\n\nconst customMixin = (superclass) =>\n class SamlGroupMappingsMixinClass extends superclass {\n init() {\n super.init?.();\n\n const template = document.createElement('template');\n\n template.innerHTML = `\n <${descopeInternalComponentName}\n tabindex=\"-1\"\n ></${descopeInternalComponentName}>\n `;\n\n this.baseElement.appendChild(template.content.cloneNode(true));\n\n this.inputElement = this.shadowRoot.querySelector(descopeInternalComponentName);\n\n forwardAttrs(this, this.inputElement, {\n includeAttrs: [\n 'size',\n 'full-width',\n 'label-group',\n 'label-value',\n 'label-attr',\n 'button-label',\n 'separator',\n 'options',\n 'readonly',\n 'disabled',\n ],\n });\n\n syncAttrs(this, this.inputElement, { includeAttrs: ['invalid'] });\n }\n };\n\nconst { host, groupInput, errorMessage } = {\n host: { selector: () => ':host' },\n groupInput: { selector: 'descope-text-field' },\n errorMessage: { selector: '::part(error-message)' },\n};\n\nexport const SamlGroupMappingsClass = compose(\n createStyleMixin({\n mappings: {\n hostWidth: { ...host, property: 'width' },\n hostDirection: { ...host, property: 'direction' },\n groupNameInputMarginBottom: { ...groupInput, property: 'margin-bottom' },\n errorMessageIcon: { ...errorMessage, property: 'background-image' },\n errorMessageIconSize: { ...errorMessage, property: 'background-size' },\n errorMessageIconPadding: { ...errorMessage, property: 'padding-inline-start' },\n errorMessageIconRepeat: { ...errorMessage, property: 'background-repeat' },\n errorMessageIconPosition: { ...errorMessage, property: 'background-position' },\n errorMessageFontSize: { ...errorMessage, property: 'font-size' },\n },\n }),\n draggableMixin,\n proxyInputMixin({\n proxyProps: ['value', 'selectionStart'],\n inputEvent: 'input',\n triggerValidationEvents: ['mapping-item-added', 'mapping-item-removed'],\n proxyParentValidation: true,\n }),\n componentNameValidationMixin,\n customMixin\n)(\n createProxy({\n slots: [],\n wrappedEleName: 'vaadin-custom-field',\n style: () => `\n :host {\n display: inline-flex;\n max-width: 100%;\n direction: ltr;\n }\n\n vaadin-custom-field {\n line-height: unset;\n width: 100%;\n }\n\n descope-text-field {\n width: auto;\n }\n\n descope-mappings-field {\n display: block;\n }\n `,\n excludeAttrsSync: [\n 'tabindex',\n 'label-group',\n 'label-value',\n 'label-attr',\n 'button-label',\n 'separator',\n 'options',\n 'error-message',\n ],\n componentName,\n })\n);\n\nexport default SamlGroupMappingsClass;\n","import '@vaadin/custom-field';\n\nimport { componentName, SamlGroupMappingsClass } from './SamlGroupMappingsClass';\nimport '../../descope-text-field';\nimport '../descope-mappings-field';\nimport './descope-saml-group-mappings-internal';\n\ncustomElements.define(componentName, SamlGroupMappingsClass);\n\nexport { SamlGroupMappingsClass, componentName };\n","import { componentName, TextClass } from './TextClass';\n\ncustomElements.define(componentName, TextClass);\n\nexport { TextClass, 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","export const useHostExternalPadding = (cssVarList) => `\n :host {\n padding: calc(var(${cssVarList.inputOutlineWidth}) + var(${cssVarList.inputOutlineOffset}))\n }\n`;\n\nexport const resetInputFieldUnderlayingBorder = (name) => `\n ${name}::part(input-field)::after {\n border: none;\n }\n`;\n\nexport const resetInitialHeight = (name) => `\n ${name}::before {\n\t\theight: unset;\n\t}\n`;\n\nexport const resetInputElement = (name) => `\n ${name} > input {\n -webkit-mask-image: none;\n min-height: 0;\n box-sizing: border-box;\n }\n`;\n\nexport const resetInputContainer = (name) => `\n ${name} {\n margin: 0;\n padding: 0;\n width: 100%;\n height: 100%;\n box-sizing: border-box;\n }\n`;\n\nexport const resetInputField = (name) => `\n ${name}::part(input-field) {\n overflow: hidden;\n padding: 0;\n box-shadow: none;\n }\n`;\n\nexport const resetInputCursor = (name) => `\n ${name} > label,\n ${name}::part(label),\n ${name}::part(required-indicator) {\n cursor: pointer;\n }\n`;\n\nexport const resetInputPlaceholder = (name, ele = 'input') => `\n ${name}[disabled] > ${ele}:placeholder-shown,\n\t${name}[readonly] > ${ele}:placeholder-shown {\n\t\topacity: 1;\n\t}\n`;\n\nexport const resetInputAutoFill = (name, cssVarList) => `\n ${name} input:-webkit-autofill,\n ${name} input:-webkit-autofill::first-line,\n ${name} input:-webkit-autofill:hover,\n ${name} input:-webkit-autofill:active,\n ${name} input:-webkit-autofill:focus {\n -webkit-text-fill-color: var(${cssVarList.inputValueTextColor});\n box-shadow: 0 0 0 var(${cssVarList.inputHeight}) var(${cssVarList.inputBackgroundColor}) inset;\n }\n`;\n\nexport const resetInputFieldDefaultWidth = () => `\n :host {\n --vaadin-field-default-width: auto;\n box-sizing: border-box;\n }\n`;\n\nexport const resetInputReadonlyStyle = (name) => `\n ${name}::part(input-field)::after {\n opacity: 0;\n }\n`;\n\nexport const resetInputFieldInvalidBackgroundColor = (name) => `\n ${name}::part(input-field)::after {\n background: none;\n }\n`;\n\nexport const resetInputOverrides = (name, cssVarList) => `\n ${resetInputContainer(name)}\n ${resetInputCursor(name)}\n ${resetInputPlaceholder(name)}\n ${resetInputField(name)}\n ${resetInputAutoFill(name, cssVarList)}\n ${resetInputFieldInvalidBackgroundColor(name)}\n ${resetInitialHeight(name)}\n ${resetInputElement(name)}\n ${resetInputFieldUnderlayingBorder(name)}\n`;\n\n// This function is used to support RTL correctly for input components.\n// It also fixes the error message to be displayed LTR since we currently\n// don't support RTL for error messages.\nexport const resetInputLabelPosition = (name) => `\n :host ::part(error-message) {\n direction: ltr;\n }\n :host([required]) ::part(required-indicator) {\n width: 1em;\n display: inline-flex;\n }\n :host([required]) ::part(required-indicator)::after {\n position: static;\n }\n :host([has-label]) ::part(label) {\n padding-right: 0;\n padding-bottom: 0;\n display: flex;\n width: 100%;\n }\n ${name} [slot=\"label\"] {\n max-width: calc(100% - 1em);\n overflow: hidden;\n text-overflow: ellipsis;\n padding-bottom: 0.5em;\n }\n`;\n\nexport const inputFloatingLabelStyle = () => {\n return `\n :host([label-type=\"floating\"]) {\n position: relative;\n }\n :host([label-type=\"floating\"][has-label]) > ::part(label) {\n z-index: 1;\n padding: 0;\n width: auto;\n }\n `;\n};\n","import {\n createStyleMixin,\n draggableMixin,\n createProxy,\n proxyInputMixin,\n componentNameValidationMixin,\n} from '../../mixins';\nimport textFieldMappings from './textFieldMappings';\nimport { compose } from '../../helpers';\nimport { getComponentName } from '../../helpers/componentHelpers';\nimport {\n inputFloatingLabelStyle,\n resetInputLabelPosition,\n resetInputOverrides,\n useHostExternalPadding,\n} from '../../helpers/themeHelpers/resetHelpers';\n\nexport const componentName = getComponentName('text-field');\n\nconst observedAttrs = ['type', 'label-type', 'copy-to-clipboard'];\n\nconst customMixin = (superclass) =>\n class TextFieldClass extends superclass {\n static get observedAttributes() {\n return observedAttrs.concat(superclass.observedAttributes || []);\n }\n\n icon;\n\n init() {\n super.init?.();\n }\n\n renderCopyToClipboard(shouldRender) {\n if (!shouldRender) {\n this.icon?.remove();\n return;\n }\n\n const iconInitConfig = {\n icon: 'vaadin:copy-o',\n title: 'Copy',\n style: 'cursor: pointer',\n };\n\n const iconCopiedConfig = {\n icon: 'vaadin:check-circle-o',\n title: 'Copied',\n style: 'cursor: initial',\n };\n\n this.icon = Object.assign(document.createElement('vaadin-icon'), {\n slot: 'suffix',\n ...iconInitConfig,\n });\n\n this.baseElement.appendChild(this.icon);\n this.icon.addEventListener('click', () => {\n navigator.clipboard.writeText(this.value);\n Object.assign(this.icon, iconCopiedConfig);\n\n // we want the icon to go back to the initial state after 5 seconds\n setTimeout(() => {\n Object.assign(this.icon, iconInitConfig);\n }, 5000);\n });\n }\n\n onLabelClick() {\n this.focus();\n }\n\n attributeChangedCallback(attrName, oldVal, newVal) {\n super.attributeChangeCallback?.(attrName, oldVal, newVal);\n\n // Vaadin doesn't allow to change the input type attribute.\n // We need the ability to do that, so we're overriding their\n // behavior with their private API.\n // When receiving a `type` attribute, we use their private API\n // to set it on the input.\n if (attrName === 'type') {\n this.baseElement._setType(newVal);\n }\n\n if (oldVal !== newVal) {\n if (attrName === 'label-type') {\n if (newVal === 'floating') {\n this.addEventListener('click', this.onLabelClick);\n } else {\n this.removeEventListener('click', this.onLabelClick);\n }\n } else if (attrName === 'copy-to-clipboard') {\n this.renderCopyToClipboard(newVal === 'true');\n }\n }\n }\n };\n\nexport const TextFieldClass = compose(\n createStyleMixin({\n mappings: textFieldMappings,\n }),\n draggableMixin,\n proxyInputMixin({ proxyProps: ['value', 'selectionStart'], useProxyTargets: true }),\n componentNameValidationMixin,\n customMixin\n)(\n createProxy({\n slots: ['prefix', 'suffix'],\n wrappedEleName: 'vaadin-text-field',\n style: () => `\n\t\t\t:host {\n\t\t\t\tdisplay: inline-block;\n\t\t\t\tmax-width: 100%;\n\t\t\t\tpadding: calc(var(${TextFieldClass.cssVarList.inputOutlineWidth}) + var(${\n TextFieldClass.cssVarList.inputOutlineOffset\n }));\n box-sizing: border-box;\n\t\t\t}\n :host(:is([readonly], [disabled])) ::slotted(:is(input, textarea):placeholder-shown) {\n opacity: 1;\n }\n\n vaadin-text-field[label-type=\"floating\"]:not([focused])[readonly] > input:placeholder-shown {\n opacity: 0;\n }\n vaadin-text-field[label-type=\"floating\"]:not([focused])[disabled] > input:placeholder-shown {\n opacity: 0;\n }\n ${resetInputLabelPosition('vaadin-text-field')}\n\t\t\t${useHostExternalPadding(TextFieldClass.cssVarList)}\n\t\t\t${resetInputOverrides('vaadin-text-field', TextFieldClass.cssVarList)}\n ${inputFloatingLabelStyle()}\n\n vaadin-text-field vaadin-icon {\n align-self: center;\n }\n\t\t`,\n excludeAttrsSync: ['tabindex', 'style'],\n componentName,\n })\n);\n","import {\n createStyleMixin,\n draggableMixin,\n createProxy,\n proxyInputMixin,\n componentNameValidationMixin,\n} from '../../../mixins';\nimport { TextClass } from '@descope-ui/descope-text/class';\nimport { compose } from '../../../helpers';\nimport { forwardAttrs, getComponentName, syncAttrs } from '../../../helpers/componentHelpers';\nimport { componentName as descopeInternalComponentName } from './descope-mappings-field-internal/MappingsFieldInternal';\n\nexport const componentName = getComponentName('mappings-field');\n\nconst customMixin = (superclass) =>\n class MappingsFieldMixinClass extends superclass {\n get defaultValues() {\n const defaultValuesAttr = this.getAttribute('default-values');\n if (defaultValuesAttr) {\n try {\n return JSON.parse(defaultValuesAttr);\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error('could not parse data string from attribute \"default-values\" -', e.message);\n }\n }\n return [];\n }\n\n setDefaultValues() {\n const initialDefaultValues = this.defaultValues;\n if (Object.keys(initialDefaultValues).length > 0) {\n this.inputElement.value = initialDefaultValues;\n }\n }\n\n init() {\n super.init?.();\n const template = document.createElement('template');\n\n template.innerHTML = `\n <${descopeInternalComponentName}\n tabindex=\"-1\"\n ></${descopeInternalComponentName}>\n `;\n\n this.baseElement.appendChild(template.content.cloneNode(true));\n\n this.inputElement = this.shadowRoot.querySelector(descopeInternalComponentName);\n\n forwardAttrs(this, this.inputElement, {\n includeAttrs: [\n 'size',\n 'full-width',\n 'label-value',\n 'label-attr',\n 'button-label',\n 'separator',\n 'options',\n 'default-values',\n 'invalid',\n 'readonly',\n 'disabled',\n 'st-error-message-icon',\n 'st-error-message-icon-size',\n 'st-error-message-icon-padding',\n ],\n });\n\n // This is required since when we remove the invalid attribute from the internal mappings field,\n // we want to reflect the change in the parent component\n syncAttrs(this, this.inputElement, { includeAttrs: ['invalid'] });\n\n this.setDefaultValues();\n }\n };\n\nconst {\n host,\n helperText,\n errorMessage,\n mappingItem,\n labels,\n labelsText,\n valueLabel,\n attrLabel,\n separator,\n labelsContainer,\n} = {\n host: { selector: () => ':host' },\n helperText: { selector: '::part(helper-text)' },\n errorMessage: { selector: '::part(error-message)' },\n mappingItem: { selector: 'descope-mapping-item::part(wrapper)' },\n labels: { selector: 'descope-mappings-field-internal [part=\"labels\"] descope-text' },\n labelsText: {\n selector: 'descope-mappings-field-internal [part=\"labels\"] descope-text::part(text-wrapper)',\n },\n valueLabel: { selector: 'descope-mappings-field-internal [part=\"labels\"] [part=\"value-label\"]' },\n attrLabel: { selector: 'descope-mappings-field-internal [part=\"labels\"] [part=\"attr-label\"]' },\n separator: { selector: 'descope-mapping-item::part(separator)' },\n labelsContainer: { selector: 'descope-mappings-field-internal [part=\"labels\"]' },\n};\n\nexport const MappingsFieldClass = compose(\n createStyleMixin({\n mappings: {\n hostWidth: { ...host, property: 'width' },\n hostDirection: { ...host, property: 'direction' },\n // we apply font-size also on the host so we can set its width with em\n fontSize: [{}, host, { ...separator, property: 'margin-top' }],\n fontFamily: [helperText, errorMessage, labels],\n separatorFontSize: { ...separator, property: 'font-size' },\n labelsFontSize: { ...labelsText, property: 'font-size' },\n labelsLineHeight: [\n { ...labelsText, property: 'line-height' },\n { ...labels, property: 'line-height' },\n ],\n labelTextColor: [\n { ...labels, property: TextClass.cssVarList.textColor },\n { ...separator, property: 'color' },\n ],\n itemMarginBottom: { ...mappingItem, property: 'margin-bottom' },\n valueLabelMinWidth: { ...valueLabel, property: 'min-width' },\n attrLabelMinWidth: { ...attrLabel, property: 'min-width' },\n labelsMarginBottom: { ...labelsContainer, property: 'margin-bottom' },\n separatorWidth: {},\n removeButtonWidth: {},\n },\n }),\n draggableMixin,\n proxyInputMixin({\n proxyProps: ['value', 'selectionStart'],\n inputEvent: 'input',\n proxyParentValidation: true,\n }),\n componentNameValidationMixin,\n customMixin\n)(\n createProxy({\n slots: [],\n wrappedEleName: 'vaadin-custom-field',\n style: () => `\n :host {\n display: inline-flex;\n max-width: 100%;\n direction: ltr;\n }\n vaadin-custom-field {\n line-height: unset;\n width: 100%;\n }\n\n descope-mappings-field-internal [part=\"labels\"] {\n display: none;\n grid-template-columns: 1fr var(${MappingsFieldClass.cssVarList.separatorWidth}) 1fr var(${MappingsFieldClass.cssVarList.removeButtonWidth});\n }\n\n descope-mappings-field-internal [part=\"labels\"] [part=\"value-label\"],\n descope-mappings-field-internal [part=\"labels\"] [part=\"attr-label\"] {\n ${TextClass.cssVarList.fontWeight}: 500;\n }\n\n descope-mappings-field-internal [part=\"labels\"] [part=\"value-label\"] {\n grid-column: 1 / span 1;\n }\n\n descope-mappings-field-internal [part=\"labels\"] [part=\"attr-label\"] {\n grid-column: 3 / span 1;\n }\n\n descope-mapping-item::part(wrapper) {\n display: grid;\n grid-template-columns: 1fr var(${MappingsFieldClass.cssVarList.separatorWidth}) 1fr var(${MappingsFieldClass.cssVarList.removeButtonWidth});\n }\n `,\n excludeAttrsSync: [\n 'tabindex',\n 'label-value',\n 'label-attr',\n 'button-label',\n 'options',\n 'error-message',\n ],\n componentName,\n })\n);\n\nexport default MappingsFieldClass;\n","import '@vaadin/custom-field';\nimport '@vaadin/icon';\nimport '@vaadin/icons';\nimport { componentName, MappingsFieldClass } from './MappingsFieldClass';\nimport '@descope-ui/descope-text';\nimport '@descope-ui/descope-button';\nimport '../../descope-text-field';\nimport '@descope-ui/descope-combo-box';\nimport './descope-mappings-field-internal';\nimport './descope-mapping-item';\n\ncustomElements.define(componentName, MappingsFieldClass);\n\nexport { MappingsFieldClass, componentName };\n","import { createBaseInputClass } from '../../../../baseClasses/createBaseInputClass';\nimport {\n getComponentName,\n forwardAttrs,\n observeAttributes,\n} from '../../../../helpers/componentHelpers';\n\nexport const componentName = getComponentName('saml-group-mappings-internal');\n\nconst BaseInputClass = createBaseInputClass({ componentName, baseSelector: '' });\n\nclass SamlGroupMappingsInternal extends BaseInputClass {\n static get observedAttributes() {\n return ['invalid'].concat(BaseInputClass.observedAttributes || []);\n }\n\n constructor() {\n super();\n\n this.innerHTML = `\n <descope-text-field variant=\"body2\" bordered=\"true\"></descope-text-field>\n <descope-mappings-field></descope-mappings-field>\n `;\n\n this.groupInputElement = this.querySelector('descope-text-field');\n this.mappingsElement = this.querySelector('descope-mappings-field');\n }\n\n resetInvalidIndication() {\n this.removeAttribute('invalid');\n }\n\n handleMappingsInvalidChange(changedAttributes) {\n if (changedAttributes.includes('invalid')) {\n if (!this.mappingsElement.hasAttribute('invalid')) {\n this.resetInvalidIndication();\n }\n }\n }\n\n initFocusHandler() {\n // This event listener needs to be placed before the super.init() call\n this.addEventListener('focus', (e) => {\n // we want to ignore focus events we are dispatching\n if (e.isTrusted) {\n const focusedElement = this.mappingsElement.checkValidity()\n ? this.groupInputElement\n : this.mappingsElement;\n focusedElement.focus();\n }\n });\n }\n\n init() {\n // This needs to be placed before the super.init() call to work\n this.initFocusHandler();\n\n super.init?.();\n\n forwardAttrs(this, this.groupInputElement, {\n mapAttrs: { 'label-group': 'label' },\n includeAttrs: ['size', 'label-group', 'readonly', 'disabled'],\n });\n\n forwardAttrs(this, this.mappingsElement, {\n includeAttrs: [\n 'size',\n 'full-width',\n 'label-value',\n 'label-attr',\n 'button-label',\n 'separator',\n 'options',\n 'readonly',\n 'disabled',\n 'data-errormessage-pattern-mismatch',\n ],\n });\n\n // Observing the invalid attribute of the mappings field to reset the invalid state for this component.\n // When an invalid item turns valid, the mappings field will remove the invalid attribute, and at this component\n // level, we need to remove the invalid attribute as well to be able to mark the component as invalid the next time\n observeAttributes(this.mappingsElement, this.handleMappingsInvalidChange.bind(this), {\n includeAttrs: ['invalid'],\n });\n }\n\n get value() {\n return {\n group: this.groupInputElement.value,\n mappings: this.mappingsElement.value,\n };\n }\n\n set value(value) {\n if (value?.group && typeof value.group === 'string') {\n this.groupInputElement.value = value.group;\n }\n if (Array.isArray(value?.mappings)) {\n this.mappingsElement.value = value.mappings;\n }\n }\n\n getValidity() {\n if (!this.groupInputElement.checkValidity()) {\n return this.groupInputElement.validity;\n }\n if (!this.mappingsElement.checkValidity()) {\n return this.mappingsElement.validity;\n }\n\n return {};\n }\n\n #handleInvalidState(isInvalid) {\n if (isInvalid) {\n if (!this.groupInputElement.checkValidity()) {\n this.groupInputElement.setAttribute('invalid', 'true');\n return;\n }\n\n if (!this.mappingsElement.checkValidity()) {\n this.mappingsElement.setAttribute('invalid', 'true');\n }\n }\n }\n\n attributeChangedCallback(attrName, oldValue, newValue) {\n super.attributeChangedCallback?.(attrName, oldValue, newValue);\n if (attrName === 'invalid') {\n this.#handleInvalidState(newValue === 'true');\n }\n }\n}\n\nexport default SamlGroupMappingsInternal;\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 }\n `,\n excludeAttrsSync: ['tabindex', 'class'],\n componentName,\n }),\n);\n"],"names":["componentName","BaseInputClass","baseSelector","observedAttributes","concat","isValidDataType","data","every","obj","Array","isArray","Object","getOwnPropertyNames","length","keys","trim","e","labelValue","this","getAttribute","labelAttr","buttonLabel","options","addNewMappingItem","focusNewItem","newMappingItem","document","createElement","setAttribute","mappingsContainerEle","appendChild","includeAttrs","setTimeout","setCustomValidity","addEventListener","resetInvalidIndication","undefined","remove","dispatchEvent","CustomEvent","bubbles","composed","focus","items","from","querySelectorAll","value","reduce","acc","item","mappings","console","error","currentItems","i","removeChild","forEach","mapping","index","mappingItem","constructor","super","innerHTML","labelsEle","querySelector","buttonContainer","initLabels","initAddButton","isDisabled","button","onclick","style","display","init","isTrusted","contains","checkValidity","removeAttribute","bind","getValidity","errorItem","find","validity","isInvalid","reportValidity","attributeChangedCallback","attrName","oldValue","newValue","toggleAttribute","createBaseInputClass","args","host","label","placeholder","requiredIndicator","inputField","input","inputMask","helperText","errorMessage","disabledPlaceholder","inputDisabled","inputIcon","externalInput","externalInputDisabled","externalPlaceholder","externalDisabledPlaceholder","selector","fontSize","fontFamily","labelFontSize","property","labelFontWeight","labelTextColor","hostWidth","hostMinWidth","hostDirection","inputDirection","inputBackgroundColor","errorMessageTextColor","errorMessageIcon","errorMessageIconSize","errorMessageIconPadding","errorMessageIconRepeat","errorMessageIconPosition","errorMessageFontSize","helperTextColor","inputValueTextColor","inputCaretTextColor","labelRequiredIndicator","inputBorderColor","inputBorderWidth","inputBorderStyle","inputBorderRadius","inputHeight","inputHorizontalPadding","inputOutlineColor","inputOutlineStyle","inputOutlineWidth","inputOutlineOffset","textAlign","inputTextAlign","inputPlaceholderColor","labelPosition","labelTopPosition","labelHorizontalPosition","inputTransformY","inputTransition","marginInlineStart","placeholderOpacity","inputVerticalAlignment","valueInputHeight","valueInputMarginBottom","inputIconOffset","inputIconSize","inputIconColor","srcAttrs","RawImage","attachShadow","mode","toggleVisibility","src","onThemeChange","renderImage","isVisible","classList","add","altText","legacySrc","themeSrc","currentThemeName","updateFillColor","node","ele","ImageClass","cssVarList","fill","then","res","shouldRender","srcVal","height","width","customElements","define","clickableMixin","superclass","isLoading","click","createSvgEle","text","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","createImgEle","setProperty","slottedIcon","loadingIndicatorStyles","ButtonClass","hostHeight","cursor","backgroundColor","outlineOffset","outlineColor","outlineStyle","outlineWidth","borderRadius","borderColor","borderStyle","borderWidth","verticalPadding","horizontalPadding","fallback","iconColor","labelTextDecoration","labelSpacing","iconSize","slots","wrappedEleName","excludeAttrsSync","color","inputAttrs","separator","attributeValue","attributeInput","inputValue","valueInput","entries","attribute","InputEvent","shadowRoot","inputs","removeButton","mapAttrs","initRemoveButton","badInput","handleSeparatorChange","textContent","invalid","defaultErrorMsgValueMissing","groupInput","SamlGroupMappingsClass","groupNameInputMarginBottom","proxyProps","inputEvent","triggerValidationEvents","proxyParentValidation","template","baseElement","content","cloneNode","inputElement","RawText","hideWhenEmpty","hasChildren","childNodes","TextClass","textColor","textLineHeight","textLetterSpacing","textShadow","textTransform","fontStyle","fontWeight","useHostExternalPadding","resetInputContainer","name","resetInputField","resetInputCursor","resetInputPlaceholder","resetInputFieldDefaultWidth","resetInputReadonlyStyle","resetInputFieldInvalidBackgroundColor","resetInputOverrides","resetInputAutoFill","resetInitialHeight","resetInputElement","resetInputFieldUnderlayingBorder","resetInputLabelPosition","inputFloatingLabelStyle","observedAttrs","TextFieldClass","useProxyTargets","icon","renderCopyToClipboard","iconInitConfig","title","iconCopiedConfig","assign","slot","navigator","clipboard","writeText","onLabelClick","oldVal","newVal","attributeChangeCallback","_setType","removeEventListener","labels","labelsText","valueLabel","attrLabel","labelsContainer","MappingsFieldClass","separatorFontSize","labelsFontSize","labelsLineHeight","itemMarginBottom","valueLabelMinWidth","attrLabelMinWidth","labelsMarginBottom","separatorWidth","removeButtonWidth","defaultValues","defaultValuesAttr","JSON","parse","message","setDefaultValues","initialDefaultValues","groupInputElement","mappingsElement","handleMappingsInvalidChange","changedAttributes","includes","hasAttribute","initFocusHandler","group","IconClass"],"sourceRoot":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@descope/web-components-ui",
3
- "version": "1.110.0",
3
+ "version": "1.112.0",
4
4
  "description": "",
5
5
  "main": "dist/cjs/index.cjs.js",
6
6
  "module": "dist/index.esm.js",
@@ -75,22 +75,26 @@
75
75
  "libphonenumber-js": "^1.11.12",
76
76
  "lodash.debounce": "4.0.8",
77
77
  "lodash.merge": "4.6.2",
78
- "@descope-ui/common": "0.0.17",
79
- "@descope-ui/descope-button": "0.0.17",
80
- "@descope-ui/descope-image": "0.0.9",
81
- "@descope-ui/descope-icon": "0.0.16",
82
- "@descope-ui/descope-text": "0.0.18",
83
- "@descope-ui/descope-avatar": "0.0.18",
84
- "@descope-ui/descope-combo-box": "0.1.8",
85
- "@descope-ui/descope-autocomplete-field": "0.0.21",
86
- "@descope-ui/descope-address-field": "0.0.20",
87
- "@descope-ui/descope-timer": "0.0.16",
88
- "@descope-ui/descope-timer-button": "0.0.18",
89
- "@descope-ui/descope-password-strength": "0.0.12",
90
- "@descope-ui/descope-collapsible-container": "0.0.17",
91
- "@descope-ui/descope-recovery-codes": "0.0.5",
92
- "@descope-ui/descope-link": "0.0.2",
93
- "@descope-ui/descope-enriched-text": "0.0.2"
78
+ "@descope-ui/common": "0.0.18",
79
+ "@descope-ui/descope-image": "0.0.10",
80
+ "@descope-ui/descope-icon": "0.0.17",
81
+ "@descope-ui/descope-button": "0.0.19",
82
+ "@descope-ui/descope-text": "0.0.19",
83
+ "@descope-ui/descope-avatar": "0.0.19",
84
+ "@descope-ui/descope-combo-box": "0.1.9",
85
+ "@descope-ui/descope-autocomplete-field": "0.0.22",
86
+ "@descope-ui/descope-address-field": "0.0.21",
87
+ "@descope-ui/descope-timer": "0.0.17",
88
+ "@descope-ui/descope-timer-button": "0.0.20",
89
+ "@descope-ui/descope-list": "0.0.1",
90
+ "@descope-ui/descope-list-item": "0.0.1",
91
+ "@descope-ui/descope-apps-list": "0.0.1",
92
+ "@descope-ui/descope-outbound-apps": "0.0.2",
93
+ "@descope-ui/descope-password-strength": "0.0.13",
94
+ "@descope-ui/descope-collapsible-container": "0.0.18",
95
+ "@descope-ui/descope-recovery-codes": "0.0.6",
96
+ "@descope-ui/descope-link": "0.0.3",
97
+ "@descope-ui/descope-enriched-text": "0.0.3"
94
98
  },
95
99
  "overrides": {
96
100
  "@vaadin/avatar": "24.3.4",
@@ -1,6 +1,7 @@
1
1
  import { componentName, ScopesListClass } from './ScopesListClass';
2
- import '../descope-list';
2
+ import '@descope-ui/descope-list';
3
3
  import '../boolean-fields/descope-checkbox';
4
+ import '../boolean-fields/descope-switch-toggle';
4
5
 
5
6
  customElements.define(componentName, ScopesListClass);
6
7