@descope/web-components-ui 1.87.0 → 1.89.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.
@@ -1 +1 @@
1
- {"version":3,"file":"descope-date-field-index-js.js","mappings":"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","sources":["webpack://@descope/web-components-ui/./src/components/descope-text-field/textFieldMappings.js","webpack://@descope/web-components-ui/./src/components/descope-text-field/index.js","webpack://@descope/web-components-ui/./src/components/descope-date-field/formats.js","webpack://@descope/web-components-ui/./src/components/descope-date-field/DateCounterClass.js","webpack://@descope/web-components-ui/./src/components/descope-date-field/DateFieldClass.js","webpack://@descope/web-components-ui/./src/components/descope-date-field/index.js","webpack://@descope/web-components-ui/./src/components/descope-text-field/TextFieldClass.js"],"sourcesContent":["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","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 { DIVIDER, SUPPORTED_FORMATS } from './consts';\nimport { newDate } from './helpers';\n\nconst patterns = {\n MM: '(0?[1-9]|1[0-2])',\n DD: '(0?[1-9]|[12][0-9]|3[01])',\n YYYY: '([0-9]{4})',\n};\n\nconst createPattern = (format) => {\n const pattern = format\n .split(DIVIDER)\n .map((part) => patterns[part])\n .join('\\\\D');\n\n return `^${pattern}$`;\n};\n\nconst createToValuesFn = (format) => {\n const order = format.split(DIVIDER);\n return (match) => {\n const values = {};\n order.forEach((part, index) => {\n values[part] = match[index + 1];\n });\n return [values.YYYY, values.MM, values.DD];\n };\n};\n\nconst createDate = (val, regexp, toValuesFn) => {\n const match = regexp.exec(val);\n if (!match) return null;\n const [year, month, day] = toValuesFn(match);\n return newDate([year, month, day].join(DIVIDER));\n};\n\nconst createFormat = (format) => {\n const pattern = createPattern(format);\n const toValuesFn = createToValuesFn(format);\n const regexp = new RegExp(pattern);\n\n return {\n pattern,\n validate: (val) => regexp.test(val),\n getDate: (val) => createDate(val, regexp, toValuesFn),\n };\n};\n\nexport const formats = Object.fromEntries(SUPPORTED_FORMATS.map((f) => [f, createFormat(f)]));\n","// DateCounterClass allows us to add several counters to the input, and use them seperately.\n// For examele, we have a DayCounter, MonthCounter and YearCounter, which can each separately navigate\n// between different ranges.\nexport class DateCounter {\n constructor({ id, min, max, placeholder }) {\n this.id = id;\n this.data = [];\n this.min = min;\n this.max = max;\n this.placeholder = placeholder;\n }\n\n get #initialNumValue() {\n return this.data.length ? this.numberValue : 0;\n }\n\n get numberValue() {\n return Number(this.stringValue);\n }\n\n get stringValue() {\n return (this.data.join('') || this.placeholder).padStart(this.length, '0');\n }\n\n get isFull() {\n return this.numberValue * 10 > this.max || this.data.length === this.length;\n }\n\n get isEmpty() {\n return this.stringValue === this.placeholder;\n }\n\n get length() {\n return this.max.toString().length;\n }\n\n set(val) {\n this.data = val.toString().split('');\n }\n\n add(num) {\n this.data.push(num);\n\n if (this.numberValue > this.max) {\n this.data.length = 0;\n this.data.push(num);\n } else if (this.length < this.data.length) {\n this.data.shift();\n }\n\n return num;\n }\n\n del() {\n if (!this.data.filter((d) => d !== '0').filter(Boolean).length) {\n this.data.length = 0;\n } else {\n this.data.pop();\n }\n }\n\n clear() {\n this.data = [];\n }\n\n inc(gap) {\n this.replaceValue(this.#initialNumValue + (gap || 1));\n }\n\n dec(gap) {\n this.replaceValue(this.#initialNumValue - (gap || 1));\n }\n\n isInRange(val) {\n return val >= this.min && val <= this.max;\n }\n\n replaceValue(val) {\n if (this.isInRange(val)) {\n this.data = val.toString().padStart(this.length, 0).split('');\n }\n }\n}\n","import { createBaseInputClass } from '../../baseClasses/createBaseInputClass';\nimport {\n createStyleMixin,\n draggableMixin,\n componentNameValidationMixin,\n portalMixin,\n} from '../../mixins';\nimport { forwardAttrs, getComponentName } from '../../helpers/componentHelpers';\nimport { compose } from '../../helpers';\nimport {\n newDate,\n isValidTimestamp,\n formatTimestamp,\n isSupportedKey,\n isNumber,\n getKeyMap,\n getCurrentTime,\n overrideConstructedStylesheet,\n} from './helpers';\nimport { formats } from './formats';\nimport { calendarIcon } from './icons';\nimport { counterConfig, DEFAULT_FORMAT, DIVIDER, NATIVE_FORMAT } from './consts';\nimport { DateCounter } from './DateCounterClass';\nimport { TextFieldClass } from '../descope-text-field/TextFieldClass';\nimport { injectStyle } from '@descope-ui/common/components-helpers';\n\nexport const componentName = getComponentName('date-field');\n\n// we set baseSelector to `vaadin-popover` as a temporary hack, so our portalMixin will\n// be able to process this component's overlay. The whole process needs refactoring as soon as possible.\nconst BASE_SELECTOR = 'vaadin-popover';\nconst BaseInputClass = createBaseInputClass({ componentName, baseSelector: BASE_SELECTOR });\n\nconst dateFieldAttrs = ['format', 'opened', 'initial-value', 'readonly'];\nconst calendarAttrs = ['years-range', 'calendar-months', 'calendar-weekdays'];\nconst observedAttrs = [...dateFieldAttrs, ...calendarAttrs];\n\nclass RawDateFieldClass extends BaseInputClass {\n timestamp = '';\n\n format = DEFAULT_FORMAT;\n\n selectedCounterIdx = 0;\n\n dateCounters = [\n new DateCounter(counterConfig.MONTH),\n new DateCounter(counterConfig.DAY),\n new DateCounter(counterConfig.YEAR),\n ];\n\n static get observedAttributes() {\n return [].concat(BaseInputClass.observedAttributes || [], observedAttrs);\n }\n\n constructor() {\n super();\n\n this.attachShadow({ mode: 'open' }).innerHTML = `\n <div>\n <descope-text-field>\n <span slot=\"suffix\" class=\"toggle-calendar\">\n ${calendarIcon}\n </span>\n </descope-text-field>\n <vaadin-popover></vaadin-popover>\n </div>\n `;\n\n injectStyle(\n `\n :host {\n display: inline-block;\n box-sizing: border-box;\n user-select: none;\n max-width: 100%;\n }\n\n :host ::slotted {\n padding: 0;\n }\n\n .toggle-calendar {\n cursor: pointer;\n display: flex;\n align-self: center;\n z-index: 1;\n height: 100%;\n align-items: center;\n }\n\n :host([readonly=\"true\"]) .toggle-calendar {\n pointer-events: none;\n }\n `,\n this\n );\n\n this.inputElement = this.shadowRoot.querySelector('descope-text-field');\n this.popoverToggleButton = this.inputElement.querySelector('.toggle-calendar');\n\n this.oninvalid = () => {\n this.inputElement.setAttribute('invalid', 'true');\n this.inputElement.focus();\n };\n }\n\n get opened() {\n return this.getAttribute('opened') === 'true';\n }\n\n // returns the input's value as a timestamp\n get inputValueTimestamp() {\n const date = formats[this.format].getDate(this.inputElement.value);\n\n if (!isValidTimestamp(date?.getTime())) {\n return null;\n }\n\n return date.getTime();\n }\n\n get sortedCounters() {\n return this.format\n .split(DIVIDER)\n .map((placeholder) => this.dateCounters.find((dc) => dc.placeholder === placeholder));\n }\n\n get activeCounter() {\n return this.sortedCounters[this.selectedCounterIdx];\n }\n\n get countersValue() {\n return this.sortedCounters.map((dc) => dc.stringValue).join(DIVIDER);\n }\n\n get overlay() {\n return this.baseElement.shadowRoot?.querySelector('vaadin-popover-overlay');\n }\n\n get backdrop() {\n return this.overlay.shadowRoot?.querySelector('#backdrop');\n }\n\n get calendar() {\n return this.overlay?.querySelector('descope-calendar');\n }\n\n get isRTL() {\n const computedStyleDirection = getComputedStyle(this.baseElement).getPropertyValue('direction');\n\n if (computedStyleDirection) {\n return computedStyleDirection === 'rtl';\n }\n\n // Fallback: If for some reason computed style was not calculated in time, fallback to check on attribute\n return this.getAttribute('st-host-direction') === 'rtl';\n }\n\n get value() {\n return this.timestamp;\n }\n\n set value(val) {\n if (!val) return;\n\n const numVal = Number(val);\n const isValTimestamp = !Number.isNaN(numVal);\n\n let date;\n let timestamp;\n\n if (isValTimestamp) {\n date = newDate(numVal);\n timestamp = numVal;\n } else {\n date = newDate(val);\n timestamp = date.getTime();\n }\n\n if (!isValidTimestamp(timestamp) || timestamp === this.timestamp) {\n return;\n }\n\n this.timestamp = timestamp;\n\n this.updateInputDisplay();\n this.updateDateCounters(date);\n\n // since baseElement is set to vaadin-popover, we need to manually dispatch an input event to trigger getValidity\n this.dispatchEvent(new Event('input'));\n }\n\n updateInputDisplay() {\n this.inputElement.value = formatTimestamp(newDate(this.value).getTime(), this.format);\n }\n\n init() {\n super.init?.();\n\n this.updateFormatPattern();\n this.initPopover();\n this.initInputElement();\n\n setTimeout(() => {\n this.#overrideOverlaySettings();\n }, 0);\n }\n\n initInputElement() {\n this.popoverToggleButton.addEventListener('click', this.onPopoverToggle.bind(this));\n\n this.inputElement.addEventListener('focus', this.onFocus.bind(this));\n this.inputElement.addEventListener('blur', this.onBlur.bind(this));\n this.inputElement.addEventListener('input', this.onInput.bind(this));\n this.inputElement.addEventListener('click', this.handleMouseCaretPositionChange.bind(this));\n this.inputElement.addEventListener('keydown', this.handleKeyDownValueChange.bind(this));\n this.inputElement.addEventListener('keydown', this.handleKeydownCaretPositionChange.bind(this));\n this.inputElement.addEventListener('keydown', this.handleValueChange.bind(this));\n\n forwardAttrs(this, this.inputElement, {\n includeAttrs: [\n 'label',\n 'label-type',\n 'placeholder',\n 'disabled',\n 'readonly',\n 'bordered',\n 'required',\n 'full-width',\n 'st-host-direction',\n 'pattern',\n 'invalid',\n 'bordered',\n ],\n });\n }\n\n initPopover() {\n this.baseElement.trigger = ['click'];\n this.baseElement.withBackdrop = true;\n this.baseElement.renderer = this.#popoverRenderer.bind(this);\n\n // block popover events from focusing/blurring the text-field\n this.baseElement.addEventListener('click', (e) => {\n e.preventDefault();\n e.stopPropagation();\n });\n }\n\n #popoverPosStylesheet;\n\n #popoverRenderer(root) {\n // popoverRenderer should run only once, when the popover is first rendering.\n if (!root.firstChild) {\n this.overlay.positionTarget = this.shadowRoot.querySelector('.toggle-calendar');\n\n root.appendChild(this.#getPopoverContent());\n\n // override vaadin's constructed stylesheet which hides the host element\n overrideConstructedStylesheet(this.baseElement);\n\n this.backdrop.addEventListener('click', this.closePopover.bind(this));\n }\n\n // Hide overlay before adjusting position to prevent flickering\n root.style.setProperty('visibility', 'hidden');\n\n // Wait until overlay is ready\n setTimeout(() => {\n this.#adjustPopoverPosition(root);\n\n // Show adjusted overlay\n root.style.setProperty('visibility', 'visible');\n this.updateCalendarView(root);\n }, 100);\n }\n\n #adjustPopoverPosition() {\n const popover = this.shadowRoot.querySelector('vaadin-popover').shadowRoot;\n\n // Remove previously added stylesheets\n this.#popoverPosStylesheet?.remove();\n\n const windowRect = document.body.getBoundingClientRect();\n const inputRect = this.getBoundingClientRect();\n const calendarRect = this.calendar.getBoundingClientRect();\n\n const side = this.isRTL ? 'right' : 'left';\n const offset = inputRect[side] - calendarRect[side];\n const availableLeft = calendarRect.left;\n const availableRight = windowRect.width - calendarRect.right;\n\n let newOffset;\n if (offset > 0) {\n newOffset = Math.min(offset, availableRight);\n } else {\n newOffset = Math.min(Math.abs(offset), availableLeft) * -1;\n }\n\n injectStyle(\n `\n vaadin-popover-overlay::part(overlay) {\n transform: translateX(${newOffset}px);\n }\n `,\n popover\n );\n }\n\n #getPopoverContent() {\n const ele = document.createElement('span');\n\n ele.innerHTML = `<descope-calendar></descope-calendar>`;\n\n const calendar = ele.querySelector('descope-calendar');\n\n calendar.addEventListener('date-submit', this.onCalendarSubmit.bind(this));\n calendar.addEventListener('cancel', this.closePopover.bind(this));\n\n return ele;\n }\n\n // the default vaadin behavior is to attach the overlay to the body when opened\n // we do not want that because it's difficult to style the overlay in this way\n // so we override it to open inside the shadow DOM\n #overrideOverlaySettings() {\n this.overlay._attachOverlay = () => this.overlay.bringToFront();\n this.overlay._detachOverlay = () => {};\n this.overlay._enterModalState = () => {};\n }\n\n onPopoverToggle() {\n this.opened ? this.closePopover() : this.openPopover();\n }\n\n openPopover() {\n this.setAttribute('opened', 'true');\n }\n\n closePopover() {\n this.removeAttribute('opened');\n this.inputElement.focus();\n }\n\n getCounterById(id) {\n return this.dateCounters.find((dc) => dc.id === id);\n }\n\n onCalendarSubmit() {\n if (!this.isReadOnly) {\n if (!this.calendar.value) return;\n\n const calendarDate = newDate(this.calendar.value);\n\n this.value = calendarDate.getTime();\n\n this.getCounterById('year').replaceValue(calendarDate.getFullYear());\n this.getCounterById('month').replaceValue(calendarDate.getMonth() + 1);\n this.getCounterById('day').replaceValue(calendarDate.getDate());\n\n this.dispatchEvent(new Event('input'));\n }\n\n this.closePopover();\n }\n\n updateCalendarView() {\n const validInputVal =\n isValidTimestamp(newDate(this.inputElement.value || '').getTime()) &&\n formats[this.format].validate(this.inputElement.value);\n\n if (this.inputValueTimestamp || validInputVal) {\n this.calendar.setAttribute(\n 'initial-value',\n formatTimestamp(this.inputValueTimestamp || this.timestamp, NATIVE_FORMAT)\n );\n } else {\n this.calendar.clearValue();\n this.calendar.setAttribute('preview', formatTimestamp(getCurrentTime(), NATIVE_FORMAT));\n }\n\n forwardAttrs(this, this.calendar, {\n includeAttrs: [\n 'st-host-direction',\n 'readonly',\n 'initial-month',\n 'initial-year',\n 'years-range',\n 'calendar-label-submit',\n 'calendar-label-cancel',\n 'calendar-months',\n 'calendar-weekdays',\n 'calendar-weekdays-short',\n ],\n });\n }\n\n onInput(e) {\n if (!e.target.value) {\n this.calendar?.clear();\n this.calendar?.renderCalendar();\n }\n }\n\n onFocus() {\n if (this.isReadOnly) {\n return;\n }\n\n if (!this.inputElement.value) {\n this.inputElement.value = this.format;\n this.setInputSelectionRange();\n }\n }\n\n clearInputValue() {\n this.inputElement.value = '';\n this.resetDateCounters();\n }\n\n onBlur() {\n if (this.inputValueTimestamp) {\n this.value = this.inputValueTimestamp;\n } else if (!this.opened && this.countersValue === this.format) {\n this.clearInputValue();\n }\n }\n\n onFormatUpdate(format) {\n if (Object.keys(formats).includes(format)) {\n this.format = format;\n this.updateFormatPattern();\n }\n }\n\n updateFormatPattern() {\n const format = this.getAttribute('format') || this.format || DEFAULT_FORMAT;\n this.setAttribute('type', 'date');\n this.setAttribute('pattern', formats[format].pattern);\n }\n\n handleValueChange(e) {\n if (isNumber(e.key)) {\n e.preventDefault();\n\n this.handleCountersValue(e.key);\n\n if (this.activeCounter.isFull) {\n this.selectNextCounter();\n }\n\n this.setInputSelectionRange();\n }\n }\n\n getCounterIdx(caretPos) {\n const [counter1ln, counter2ln] = this.sortedCounters.map((dc) => dc.length);\n\n const c1 = caretPos <= counter1ln;\n const c2 = caretPos >= counter1ln && caretPos <= counter1ln + counter2ln + 1;\n const c3 = caretPos >= counter1ln + counter2ln + 2;\n\n return [c1, c2, c3].indexOf(true);\n }\n\n handleCountersValue(val) {\n this.activeCounter.add(val);\n this.inputElement.value = this.countersValue;\n }\n\n setSelectedCounterByCaretPosition(e) {\n this.selectedCounterIdx = this.getCounterIdx(e.target.selectionStart);\n }\n\n selectNextCounter() {\n if (this.selectedCounterIdx < this.dateCounters.length) {\n this.selectedCounterIdx = Math.min(this.selectedCounterIdx + 1, 2);\n }\n }\n\n selectPrevCounter() {\n if (this.selectedCounterIdx > 0) {\n this.selectedCounterIdx = Math.min(this.selectedCounterIdx - 1, 1);\n }\n }\n\n // Sets the text selection range in the input element based on the selected counter.\n // The function calculates the starting position of the selection by summing the lengths\n // of all counters before the currently selected counter (`selectedCounterIdx`).\n // It then selects the entire length of the current counter in the input element.\n setInputSelectionRange() {\n // For preview/readonly state we don't have a caret or a caretIdx, so we skip setting input selection range\n if (this.selectedCounterIdx < 0) {\n return;\n }\n\n const caretStart = this.sortedCounters\n .slice(0, this.selectedCounterIdx)\n .reduce((acc, counter) => acc + counter.length, this.selectedCounterIdx);\n\n this.inputElement.setSelectionRange(\n caretStart,\n caretStart + this.sortedCounters[this.selectedCounterIdx].length\n );\n }\n\n resetDateCounters() {\n this.dateCounters.forEach((dc) => dc.clear());\n }\n\n // in case value is set from external source we need to update date counters\n updateDateCounters(date) {\n this.dateCounters.forEach((dc) => {\n switch (dc.id) {\n case counterConfig.MONTH.id:\n dc.set(date.getMonth() + 1);\n break;\n case counterConfig.YEAR.id:\n dc.set(date.getFullYear());\n break;\n case counterConfig.DAY.id:\n dc.set(date.getDate());\n break;\n default:\n break;\n }\n });\n }\n\n handleKeyDownValueChange(e) {\n if (this.isReadOnly) {\n return;\n }\n\n const { key, shiftKey, metaKey } = e;\n const keys = getKeyMap(key, shiftKey, metaKey);\n const allowedOperations = keys.refresh || keys.tab || keys.shiftTab;\n\n if (this.opened) {\n this.closePopover();\n }\n\n if (isSupportedKey(key)) {\n e.preventDefault();\n const counter = this.activeCounter;\n\n if (!counter) return;\n\n const counterData = Object.values(counterConfig).find((config) => config.id === counter.id);\n const { count, shiftCount } = counterData;\n\n if (keys.backspace) this.handleBackspace();\n else if (keys.arrowUp) counter.inc();\n else if (keys.arrowDown) counter.dec();\n else if (keys.shiftArrowUp) counter.inc(count);\n else if (keys.shiftArrowDown) counter.dec(count);\n else if (keys.pageUp) counter.inc(count);\n else if (keys.pageDown) counter.dec(count);\n else if (keys.shiftPageUp) counter.inc(shiftCount);\n else if (keys.shiftPageDown) counter.dec(shiftCount);\n\n this.inputElement.value = this.countersValue;\n\n this.setInputSelectionRange();\n } else if (!allowedOperations) {\n e.preventDefault();\n }\n }\n\n handleBackspace() {\n const counter = this.activeCounter;\n\n if (counter.isEmpty) {\n this.selectPrevCounter();\n this.setInputSelectionRange();\n } else {\n counter.del();\n }\n }\n\n handleKeydownCaretPositionChange(e) {\n if (this.opened) {\n return;\n }\n\n const { key } = e;\n\n if (isSupportedKey(key)) {\n e.preventDefault();\n\n const keys = getKeyMap(key, false);\n\n if (keys.arrowRight) this.selectNextCounter();\n else if (keys.arrowLeft) this.selectPrevCounter();\n\n this.setInputSelectionRange();\n }\n }\n\n handleMouseCaretPositionChange(e) {\n if (this.opened) {\n return;\n }\n e.preventDefault();\n this.setSelectedCounterByCaretPosition(e);\n this.setInputSelectionRange();\n }\n\n onInitialValueChange(val) {\n // if component already has a value don't re-set value\n if (this.value) return;\n\n // we need to wait for the text-field to init\n setTimeout(() => {\n this.value = val;\n });\n }\n\n attributeChangedCallback(attrName, oldValue, newValue) {\n super.attributeChangedCallback?.(attrName, oldValue, newValue);\n\n if (oldValue !== newValue) {\n if (dateFieldAttrs.includes(attrName)) {\n if (newValue && attrName === 'format') {\n this.onFormatUpdate(newValue);\n }\n if (attrName === 'initial-value') {\n this.onInitialValueChange(newValue);\n }\n } else if (calendarAttrs.includes(attrName)) {\n if (newValue) {\n this.calendar?.setAttribute(attrName, newValue);\n } else {\n this.calendar?.removeAttribute(attrName);\n }\n }\n }\n }\n\n getValidity() {\n if (this.isRequired && !this.inputElement.value) {\n return { valueMissing: true };\n }\n\n return {};\n }\n}\n\nconst textVars = TextFieldClass.cssVarList;\nconst { host, input, inputEleRTL, toggleButton, overlay, backdrop } = {\n host: { selector: () => ':host' },\n input: { selector: () => 'descope-text-field' },\n inputEleRTL: { selector: () => ':host([st-host-direction=\"rtl\"]) descope-text-field' },\n toggleButton: { selector: () => '.toggle-calendar' },\n overlay: { selector: 'vaadin-popover-overlay::part(overlay)' },\n backdrop: { selector: 'vaadin-popover-overlay::part(backdrop)' },\n};\n\nexport const DateFieldClass = compose(\n createStyleMixin({ componentNameOverride: getComponentName('input-wrapper') }),\n createStyleMixin({\n mappings: {\n iconMargin: { ...toggleButton, property: 'margin-inline-end' },\n hostWidth: { ...host, property: 'width' },\n hostDirection: { ...host, property: 'direction' },\n textAlign: { ...input, property: 'text-align' },\n rtlInputDirection: { ...inputEleRTL, property: textVars.inputDirection },\n rtlInputAlignment: { ...inputEleRTL, property: textVars.inputTextAlign },\n overlayGap: {\n property: () => DateFieldClass.cssVarList.overlayGap,\n },\n overlayBackgroundColor: {\n property: () => DateFieldClass.cssVarList.overlayBackgroundColor,\n },\n overlayPadding: {\n property: () => DateFieldClass.cssVarList.overlayPadding,\n },\n overlayBoxShadow: { property: () => DateFieldClass.overlayBoxShadow },\n overlayOutlineWidth: {\n property: () => DateFieldClass.cssVarList.overlayOutlineWidth,\n },\n overlayOutlineColor: {\n property: () => DateFieldClass.cssVarList.overlayOutlineColor,\n },\n overlayOutlineStyle: {\n property: () => DateFieldClass.cssVarList.overlayOutlineStyle,\n },\n },\n }),\n portalMixin({\n name: 'overlay',\n selector: '',\n mappings: {\n marginTop: { ...overlay, property: 'margin-top' },\n backgroundColor: { ...overlay },\n backdropBackgroundColor: { ...backdrop, property: 'background-color' },\n backdropPointerEvents: { ...backdrop, property: 'pointer-events' },\n padding: { ...overlay },\n boxShadow: { ...overlay },\n outlineWidth: { ...overlay },\n outlineColor: { ...overlay },\n outlineStyle: { ...overlay },\n },\n }),\n draggableMixin,\n componentNameValidationMixin\n)(RawDateFieldClass);\n","import '@vaadin/popover/src/vaadin-popover';\nimport './descope-calendar';\nimport '../descope-text-field';\n\nimport { componentName, DateFieldClass } from './DateFieldClass';\n\ncustomElements.define(componentName, DateFieldClass);\n\nexport { DateFieldClass, componentName };\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"],"names":["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","customElements","define","patterns","MM","DD","YYYY","createFormat","format","pattern","split","map","part","join","createPattern","toValuesFn","order","match","values","forEach","index","createToValuesFn","regexp","RegExp","validate","val","test","getDate","exec","year","month","day","createDate","formats","Object","fromEntries","f","DateCounter","constructor","id","min","max","this","data","length","numberValue","Number","stringValue","padStart","isFull","isEmpty","toString","set","add","num","push","shift","del","filter","d","Boolean","pop","clear","inc","gap","replaceValue","dec","isInRange","componentName","BaseInputClass","createBaseInputClass","baseSelector","dateFieldAttrs","calendarAttrs","observedAttrs","textVars","TextFieldClass","cssVarList","inputEleRTL","toggleButton","overlay","backdrop","DateFieldClass","componentNameOverride","mappings","iconMargin","rtlInputDirection","rtlInputAlignment","overlayGap","overlayBackgroundColor","overlayPadding","overlayBoxShadow","overlayOutlineWidth","overlayOutlineColor","overlayOutlineStyle","name","marginTop","backgroundColor","backdropBackgroundColor","backdropPointerEvents","padding","boxShadow","outlineWidth","outlineColor","outlineStyle","timestamp","selectedCounterIdx","dateCounters","MONTH","DAY","YEAR","observedAttributes","concat","super","attachShadow","mode","innerHTML","inputElement","shadowRoot","querySelector","popoverToggleButton","oninvalid","setAttribute","focus","opened","getAttribute","inputValueTimestamp","date","value","getTime","sortedCounters","find","dc","activeCounter","countersValue","baseElement","calendar","isRTL","computedStyleDirection","getComputedStyle","getPropertyValue","numVal","isNaN","updateInputDisplay","updateDateCounters","dispatchEvent","Event","init","updateFormatPattern","initPopover","initInputElement","setTimeout","addEventListener","onPopoverToggle","bind","onFocus","onBlur","onInput","handleMouseCaretPositionChange","handleKeyDownValueChange","handleKeydownCaretPositionChange","handleValueChange","includeAttrs","trigger","withBackdrop","renderer","e","preventDefault","stopPropagation","root","firstChild","positionTarget","appendChild","closePopover","style","setProperty","updateCalendarView","popover","remove","windowRect","document","body","getBoundingClientRect","inputRect","calendarRect","side","offset","availableLeft","left","availableRight","width","right","newOffset","Math","abs","ele","createElement","onCalendarSubmit","_attachOverlay","bringToFront","_detachOverlay","_enterModalState","openPopover","removeAttribute","getCounterById","isReadOnly","calendarDate","getFullYear","getMonth","validInputVal","clearValue","target","renderCalendar","setInputSelectionRange","clearInputValue","resetDateCounters","onFormatUpdate","keys","includes","key","handleCountersValue","selectNextCounter","getCounterIdx","caretPos","counter1ln","counter2ln","indexOf","setSelectedCounterByCaretPosition","selectionStart","selectPrevCounter","caretStart","slice","reduce","acc","counter","setSelectionRange","shiftKey","metaKey","allowedOperations","refresh","tab","shiftTab","counterData","config","count","shiftCount","backspace","handleBackspace","arrowUp","arrowDown","shiftArrowUp","shiftArrowDown","pageUp","pageDown","shiftPageUp","shiftPageDown","arrowRight","arrowLeft","onInitialValueChange","attributeChangedCallback","attrName","oldValue","newValue","getValidity","isRequired","valueMissing","proxyProps","useProxyTargets","superclass","icon","renderCopyToClipboard","shouldRender","iconInitConfig","title","iconCopiedConfig","assign","slot","navigator","clipboard","writeText","onLabelClick","oldVal","newVal","attributeChangeCallback","_setType","removeEventListener","slots","wrappedEleName","excludeAttrsSync"],"sourceRoot":""}
1
+ {"version":3,"file":"descope-date-field-index-js.js","mappings":"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","sources":["webpack://@descope/web-components-ui/./src/components/descope-text-field/textFieldMappings.js","webpack://@descope/web-components-ui/./src/components/descope-text-field/index.js","webpack://@descope/web-components-ui/./src/components/descope-date-field/formats.js","webpack://@descope/web-components-ui/./src/components/descope-date-field/DateCounterClass.js","webpack://@descope/web-components-ui/./src/components/descope-date-field/DateFieldClass.js","webpack://@descope/web-components-ui/./src/components/descope-date-field/index.js","webpack://@descope/web-components-ui/./src/components/descope-text-field/TextFieldClass.js"],"sourcesContent":["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","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 { DIVIDER, SUPPORTED_FORMATS } from './consts';\nimport { newDate } from './helpers';\n\nconst patterns = {\n MM: '(0?[1-9]|1[0-2])',\n DD: '(0?[1-9]|[12][0-9]|3[01])',\n YYYY: '([0-9]{4})',\n};\n\nconst createPattern = (format) => {\n const pattern = format\n .split(DIVIDER)\n .map((part) => patterns[part])\n .join('\\\\D');\n\n return `^${pattern}$`;\n};\n\nconst createToValuesFn = (format) => {\n const order = format.split(DIVIDER);\n return (match) => {\n const values = {};\n order.forEach((part, index) => {\n values[part] = match[index + 1];\n });\n return [values.YYYY, values.MM, values.DD];\n };\n};\n\nconst createDate = (val, regexp, toValuesFn) => {\n const match = regexp.exec(val);\n if (!match) return null;\n const [year, month, day] = toValuesFn(match);\n return newDate([year, month, day].join(DIVIDER));\n};\n\nconst createFormat = (format) => {\n const pattern = createPattern(format);\n const toValuesFn = createToValuesFn(format);\n const regexp = new RegExp(pattern);\n\n return {\n pattern,\n validate: (val) => regexp.test(val),\n getDate: (val) => createDate(val, regexp, toValuesFn),\n };\n};\n\nexport const formats = Object.fromEntries(SUPPORTED_FORMATS.map((f) => [f, createFormat(f)]));\n","// DateCounterClass allows us to add several counters to the input, and use them seperately.\n// For examele, we have a DayCounter, MonthCounter and YearCounter, which can each separately navigate\n// between different ranges.\nexport class DateCounter {\n #data = Object.freeze([]);\n\n constructor({ id, min, max, placeholder }, onChange) {\n this.id = id;\n this.min = min;\n this.max = max;\n this.placeholder = placeholder;\n this.onChange = onChange;\n }\n\n get data() {\n return this.#data;\n }\n\n set data(val) {\n this.#data = Object.freeze(val);\n this.onChange?.();\n }\n\n get #initialNumValue() {\n return this.data.length ? this.numberValue : 0;\n }\n\n get numberValue() {\n return Number(this.stringValue);\n }\n\n get stringValue() {\n return (this.data.join('') || this.placeholder).padStart(this.length, '0');\n }\n\n get isFull() {\n return this.numberValue * 10 > this.max || this.data.length === this.length;\n }\n\n get isEmpty() {\n return this.stringValue === this.placeholder;\n }\n\n get length() {\n return this.max.toString().length;\n }\n\n set(val) {\n this.data = val.toString().split('');\n }\n\n add(num) {\n // use local var to avoid triggering onChange\n let data = this.data;\n\n data = [...data, num];\n\n if (this.numberValue > this.max) {\n data = [num];\n } else if (this.length < data.length) {\n data = data.slice(1, data.length);\n }\n\n this.data = data;\n\n return num;\n }\n\n del() {\n if (!this.data.filter((d) => d !== '0').filter(Boolean).length) {\n this.data = [];\n } else {\n this.data = this.data.slice(0, this.data.length - 1);\n }\n }\n\n clear() {\n this.data = [];\n }\n\n inc(gap) {\n this.replaceValue(\n this.#initialNumValue < this.max\n ? Math.max(this.#initialNumValue + (gap || 1), this.min)\n : this.min\n );\n }\n\n dec(gap) {\n this.replaceValue(\n this.#initialNumValue > this.min\n ? Math.min(this.#initialNumValue - (gap || 1), this.max)\n : this.max\n );\n }\n\n isInRange(val) {\n return val >= this.min && val <= this.max;\n }\n\n replaceValue(val) {\n if (this.isInRange(val)) {\n this.data = val.toString().padStart(this.length, 0).split('');\n }\n }\n\n setMin(val) {\n this.min = Number(val);\n }\n\n setMax(val) {\n this.max = Number(val);\n }\n}\n","import { createBaseInputClass } from '../../baseClasses/createBaseInputClass';\nimport {\n createStyleMixin,\n draggableMixin,\n componentNameValidationMixin,\n portalMixin,\n} from '../../mixins';\nimport { forwardAttrs, getComponentName } from '../../helpers/componentHelpers';\nimport { compose } from '../../helpers';\nimport {\n newDate,\n isValidTimestamp,\n formatTimestamp,\n isSupportedKey,\n isNumber,\n getKeyMap,\n getCurrentTime,\n overrideConstructedStylesheet,\n} from './helpers';\nimport { formats } from './formats';\nimport { calendarIcon } from './icons';\nimport { counterConfig, DEFAULT_FORMAT, DIVIDER, NATIVE_FORMAT } from './consts';\nimport { DateCounter } from './DateCounterClass';\nimport { TextFieldClass } from '../descope-text-field/TextFieldClass';\nimport { injectStyle } from '@descope-ui/common/components-helpers';\n\nexport const componentName = getComponentName('date-field');\n\n// we set baseSelector to `vaadin-popover` as a temporary hack, so our portalMixin will\n// be able to process this component's overlay. The whole process needs refactoring as soon as possible.\nconst BASE_SELECTOR = 'vaadin-popover';\nconst BaseInputClass = createBaseInputClass({ componentName, baseSelector: BASE_SELECTOR });\n\nconst dateFieldAttrs = ['format', 'opened', 'initial-value', 'readonly'];\nconst calendarAttrs = ['years-range', 'calendar-months', 'calendar-weekdays'];\nconst observedAttrs = [...dateFieldAttrs, ...calendarAttrs];\n\nclass RawDateFieldClass extends BaseInputClass {\n timestamp = '';\n\n format = DEFAULT_FORMAT;\n\n selectedCounterIdx = 0;\n\n updateCountersDisplay() {\n this.inputElement.value = this.countersValue;\n }\n\n updateValue() {\n if (this.isCountersOutOfRange) {\n this.updateTimestamp('');\n } else {\n const date = formats[this.format].getDate(this.inputElement.value);\n this.updateTimestamp(date.getTime());\n }\n }\n\n onDateCounterChange = () => {\n this.updateCountersDisplay();\n this.updateValue();\n // update validity\n this.#dispatchInput();\n };\n\n updateTimestamp(epochOrDate) {\n if (!epochOrDate) {\n this.timestamp = '';\n } else {\n this.timestamp = newDate(epochOrDate).getTime();\n }\n }\n\n #yearDateCounter = new DateCounter(counterConfig.YEAR, this.onDateCounterChange.bind(this));\n\n dateCounters = [\n new DateCounter(counterConfig.MONTH, this.onDateCounterChange.bind(this)),\n new DateCounter(counterConfig.DAY, this.onDateCounterChange.bind(this)),\n this.#yearDateCounter,\n ];\n\n static get observedAttributes() {\n return [].concat(BaseInputClass.observedAttributes || [], observedAttrs);\n }\n\n constructor() {\n super();\n\n this.attachShadow({ mode: 'open' }).innerHTML = `\n <div>\n <descope-text-field>\n <span slot=\"suffix\" class=\"toggle-calendar\">\n ${calendarIcon}\n </span>\n </descope-text-field>\n <vaadin-popover></vaadin-popover>\n </div>\n `;\n\n injectStyle(\n `\n :host {\n display: inline-block;\n box-sizing: border-box;\n user-select: none;\n max-width: 100%;\n }\n\n :host ::slotted {\n padding: 0;\n }\n\n .toggle-calendar {\n cursor: pointer;\n display: flex;\n align-self: center;\n z-index: 1;\n height: 100%;\n align-items: center;\n }\n\n :host([readonly=\"true\"]) .toggle-calendar {\n pointer-events: none;\n }\n `,\n this\n );\n\n this.inputElement = this.shadowRoot.querySelector('descope-text-field');\n this.popoverToggleButton = this.inputElement.querySelector('.toggle-calendar');\n }\n\n get validationTarget() {\n return this.inputElement;\n }\n\n get opened() {\n return this.getAttribute('opened') === 'true';\n }\n\n // returns the input's value as a timestamp\n get displayValueEpoch() {\n const date = formats[this.format].getDate(this.inputElement.value);\n\n if (!isValidTimestamp(date?.getTime())) {\n return null;\n }\n\n return date.getTime();\n }\n\n get sortedCounters() {\n return this.format\n .split(DIVIDER)\n .map((placeholder) => this.dateCounters.find((dc) => dc.placeholder === placeholder));\n }\n\n get activeCounter() {\n return this.sortedCounters[this.selectedCounterIdx];\n }\n\n get countersValue() {\n return this.sortedCounters.map((dc) => dc.stringValue).join(DIVIDER);\n }\n\n get overlay() {\n return this.baseElement.shadowRoot?.querySelector('vaadin-popover-overlay');\n }\n\n get backdrop() {\n return this.overlay.shadowRoot?.querySelector('#backdrop');\n }\n\n get calendar() {\n return this.overlay?.querySelector('descope-calendar');\n }\n\n get isRTL() {\n const computedStyleDirection = getComputedStyle(this.baseElement).getPropertyValue('direction');\n\n if (computedStyleDirection) {\n return computedStyleDirection === 'rtl';\n }\n\n // Fallback: If for some reason computed style was not calculated in time, fallback to check on attribute\n return this.getAttribute('st-host-direction') === 'rtl';\n }\n\n get value() {\n return this.timestamp;\n }\n\n set value(val) {\n if (val) {\n this.updateTimestamp(val);\n this.updateDateCounters(newDate(val));\n } else {\n this.updateTimestamp('');\n }\n }\n\n get isCountersEmpty() {\n return this.dateCounters.every((dc) => dc.isEmpty);\n }\n\n get isCountersOutOfRange() {\n return this.dateCounters.some((dc) => !dc.isInRange(dc.numberValue));\n }\n\n reportValidity() {\n this.inputElement.reportValidity();\n }\n\n #dispatchInput() {\n this.inputElement.baseElement.dispatchEvent(new Event('input', { bubbles: true }));\n }\n\n updateInputDisplay() {\n this.inputElement.value = formatTimestamp(newDate(this.countersValue).getTime(), this.format);\n }\n\n init() {\n super.init?.();\n\n this.updateFormatPattern();\n this.initPopover();\n this.onDateCounterChange();\n this.initInputElement();\n\n setTimeout(() => {\n this.#overrideOverlaySettings();\n }, 0);\n }\n\n initInputElement() {\n this.inputElement.getValidity = this.getValidity.bind(this);\n this.inputElement.baseElement.checkValidity = this.checkValidity.bind(this);\n\n this.popoverToggleButton.addEventListener('click', this.onPopoverToggle.bind(this));\n\n this.inputElement.addEventListener('focus', this.onFocus.bind(this));\n this.inputElement.addEventListener('blur', this.onBlur.bind(this));\n this.inputElement.addEventListener('click', this.handleMouseCaretPositionChange.bind(this));\n this.inputElement.addEventListener('keydown', this.handleNavKeys.bind(this));\n this.inputElement.addEventListener('keydown', this.handleDigitKeys.bind(this));\n\n forwardAttrs(this, this.inputElement, {\n includeAttrs: [\n 'label',\n 'label-type',\n 'placeholder',\n 'disabled',\n 'readonly',\n 'bordered',\n 'required',\n 'full-width',\n 'st-host-direction',\n 'pattern',\n 'bordered',\n 'data-errormessage-value-missing',\n 'data-errormessage-pattern-mismatch',\n 'data-errormessage-range-underflow',\n 'data-errormessage-range-overflow',\n 'st-error-message-icon',\n 'st-error-message-icon-size',\n 'st-error-message-icon-padding',\n ],\n });\n }\n\n initPopover() {\n this.baseElement.trigger = ['click'];\n this.baseElement.withBackdrop = true;\n this.baseElement.renderer = this.#popoverRenderer.bind(this);\n\n // block popover events from focusing/blurring the text-field\n this.baseElement.addEventListener('click', (e) => {\n e.preventDefault();\n e.stopPropagation();\n });\n }\n\n #popoverPosStylesheet;\n\n #popoverRenderer(root) {\n // popoverRenderer should run only once, when the popover is first rendering.\n if (!root.firstChild) {\n this.overlay.positionTarget = this.shadowRoot.querySelector('.toggle-calendar');\n\n root.appendChild(this.#getPopoverContent());\n\n // override vaadin's constructed stylesheet which hides the host element\n overrideConstructedStylesheet(this.baseElement);\n\n this.backdrop.addEventListener('click', this.closePopover.bind(this));\n }\n\n // Hide overlay before adjusting position to prevent flickering\n root.style.setProperty('visibility', 'hidden');\n\n // Wait until overlay is ready\n setTimeout(() => {\n this.#adjustPopoverPosition(root);\n\n // Show adjusted overlay\n root.style.setProperty('visibility', 'visible');\n this.updateCalendarView(root);\n }, 100);\n }\n\n #adjustPopoverPosition() {\n const popover = this.shadowRoot.querySelector('vaadin-popover').shadowRoot;\n\n // Remove previously added stylesheets\n this.#popoverPosStylesheet?.remove();\n\n const windowRect = document.body.getBoundingClientRect();\n const inputRect = this.getBoundingClientRect();\n const calendarRect = this.calendar.getBoundingClientRect();\n\n const side = this.isRTL ? 'right' : 'left';\n const offset = inputRect[side] - calendarRect[side];\n const availableLeft = calendarRect.left;\n const availableRight = windowRect.width - calendarRect.right;\n\n let newOffset;\n if (offset > 0) {\n newOffset = Math.min(offset, availableRight);\n } else {\n newOffset = Math.min(Math.abs(offset), availableLeft) * -1;\n }\n\n injectStyle(\n `\n vaadin-popover-overlay::part(overlay) {\n transform: translateX(${newOffset}px);\n }\n `,\n popover\n );\n }\n\n #getPopoverContent() {\n const ele = document.createElement('span');\n\n ele.innerHTML = `<descope-calendar></descope-calendar>`;\n\n const calendar = ele.querySelector('descope-calendar');\n\n calendar.addEventListener('date-submit', this.onCalendarSubmit.bind(this));\n calendar.addEventListener('cancel', this.closePopover.bind(this));\n\n return ele;\n }\n\n // the default vaadin behavior is to attach the overlay to the body when opened\n // we do not want that because it's difficult to style the overlay in this way\n // so we override it to open inside the shadow DOM\n #overrideOverlaySettings() {\n this.overlay._attachOverlay = () => this.overlay.bringToFront();\n this.overlay._detachOverlay = () => {};\n this.overlay._enterModalState = () => {};\n }\n\n onPopoverToggle() {\n this.opened ? this.closePopover() : this.openPopover();\n }\n\n openPopover() {\n this.setAttribute('opened', 'true');\n }\n\n closePopover() {\n this.removeAttribute('opened');\n this.inputElement.focus();\n }\n\n getCounterById(id) {\n return this.dateCounters.find((dc) => dc.id === id);\n }\n\n onCalendarSubmit() {\n if (!this.isReadOnly) {\n if (!this.calendar.value) return;\n\n const calendarDate = newDate(this.calendar.value);\n\n this.value = calendarDate.getTime();\n\n this.getCounterById('year').replaceValue(calendarDate.getFullYear());\n this.getCounterById('month').replaceValue(calendarDate.getMonth() + 1);\n this.getCounterById('day').replaceValue(calendarDate.getDate());\n\n this.#dispatchInput();\n }\n\n this.closePopover();\n }\n\n updateCalendarView() {\n const validInputVal =\n isValidTimestamp(newDate(this.inputElement.value || '').getTime()) &&\n formats[this.format].validate(this.inputElement.value);\n\n if (this.displayValueEpoch || validInputVal) {\n this.calendar.setAttribute(\n 'initial-value',\n formatTimestamp(this.displayValueEpoch || this.timestamp, NATIVE_FORMAT)\n );\n } else {\n this.calendar.clearValue();\n this.calendar.setAttribute('preview', formatTimestamp(getCurrentTime(), NATIVE_FORMAT));\n }\n\n forwardAttrs(this, this.calendar, {\n includeAttrs: [\n 'st-host-direction',\n 'readonly',\n 'initial-month',\n 'initial-year',\n 'years-range',\n 'calendar-label-submit',\n 'calendar-label-cancel',\n 'calendar-months',\n 'calendar-weekdays',\n 'calendar-weekdays-short',\n ],\n });\n }\n\n onFocus() {\n if (this.isReadOnly) {\n return;\n }\n\n if (!this.inputElement.value) {\n this.inputElement.value = this.format;\n this.setInputSelectionRange();\n }\n }\n\n onBlur() {\n if (this.opened) {\n return;\n }\n\n if (this.inputElement.value === this.format) {\n this.inputElement.value = '';\n }\n }\n\n onFormatUpdate(format) {\n if (Object.keys(formats).includes(format)) {\n this.format = format;\n this.updateFormatPattern();\n }\n }\n\n updateFormatPattern() {\n const format = this.getAttribute('format') || this.format || DEFAULT_FORMAT;\n this.setAttribute('type', 'date');\n this.setAttribute('pattern', formats[format].pattern);\n }\n\n handleDigitKeys(e) {\n if (isNumber(e.key)) {\n e.preventDefault();\n\n this.activeCounter.add(e.key);\n\n if (this.activeCounter.isFull) {\n this.selectNextCounter();\n }\n\n this.setInputSelectionRange();\n }\n }\n\n getCounterIdx(caretPos) {\n const [counter1ln, counter2ln] = this.sortedCounters.map((dc) => dc.length);\n\n const c1 = caretPos <= counter1ln;\n const c2 = caretPos >= counter1ln && caretPos <= counter1ln + counter2ln + 1;\n const c3 = caretPos >= counter1ln + counter2ln + 2;\n\n return [c1, c2, c3].indexOf(true);\n }\n\n setSelectedCounterByCaretPosition(e) {\n this.selectedCounterIdx = this.getCounterIdx(e.target.selectionStart);\n }\n\n selectNextCounter() {\n if (this.selectedCounterIdx < this.dateCounters.length) {\n this.selectedCounterIdx = Math.min(this.selectedCounterIdx + 1, 2);\n }\n }\n\n selectPrevCounter() {\n if (this.selectedCounterIdx > 0) {\n this.selectedCounterIdx = Math.min(this.selectedCounterIdx - 1, 1);\n }\n }\n\n // Sets the text selection range in the input element based on the selected counter.\n // The function calculates the starting position of the selection by summing the lengths\n // of all counters before the currently selected counter (`selectedCounterIdx`).\n // It then selects the entire length of the current counter in the input element.\n setInputSelectionRange() {\n // For preview/readonly state we don't have a caret or a caretIdx, so we skip setting input selection range\n if (this.selectedCounterIdx < 0) {\n return;\n }\n\n const caretStart = this.sortedCounters\n .slice(0, this.selectedCounterIdx)\n .reduce((acc, counter) => acc + counter.length, this.selectedCounterIdx);\n\n this.inputElement.setSelectionRange(\n caretStart,\n caretStart + this.sortedCounters[this.selectedCounterIdx].length\n );\n }\n\n resetDateCounters() {\n this.dateCounters.forEach((dc) => dc.clear());\n }\n\n // in case value is set from external source we need to update date counters\n updateDateCounters(date) {\n this.dateCounters.forEach((dc) => {\n switch (dc.id) {\n case counterConfig.MONTH.id:\n dc.set(date.getMonth() + 1);\n break;\n case counterConfig.YEAR.id:\n dc.set(date.getFullYear());\n break;\n case counterConfig.DAY.id:\n dc.set(date.getDate());\n break;\n default:\n break;\n }\n });\n }\n\n handleNavKeys(e) {\n if (this.isReadOnly) {\n return;\n }\n\n const { key, shiftKey, metaKey } = e;\n const keys = getKeyMap(key, shiftKey, metaKey);\n\n if (this.opened) {\n this.closePopover();\n }\n\n e.preventDefault();\n\n if (isSupportedKey(key)) {\n const counter = this.activeCounter;\n\n if (!counter) return;\n\n const counterData = Object.values(counterConfig).find((config) => config.id === counter.id);\n const { count, shiftCount } = counterData;\n\n if (keys.backspace) this.handleBackspace();\n else if (keys.arrowUp) counter.inc();\n else if (keys.arrowDown) counter.dec();\n else if (keys.shiftArrowUp) counter.inc(count);\n else if (keys.shiftArrowDown) counter.dec(count);\n else if (keys.pageUp) counter.inc(count);\n else if (keys.pageDown) counter.dec(count);\n else if (keys.shiftPageUp) counter.inc(shiftCount);\n else if (keys.shiftPageDown) counter.dec(shiftCount);\n else if (keys.arrowRight) this.selectNextCounter();\n else if (keys.arrowLeft) this.selectPrevCounter();\n\n this.setInputSelectionRange();\n }\n }\n\n handleBackspace() {\n const counter = this.activeCounter;\n\n if (counter.isEmpty) {\n this.selectPrevCounter();\n this.setInputSelectionRange();\n } else {\n counter.del();\n }\n }\n\n handleMouseCaretPositionChange(e) {\n if (this.opened) {\n return;\n }\n e.preventDefault();\n this.setSelectedCounterByCaretPosition(e);\n this.setInputSelectionRange();\n }\n\n onInitialValueChange(val) {\n // if component already has a value don't re-set value\n if (this.value) return;\n\n // we need to wait for the text-field to init\n setTimeout(() => {\n this.value = val;\n });\n }\n\n setYearRange(val) {\n if (!val) return;\n const [min, max] = val.split?.('-');\n if (min && max) {\n this.#yearDateCounter.setMin(min);\n this.#yearDateCounter.setMax(max);\n }\n }\n\n attributeChangedCallback(attrName, oldValue, newValue) {\n super.attributeChangedCallback?.(attrName, oldValue, newValue);\n\n if (oldValue !== newValue) {\n if (attrName === 'years-range') {\n this.setYearRange(newValue);\n }\n if (dateFieldAttrs.includes(attrName)) {\n if (newValue && attrName === 'format') {\n this.onFormatUpdate(newValue);\n }\n if (attrName === 'initial-value') {\n this.onInitialValueChange(newValue);\n }\n } else if (calendarAttrs.includes(attrName)) {\n if (newValue) {\n this.calendar?.setAttribute(attrName, newValue);\n } else {\n this.calendar?.removeAttribute(attrName);\n }\n }\n }\n }\n\n getValidity() {\n if (this.isRequired && this.isCountersEmpty) {\n return { valueMissing: true };\n }\n\n if (this.isCountersOutOfRange) {\n return { patternMismatch: true };\n }\n\n return {};\n }\n}\n\nconst textVars = TextFieldClass.cssVarList;\nconst { host, input, inputEleRTL, toggleButton, overlay, backdrop, errorMessage } = {\n host: { selector: () => ':host' },\n input: { selector: () => 'descope-text-field' },\n inputEleRTL: { selector: () => ':host([st-host-direction=\"rtl\"]) descope-text-field' },\n toggleButton: { selector: () => '.toggle-calendar' },\n overlay: { selector: 'vaadin-popover-overlay::part(overlay)' },\n backdrop: { selector: 'vaadin-popover-overlay::part(backdrop)' },\n};\n\nexport const DateFieldClass = compose(\n createStyleMixin({ componentNameOverride: getComponentName('input-wrapper') }),\n createStyleMixin({\n mappings: {\n iconMargin: { ...toggleButton, property: 'margin-inline-end' },\n hostWidth: { ...host, property: 'width' },\n hostDirection: { ...host, property: 'direction' },\n textAlign: { ...input, property: 'text-align' },\n rtlInputDirection: { ...inputEleRTL, property: textVars.inputDirection },\n rtlInputAlignment: { ...inputEleRTL, property: textVars.inputTextAlign },\n overlayGap: {\n property: () => DateFieldClass.cssVarList.overlayGap,\n },\n overlayBackgroundColor: {\n property: () => DateFieldClass.cssVarList.overlayBackgroundColor,\n },\n overlayPadding: {\n property: () => DateFieldClass.cssVarList.overlayPadding,\n },\n overlayBoxShadow: { property: () => DateFieldClass.overlayBoxShadow },\n overlayOutlineWidth: {\n property: () => DateFieldClass.cssVarList.overlayOutlineWidth,\n },\n overlayOutlineColor: {\n property: () => DateFieldClass.cssVarList.overlayOutlineColor,\n },\n overlayOutlineStyle: {\n property: () => DateFieldClass.cssVarList.overlayOutlineStyle,\n },\n errorMessageIcon: {\n selector: TextFieldClass.componentName,\n property: TextFieldClass.cssVarList.errorMessageIcon,\n },\n errorMessageIconSize: {\n selector: TextFieldClass.componentName,\n property: TextFieldClass.cssVarList.errorMessageIconSize,\n },\n errorMessageIconPadding: {\n selector: TextFieldClass.componentName,\n property: TextFieldClass.cssVarList.errorMessageIconPadding,\n },\n errorMessageIconRepeat: {\n selector: TextFieldClass.componentName,\n property: TextFieldClass.cssVarList.errorMessageIconRepeat,\n },\n errorMessageIconPosition: {\n selector: TextFieldClass.componentName,\n property: TextFieldClass.cssVarList.errorMessageIconPosition,\n },\n errorMessageFontSize: {\n selector: TextFieldClass.componentName,\n property: TextFieldClass.cssVarList.errorMessageFontSize,\n },\n },\n }),\n portalMixin({\n name: 'overlay',\n selector: '',\n mappings: {\n marginTop: { ...overlay, property: 'margin-top' },\n backgroundColor: { ...overlay },\n backdropBackgroundColor: { ...backdrop, property: 'background-color' },\n backdropPointerEvents: { ...backdrop, property: 'pointer-events' },\n padding: { ...overlay },\n boxShadow: { ...overlay },\n outlineWidth: { ...overlay },\n outlineColor: { ...overlay },\n outlineStyle: { ...overlay },\n },\n }),\n draggableMixin,\n componentNameValidationMixin\n)(RawDateFieldClass);\n","import '@vaadin/popover/src/vaadin-popover';\nimport './descope-calendar';\nimport '../descope-text-field';\n\nimport { componentName, DateFieldClass } from './DateFieldClass';\n\ncustomElements.define(componentName, DateFieldClass);\n\nexport { DateFieldClass, componentName };\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"],"names":["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","customElements","define","patterns","MM","DD","YYYY","createFormat","format","pattern","split","map","part","join","createPattern","toValuesFn","order","match","values","forEach","index","createToValuesFn","regexp","RegExp","validate","val","test","getDate","exec","year","month","day","createDate","formats","Object","fromEntries","f","DateCounter","freeze","constructor","id","min","max","onChange","this","data","length","numberValue","Number","stringValue","padStart","isFull","isEmpty","toString","set","add","num","slice","del","filter","d","Boolean","clear","inc","gap","replaceValue","Math","dec","isInRange","setMin","setMax","componentName","BaseInputClass","createBaseInputClass","baseSelector","dateFieldAttrs","calendarAttrs","observedAttrs","textVars","TextFieldClass","cssVarList","inputEleRTL","toggleButton","overlay","backdrop","DateFieldClass","componentNameOverride","mappings","iconMargin","rtlInputDirection","rtlInputAlignment","overlayGap","overlayBackgroundColor","overlayPadding","overlayBoxShadow","overlayOutlineWidth","overlayOutlineColor","overlayOutlineStyle","name","marginTop","backgroundColor","backdropBackgroundColor","backdropPointerEvents","padding","boxShadow","outlineWidth","outlineColor","outlineStyle","timestamp","selectedCounterIdx","updateCountersDisplay","inputElement","value","countersValue","updateValue","isCountersOutOfRange","updateTimestamp","date","getTime","onDateCounterChange","epochOrDate","YEAR","bind","dateCounters","MONTH","DAY","observedAttributes","concat","super","attachShadow","mode","innerHTML","shadowRoot","querySelector","popoverToggleButton","validationTarget","opened","getAttribute","displayValueEpoch","sortedCounters","find","dc","activeCounter","baseElement","calendar","isRTL","computedStyleDirection","getComputedStyle","getPropertyValue","updateDateCounters","isCountersEmpty","every","some","reportValidity","dispatchEvent","Event","bubbles","updateInputDisplay","init","updateFormatPattern","initPopover","initInputElement","setTimeout","getValidity","checkValidity","addEventListener","onPopoverToggle","onFocus","onBlur","handleMouseCaretPositionChange","handleNavKeys","handleDigitKeys","includeAttrs","trigger","withBackdrop","renderer","e","preventDefault","stopPropagation","root","firstChild","positionTarget","appendChild","closePopover","style","setProperty","updateCalendarView","popover","remove","windowRect","document","body","getBoundingClientRect","inputRect","calendarRect","side","offset","availableLeft","left","availableRight","width","right","newOffset","abs","ele","createElement","onCalendarSubmit","_attachOverlay","bringToFront","_detachOverlay","_enterModalState","openPopover","setAttribute","removeAttribute","focus","getCounterById","isReadOnly","calendarDate","getFullYear","getMonth","validInputVal","clearValue","setInputSelectionRange","onFormatUpdate","keys","includes","key","selectNextCounter","getCounterIdx","caretPos","counter1ln","counter2ln","indexOf","setSelectedCounterByCaretPosition","target","selectionStart","selectPrevCounter","caretStart","reduce","acc","counter","setSelectionRange","resetDateCounters","shiftKey","metaKey","counterData","config","count","shiftCount","backspace","handleBackspace","arrowUp","arrowDown","shiftArrowUp","shiftArrowDown","pageUp","pageDown","shiftPageUp","shiftPageDown","arrowRight","arrowLeft","onInitialValueChange","setYearRange","attributeChangedCallback","attrName","oldValue","newValue","isRequired","valueMissing","patternMismatch","proxyProps","useProxyTargets","superclass","icon","renderCopyToClipboard","shouldRender","iconInitConfig","title","iconCopiedConfig","assign","slot","navigator","clipboard","writeText","onLabelClick","oldVal","newVal","attributeChangeCallback","_setType","removeEventListener","slots","wrappedEleName","excludeAttrsSync"],"sourceRoot":""}
@@ -1,2 +1,2 @@
1
- "use strict";(self.webpackChunk_descope_web_components_ui=self.webpackChunk_descope_web_components_ui||[]).push([[1202,6724],{6301:(t,e,s)=>{s.r(e),s.d(e,{ImageClass:()=>u,componentName:()=>c});var i=s(88961),n=s(72270),r=s(63200),l=s(25964),a=s(25414);const o=t=>{const e=a.A.sanitize(t,{USE_PROFILES:{svg:!0,svgFilters:!0}});return(new DOMParser).parseFromString(e,"image/svg+xml").querySelector("svg")},c=(0,l.xE)("image"),h=["src","src-dark"];class d extends((0,n.qu)({componentName:c,baseSelector:"slot"})){static get observedAttributes(){return h}constructor(){super(),this.attachShadow({mode:"open"}).innerHTML="\n\t\t<slot></slot>\n\t",(0,l.fz)("\n\t\t\t:host {\n\t\t\t\tdisplay: inline-flex;\n\t\t\t}\n :host > slot {\n width: 100%;\n height: 100%;\n\t\t\t\tbox-sizing: border-box;\n\t\t\t\tdisplay: flex;\n\t\t\t\toverflow: hidden;\n\t\t\t}\n\n ::slotted(*) {\n width: 100%;\n\t\t\t}\n\n .hidden {\n display: none;\n }\n ",this)}init(){super.init?.(),this.toggleVisibility(this.src)}onThemeChange(){this.renderImage()}toggleVisibility(t){t?this.classList.remove("hidden"):this.classList.add("hidden")}get legacySrc(){return this.getAttribute("src")}get themeSrc(){return this.getAttribute(`src-${this.currentThemeName}`)}get src(){return this.themeSrc||this.legacySrc}updateFillColor(t){[t,...t.querySelectorAll("*[fill]")].forEach((t=>{t.setAttribute("fill",`var(${u.cssVarList.fill}, ${t.getAttribute("fill")||"''"})`)}))}renderImage(){this.toggleVisibility(this.src),(async t=>{try{let e;if((t=>t.startsWith("data:image/svg+xml;base64,"))(t)){const s=atob(t.slice(26));e=o(s)}else if("svg"===(t=>{const e=t.match(/\.([0-9a-z]+)(?:[\\?#]|$)/i);return e?e[1]:null})(t)){const s=await fetch(t),i=await s.text();e=o(i)}else e=(t=>{const e=document.createElement("img");return e.setAttribute("src",t),e})(t);return e.style.setProperty("max-width","100%"),e.style.setProperty("max-height","100%"),e}catch{return null}})(this.src).then((t=>{this.innerHTML="",t&&(this.updateFillColor(t),this.appendChild(t))}))}shouldRender(t){const e=this.getAttribute(t);return this.src===e}attributeChangedCallback(t,e,s){super.attributeChangedCallback?.(t,e,s),e!==s&&this.shouldRender(t)&&this.renderImage()}}const u=(0,r.Zz)((0,i.RF)({mappings:{fill:{},height:{selector:()=>":host"},width:{selector:()=>":host"}}}),i.VO,i.tQ)(d);customElements.define(c,u)},56737:(t,e,s)=>{s.r(e),s.d(e,{IconClass:()=>i.S,componentName:()=>i.T}),s(6301);var i=s(98538);customElements.define(i.T,i.S)},98538:(t,e,s)=>{s.d(e,{S:()=>a,T:()=>l});var i=s(88961),n=s(25964),r=s(63200);const l=(0,n.xE)("icon"),a=(0,r.Zz)((0,i.RF)({mappings:{fill:{}}}),i.VO,i.tQ)((0,i.tz)({slots:[],wrappedEleName:"descope-image",style:()=>"\n :host {\n display: inline-flex;\n }\n ",excludeAttrsSync:["tabindex","class"],componentName:l}))}}]);
1
+ "use strict";(self.webpackChunk_descope_web_components_ui=self.webpackChunk_descope_web_components_ui||[]).push([[1202,6724],{6301:(t,e,s)=>{s.r(e),s.d(e,{ImageClass:()=>u,componentName:()=>c});var i=s(88961),n=s(72270),r=s(63200),l=s(25964),a=s(25414);const o=t=>{const e=a.A.sanitize(t,{USE_PROFILES:{svg:!0,svgFilters:!0}});return(new DOMParser).parseFromString(e,"image/svg+xml").querySelector("svg")},c=(0,l.xE)("image"),h=["src","src-dark"];class d extends((0,n.qu)({componentName:c,baseSelector:"slot"})){static get observedAttributes(){return h}constructor(){super(),this.attachShadow({mode:"open"}).innerHTML="\n\t\t<slot></slot>\n\t",(0,l.fz)("\n\t\t\t:host {\n\t\t\t\tdisplay: inline-flex;\n\t\t\t}\n :host > slot {\n width: 100%;\n height: 100%;\n\t\t\t\tbox-sizing: border-box;\n\t\t\t\tdisplay: flex;\n\t\t\t\toverflow: hidden;\n\t\t\t}\n\n ::slotted(*) {\n width: 100%;\n\t\t\t}\n\n .hidden {\n display: none;\n }\n ",this)}init(){super.init?.(),this.toggleVisibility(this.src)}onThemeChange(){this.renderImage()}toggleVisibility(t){t?this.classList.remove("hidden"):this.classList.add("hidden")}get altText(){return this.getAttribute("alt")||""}get legacySrc(){return this.getAttribute("src")}get themeSrc(){return this.getAttribute(`src-${this.currentThemeName}`)}get src(){return this.themeSrc||this.legacySrc}updateFillColor(t){[t,...t.querySelectorAll("*[fill]")].forEach((t=>{t.setAttribute("fill",`var(${u.cssVarList.fill}, ${t.getAttribute("fill")||"''"})`)}))}renderImage(){this.toggleVisibility(this.src),(async(t,e)=>{try{let s;if((t=>t.startsWith("data:image/svg+xml;base64,"))(t)){const e=atob(t.slice(26));s=o(e)}else if("svg"===(t=>{const e=t.match(/\.([0-9a-z]+)(?:[\\?#]|$)/i);return e?e[1]:null})(t)){const e=await fetch(t),i=await e.text();s=o(i)}else s=((t,e)=>{const s=document.createElement("img");return s.setAttribute("src",t),s.setAttribute("alt",e),s})(t,e);return s.style.setProperty("max-width","100%"),s.style.setProperty("max-height","100%"),s}catch{return null}})(this.src,this.altText).then((t=>{this.innerHTML="",t&&(this.updateFillColor(t),this.appendChild(t))}))}shouldRender(t){const e=this.getAttribute(t);return this.src===e}attributeChangedCallback(t,e,s){super.attributeChangedCallback?.(t,e,s),e!==s&&this.shouldRender(t)&&this.renderImage()}}const u=(0,r.Zz)((0,i.RF)({mappings:{fill:{},height:{selector:()=>":host"},width:{selector:()=>":host"}}}),i.VO,i.tQ)(d);customElements.define(c,u)},56737:(t,e,s)=>{s.r(e),s.d(e,{IconClass:()=>i.S,componentName:()=>i.T}),s(6301);var i=s(98538);customElements.define(i.T,i.S)},98538:(t,e,s)=>{s.d(e,{S:()=>a,T:()=>l});var i=s(88961),n=s(25964),r=s(63200);const l=(0,n.xE)("icon"),a=(0,r.Zz)((0,i.RF)({mappings:{fill:{}}}),i.VO,i.tQ)((0,i.tz)({slots:[],wrappedEleName:"descope-image",style:()=>"\n :host {\n display: inline-flex;\n }\n ",excludeAttrsSync:["tabindex","class"],componentName:l}))}}]);
2
2
  //# sourceMappingURL=descope-icon.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"descope-icon.js","mappings":"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","sources":["webpack://@descope/web-components-ui/../components/descope-image/src/component/helpers.js","webpack://@descope/web-components-ui/../components/descope-image/src/component/ImageClass.js","webpack://@descope/web-components-ui/../components/descope-image/src/component/index.js","webpack://@descope/web-components-ui/../components/descope-icon/src/component/index.js","webpack://@descope/web-components-ui/../components/descope-icon/src/component/IconClass.js"],"sourcesContent":["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) => {\n const ele = document.createElement('img');\n ele.setAttribute('src', src);\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 });\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) => {\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);\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","/* 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 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).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 { componentName, ImageClass } from './ImageClass';\n\ncustomElements.define(componentName, ImageClass);\n\nexport { ImageClass, componentName };\n","import '@descope-ui/descope-image';\n\nimport { componentName, IconClass } from './IconClass';\n\ncustomElements.define(componentName, IconClass);\n\nexport { IconClass, componentName };\n","import {\n componentNameValidationMixin,\n createProxy,\n createStyleMixin,\n draggableMixin,\n} from '@descope-ui/common/components-mixins';\nimport { getComponentName } from '@descope-ui/common/components-helpers';\nimport { compose } from '@descope-ui/common/utils';\n\nexport const componentName = getComponentName('icon');\n\nexport const IconClass = compose(\n createStyleMixin({\n mappings: {\n 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":["createSvgEle","text","clean","sanitize","USE_PROFILES","svg","svgFilters","DOMParser","parseFromString","querySelector","componentName","srcAttrs","RawImage","baseSelector","observedAttributes","constructor","super","this","attachShadow","mode","innerHTML","init","toggleVisibility","src","onThemeChange","renderImage","isVisible","classList","remove","add","legacySrc","getAttribute","themeSrc","currentThemeName","updateFillColor","node","querySelectorAll","forEach","ele","setAttribute","ImageClass","cssVarList","fill","async","startsWith","isBase64Svg","svgXml","atob","slice","base64Prefix","path","match","getFileExtension","fetchedSrc","fetch","document","createElement","createImgEle","style","setProperty","createImage","then","res","appendChild","shouldRender","srcVal","attributeChangedCallback","attrName","oldValue","newValue","mappings","height","selector","width","customElements","define","IconClass","slots","wrappedEleName","excludeAttrsSync"],"sourceRoot":""}
1
+ {"version":3,"file":"descope-icon.js","mappings":"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","sources":["webpack://@descope/web-components-ui/../components/descope-image/src/component/helpers.js","webpack://@descope/web-components-ui/../components/descope-image/src/component/ImageClass.js","webpack://@descope/web-components-ui/../components/descope-image/src/component/index.js","webpack://@descope/web-components-ui/../components/descope-icon/src/component/index.js","webpack://@descope/web-components-ui/../components/descope-icon/src/component/IconClass.js"],"sourcesContent":["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 });\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","/* 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 { componentName, ImageClass } from './ImageClass';\n\ncustomElements.define(componentName, ImageClass);\n\nexport { ImageClass, componentName };\n","import '@descope-ui/descope-image';\n\nimport { componentName, IconClass } from './IconClass';\n\ncustomElements.define(componentName, IconClass);\n\nexport { IconClass, componentName };\n","import {\n componentNameValidationMixin,\n createProxy,\n createStyleMixin,\n draggableMixin,\n} from '@descope-ui/common/components-mixins';\nimport { getComponentName } from '@descope-ui/common/components-helpers';\nimport { compose } from '@descope-ui/common/utils';\n\nexport const componentName = getComponentName('icon');\n\nexport const IconClass = compose(\n createStyleMixin({\n mappings: {\n 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":["createSvgEle","text","clean","sanitize","USE_PROFILES","svg","svgFilters","DOMParser","parseFromString","querySelector","componentName","srcAttrs","RawImage","baseSelector","observedAttributes","constructor","super","this","attachShadow","mode","innerHTML","init","toggleVisibility","src","onThemeChange","renderImage","isVisible","classList","remove","add","altText","getAttribute","legacySrc","themeSrc","currentThemeName","updateFillColor","node","querySelectorAll","forEach","ele","setAttribute","ImageClass","cssVarList","fill","async","startsWith","isBase64Svg","svgXml","atob","slice","base64Prefix","path","match","getFileExtension","fetchedSrc","fetch","document","createElement","createImgEle","style","setProperty","createImage","then","res","appendChild","shouldRender","srcVal","attributeChangedCallback","attrName","oldValue","newValue","mappings","height","selector","width","customElements","define","IconClass","slots","wrappedEleName","excludeAttrsSync"],"sourceRoot":""}
@@ -1,2 +1,2 @@
1
- "use strict";(self.webpackChunk_descope_web_components_ui=self.webpackChunk_descope_web_components_ui||[]).push([[1202],{6301:(t,e,s)=>{s.r(e),s.d(e,{ImageClass:()=>u,componentName:()=>h});var i=s(88961),r=s(72270),n=s(63200),l=s(25964),a=s(25414);const o=t=>{const e=a.A.sanitize(t,{USE_PROFILES:{svg:!0,svgFilters:!0}});return(new DOMParser).parseFromString(e,"image/svg+xml").querySelector("svg")},h=(0,l.xE)("image"),c=["src","src-dark"];class d extends((0,r.qu)({componentName:h,baseSelector:"slot"})){static get observedAttributes(){return c}constructor(){super(),this.attachShadow({mode:"open"}).innerHTML="\n\t\t<slot></slot>\n\t",(0,l.fz)("\n\t\t\t:host {\n\t\t\t\tdisplay: inline-flex;\n\t\t\t}\n :host > slot {\n width: 100%;\n height: 100%;\n\t\t\t\tbox-sizing: border-box;\n\t\t\t\tdisplay: flex;\n\t\t\t\toverflow: hidden;\n\t\t\t}\n\n ::slotted(*) {\n width: 100%;\n\t\t\t}\n\n .hidden {\n display: none;\n }\n ",this)}init(){super.init?.(),this.toggleVisibility(this.src)}onThemeChange(){this.renderImage()}toggleVisibility(t){t?this.classList.remove("hidden"):this.classList.add("hidden")}get legacySrc(){return this.getAttribute("src")}get themeSrc(){return this.getAttribute(`src-${this.currentThemeName}`)}get src(){return this.themeSrc||this.legacySrc}updateFillColor(t){[t,...t.querySelectorAll("*[fill]")].forEach((t=>{t.setAttribute("fill",`var(${u.cssVarList.fill}, ${t.getAttribute("fill")||"''"})`)}))}renderImage(){this.toggleVisibility(this.src),(async t=>{try{let e;if((t=>t.startsWith("data:image/svg+xml;base64,"))(t)){const s=atob(t.slice(26));e=o(s)}else if("svg"===(t=>{const e=t.match(/\.([0-9a-z]+)(?:[\\?#]|$)/i);return e?e[1]:null})(t)){const s=await fetch(t),i=await s.text();e=o(i)}else e=(t=>{const e=document.createElement("img");return e.setAttribute("src",t),e})(t);return e.style.setProperty("max-width","100%"),e.style.setProperty("max-height","100%"),e}catch{return null}})(this.src).then((t=>{this.innerHTML="",t&&(this.updateFillColor(t),this.appendChild(t))}))}shouldRender(t){const e=this.getAttribute(t);return this.src===e}attributeChangedCallback(t,e,s){super.attributeChangedCallback?.(t,e,s),e!==s&&this.shouldRender(t)&&this.renderImage()}}const u=(0,n.Zz)((0,i.RF)({mappings:{fill:{},height:{selector:()=>":host"},width:{selector:()=>":host"}}}),i.VO,i.tQ)(d);customElements.define(h,u)}}]);
1
+ "use strict";(self.webpackChunk_descope_web_components_ui=self.webpackChunk_descope_web_components_ui||[]).push([[1202],{6301:(t,e,s)=>{s.r(e),s.d(e,{ImageClass:()=>d,componentName:()=>o});var i=s(88961),r=s(72270),n=s(63200),l=s(25964),a=s(25414);const h=t=>{const e=a.A.sanitize(t,{USE_PROFILES:{svg:!0,svgFilters:!0}});return(new DOMParser).parseFromString(e,"image/svg+xml").querySelector("svg")},o=(0,l.xE)("image"),c=["src","src-dark"];class u extends((0,r.qu)({componentName:o,baseSelector:"slot"})){static get observedAttributes(){return c}constructor(){super(),this.attachShadow({mode:"open"}).innerHTML="\n\t\t<slot></slot>\n\t",(0,l.fz)("\n\t\t\t:host {\n\t\t\t\tdisplay: inline-flex;\n\t\t\t}\n :host > slot {\n width: 100%;\n height: 100%;\n\t\t\t\tbox-sizing: border-box;\n\t\t\t\tdisplay: flex;\n\t\t\t\toverflow: hidden;\n\t\t\t}\n\n ::slotted(*) {\n width: 100%;\n\t\t\t}\n\n .hidden {\n display: none;\n }\n ",this)}init(){super.init?.(),this.toggleVisibility(this.src)}onThemeChange(){this.renderImage()}toggleVisibility(t){t?this.classList.remove("hidden"):this.classList.add("hidden")}get altText(){return this.getAttribute("alt")||""}get legacySrc(){return this.getAttribute("src")}get themeSrc(){return this.getAttribute(`src-${this.currentThemeName}`)}get src(){return this.themeSrc||this.legacySrc}updateFillColor(t){[t,...t.querySelectorAll("*[fill]")].forEach((t=>{t.setAttribute("fill",`var(${d.cssVarList.fill}, ${t.getAttribute("fill")||"''"})`)}))}renderImage(){this.toggleVisibility(this.src),(async(t,e)=>{try{let s;if((t=>t.startsWith("data:image/svg+xml;base64,"))(t)){const e=atob(t.slice(26));s=h(e)}else if("svg"===(t=>{const e=t.match(/\.([0-9a-z]+)(?:[\\?#]|$)/i);return e?e[1]:null})(t)){const e=await fetch(t),i=await e.text();s=h(i)}else s=((t,e)=>{const s=document.createElement("img");return s.setAttribute("src",t),s.setAttribute("alt",e),s})(t,e);return s.style.setProperty("max-width","100%"),s.style.setProperty("max-height","100%"),s}catch{return null}})(this.src,this.altText).then((t=>{this.innerHTML="",t&&(this.updateFillColor(t),this.appendChild(t))}))}shouldRender(t){const e=this.getAttribute(t);return this.src===e}attributeChangedCallback(t,e,s){super.attributeChangedCallback?.(t,e,s),e!==s&&this.shouldRender(t)&&this.renderImage()}}const d=(0,n.Zz)((0,i.RF)({mappings:{fill:{},height:{selector:()=>":host"},width:{selector:()=>":host"}}}),i.VO,i.tQ)(u);customElements.define(o,d)}}]);
2
2
  //# sourceMappingURL=descope-image.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"descope-image.js","mappings":"wPAEA,MAeMA,EAAgBC,IAEpB,MAAMC,EAAQ,IAAUC,SAASF,EAAM,CACrCG,aAAc,CAAEC,KAAK,EAAMC,YAAY,KAOzC,OAJe,IAAIC,WAEhBC,gBAAgBN,EAAO,iBACvBO,cAAc,MACP,ECfCC,GAAgB,QAAiB,SAExCC,EAAW,CAAC,MAAO,YAEzB,MAAMC,WAAiB,QAAgB,CACrCF,gBACAG,aAAc,UAEd,6BAAWC,GACT,OAAOH,CACT,CAEA,WAAAI,GACEC,QAEAC,KAAKC,aAAa,CAAEC,KAAM,SAAUC,UAAY,2BAIhD,QACE,6UAoBAH,KAEJ,CAEA,IAAAI,GACEL,MAAMK,SACNJ,KAAKK,iBAAiBL,KAAKM,IAC7B,CAEA,aAAAC,GACEP,KAAKQ,aACP,CAEA,gBAAAH,CAAiBI,GACXA,EACFT,KAAKU,UAAUC,OAAO,UAEtBX,KAAKU,UAAUE,IAAI,SAEvB,CAEA,aAAIC,GACF,OAAOb,KAAKc,aAAa,MAC3B,CAEA,YAAIC,GACF,OAAOf,KAAKc,aAAa,OAAOd,KAAKgB,mBACvC,CAEA,OAAIV,GACF,OAAON,KAAKe,UAAYf,KAAKa,SAC/B,CAKA,eAAAI,CAAgBC,GAEY,CAACA,KAASA,EAAKC,iBAAiB,YAExCC,SAASC,IACzBA,EAAIC,aACF,OACA,OAAOC,EAAWC,WAAWC,SAASJ,EAAIP,aAAa,SAAW,QACnE,GAEL,CAEA,WAAAN,GACER,KAAKK,iBAAiBL,KAAKM,KDvEJoB,OAAOpB,IAChC,IACE,IAAIe,EACJ,GAxBgB,CAACf,GAAQA,EAAIqB,WAFZ,8BA0BbC,CAAYtB,GAAM,CAEpB,MAAMuB,EAASC,KAAKxB,EAAIyB,MAAMC,KAC9BX,EAAMtC,EAAa8C,EACrB,MAAO,GAA8B,QAnChB,CAACI,IACxB,MAAMC,EAAQD,EAAKC,MAAM,8BACzB,OAAOA,EAAQA,EAAM,GAAK,IAAI,EAiCjBC,CAAiB7B,GAAgB,CAE1C,MAAM8B,QAAmBC,MAAM/B,GACzBtB,QAAaoD,EAAWpD,OAC9BqC,EAAMtC,EAAaC,EACrB,MAEEqC,EAjCe,CAACf,IACpB,MAAMe,EAAMiB,SAASC,cAAc,OAEnC,OADAlB,EAAIC,aAAa,MAAOhB,GACjBe,CAAG,EA8BAmB,CAAalC,GAMrB,OAHAe,EAAIoB,MAAMC,YAAY,YAAa,QACnCrB,EAAIoB,MAAMC,YAAY,aAAc,QAE7BrB,CACT,CAAE,MACA,OAAO,IACT,GCkDEsB,CAAY3C,KAAKM,KAAKsC,MAAMC,IAC1B7C,KAAKG,UAAY,GACb0C,IACF7C,KAAKiB,gBAAgB4B,GACrB7C,KAAK8C,YAAYD,GACnB,GAEJ,CAGA,YAAAE,CAAazC,GACX,MAAM0C,EAAShD,KAAKc,aAAaR,GACjC,OAAON,KAAKM,MAAQ0C,CACtB,CAEA,wBAAAC,CAAyBC,EAAUC,EAAUC,GAC3CrD,MAAMkD,2BAA2BC,EAAUC,EAAUC,GAEjDD,IAAaC,GAEbpD,KAAK+C,aAAaG,IACpBlD,KAAKQ,aAET,EAGK,MAAMe,GAAa,SACxB,QAAiB,CACf8B,SAAU,CACR5B,KAAM,CAAC,EACP6B,OAAQ,CAAEC,SAAU,IAAM,SAC1BC,MAAO,CAAED,SAAU,IAAM,YAG7B,KACA,KATwB,CAUxB5D,GCzIF8D,eAAeC,OAAOjE,EAAe8B,E","sources":["webpack://@descope/web-components-ui/../components/descope-image/src/component/helpers.js","webpack://@descope/web-components-ui/../components/descope-image/src/component/ImageClass.js","webpack://@descope/web-components-ui/../components/descope-image/src/component/index.js"],"sourcesContent":["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) => {\n const ele = document.createElement('img');\n ele.setAttribute('src', src);\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 });\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) => {\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);\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","/* 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 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).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 { componentName, ImageClass } from './ImageClass';\n\ncustomElements.define(componentName, ImageClass);\n\nexport { ImageClass, componentName };\n"],"names":["createSvgEle","text","clean","sanitize","USE_PROFILES","svg","svgFilters","DOMParser","parseFromString","querySelector","componentName","srcAttrs","RawImage","baseSelector","observedAttributes","constructor","super","this","attachShadow","mode","innerHTML","init","toggleVisibility","src","onThemeChange","renderImage","isVisible","classList","remove","add","legacySrc","getAttribute","themeSrc","currentThemeName","updateFillColor","node","querySelectorAll","forEach","ele","setAttribute","ImageClass","cssVarList","fill","async","startsWith","isBase64Svg","svgXml","atob","slice","base64Prefix","path","match","getFileExtension","fetchedSrc","fetch","document","createElement","createImgEle","style","setProperty","createImage","then","res","appendChild","shouldRender","srcVal","attributeChangedCallback","attrName","oldValue","newValue","mappings","height","selector","width","customElements","define"],"sourceRoot":""}
1
+ {"version":3,"file":"descope-image.js","mappings":"wPAEA,MAgBMA,EAAgBC,IAEpB,MAAMC,EAAQ,IAAUC,SAASF,EAAM,CACrCG,aAAc,CAAEC,KAAK,EAAMC,YAAY,KAOzC,OAJe,IAAIC,WAEhBC,gBAAgBN,EAAO,iBACvBO,cAAc,MACP,EChBCC,GAAgB,QAAiB,SAExCC,EAAW,CAAC,MAAO,YAEzB,MAAMC,WAAiB,QAAgB,CACrCF,gBACAG,aAAc,UAEd,6BAAWC,GACT,OAAOH,CACT,CAEA,WAAAI,GACEC,QAEAC,KAAKC,aAAa,CAAEC,KAAM,SAAUC,UAAY,2BAIhD,QACE,6UAoBAH,KAEJ,CAEA,IAAAI,GACEL,MAAMK,SACNJ,KAAKK,iBAAiBL,KAAKM,IAC7B,CAEA,aAAAC,GACEP,KAAKQ,aACP,CAEA,gBAAAH,CAAiBI,GACXA,EACFT,KAAKU,UAAUC,OAAO,UAEtBX,KAAKU,UAAUE,IAAI,SAEvB,CAEA,WAAIC,GACF,OAAOb,KAAKc,aAAa,QAAU,EACrC,CAEA,aAAIC,GACF,OAAOf,KAAKc,aAAa,MAC3B,CAEA,YAAIE,GACF,OAAOhB,KAAKc,aAAa,OAAOd,KAAKiB,mBACvC,CAEA,OAAIX,GACF,OAAON,KAAKgB,UAAYhB,KAAKe,SAC/B,CAKA,eAAAG,CAAgBC,GAEY,CAACA,KAASA,EAAKC,iBAAiB,YAExCC,SAASC,IACzBA,EAAIC,aACF,OACA,OAAOC,EAAWC,WAAWC,SAASJ,EAAIR,aAAa,SAAW,QACnE,GAEL,CAEA,WAAAN,GACER,KAAKK,iBAAiBL,KAAKM,KD1EJqB,OAAOrB,EAAKO,KACrC,IACE,IAAIS,EACJ,GAzBgB,CAAChB,GAAQA,EAAIsB,WAFZ,8BA2BbC,CAAYvB,GAAM,CAEpB,MAAMwB,EAASC,KAAKzB,EAAI0B,MAAMC,KAC9BX,EAAMvC,EAAa+C,EACrB,MAAO,GAA8B,QApChB,CAACI,IACxB,MAAMC,EAAQD,EAAKC,MAAM,8BACzB,OAAOA,EAAQA,EAAM,GAAK,IAAI,EAkCjBC,CAAiB9B,GAAgB,CAE1C,MAAM+B,QAAmBC,MAAMhC,GACzBtB,QAAaqD,EAAWrD,OAC9BsC,EAAMvC,EAAaC,EACrB,MAEEsC,EAlCe,EAAChB,EAAKO,KACzB,MAAMS,EAAMiB,SAASC,cAAc,OAGnC,OAFAlB,EAAIC,aAAa,MAAOjB,GACxBgB,EAAIC,aAAa,MAAOV,GACjBS,CAAG,EA8BAmB,CAAanC,EAAKO,GAM1B,OAHAS,EAAIoB,MAAMC,YAAY,YAAa,QACnCrB,EAAIoB,MAAMC,YAAY,aAAc,QAE7BrB,CACT,CAAE,MACA,OAAO,IACT,GCqDEsB,CAAY5C,KAAKM,IAAKN,KAAKa,SAASgC,MAAMC,IACxC9C,KAAKG,UAAY,GACb2C,IACF9C,KAAKkB,gBAAgB4B,GACrB9C,KAAK+C,YAAYD,GACnB,GAEJ,CAGA,YAAAE,CAAa1C,GACX,MAAM2C,EAASjD,KAAKc,aAAaR,GACjC,OAAON,KAAKM,MAAQ2C,CACtB,CAEA,wBAAAC,CAAyBC,EAAUC,EAAUC,GAC3CtD,MAAMmD,2BAA2BC,EAAUC,EAAUC,GAEjDD,IAAaC,GAEbrD,KAAKgD,aAAaG,IACpBnD,KAAKQ,aAET,EAGK,MAAMgB,GAAa,SACxB,QAAiB,CACf8B,SAAU,CACR5B,KAAM,CAAC,EACP6B,OAAQ,CAAEC,SAAU,IAAM,SAC1BC,MAAO,CAAED,SAAU,IAAM,YAG7B,KACA,KATwB,CAUxB7D,GC7IF+D,eAAeC,OAAOlE,EAAe+B,E","sources":["webpack://@descope/web-components-ui/../components/descope-image/src/component/helpers.js","webpack://@descope/web-components-ui/../components/descope-image/src/component/ImageClass.js","webpack://@descope/web-components-ui/../components/descope-image/src/component/index.js"],"sourcesContent":["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 });\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","/* 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 { componentName, ImageClass } from './ImageClass';\n\ncustomElements.define(componentName, ImageClass);\n\nexport { ImageClass, componentName };\n"],"names":["createSvgEle","text","clean","sanitize","USE_PROFILES","svg","svgFilters","DOMParser","parseFromString","querySelector","componentName","srcAttrs","RawImage","baseSelector","observedAttributes","constructor","super","this","attachShadow","mode","innerHTML","init","toggleVisibility","src","onThemeChange","renderImage","isVisible","classList","remove","add","altText","getAttribute","legacySrc","themeSrc","currentThemeName","updateFillColor","node","querySelectorAll","forEach","ele","setAttribute","ImageClass","cssVarList","fill","async","startsWith","isBase64Svg","svgXml","atob","slice","base64Prefix","path","match","getFileExtension","fetchedSrc","fetch","document","createElement","createImgEle","style","setProperty","createImage","then","res","appendChild","shouldRender","srcVal","attributeChangedCallback","attrName","oldValue","newValue","mappings","height","selector","width","customElements","define"],"sourceRoot":""}
@@ -1,2 +1,2 @@
1
- (self.webpackChunk_descope_web_components_ui=self.webpackChunk_descope_web_components_ui||[]).push([[230,1202,1239,6724],{6107:(t,e,n)=>{"use strict";n.r(e),n.d(e,{ThirdPartyAppLogoClass:()=>y});var s=n(25964),r=n(81365),i=n(9696),o=n(97810),a=n(79365),l=n(98538),c=n(59410),p=n(45447),d=n.n(p);const h=(0,o.xE)("third-party-app-logo");class g extends((0,r.q)({componentName:h,baseSelector:".wrapper"})){constructor(){super(),this.attachShadow({mode:"open"}).innerHTML=`\n\t\t\t<div class="wrapper">\n <div class="third-party-app-logo-wrapper">\n <div class="third-party-app-logo"></div>\n </div>\n <div class="arrows">\n <descope-icon src="${d()}"></descope-icon>\n </div>\n <div class="company-logo-wrapper">\n <descope-logo st-height="100%"></descope-logo>\n </div>\n </div>\n\t\t\t`,(0,s.fz)('\n :host {\n\t\t\t\t\tdisplay: inline-flex;\n\t\t\t\t}\n\t\t\t\t:host([draggable="true"]) > div {\n\t\t\t\t\tpointer-events: none\n\t\t\t\t}\n\n .wrapper {\n display: flex;\n justify-content: center;\n align-items: center;\n min-width: max-content;\n }\n\n\t\t\t\t.third-party-app-logo {\n flex-shrink: 0;\n\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t\tmax-width: 100%;\n\t\t\t\t\tmax-height: 100%;\n\t\t\t\t\tobject-fit: contain;\n\t\t\t\t}\n\n .company-logo-wrapper, .third-party-app-logo-wrapper {\n flex-shrink: 0;\n display: inline-flex;\n }\n\n .company-logo-wrapper {\n justify-content: flex-end;\n }\n\n .third-party-app-logo-wrapper {\n justify-content: flex-start;\n }\n\n .arrows {\n flex-shrink: 0;\n display: flex;\n }\n ',this)}}const m=">.company-logo-wrapper",u=">.third-party-app-logo-wrapper",y=(0,i.Zz)((0,a.RF)({mappings:{logoMaxHeight:[{selector:m,property:"height"},{selector:u,property:"height"}],logoMaxWidth:[{selector:m,property:"max-width"},{selector:u,property:"max-width"}],thirdPartyAppLogo:{selector:()=>".third-party-app-logo",property:"content",fallback:{}},companyLogoFallback:{selector:c.m.componentName,property:c.m.cssVarList.fallbackUrl},gap:{},arrowsColor:{selector:l.S.componentName,property:l.S.cssVarList.fill}}}),a.VO,a.tQ)(g);n(56737),n(86947),customElements.define(h,y)},6301:(t,e,n)=>{"use strict";n.r(e),n.d(e,{ImageClass:()=>h,componentName:()=>c});var s=n(88961),r=n(72270),i=n(63200),o=n(25964),a=n(25414);const l=t=>{const e=a.A.sanitize(t,{USE_PROFILES:{svg:!0,svgFilters:!0}});return(new DOMParser).parseFromString(e,"image/svg+xml").querySelector("svg")},c=(0,o.xE)("image"),p=["src","src-dark"];class d extends((0,r.qu)({componentName:c,baseSelector:"slot"})){static get observedAttributes(){return p}constructor(){super(),this.attachShadow({mode:"open"}).innerHTML="\n\t\t<slot></slot>\n\t",(0,o.fz)("\n\t\t\t:host {\n\t\t\t\tdisplay: inline-flex;\n\t\t\t}\n :host > slot {\n width: 100%;\n height: 100%;\n\t\t\t\tbox-sizing: border-box;\n\t\t\t\tdisplay: flex;\n\t\t\t\toverflow: hidden;\n\t\t\t}\n\n ::slotted(*) {\n width: 100%;\n\t\t\t}\n\n .hidden {\n display: none;\n }\n ",this)}init(){super.init?.(),this.toggleVisibility(this.src)}onThemeChange(){this.renderImage()}toggleVisibility(t){t?this.classList.remove("hidden"):this.classList.add("hidden")}get legacySrc(){return this.getAttribute("src")}get themeSrc(){return this.getAttribute(`src-${this.currentThemeName}`)}get src(){return this.themeSrc||this.legacySrc}updateFillColor(t){[t,...t.querySelectorAll("*[fill]")].forEach((t=>{t.setAttribute("fill",`var(${h.cssVarList.fill}, ${t.getAttribute("fill")||"''"})`)}))}renderImage(){this.toggleVisibility(this.src),(async t=>{try{let e;if((t=>t.startsWith("data:image/svg+xml;base64,"))(t)){const n=atob(t.slice(26));e=l(n)}else if("svg"===(t=>{const e=t.match(/\.([0-9a-z]+)(?:[\\?#]|$)/i);return e?e[1]:null})(t)){const n=await fetch(t),s=await n.text();e=l(s)}else e=(t=>{const e=document.createElement("img");return e.setAttribute("src",t),e})(t);return e.style.setProperty("max-width","100%"),e.style.setProperty("max-height","100%"),e}catch{return null}})(this.src).then((t=>{this.innerHTML="",t&&(this.updateFillColor(t),this.appendChild(t))}))}shouldRender(t){const e=this.getAttribute(t);return this.src===e}attributeChangedCallback(t,e,n){super.attributeChangedCallback?.(t,e,n),e!==n&&this.shouldRender(t)&&this.renderImage()}}const h=(0,i.Zz)((0,s.RF)({mappings:{fill:{},height:{selector:()=>":host"},width:{selector:()=>":host"}}}),s.VO,s.tQ)(d);customElements.define(c,h)},45447:t=>{t.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjkiIGhlaWdodD0iMjgiIHZpZXdCb3g9IjAgMCAyOSAyOCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gPHBhdGggZD0iTTkuMTQ0OTIgMTUuNjQ1TDcuNDk5OTIgMTRMMi44MzMyNSAxOC42NjY3TDcuNDk5OTIgMjMuMzMzM0w5LjE0NDkyIDIxLjY4ODNMNy4zMDE1OSAxOS44MzMzSDI0Ljk5OTlWMTcuNUg3LjMwMTU5TDkuMTQ0OTIgMTUuNjQ1WiIgZmlsbD0iIzYzNkM3NCIvPiA8cGF0aCBkPSJNMTkuODU1IDEyLjM1NTNMMjEuNSAxNC4wMDAzTDI2LjE2NjcgOS4zMzM2NkwyMS41IDQuNjY2OTlMMTkuODU1IDYuMzExOTlMMjEuNjk4MyA4LjE2Njk5SDRWMTAuNTAwM0gyMS42OTgzTDE5Ljg1NSAxMi4zNTUzWiIgZmlsbD0iIzYzNkM3NCIvPiA8L3N2Zz4g"},51491:(t,e,n)=>{"use strict";n.d(e,{I:()=>a});var s=n(25964),r=n(9696),i=n(79365),o=n(81365);const a=({componentName:t,varName:e,fallbackVarName:n})=>{let a;class l extends((0,o.q)({componentName:t,baseSelector:":host > div"})){constructor(){super(),this.attachShadow({mode:"open"}).innerHTML="\n\t\t\t<div></div>\n\t\t\t",(0,s.fz)(`\n\t\t\t\t:host {\n\t\t\t\t\tdisplay: inline-flex;\n\t\t\t\t}\n\t\t\t\t:host([draggable="true"]) > div {\n\t\t\t\t\tpointer-events: none\n\t\t\t\t}\n\t\t\t\t:host > div {\n\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t\tmax-width: 100%;\n\t\t\t\t\tmax-height: 100%;\n\t\t\t\t\tobject-fit: contain;\n\t\t\t\t\tmargin: auto;\n\t\t\t\t\t${a}\n\t\t\t\t}\n `,this)}}const c=(0,r.Zz)((0,i.RF)({mappings:{height:{selector:()=>":host > div"},width:{selector:()=>":host > div"},[e]:{property:"content"},[n]:{property:"content"}}}),i.VO,i.tQ)(l);return a=`content: var(${c.cssVarList[e]}, var(${c.cssVarList[n]}));`,c}},56737:(t,e,n)=>{"use strict";n.r(e),n.d(e,{IconClass:()=>s.S,componentName:()=>s.T}),n(6301);var s=n(98538);customElements.define(s.T,s.S)},59410:(t,e,n)=>{"use strict";n.d(e,{T:()=>i,m:()=>o});var s=n(97810),r=n(51491);const i=(0,s.xE)("logo"),o=(0,r.I)({componentName:i,varName:"url",fallbackVarName:"fallbackUrl"})},86947:(t,e,n)=>{"use strict";n.r(e),n.d(e,{LogoClass:()=>s.m,componentName:()=>s.T});var s=n(59410);customElements.define(s.T,s.m)},98538:(t,e,n)=>{"use strict";n.d(e,{S:()=>a,T:()=>o});var s=n(88961),r=n(25964),i=n(63200);const o=(0,r.xE)("icon"),a=(0,i.Zz)((0,s.RF)({mappings:{fill:{}}}),s.VO,s.tQ)((0,s.tz)({slots:[],wrappedEleName:"descope-image",style:()=>"\n :host {\n display: inline-flex;\n }\n ",excludeAttrsSync:["tabindex","class"],componentName:o}))}}]);
1
+ (self.webpackChunk_descope_web_components_ui=self.webpackChunk_descope_web_components_ui||[]).push([[230,1202,1239,6724],{6107:(t,e,n)=>{"use strict";n.r(e),n.d(e,{ThirdPartyAppLogoClass:()=>y});var s=n(25964),r=n(81365),i=n(9696),o=n(97810),a=n(79365),l=n(98538),c=n(59410),p=n(45447),d=n.n(p);const h=(0,o.xE)("third-party-app-logo");class g extends((0,r.q)({componentName:h,baseSelector:".wrapper"})){constructor(){super(),this.attachShadow({mode:"open"}).innerHTML=`\n\t\t\t<div class="wrapper">\n <div class="third-party-app-logo-wrapper">\n <div class="third-party-app-logo"></div>\n </div>\n <div class="arrows">\n <descope-icon src="${d()}"></descope-icon>\n </div>\n <div class="company-logo-wrapper">\n <descope-logo st-height="100%"></descope-logo>\n </div>\n </div>\n\t\t\t`,(0,s.fz)('\n :host {\n\t\t\t\t\tdisplay: inline-flex;\n\t\t\t\t}\n\t\t\t\t:host([draggable="true"]) > div {\n\t\t\t\t\tpointer-events: none\n\t\t\t\t}\n\n .wrapper {\n display: flex;\n justify-content: center;\n align-items: center;\n min-width: max-content;\n }\n\n\t\t\t\t.third-party-app-logo {\n flex-shrink: 0;\n\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t\tmax-width: 100%;\n\t\t\t\t\tmax-height: 100%;\n\t\t\t\t\tobject-fit: contain;\n\t\t\t\t}\n\n .company-logo-wrapper, .third-party-app-logo-wrapper {\n flex-shrink: 0;\n display: inline-flex;\n }\n\n .company-logo-wrapper {\n justify-content: flex-end;\n }\n\n .third-party-app-logo-wrapper {\n justify-content: flex-start;\n }\n\n .arrows {\n flex-shrink: 0;\n display: flex;\n }\n ',this)}}const m=">.company-logo-wrapper",u=">.third-party-app-logo-wrapper",y=(0,i.Zz)((0,a.RF)({mappings:{logoMaxHeight:[{selector:m,property:"height"},{selector:u,property:"height"}],logoMaxWidth:[{selector:m,property:"max-width"},{selector:u,property:"max-width"}],thirdPartyAppLogo:{selector:()=>".third-party-app-logo",property:"content",fallback:{}},companyLogoFallback:{selector:c.m.componentName,property:c.m.cssVarList.fallbackUrl},gap:{},arrowsColor:{selector:l.S.componentName,property:l.S.cssVarList.fill}}}),a.VO,a.tQ)(g);n(56737),n(86947),customElements.define(h,y)},6301:(t,e,n)=>{"use strict";n.r(e),n.d(e,{ImageClass:()=>h,componentName:()=>c});var s=n(88961),r=n(72270),i=n(63200),o=n(25964),a=n(25414);const l=t=>{const e=a.A.sanitize(t,{USE_PROFILES:{svg:!0,svgFilters:!0}});return(new DOMParser).parseFromString(e,"image/svg+xml").querySelector("svg")},c=(0,o.xE)("image"),p=["src","src-dark"];class d extends((0,r.qu)({componentName:c,baseSelector:"slot"})){static get observedAttributes(){return p}constructor(){super(),this.attachShadow({mode:"open"}).innerHTML="\n\t\t<slot></slot>\n\t",(0,o.fz)("\n\t\t\t:host {\n\t\t\t\tdisplay: inline-flex;\n\t\t\t}\n :host > slot {\n width: 100%;\n height: 100%;\n\t\t\t\tbox-sizing: border-box;\n\t\t\t\tdisplay: flex;\n\t\t\t\toverflow: hidden;\n\t\t\t}\n\n ::slotted(*) {\n width: 100%;\n\t\t\t}\n\n .hidden {\n display: none;\n }\n ",this)}init(){super.init?.(),this.toggleVisibility(this.src)}onThemeChange(){this.renderImage()}toggleVisibility(t){t?this.classList.remove("hidden"):this.classList.add("hidden")}get altText(){return this.getAttribute("alt")||""}get legacySrc(){return this.getAttribute("src")}get themeSrc(){return this.getAttribute(`src-${this.currentThemeName}`)}get src(){return this.themeSrc||this.legacySrc}updateFillColor(t){[t,...t.querySelectorAll("*[fill]")].forEach((t=>{t.setAttribute("fill",`var(${h.cssVarList.fill}, ${t.getAttribute("fill")||"''"})`)}))}renderImage(){this.toggleVisibility(this.src),(async(t,e)=>{try{let n;if((t=>t.startsWith("data:image/svg+xml;base64,"))(t)){const e=atob(t.slice(26));n=l(e)}else if("svg"===(t=>{const e=t.match(/\.([0-9a-z]+)(?:[\\?#]|$)/i);return e?e[1]:null})(t)){const e=await fetch(t),s=await e.text();n=l(s)}else n=((t,e)=>{const n=document.createElement("img");return n.setAttribute("src",t),n.setAttribute("alt",e),n})(t,e);return n.style.setProperty("max-width","100%"),n.style.setProperty("max-height","100%"),n}catch{return null}})(this.src,this.altText).then((t=>{this.innerHTML="",t&&(this.updateFillColor(t),this.appendChild(t))}))}shouldRender(t){const e=this.getAttribute(t);return this.src===e}attributeChangedCallback(t,e,n){super.attributeChangedCallback?.(t,e,n),e!==n&&this.shouldRender(t)&&this.renderImage()}}const h=(0,i.Zz)((0,s.RF)({mappings:{fill:{},height:{selector:()=>":host"},width:{selector:()=>":host"}}}),s.VO,s.tQ)(d);customElements.define(c,h)},45447:t=>{t.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjkiIGhlaWdodD0iMjgiIHZpZXdCb3g9IjAgMCAyOSAyOCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gPHBhdGggZD0iTTkuMTQ0OTIgMTUuNjQ1TDcuNDk5OTIgMTRMMi44MzMyNSAxOC42NjY3TDcuNDk5OTIgMjMuMzMzM0w5LjE0NDkyIDIxLjY4ODNMNy4zMDE1OSAxOS44MzMzSDI0Ljk5OTlWMTcuNUg3LjMwMTU5TDkuMTQ0OTIgMTUuNjQ1WiIgZmlsbD0iIzYzNkM3NCIvPiA8cGF0aCBkPSJNMTkuODU1IDEyLjM1NTNMMjEuNSAxNC4wMDAzTDI2LjE2NjcgOS4zMzM2NkwyMS41IDQuNjY2OTlMMTkuODU1IDYuMzExOTlMMjEuNjk4MyA4LjE2Njk5SDRWMTAuNTAwM0gyMS42OTgzTDE5Ljg1NSAxMi4zNTUzWiIgZmlsbD0iIzYzNkM3NCIvPiA8L3N2Zz4g"},51491:(t,e,n)=>{"use strict";n.d(e,{I:()=>a});var s=n(25964),r=n(9696),i=n(79365),o=n(81365);const a=({componentName:t,varName:e,fallbackVarName:n})=>{let a;class l extends((0,o.q)({componentName:t,baseSelector:":host > div"})){constructor(){super(),this.attachShadow({mode:"open"}).innerHTML="\n\t\t\t<div></div>\n\t\t\t",(0,s.fz)(`\n\t\t\t\t:host {\n\t\t\t\t\tdisplay: inline-flex;\n\t\t\t\t}\n\t\t\t\t:host([draggable="true"]) > div {\n\t\t\t\t\tpointer-events: none\n\t\t\t\t}\n\t\t\t\t:host > div {\n\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t\tmax-width: 100%;\n\t\t\t\t\tmax-height: 100%;\n\t\t\t\t\tobject-fit: contain;\n\t\t\t\t\tmargin: auto;\n\t\t\t\t\t${a}\n\t\t\t\t}\n `,this)}}const c=(0,r.Zz)((0,i.RF)({mappings:{height:{selector:()=>":host > div"},width:{selector:()=>":host > div"},[e]:{property:"content"},[n]:{property:"content"}}}),i.VO,i.tQ)(l);return a=`content: var(${c.cssVarList[e]}, var(${c.cssVarList[n]}));`,c}},56737:(t,e,n)=>{"use strict";n.r(e),n.d(e,{IconClass:()=>s.S,componentName:()=>s.T}),n(6301);var s=n(98538);customElements.define(s.T,s.S)},59410:(t,e,n)=>{"use strict";n.d(e,{T:()=>i,m:()=>o});var s=n(97810),r=n(51491);const i=(0,s.xE)("logo"),o=(0,r.I)({componentName:i,varName:"url",fallbackVarName:"fallbackUrl"})},86947:(t,e,n)=>{"use strict";n.r(e),n.d(e,{LogoClass:()=>s.m,componentName:()=>s.T});var s=n(59410);customElements.define(s.T,s.m)},98538:(t,e,n)=>{"use strict";n.d(e,{S:()=>a,T:()=>o});var s=n(88961),r=n(25964),i=n(63200);const o=(0,r.xE)("icon"),a=(0,i.Zz)((0,s.RF)({mappings:{fill:{}}}),s.VO,s.tQ)((0,s.tz)({slots:[],wrappedEleName:"descope-image",style:()=>"\n :host {\n display: inline-flex;\n }\n ",excludeAttrsSync:["tabindex","class"],componentName:o}))}}]);
2
2
  //# sourceMappingURL=descope-third-party-app-logo-index-js.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"descope-third-party-app-logo-index-js.js","mappings":"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","sources":["webpack://@descope/web-components-ui/./src/components/descope-third-party-app-logo/ThirdPartyAppLogoClass.js","webpack://@descope/web-components-ui/./src/components/descope-third-party-app-logo/index.js","webpack://@descope/web-components-ui/../components/descope-image/src/component/helpers.js","webpack://@descope/web-components-ui/../components/descope-image/src/component/ImageClass.js","webpack://@descope/web-components-ui/../components/descope-image/src/component/index.js","webpack://@descope/web-components-ui/./src/components/descope-third-party-app-logo/arrows.svg","webpack://@descope/web-components-ui/./src/baseClasses/createCssVarImageClass.js","webpack://@descope/web-components-ui/../components/descope-icon/src/component/index.js","webpack://@descope/web-components-ui/./src/components/descope-logo/LogoClass.js","webpack://@descope/web-components-ui/./src/components/descope-logo/index.js","webpack://@descope/web-components-ui/../components/descope-icon/src/component/IconClass.js"],"sourcesContent":["import { injectStyle } from '@descope-ui/common/components-helpers';\nimport { createBaseClass } from '../../baseClasses/createBaseClass';\nimport { compose } from '../../helpers';\nimport { getComponentName } from '../../helpers/componentHelpers';\nimport { componentNameValidationMixin, createStyleMixin, draggableMixin } from '../../mixins';\nimport { IconClass } from '@descope-ui/descope-icon/class';\nimport { LogoClass } from '../descope-logo/LogoClass';\nimport arrowsImg from './arrows.svg';\n\nexport const componentName = getComponentName('third-party-app-logo');\nclass RawThirdPartyAppLogoClass extends createBaseClass({\n componentName,\n baseSelector: '.wrapper',\n}) {\n constructor() {\n super();\n this.attachShadow({ mode: 'open' }).innerHTML = `\n\t\t\t<div class=\"wrapper\">\n <div class=\"third-party-app-logo-wrapper\">\n <div class=\"third-party-app-logo\"></div>\n </div>\n <div class=\"arrows\">\n <descope-icon src=\"${arrowsImg}\"></descope-icon>\n </div>\n <div class=\"company-logo-wrapper\">\n <descope-logo st-height=\"100%\"></descope-logo>\n </div>\n </div>\n\t\t\t`;\n\n injectStyle(\n `\n :host {\n\t\t\t\t\tdisplay: inline-flex;\n\t\t\t\t}\n\t\t\t\t:host([draggable=\"true\"]) > div {\n\t\t\t\t\tpointer-events: none\n\t\t\t\t}\n\n .wrapper {\n display: flex;\n justify-content: center;\n align-items: center;\n min-width: max-content;\n }\n\n\t\t\t\t.third-party-app-logo {\n flex-shrink: 0;\n\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t\tmax-width: 100%;\n\t\t\t\t\tmax-height: 100%;\n\t\t\t\t\tobject-fit: contain;\n\t\t\t\t}\n\n .company-logo-wrapper, .third-party-app-logo-wrapper {\n flex-shrink: 0;\n display: inline-flex;\n }\n\n .company-logo-wrapper {\n justify-content: flex-end;\n }\n\n .third-party-app-logo-wrapper {\n justify-content: flex-start;\n }\n\n .arrows {\n flex-shrink: 0;\n display: flex;\n }\n `,\n this\n );\n }\n}\n\nconst companyLogoWrapper = '>.company-logo-wrapper';\nconst thirdPartyAppLogoWrapper = '>.third-party-app-logo-wrapper';\n\nexport const ThirdPartyAppLogoClass = compose(\n createStyleMixin({\n mappings: {\n logoMaxHeight: [\n { selector: companyLogoWrapper, property: 'height' },\n { selector: thirdPartyAppLogoWrapper, property: 'height' },\n ],\n logoMaxWidth: [\n { selector: companyLogoWrapper, property: 'max-width' },\n { selector: thirdPartyAppLogoWrapper, property: 'max-width' },\n ],\n thirdPartyAppLogo: {\n selector: () => '.third-party-app-logo',\n property: 'content',\n fallback: {},\n },\n companyLogoFallback: {\n selector: LogoClass.componentName,\n property: LogoClass.cssVarList.fallbackUrl,\n },\n gap: {},\n arrowsColor: { selector: IconClass.componentName, property: IconClass.cssVarList.fill },\n },\n }),\n draggableMixin,\n componentNameValidationMixin\n)(RawThirdPartyAppLogoClass);\n","import { componentName, ThirdPartyAppLogoClass } from './ThirdPartyAppLogoClass';\nimport '@descope-ui/descope-icon';\nimport '../descope-logo';\n\ncustomElements.define(componentName, ThirdPartyAppLogoClass);\n\nexport { ThirdPartyAppLogoClass };\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) => {\n const ele = document.createElement('img');\n ele.setAttribute('src', src);\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 });\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) => {\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);\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","/* 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 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).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 { componentName, ImageClass } from './ImageClass';\n\ncustomElements.define(componentName, ImageClass);\n\nexport { ImageClass, componentName };\n","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjkiIGhlaWdodD0iMjgiIHZpZXdCb3g9IjAgMCAyOSAyOCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gPHBhdGggZD0iTTkuMTQ0OTIgMTUuNjQ1TDcuNDk5OTIgMTRMMi44MzMyNSAxOC42NjY3TDcuNDk5OTIgMjMuMzMzM0w5LjE0NDkyIDIxLjY4ODNMNy4zMDE1OSAxOS44MzMzSDI0Ljk5OTlWMTcuNUg3LjMwMTU5TDkuMTQ0OTIgMTUuNjQ1WiIgZmlsbD0iIzYzNkM3NCIvPiA8cGF0aCBkPSJNMTkuODU1IDEyLjM1NTNMMjEuNSAxNC4wMDAzTDI2LjE2NjcgOS4zMzM2NkwyMS41IDQuNjY2OTlMMTkuODU1IDYuMzExOTlMMjEuNjk4MyA4LjE2Njk5SDRWMTAuNTAwM0gyMS42OTgzTDE5Ljg1NSAxMi4zNTUzWiIgZmlsbD0iIzYzNkM3NCIvPiA8L3N2Zz4g\"","import { injectStyle } from '@descope-ui/common/components-helpers';\nimport { compose } from '../helpers';\nimport { componentNameValidationMixin, createStyleMixin, draggableMixin } from '../mixins';\nimport { createBaseClass } from './createBaseClass';\n\nexport const createCssVarImageClass = ({ componentName, varName, fallbackVarName }) => {\n let style;\n const getContent = () => style;\n\n class RawCssVarImageClass extends createBaseClass({\n componentName,\n baseSelector: ':host > div',\n }) {\n constructor() {\n super();\n this.attachShadow({ mode: 'open' }).innerHTML = `\n\t\t\t<div></div>\n\t\t\t`;\n\n injectStyle(\n `\n\t\t\t\t:host {\n\t\t\t\t\tdisplay: inline-flex;\n\t\t\t\t}\n\t\t\t\t:host([draggable=\"true\"]) > div {\n\t\t\t\t\tpointer-events: none\n\t\t\t\t}\n\t\t\t\t:host > div {\n\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t\tmax-width: 100%;\n\t\t\t\t\tmax-height: 100%;\n\t\t\t\t\tobject-fit: contain;\n\t\t\t\t\tmargin: auto;\n\t\t\t\t\t${getContent()}\n\t\t\t\t}\n `,\n this\n );\n }\n }\n\n const CssVarImageClass = compose(\n createStyleMixin({\n mappings: {\n height: { selector: () => ':host > div' },\n width: { selector: () => ':host > div' },\n [varName]: { property: 'content' },\n [fallbackVarName]: { property: 'content' },\n },\n }),\n draggableMixin,\n componentNameValidationMixin\n )(RawCssVarImageClass);\n\n style = `content: var(${CssVarImageClass.cssVarList[varName]}, var(${CssVarImageClass.cssVarList[fallbackVarName]}));`;\n\n return CssVarImageClass;\n};\n","import '@descope-ui/descope-image';\n\nimport { componentName, IconClass } from './IconClass';\n\ncustomElements.define(componentName, IconClass);\n\nexport { IconClass, componentName };\n","import { getComponentName } from '../../helpers/componentHelpers';\nimport { createCssVarImageClass } from '../../baseClasses/createCssVarImageClass';\n\nexport const componentName = getComponentName('logo');\n\nexport const LogoClass = createCssVarImageClass({\n componentName,\n varName: 'url',\n fallbackVarName: 'fallbackUrl',\n});\n","import { componentName, LogoClass } from './LogoClass';\n\ncustomElements.define(componentName, LogoClass);\n\nexport { LogoClass, componentName };\n","import {\n componentNameValidationMixin,\n createProxy,\n createStyleMixin,\n draggableMixin,\n} from '@descope-ui/common/components-mixins';\nimport { getComponentName } from '@descope-ui/common/components-helpers';\nimport { compose } from '@descope-ui/common/utils';\n\nexport const componentName = getComponentName('icon');\n\nexport const IconClass = compose(\n createStyleMixin({\n mappings: {\n 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","RawThirdPartyAppLogoClass","createBaseClass","baseSelector","constructor","super","this","attachShadow","mode","innerHTML","companyLogoWrapper","thirdPartyAppLogoWrapper","ThirdPartyAppLogoClass","mappings","logoMaxHeight","selector","property","logoMaxWidth","thirdPartyAppLogo","fallback","companyLogoFallback","LogoClass","cssVarList","fallbackUrl","gap","arrowsColor","IconClass","fill","customElements","define","createSvgEle","text","clean","sanitize","USE_PROFILES","svg","svgFilters","DOMParser","parseFromString","querySelector","srcAttrs","RawImage","observedAttributes","init","toggleVisibility","src","onThemeChange","renderImage","isVisible","classList","remove","add","legacySrc","getAttribute","themeSrc","currentThemeName","updateFillColor","node","querySelectorAll","forEach","ele","setAttribute","ImageClass","async","startsWith","isBase64Svg","svgXml","atob","slice","base64Prefix","path","match","getFileExtension","fetchedSrc","fetch","document","createElement","createImgEle","style","setProperty","createImage","then","res","appendChild","shouldRender","srcVal","attributeChangedCallback","attrName","oldValue","newValue","height","width","module","exports","createCssVarImageClass","varName","fallbackVarName","RawCssVarImageClass","CssVarImageClass","slots","wrappedEleName","excludeAttrsSync"],"sourceRoot":""}
1
+ {"version":3,"file":"descope-third-party-app-logo-index-js.js","mappings":"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","sources":["webpack://@descope/web-components-ui/./src/components/descope-third-party-app-logo/ThirdPartyAppLogoClass.js","webpack://@descope/web-components-ui/./src/components/descope-third-party-app-logo/index.js","webpack://@descope/web-components-ui/../components/descope-image/src/component/helpers.js","webpack://@descope/web-components-ui/../components/descope-image/src/component/ImageClass.js","webpack://@descope/web-components-ui/../components/descope-image/src/component/index.js","webpack://@descope/web-components-ui/./src/components/descope-third-party-app-logo/arrows.svg","webpack://@descope/web-components-ui/./src/baseClasses/createCssVarImageClass.js","webpack://@descope/web-components-ui/../components/descope-icon/src/component/index.js","webpack://@descope/web-components-ui/./src/components/descope-logo/LogoClass.js","webpack://@descope/web-components-ui/./src/components/descope-logo/index.js","webpack://@descope/web-components-ui/../components/descope-icon/src/component/IconClass.js"],"sourcesContent":["import { injectStyle } from '@descope-ui/common/components-helpers';\nimport { createBaseClass } from '../../baseClasses/createBaseClass';\nimport { compose } from '../../helpers';\nimport { getComponentName } from '../../helpers/componentHelpers';\nimport { componentNameValidationMixin, createStyleMixin, draggableMixin } from '../../mixins';\nimport { IconClass } from '@descope-ui/descope-icon/class';\nimport { LogoClass } from '../descope-logo/LogoClass';\nimport arrowsImg from './arrows.svg';\n\nexport const componentName = getComponentName('third-party-app-logo');\nclass RawThirdPartyAppLogoClass extends createBaseClass({\n componentName,\n baseSelector: '.wrapper',\n}) {\n constructor() {\n super();\n this.attachShadow({ mode: 'open' }).innerHTML = `\n\t\t\t<div class=\"wrapper\">\n <div class=\"third-party-app-logo-wrapper\">\n <div class=\"third-party-app-logo\"></div>\n </div>\n <div class=\"arrows\">\n <descope-icon src=\"${arrowsImg}\"></descope-icon>\n </div>\n <div class=\"company-logo-wrapper\">\n <descope-logo st-height=\"100%\"></descope-logo>\n </div>\n </div>\n\t\t\t`;\n\n injectStyle(\n `\n :host {\n\t\t\t\t\tdisplay: inline-flex;\n\t\t\t\t}\n\t\t\t\t:host([draggable=\"true\"]) > div {\n\t\t\t\t\tpointer-events: none\n\t\t\t\t}\n\n .wrapper {\n display: flex;\n justify-content: center;\n align-items: center;\n min-width: max-content;\n }\n\n\t\t\t\t.third-party-app-logo {\n flex-shrink: 0;\n\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t\tmax-width: 100%;\n\t\t\t\t\tmax-height: 100%;\n\t\t\t\t\tobject-fit: contain;\n\t\t\t\t}\n\n .company-logo-wrapper, .third-party-app-logo-wrapper {\n flex-shrink: 0;\n display: inline-flex;\n }\n\n .company-logo-wrapper {\n justify-content: flex-end;\n }\n\n .third-party-app-logo-wrapper {\n justify-content: flex-start;\n }\n\n .arrows {\n flex-shrink: 0;\n display: flex;\n }\n `,\n this\n );\n }\n}\n\nconst companyLogoWrapper = '>.company-logo-wrapper';\nconst thirdPartyAppLogoWrapper = '>.third-party-app-logo-wrapper';\n\nexport const ThirdPartyAppLogoClass = compose(\n createStyleMixin({\n mappings: {\n logoMaxHeight: [\n { selector: companyLogoWrapper, property: 'height' },\n { selector: thirdPartyAppLogoWrapper, property: 'height' },\n ],\n logoMaxWidth: [\n { selector: companyLogoWrapper, property: 'max-width' },\n { selector: thirdPartyAppLogoWrapper, property: 'max-width' },\n ],\n thirdPartyAppLogo: {\n selector: () => '.third-party-app-logo',\n property: 'content',\n fallback: {},\n },\n companyLogoFallback: {\n selector: LogoClass.componentName,\n property: LogoClass.cssVarList.fallbackUrl,\n },\n gap: {},\n arrowsColor: { selector: IconClass.componentName, property: IconClass.cssVarList.fill },\n },\n }),\n draggableMixin,\n componentNameValidationMixin\n)(RawThirdPartyAppLogoClass);\n","import { componentName, ThirdPartyAppLogoClass } from './ThirdPartyAppLogoClass';\nimport '@descope-ui/descope-icon';\nimport '../descope-logo';\n\ncustomElements.define(componentName, ThirdPartyAppLogoClass);\n\nexport { ThirdPartyAppLogoClass };\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 });\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","/* 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 { componentName, ImageClass } from './ImageClass';\n\ncustomElements.define(componentName, ImageClass);\n\nexport { ImageClass, componentName };\n","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjkiIGhlaWdodD0iMjgiIHZpZXdCb3g9IjAgMCAyOSAyOCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gPHBhdGggZD0iTTkuMTQ0OTIgMTUuNjQ1TDcuNDk5OTIgMTRMMi44MzMyNSAxOC42NjY3TDcuNDk5OTIgMjMuMzMzM0w5LjE0NDkyIDIxLjY4ODNMNy4zMDE1OSAxOS44MzMzSDI0Ljk5OTlWMTcuNUg3LjMwMTU5TDkuMTQ0OTIgMTUuNjQ1WiIgZmlsbD0iIzYzNkM3NCIvPiA8cGF0aCBkPSJNMTkuODU1IDEyLjM1NTNMMjEuNSAxNC4wMDAzTDI2LjE2NjcgOS4zMzM2NkwyMS41IDQuNjY2OTlMMTkuODU1IDYuMzExOTlMMjEuNjk4MyA4LjE2Njk5SDRWMTAuNTAwM0gyMS42OTgzTDE5Ljg1NSAxMi4zNTUzWiIgZmlsbD0iIzYzNkM3NCIvPiA8L3N2Zz4g\"","import { injectStyle } from '@descope-ui/common/components-helpers';\nimport { compose } from '../helpers';\nimport { componentNameValidationMixin, createStyleMixin, draggableMixin } from '../mixins';\nimport { createBaseClass } from './createBaseClass';\n\nexport const createCssVarImageClass = ({ componentName, varName, fallbackVarName }) => {\n let style;\n const getContent = () => style;\n\n class RawCssVarImageClass extends createBaseClass({\n componentName,\n baseSelector: ':host > div',\n }) {\n constructor() {\n super();\n this.attachShadow({ mode: 'open' }).innerHTML = `\n\t\t\t<div></div>\n\t\t\t`;\n\n injectStyle(\n `\n\t\t\t\t:host {\n\t\t\t\t\tdisplay: inline-flex;\n\t\t\t\t}\n\t\t\t\t:host([draggable=\"true\"]) > div {\n\t\t\t\t\tpointer-events: none\n\t\t\t\t}\n\t\t\t\t:host > div {\n\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t\tmax-width: 100%;\n\t\t\t\t\tmax-height: 100%;\n\t\t\t\t\tobject-fit: contain;\n\t\t\t\t\tmargin: auto;\n\t\t\t\t\t${getContent()}\n\t\t\t\t}\n `,\n this\n );\n }\n }\n\n const CssVarImageClass = compose(\n createStyleMixin({\n mappings: {\n height: { selector: () => ':host > div' },\n width: { selector: () => ':host > div' },\n [varName]: { property: 'content' },\n [fallbackVarName]: { property: 'content' },\n },\n }),\n draggableMixin,\n componentNameValidationMixin\n )(RawCssVarImageClass);\n\n style = `content: var(${CssVarImageClass.cssVarList[varName]}, var(${CssVarImageClass.cssVarList[fallbackVarName]}));`;\n\n return CssVarImageClass;\n};\n","import '@descope-ui/descope-image';\n\nimport { componentName, IconClass } from './IconClass';\n\ncustomElements.define(componentName, IconClass);\n\nexport { IconClass, componentName };\n","import { getComponentName } from '../../helpers/componentHelpers';\nimport { createCssVarImageClass } from '../../baseClasses/createCssVarImageClass';\n\nexport const componentName = getComponentName('logo');\n\nexport const LogoClass = createCssVarImageClass({\n componentName,\n varName: 'url',\n fallbackVarName: 'fallbackUrl',\n});\n","import { componentName, LogoClass } from './LogoClass';\n\ncustomElements.define(componentName, LogoClass);\n\nexport { LogoClass, componentName };\n","import {\n componentNameValidationMixin,\n createProxy,\n createStyleMixin,\n draggableMixin,\n} from '@descope-ui/common/components-mixins';\nimport { getComponentName } from '@descope-ui/common/components-helpers';\nimport { compose } from '@descope-ui/common/utils';\n\nexport const componentName = getComponentName('icon');\n\nexport const IconClass = compose(\n createStyleMixin({\n mappings: {\n 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","RawThirdPartyAppLogoClass","createBaseClass","baseSelector","constructor","super","this","attachShadow","mode","innerHTML","companyLogoWrapper","thirdPartyAppLogoWrapper","ThirdPartyAppLogoClass","mappings","logoMaxHeight","selector","property","logoMaxWidth","thirdPartyAppLogo","fallback","companyLogoFallback","LogoClass","cssVarList","fallbackUrl","gap","arrowsColor","IconClass","fill","customElements","define","createSvgEle","text","clean","sanitize","USE_PROFILES","svg","svgFilters","DOMParser","parseFromString","querySelector","srcAttrs","RawImage","observedAttributes","init","toggleVisibility","src","onThemeChange","renderImage","isVisible","classList","remove","add","altText","getAttribute","legacySrc","themeSrc","currentThemeName","updateFillColor","node","querySelectorAll","forEach","ele","setAttribute","ImageClass","async","startsWith","isBase64Svg","svgXml","atob","slice","base64Prefix","path","match","getFileExtension","fetchedSrc","fetch","document","createElement","createImgEle","style","setProperty","createImage","then","res","appendChild","shouldRender","srcVal","attributeChangedCallback","attrName","oldValue","newValue","height","width","module","exports","createCssVarImageClass","varName","fallbackVarName","RawCssVarImageClass","CssVarImageClass","slots","wrappedEleName","excludeAttrsSync"],"sourceRoot":""}