@descope/sdk-component-drivers 0.17.1 → 0.18.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":"index.cjs.js","sources":["../../src/BaseDriver.ts","../../src/helpers.ts","../../src/ButtonDriver.ts","../../src/gridDrivers/GridDriver.ts","../../src/gridDrivers/GridTextColumnDriver.ts","../../src/gridDrivers/GridCustomColumnDriver.ts","../../src/ModalDriver.ts","../../src/MultiSelectDriver.ts","../../src/SingleSelectDriver.ts","../../src/AppsListDriver.ts","../../src/AvatarDriver.ts","../../src/DeviceListDriver.ts","../../src/FilterDriver.ts","../../src/FlowButtonDriver.ts","../../src/FlowDriver.ts","../../src/GenericFlowButtonDriver.ts","../../src/LastAuthBadgeDriver.ts","../../src/LinkDriver.ts","../../src/MultiLineMappingsDriver.ts","../../src/MultiSsoConfigurationsDriver.ts","../../src/NotificationDriver.ts","../../src/OutboundAppsListDriver.ts","../../src/TenantSelectorDriver.ts","../../src/TextDriver.ts","../../src/TextFieldDriver.ts","../../src/UserAttributeDriver.ts","../../src/UserAuthMethodDriver.ts","../../src/UserPasskeysDriver.ts"],"sourcesContent":["import { waitForElement } from './helpers';\nimport { RefOrRefFn } from './types';\n\ntype Logger = {\n error(...data: any[]): void;\n warn(...data: any[]): void;\n info(...data: any[]): void;\n debug(...data: any[]): void;\n};\n\nexport class BaseDriver {\n #ele: RefOrRefFn;\n\n logger: Logger | undefined;\n\n // eslint-disable-next-line class-methods-use-this\n nodeName = '';\n\n constructor(refOrRefFn: RefOrRefFn, config: { logger: Logger }) {\n this.#ele = refOrRefFn;\n this.logger = config.logger;\n }\n\n get asyncEle() {\n return waitForElement(this.#ele, 1000);\n }\n\n get ele() {\n const ele = typeof this.#ele === 'function' ? this.#ele() : this.#ele;\n if (!ele) {\n this.logger?.debug(\n `Driver element is not available for ${this.nodeName}`,\n new Error(),\n );\n\n return null;\n }\n\n if (ele?.localName !== this.nodeName) {\n this.logger?.debug(\n `node name do not match, expected \"${this.nodeName}\", received \"${ele.localName}\" `,\n Error(),\n );\n\n return null;\n }\n\n return ele;\n }\n\n get isExists() {\n return !!this.ele;\n }\n}\n","import { RefOrRefFn } from './types';\n\nexport const waitForElement = async (ele: RefOrRefFn, timeout: number) =>\n new Promise<Element | null>((resolve) => {\n const interval = setInterval(() => {\n const element = typeof ele === 'function' ? ele() : ele;\n if (element) {\n clearInterval(interval);\n resolve(element);\n }\n }, 100);\n setTimeout(() => {\n clearInterval(interval);\n resolve(null);\n }, timeout);\n });\n","import { BaseDriver } from './BaseDriver';\n\nexport class ButtonDriver extends BaseDriver {\n nodeName = 'descope-button';\n\n onClick(cb: (e: Event) => void) {\n this.ele?.addEventListener('click', cb);\n\n return () => this.ele?.removeEventListener('click', cb);\n }\n\n disable() {\n this.ele?.setAttribute('disabled', 'true');\n }\n\n enable() {\n this.ele?.removeAttribute('disabled');\n }\n}\n","import { compareArrays } from '@descope/sdk-helpers';\nimport { BaseDriver } from '../BaseDriver';\nimport { GridCustomColumnDriver } from './GridCustomColumnDriver';\nimport { GridTextColumnDriver } from './GridTextColumnDriver';\n\ntype Column = {\n path: string;\n header: string;\n type: string;\n attrs: Record<string, string>;\n};\n\nconst columnRegex = /^descope-grid-([^-]+)-column$/;\n\nconst driversMapping = {\n text: GridTextColumnDriver,\n custom: GridCustomColumnDriver,\n};\n\nexport class GridDriver<T extends any> extends BaseDriver {\n nodeName = 'descope-grid';\n #onColumnsChangeCb: (columns: Column[]) => void;\n\n onSelectedItemsChange(cb: (e: CustomEvent<{ value: T[] }>) => void) {\n this.ele?.addEventListener('selected-items-changed', cb);\n\n return () => this.ele?.removeEventListener('selected-items-changed', cb);\n }\n\n get ele() {\n return super.ele as Element & {\n data: T[];\n columns: Column[];\n renderColumn: ({ path, header, type, attrs }: Column) => string;\n };\n }\n\n get data() {\n return this.ele?.data;\n }\n\n set data(data: T[]) {\n if (this.ele) this.ele.data = data;\n }\n\n get columns() {\n if (!this.ele) return [];\n return Array.from(this.ele.children).reduce((acc, child) => {\n const columnType = columnRegex.exec(child.localName)?.[1];\n const Driver = driversMapping[columnType];\n\n if (!Driver) return acc;\n\n acc.push(new Driver(child, { logger: this.logger }));\n\n return acc;\n }, []);\n }\n\n filterColumns(filterFn: (col: Column) => boolean) {\n const filteredColumns = this.ele.columns?.filter(filterFn);\n if (!filteredColumns || !this.ele.columns) return;\n if (!compareArrays(filteredColumns, this.ele.columns)) {\n this.ele.columns = filteredColumns;\n this.#onColumnsChangeCb?.(filteredColumns);\n }\n }\n\n onColumnsChange(cb: (columns: Column[]) => void) {\n this.#onColumnsChangeCb = cb;\n }\n\n set renderColumn(\n renderFn: ({ path, header, type, attrs }: Column) => string,\n ) {\n this.ele.renderColumn = renderFn;\n }\n}\n","import { BaseDriver } from '../BaseDriver';\n\nexport class GridTextColumnDriver extends BaseDriver {\n nodeName = 'descope-grid-text-column';\n\n onSortDirectionChange(\n cb: (e: CustomEvent<{ value: 'asc' | 'desc' | null }>) => void,\n ) {\n this.ele?.addEventListener('direction-changed', cb);\n\n return () => this.ele?.removeEventListener('selected-items-changed', cb);\n }\n}\n","import { BaseDriver } from '../BaseDriver';\n\nexport class GridCustomColumnDriver extends BaseDriver {\n nodeName = 'descope-grid-custom-column';\n\n onSortDirectionChange(\n cb: (e: CustomEvent<{ value: 'asc' | 'desc' | null }>) => void,\n ) {\n this.ele?.addEventListener('direction-changed', cb);\n\n return () => this.ele?.removeEventListener('selected-items-changed', cb);\n }\n}\n","import { BaseDriver } from './BaseDriver';\n\nexport class ModalDriver extends BaseDriver {\n #modalContent: HTMLTemplateElement;\n\n #openedObserver: MutationObserver | undefined;\n\n beforeOpen: undefined | (() => void | Promise<void>);\n\n afterClose: undefined | (() => void);\n\n nodeName = 'descope-modal';\n\n constructor(...args: ConstructorParameters<typeof BaseDriver>) {\n super(...args);\n this.#observeOpened();\n }\n\n // run afterClose whenever the modal becomes closed, regardless of how it was\n // closed - a programmatic close() or the component closing itself on a backdrop\n // click both just remove the `opened` attribute. observing the attribute keeps\n // the reset logic in one place instead of reacting to a specific trigger.\n #observeOpened() {\n if (this.#openedObserver) return;\n\n const ele = this.ele;\n if (!ele) return;\n\n this.#openedObserver = new MutationObserver((records) => {\n records.forEach((record, index) => {\n const wasOpen = record.oldValue === 'true';\n // the value after this mutation is the next record's oldValue, or the\n // current attribute value for the last record in the batch\n const valueAfter = records[index + 1]\n ? records[index + 1].oldValue\n : ele.getAttribute('opened');\n\n if (wasOpen && valueAfter !== 'true') {\n this.afterClose?.();\n }\n });\n });\n\n this.#openedObserver.observe(ele, {\n attributes: true,\n attributeFilter: ['opened'],\n attributeOldValue: true,\n });\n }\n\n get isOpen() {\n return this.ele?.getAttribute('opened') === 'true';\n }\n\n get isClosed() {\n return !this.isOpen;\n }\n\n close() {\n // removing `opened` triggers the observer above, which runs afterClose\n this.ele?.removeAttribute('opened');\n }\n\n async open() {\n await this.beforeOpen?.();\n // set up the observer lazily too, in case the element wasn't available yet\n // when the driver was constructed\n this.#observeOpened();\n this.ele?.setAttribute('opened', 'true');\n }\n\n reset() {\n if (this.ele) this.ele.innerHTML = '';\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n this.#modalContent &&\n this.ele?.append(this.#modalContent.content.cloneNode(true));\n }\n\n setContent(template: HTMLTemplateElement) {\n this.#modalContent = template;\n this.reset();\n }\n\n remove() {\n this.#openedObserver?.disconnect();\n this.ele?.remove();\n }\n}\n","import { BaseDriver } from './BaseDriver';\n\ntype MultiSelectItem = {\n label: string;\n value: string;\n description?: string;\n};\n\nconst renderItemWithDescription = ({\n label,\n value,\n description,\n}: MultiSelectItem) => {\n const item = document.createElement('span');\n item.setAttribute('data-name', label);\n item.setAttribute('data-id', value);\n item.style.display = 'flex';\n item.style.flexDirection = 'column';\n\n const labelEle = document.createElement('span');\n labelEle.textContent = label;\n item.appendChild(labelEle);\n\n if (description) {\n const descriptionEle = document.createElement('span');\n descriptionEle.textContent = description;\n descriptionEle.style.opacity = '0.6';\n descriptionEle.style.fontSize = '0.85em';\n item.appendChild(descriptionEle);\n }\n\n return item.outerHTML;\n};\n\nexport class MultiSelectDriver extends BaseDriver {\n nodeName = 'descope-multi-select-combo-box';\n\n async setData(data: MultiSelectItem[]) {\n const ele = await this.asyncEle;\n if (!ele) return;\n\n if (data.some((item) => item.description)) {\n (\n ele as Element & { renderItem?: typeof renderItemWithDescription }\n ).renderItem = renderItemWithDescription;\n }\n\n ele.setAttribute(\n 'data',\n JSON.stringify([...data].sort((a, b) => a.label.localeCompare(b.label))),\n );\n }\n}\n\nexport type { MultiSelectItem };\n","import { BaseDriver } from './BaseDriver';\n\nexport class SingleSelectDriver extends BaseDriver {\n nodeName = 'descope-combo-box';\n\n onInput(cb: (e: InputEvent) => void) {\n this.ele?.addEventListener('input', cb);\n\n return () => this.ele?.removeEventListener('input', cb);\n }\n\n get value() {\n return (<HTMLInputElement>this.ele)?.value;\n }\n\n set value(value: string) {\n if (this.ele) {\n (<HTMLInputElement>this.ele).value = value;\n }\n }\n\n async setData(data: { label: string; value: string }[]) {\n (await this.asyncEle)?.setAttribute('data', JSON.stringify(data.sort()));\n }\n\n setAllowCustomValue(allow: boolean) {\n if (this.ele) {\n this.ele.toggleAttribute('allow-custom-value', allow);\n }\n }\n}\n","import { BaseDriver } from './BaseDriver';\n\ntype Data = { name: string; icon: string; url: string }[];\n\nexport class AppsListDriver extends BaseDriver {\n nodeName = 'descope-apps-list';\n\n set data(data: Data) {\n if (this.ele) this.ele.data = data;\n }\n\n get data() {\n return this.ele?.data;\n }\n\n get ele() {\n return super.ele as Element & {\n data: Data;\n };\n }\n}\n","import { BaseDriver } from './BaseDriver';\n\nexport class AvatarDriver extends BaseDriver {\n nodeName = 'descope-avatar';\n\n set displayName(name: string) {\n this.ele?.setAttribute('display-name', name);\n }\n\n set image(imgUrl: string) {\n this.ele?.setAttribute('img', imgUrl);\n }\n\n get flowId() {\n return this.ele?.getAttribute('flow-id');\n }\n\n onClick(cb: (e: Event) => void) {\n this.ele?.addEventListener('click', cb);\n\n return () => this.ele?.removeEventListener('click', cb);\n }\n}\n","import { BaseDriver } from './BaseDriver';\n\ntype Data = {\n id: string;\n name: string;\n lastLoginDate: number;\n isCurrent: boolean;\n}[];\n\ntype Detail = { id: string; action: string };\n\nexport class DeviceListDriver extends BaseDriver {\n nodeName = 'descope-trusted-devices';\n\n set displayName(name: string) {\n this.ele?.setAttribute('display-name', name);\n }\n\n get ele() {\n return super.ele as Element & {\n data: Data;\n };\n }\n\n get data() {\n return this.ele?.data;\n }\n\n set data(data: Data) {\n if (this.ele) this.ele.data = data;\n }\n\n get flowId() {\n return this.ele?.getAttribute('flow-id');\n }\n\n onRemoveDeviceClick(cb: (detail: Detail) => void) {\n const handler = (e: CustomEvent<Detail>) => cb(e.detail);\n this.ele?.addEventListener('remove-device-clicked', handler);\n\n return () =>\n this.ele?.removeEventListener('remove-device-clicked', handler);\n }\n}\n","import { BaseDriver } from './BaseDriver';\n\nexport type FilterInputType =\n | 'text'\n | 'number'\n | 'email'\n | 'boolean'\n | 'singleselect'\n | 'multiselect';\n\nexport type FilterOption = { value: string; label: string };\n\nexport type FilterColumn = {\n id: string;\n label: string;\n inputType: FilterInputType;\n options?: FilterOption[];\n // A built-in operator id, or an object overriding widget defaults — notably\n // `prefix`/`suffix` (query affixes the consumer applies, e.g. SQL-LIKE `%`).\n operators?: (\n | string\n | {\n id: string;\n label?: string;\n noValue?: boolean;\n prefix?: string;\n suffix?: string;\n }\n )[];\n};\n\nexport type FilterRow = {\n column: string;\n operator: string;\n value: string | string[] | null;\n // Emitted on applied rows when the operator defines query affixes. The value\n // stays raw; the consumer builds the query as `${prefix}${value}${suffix}`.\n prefix?: string;\n suffix?: string;\n};\n\nexport type FilterEventDetail = {\n value: FilterRow[];\n action: 'apply' | 'clear-all' | 'cancel';\n};\n\nexport class FilterDriver extends BaseDriver {\n nodeName = 'descope-filter';\n\n // Serialized value of the last `data` we wrote, so onDataChange can tell our\n // own writes apart from external ones.\n #lastData: string | null = null;\n\n get data(): FilterColumn[] {\n try {\n return JSON.parse(this.ele?.getAttribute('data') || '[]');\n } catch {\n return [];\n }\n }\n\n set data(value: FilterColumn[]) {\n this.#lastData = JSON.stringify(value);\n // setAttribute always fires the component's attributeChangedCallback, even\n // for an identical value (the DOM doesn't short-circuit a same-value set).\n // The component re-renders its columns from `data` there, dropping the user's\n // applied rows - so skip the write when the attribute already holds this value.\n if (this.#lastData === this.ele?.getAttribute('data')) return;\n this.ele?.setAttribute('data', this.#lastData);\n }\n\n get value(): FilterRow[] {\n try {\n return JSON.parse(this.ele?.getAttribute('value') || '[]');\n } catch {\n return [];\n }\n }\n\n set value(value: FilterRow[]) {\n this.ele?.setAttribute('value', JSON.stringify(value));\n }\n\n onApply(cb: (detail: FilterEventDetail) => void) {\n const handler = (e: Event) => cb((e as CustomEvent).detail);\n this.ele?.addEventListener('filter-apply', handler);\n return () => this.ele?.removeEventListener('filter-apply', handler);\n }\n\n onClear(cb: (detail: FilterEventDetail) => void) {\n const handler = (e: Event) => cb((e as CustomEvent).detail);\n this.ele?.addEventListener('filter-clear', handler);\n return () => this.ele?.removeEventListener('filter-clear', handler);\n }\n\n // Fires when the `data` attribute is changed by something other than this\n // driver (e.g. the screen editor republishing a different pick list). The\n // driver's own writes are skipped by comparing against #lastData.\n onDataChange(cb: () => void) {\n const ele = this.ele;\n if (!ele) return () => {};\n const observer = new MutationObserver(() => {\n if ((ele.getAttribute('data') ?? '[]') === this.#lastData) return;\n cb();\n });\n observer.observe(ele, { attributes: true, attributeFilter: ['data'] });\n return () => observer.disconnect();\n }\n}\n","import { ButtonDriver } from './ButtonDriver';\n\nexport class FlowButtonDriver extends ButtonDriver {\n get flowId(): string {\n return this.ele?.getAttribute('flow-id') || '';\n }\n}\n","import { BaseDriver } from './BaseDriver';\n\nexport class FlowDriver extends BaseDriver {\n nodeName = 'descope-wc';\n\n set projectId(projectId: string) {\n this.ele?.setAttribute('project-id', projectId);\n }\n\n set baseUrl(baseUrl: string) {\n this.ele?.setAttribute('base-url', baseUrl);\n }\n\n set flowId(flowId: string) {\n this.ele?.setAttribute('flow-id', flowId);\n }\n\n set theme(theme: string | null | undefined) {\n if (!theme) {\n this.ele?.removeAttribute('theme');\n } else {\n this.ele?.setAttribute('theme', theme);\n }\n }\n\n // start a flow rendered with `lazy-start`, which preloads but holds its\n // start call until asked\n start() {\n (this.ele as any)?.start?.();\n }\n\n onSuccess(cb: () => void) {\n this.ele?.addEventListener('success', cb);\n\n return () => this.ele?.removeEventListener('success', cb);\n }\n onPageUpdated(cb: () => void) {\n this.ele?.addEventListener('page-updated', cb);\n\n return () => this.ele?.removeEventListener('page-updated', cb);\n }\n}\n","import { ButtonDriver } from './ButtonDriver';\n\nexport class GenericFlowButtonDriver extends ButtonDriver {\n get flowId(): string {\n return this.ele?.getAttribute('flow-id') || '';\n }\n get enableMode(): 'onlyOne' | 'oneOrMore' | 'always' {\n return this.ele?.getAttribute('enable-mode') as\n | 'onlyOne'\n | 'oneOrMore'\n | 'always';\n }\n}\n","import { BaseDriver } from './BaseDriver';\n\nexport class LastAuthBadgeDriver extends BaseDriver {\n nodeName = 'descope-attachment';\n\n set position(value: string) {\n this.ele?.setAttribute('position', value);\n }\n\n get position() {\n return this.ele?.getAttribute('position') ?? '';\n }\n}\n","import { BaseDriver } from './BaseDriver';\n\nexport class LinkDriver extends BaseDriver {\n nodeName = 'descope-link';\n\n get ele() {\n return super.ele as Element & {\n innerText: string;\n getAttribute: (name: string) => string | null;\n };\n }\n\n get href() {\n return this.ele?.getAttribute('href');\n }\n\n set href(href: string) {\n this.ele?.setAttribute('href', href ?? '');\n }\n}\n","import { BaseDriver } from './BaseDriver';\n\ntype Mapping = { tenantId: string; roleNames: string[] };\n\nexport class MultiLineMappingsDriver extends BaseDriver {\n nodeName = 'descope-multi-line-mappings';\n\n setData(\n data: Record<string, string[] | { label?: string; options: string[] }>,\n ) {\n this.ele?.setAttribute('data', JSON.stringify(data));\n }\n\n get value(): Mapping[] {\n return (this.ele as any)?.value || [];\n }\n\n set value(mappings: Mapping[]) {\n if (this.ele) {\n (this.ele as any).value = mappings;\n }\n }\n\n get mergedValue(): Mapping[] {\n return Object.entries(\n this.value\n .filter(({ tenantId }) => !!tenantId)\n .reduce<Record<string, string[]>>((acc, { tenantId, roleNames }) => {\n acc[tenantId] = [\n ...new Set([...(acc[tenantId] || []), ...roleNames]),\n ];\n return acc;\n }, {}),\n ).map(([tenantId, roleNames]) => ({ tenantId, roleNames }));\n }\n}\n","import { BaseDriver } from './BaseDriver';\n\ntype Data = {\n id: string;\n name: string;\n authType?: string;\n isDefault?: boolean;\n link?: string;\n}[];\n\ntype DeleteDetail = { id: string; name: string };\n\nexport class MultiSsoConfigurationsDriver extends BaseDriver {\n nodeName = 'descope-multi-sso';\n\n set data(data: Data) {\n if (this.ele) this.ele.data = data;\n }\n\n get data() {\n return this.ele?.data;\n }\n\n get ele() {\n return super.ele as Element & {\n data: Data;\n };\n }\n\n get createFlowId() {\n return this.ele?.getAttribute('data-create-flow-id') || '';\n }\n\n get deleteFlowId() {\n return this.ele?.getAttribute('data-delete-flow-id') || '';\n }\n\n onCreateClicked(cb: () => void) {\n const handler = () => cb();\n this.ele?.addEventListener('create-clicked', handler);\n\n return () => this.ele?.removeEventListener('create-clicked', handler);\n }\n\n onDeleteClicked(cb: (detail: DeleteDetail) => void) {\n const handler = (e: CustomEvent<DeleteDetail>) => cb(e.detail);\n this.ele?.addEventListener('delete-clicked', handler);\n\n return () => this.ele?.removeEventListener('delete-clicked', handler);\n }\n}\n","import { BaseDriver } from './BaseDriver';\n\nexport class NotificationDriver extends BaseDriver {\n nodeName = 'descope-notification';\n\n close() {\n this.ele?.removeAttribute('opened');\n }\n\n show() {\n this.ele?.setAttribute('opened', 'true');\n }\n\n setContent(template: HTMLTemplateElement) {\n this.ele.innerHTML = '';\n this.ele.appendChild(template.content.cloneNode(true));\n }\n\n remove() {\n this.ele?.remove();\n }\n}\n","import { BaseDriver } from './BaseDriver';\n\ntype Data = {\n id: string;\n name: string;\n description?: string;\n logo?: string;\n isConnected?: boolean;\n}[];\n\ntype Detail = { id: string; action: string };\n\nexport class OutboundAppsListDriver extends BaseDriver {\n nodeName = 'descope-outbound-apps';\n\n set data(data: Data) {\n if (this.ele) this.ele.data = data;\n }\n\n get data() {\n return this.ele?.data;\n }\n\n get ele() {\n return super.ele as Element & {\n data: Data;\n };\n }\n\n get connectFlowId() {\n return this.ele?.getAttribute('connect-flow-id') || '';\n }\n\n get disconnectFlowId() {\n return this.ele?.getAttribute('disconnect-flow-id') || '';\n }\n\n onConnectClick(cb: (detail: Detail) => void) {\n const handler = (e: CustomEvent<Detail>) => cb(e.detail);\n this.ele?.addEventListener('connect-clicked', handler);\n\n return () => this.ele?.removeEventListener('connect-clicked', handler);\n }\n\n onDisconnectClick(cb: (detail: Detail) => void) {\n const handler = (e: CustomEvent<Detail>) => cb(e.detail);\n this.ele?.addEventListener('disconnect-clicked', handler);\n\n return () => this.ele?.removeEventListener('disconnect-clicked', handler);\n }\n}\n","import { SingleSelectDriver } from './SingleSelectDriver';\n\nexport class TenantSelectorDriver extends SingleSelectDriver {\n get action(): 'reload' | 'none' | '' {\n return (this.ele?.getAttribute('data-action') || '') as\n | 'reload'\n | 'none'\n | '';\n }\n\n get refreshTimeout(): number {\n return Number(this.ele?.getAttribute('data-refresh-timeout')) || 500;\n }\n\n get shouldReload() {\n return this.action === 'reload';\n }\n}\n","import { BaseDriver } from './BaseDriver';\n\nexport class TextDriver extends BaseDriver {\n nodeName = 'descope-text';\n\n get ele() {\n return super.ele as Element & { innerText: string };\n }\n\n get text() {\n return this.ele?.innerText;\n }\n\n set text(content: string) {\n if (this.ele) this.ele.innerText = content;\n }\n}\n","import { BaseDriver } from './BaseDriver';\n\nexport class TextFieldDriver extends BaseDriver {\n nodeName = 'descope-text-field';\n\n onInput(cb: (e: InputEvent) => void) {\n this.ele?.addEventListener('input', cb);\n\n return () => this.ele?.removeEventListener('input', cb);\n }\n\n get value() {\n return (<HTMLInputElement>this.ele)?.value;\n }\n\n set value(value: string) {\n if (this.ele) {\n (<HTMLInputElement>this.ele).value = value;\n }\n }\n\n disable() {\n this.ele?.setAttribute('disabled', 'true');\n }\n\n enable() {\n this.ele?.removeAttribute('disabled');\n }\n}\n","import { BaseDriver } from './BaseDriver';\n\nexport class UserAttributeDriver extends BaseDriver {\n nodeName = 'descope-user-attribute';\n\n set value(value: string) {\n this.ele?.setAttribute('value', value);\n }\n\n set badgeLabel(label: string) {\n this.ele?.setAttribute('badge-label', label);\n }\n\n get label() {\n return this.ele?.getAttribute('label') || '';\n }\n\n get editFlowId() {\n return this.ele?.getAttribute('edit-flow-id') || '';\n }\n\n get deleteFlowId() {\n return this.ele?.getAttribute('delete-flow-id') || '';\n }\n\n onEditClick(cb: (e: Event) => void) {\n this.ele?.addEventListener('edit-clicked', cb);\n\n return () => this.ele?.removeEventListener('edit-clicked', cb);\n }\n\n onDeleteClick(cb: (e: Event) => void) {\n this.ele?.addEventListener('delete-clicked', cb);\n\n return () => this.ele?.removeEventListener('delete-clicked', cb);\n }\n}\n","import { BaseDriver } from './BaseDriver';\n\nexport class UserAuthMethodDriver extends BaseDriver {\n nodeName = 'descope-user-auth-method';\n\n set fulfilled(isFulfilled: boolean) {\n isFulfilled\n ? this.ele?.setAttribute('fulfilled', 'true')\n : this.ele?.removeAttribute('fulfilled');\n }\n\n onUnfulfilledButtonClick(cb: (e: Event) => void) {\n this.ele?.addEventListener('button-clicked', cb);\n\n return () => this.ele?.removeEventListener('button-clicked', cb);\n }\n\n onFulfilledButtonClick(cb: (e: Event) => void) {\n this.ele?.addEventListener('fulfilled-button-clicked', cb);\n\n return () => this.ele?.removeEventListener('fulfilled-button-clicked', cb);\n }\n\n get flowId() {\n return this.ele?.getAttribute('flow-id');\n }\n\n get fulfilledFlowId() {\n return this.ele?.getAttribute('fulfilled-flow-id');\n }\n}\n","import { BaseDriver } from './BaseDriver';\n\ntype PasskeyType =\n | 'apple'\n | 'google'\n | 'windows'\n | 'chrome'\n | 'edge'\n | 'samsung'\n | '1password'\n | 'bitwarden'\n | 'lastpass'\n | 'dashlane'\n | 'keeper'\n | 'keepassxc'\n | 'proton'\n | 'nordpass'\n | 'enpass'\n | 'key'\n | 'phone'\n | 'other';\n\ntype Data = {\n id: string;\n name: string;\n passkeyType: PasskeyType;\n createdAt: number;\n}[];\n\ntype Detail = { id: string; action: string };\n\nexport class UserPasskeysDriver extends BaseDriver {\n nodeName = 'descope-user-passkeys';\n\n get ele() {\n return super.ele as Element & {\n data: Data;\n };\n }\n\n get data() {\n return this.ele?.data;\n }\n\n set data(data: Data) {\n if (this.ele) this.ele.data = data;\n }\n\n get addPasskeyFlowId() {\n return this.ele?.getAttribute('add-passkey-flow-id');\n }\n\n get removePasskeyFlowId() {\n return this.ele?.getAttribute('remove-passkey-flow-id');\n }\n\n onAddPasskeyClick(cb: (e: Event) => void) {\n this.ele?.addEventListener('add-passkey-clicked', cb);\n return () => this.ele?.removeEventListener('add-passkey-clicked', cb);\n }\n\n onRemovePasskeyClick(cb: (detail: Detail) => void) {\n const handler = (e: CustomEvent<Detail>) => cb(e.detail);\n this.ele?.addEventListener('remove-passkey-clicked', handler);\n\n return () =>\n this.ele?.removeEventListener('remove-passkey-clicked', handler);\n }\n}\n"],"names":["BaseDriver","constructor","refOrRefFn","config","_BaseDriver_ele","set","this","nodeName","__classPrivateFieldSet","logger","asyncEle","async","ele","timeout","Promise","resolve","interval","setInterval","element","clearInterval","setTimeout","waitForElement","__classPrivateFieldGet","call","localName","_b","debug","Error","_a","isExists","ButtonDriver","onClick","cb","addEventListener","removeEventListener","disable","setAttribute","enable","removeAttribute","columnRegex","driversMapping","text","onSortDirectionChange","custom","_ModalDriver_openedObserver","MutationObserver","records","forEach","record","index","wasOpen","oldValue","valueAfter","getAttribute","afterClose","observe","attributes","attributeFilter","attributeOldValue","renderItemWithDescription","label","value","description","item","document","createElement","style","display","flexDirection","labelEle","textContent","appendChild","descriptionEle","opacity","fontSize","outerHTML","SingleSelectDriver","onInput","setData","data","JSON","stringify","sort","setAllowCustomValue","allow","toggleAttribute","super","displayName","name","image","imgUrl","flowId","onRemoveDeviceClick","handler","e","detail","_FilterDriver_lastData","parse","onApply","onClear","onDataChange","observer","disconnect","projectId","baseUrl","theme","start","onSuccess","onPageUpdated","enableMode","_GridDriver_onColumnsChangeCb","onSelectedItemsChange","columns","Array","from","children","reduce","acc","child","columnType","exec","Driver","push","filterColumns","filterFn","filteredColumns","filter","compareArrays","onColumnsChange","renderColumn","renderFn","position","href","args","_ModalDriver_modalContent","_ModalDriver_instances","_ModalDriver_observeOpened","isOpen","isClosed","close","open","beforeOpen","reset","innerHTML","append","content","cloneNode","setContent","template","remove","mappings","mergedValue","Object","entries","tenantId","roleNames","Set","map","some","renderItem","a","b","localeCompare","createFlowId","deleteFlowId","onCreateClicked","onDeleteClicked","show","connectFlowId","disconnectFlowId","onConnectClick","onDisconnectClick","action","refreshTimeout","Number","shouldReload","innerText","badgeLabel","editFlowId","onEditClick","onDeleteClick","fulfilled","isFulfilled","onUnfulfilledButtonClick","onFulfilledButtonClick","fulfilledFlowId","addPasskeyFlowId","removePasskeyFlowId","onAddPasskeyClick","onRemovePasskeyClick"],"mappings":"sFAUaA,EAQX,WAAAC,CAAYC,EAAwBC,GAPpCC,EAAiBC,IAAAC,UAAA,GAKjBA,KAAQC,SAAG,GAGTC,EAAAA,uBAAAF,KAAIF,EAAQF,EAAU,KACtBI,KAAKG,OAASN,EAAOM,MACtB,CAED,YAAIC,GACF,MCtB0BC,OAAOC,EAAiBC,IACpD,IAAIC,SAAyBC,IAC3B,MAAMC,EAAWC,aAAY,KAC3B,MAAMC,EAAyB,mBAARN,EAAqBA,IAAQA,EAChDM,IACFC,cAAcH,GACdD,EAAQG,GACT,GACA,KACHE,YAAW,KACTD,cAAcH,GACdD,EAAQ,KAAK,GACZF,EAAQ,IDUJQ,CAAeC,EAAAA,uBAAAhB,YAAW,IAClC,CAED,OAAIM,WACF,MAAMA,EAA2B,mBAAdU,EAAAA,uBAAAhB,KAASF,EAAA,KAAkBkB,yBAAAhB,KAAIF,EAAA,KAAJmB,KAAAjB,MAAcgB,EAAAA,uBAAAhB,KAAIF,EAAA,KAChE,OAAKQ,GASDA,aAAA,EAAAA,EAAKY,aAAclB,KAAKC,kBAC1BkB,EAAAnB,KAAKG,uBAAQiB,MACX,qCAAqCpB,KAAKC,wBAAwBK,EAAIY,cACtEG,SAGK,MAGFf,GAjBQ,QAAbgB,EAAAtB,KAAKG,cAAQ,IAAAmB,GAAAA,EAAAF,MACX,uCAAuCpB,KAAKC,WAC5C,IAAIoB,OAGC,KAaV,CAED,YAAIE,GACF,QAASvB,KAAKM,GACf,8BElDG,MAAOkB,UAAqB9B,EAAlC,WAAAC,uBACEK,KAAQC,SAAG,gBAeZ,CAbC,OAAAwB,CAAQC,SAGN,OAFU,QAAVJ,EAAAtB,KAAKM,WAAK,IAAAgB,GAAAA,EAAAK,iBAAiB,QAASD,GAE7B,KAAK,IAAAJ,EAAC,OAAU,QAAVA,EAAAtB,KAAKM,WAAK,IAAAgB,OAAA,EAAAA,EAAAM,oBAAoB,QAASF,EAAG,CACxD,CAED,OAAAG,SACY,QAAVP,EAAAtB,KAAKM,WAAK,IAAAgB,GAAAA,EAAAQ,aAAa,WAAY,OACpC,CAED,MAAAC,SACU,QAART,EAAAtB,KAAKM,WAAG,IAAAgB,GAAAA,EAAEU,gBAAgB,WAC3B,ECLH,MAAMC,EAAc,gCAEdC,EAAiB,CACrBC,KCbI,cAAoCzC,EAA1C,WAAAC,uBACEK,KAAQC,SAAG,0BASZ,CAPC,qBAAAmC,CACEV,SAIA,OAFU,QAAVJ,EAAAtB,KAAKM,WAAK,IAAAgB,GAAAA,EAAAK,iBAAiB,oBAAqBD,GAEzC,KAAK,IAAAJ,EAAC,OAAU,QAAVA,EAAAtB,KAAKM,WAAK,IAAAgB,OAAA,EAAAA,EAAAM,oBAAoB,yBAA0BF,EAAG,CACzE,GDKDW,OEdI,cAAsC3C,EAA5C,WAAAC,uBACEK,KAAQC,SAAG,4BASZ,CAPC,qBAAAmC,CACEV,SAIA,OAFU,QAAVJ,EAAAtB,KAAKM,WAAK,IAAAgB,GAAAA,EAAAK,iBAAiB,oBAAqBD,GAEzC,KAAK,IAAAJ,EAAC,OAAU,QAAVA,EAAAtB,KAAKM,WAAK,IAAAgB,OAAA,EAAAA,EAAAM,oBAAoB,yBAA0BF,EAAG,CACzE,qFCYC,GAAIV,yBAAAhB,KAAoBsC,EAAA,KAAE,OAE1B,MAAMhC,EAAMN,KAAKM,IACZA,IAELJ,EAAAA,uBAAAF,OAAuB,IAAIuC,kBAAkBC,IAC3CA,EAAQC,SAAQ,CAACC,EAAQC,WACvB,MAAMC,EAA8B,SAApBF,EAAOG,SAGjBC,EAAaN,EAAQG,EAAQ,GAC/BH,EAAQG,EAAQ,GAAGE,SACnBvC,EAAIyC,aAAa,UAEjBH,GAA0B,SAAfE,IACE,QAAfxB,EAAAtB,KAAKgD,kBAAU,IAAA1B,GAAAA,EAAAL,KAAAjB,MAChB,GACD,SAGJgB,EAAAA,uBAAAhB,KAAoBsC,EAAA,KAACW,QAAQ3C,EAAK,CAChC4C,YAAY,EACZC,gBAAiB,CAAC,UAClBC,mBAAmB,IAEvB,ECxCF,MAAMC,EAA4B,EAChCC,QACAC,QACAC,kBAEA,MAAMC,EAAOC,SAASC,cAAc,QACpCF,EAAK3B,aAAa,YAAawB,GAC/BG,EAAK3B,aAAa,UAAWyB,GAC7BE,EAAKG,MAAMC,QAAU,OACrBJ,EAAKG,MAAME,cAAgB,SAE3B,MAAMC,EAAWL,SAASC,cAAc,QAIxC,GAHAI,EAASC,YAAcV,EACvBG,EAAKQ,YAAYF,GAEbP,EAAa,CACf,MAAMU,EAAiBR,SAASC,cAAc,QAC9CO,EAAeF,YAAcR,EAC7BU,EAAeN,MAAMO,QAAU,MAC/BD,EAAeN,MAAMQ,SAAW,SAChCX,EAAKQ,YAAYC,EAClB,CAED,OAAOT,EAAKY,SAAS,EC7BjB,MAAOC,UAA2B5E,EAAxC,WAAAC,uBACEK,KAAQC,SAAG,mBA2BZ,CAzBC,OAAAsE,CAAQ7C,SAGN,OAFU,QAAVJ,EAAAtB,KAAKM,WAAK,IAAAgB,GAAAA,EAAAK,iBAAiB,QAASD,GAE7B,KAAK,IAAAJ,EAAC,OAAU,QAAVA,EAAAtB,KAAKM,WAAK,IAAAgB,OAAA,EAAAA,EAAAM,oBAAoB,QAASF,EAAG,CACxD,CAED,SAAI6B,SACF,OAAmC,UAATvD,KAAKM,WAAI,IAAAgB,OAAA,EAAAA,EAAEiC,KACtC,CAED,SAAIA,CAAMA,GACJvD,KAAKM,MACYN,KAAKM,IAAKiD,MAAQA,EAExC,CAED,aAAMiB,CAAQC,SACS,QAArBnD,QAAOtB,KAAKI,gBAAS,IAAAkB,GAAAA,EAAEQ,aAAa,OAAQ4C,KAAKC,UAAUF,EAAKG,QACjE,CAED,mBAAAC,CAAoBC,GACd9E,KAAKM,KACPN,KAAKM,IAAIyE,gBAAgB,qBAAsBD,EAElD,yBCzBG,cAA8BpF,EAApC,WAAAC,uBACEK,KAAQC,SAAG,mBAeZ,CAbC,QAAIwE,CAAKA,GACHzE,KAAKM,MAAKN,KAAKM,IAAImE,KAAOA,EAC/B,CAED,QAAIA,SACF,OAAe,UAARzE,KAAKM,WAAG,IAAAgB,OAAA,EAAAA,EAAEmD,IAClB,CAED,OAAInE,GACF,OAAO0E,MAAM1E,GAGd,wBCjBG,cAA4BZ,EAAlC,WAAAC,uBACEK,KAAQC,SAAG,gBAmBZ,CAjBC,eAAIgF,CAAYC,SACJ,QAAV5D,EAAAtB,KAAKM,WAAK,IAAAgB,GAAAA,EAAAQ,aAAa,eAAgBoD,EACxC,CAED,SAAIC,CAAMC,SACE,QAAV9D,EAAAtB,KAAKM,WAAK,IAAAgB,GAAAA,EAAAQ,aAAa,MAAOsD,EAC/B,CAED,UAAIC,SACF,eAAO/D,EAAAtB,KAAKM,0BAAKyC,aAAa,UAC/B,CAED,OAAAtB,CAAQC,SAGN,OAFU,QAAVJ,EAAAtB,KAAKM,WAAK,IAAAgB,GAAAA,EAAAK,iBAAiB,QAASD,GAE7B,KAAK,IAAAJ,EAAC,OAAU,QAAVA,EAAAtB,KAAKM,WAAK,IAAAgB,OAAA,EAAAA,EAAAM,oBAAoB,QAASF,EAAG,CACxD,mDCVG,cAAgChC,EAAtC,WAAAC,uBACEK,KAAQC,SAAG,yBA+BZ,CA7BC,eAAIgF,CAAYC,SACJ,QAAV5D,EAAAtB,KAAKM,WAAK,IAAAgB,GAAAA,EAAAQ,aAAa,eAAgBoD,EACxC,CAED,OAAI5E,GACF,OAAO0E,MAAM1E,GAGd,CAED,QAAImE,SACF,OAAe,UAARzE,KAAKM,WAAG,IAAAgB,OAAA,EAAAA,EAAEmD,IAClB,CAED,QAAIA,CAAKA,GACHzE,KAAKM,MAAKN,KAAKM,IAAImE,KAAOA,EAC/B,CAED,UAAIY,SACF,eAAO/D,EAAAtB,KAAKM,0BAAKyC,aAAa,UAC/B,CAED,mBAAAuC,CAAoB5D,SAClB,MAAM6D,EAAWC,GAA2B9D,EAAG8D,EAAEC,QAGjD,OAFU,QAAVnE,EAAAtB,KAAKM,WAAK,IAAAgB,GAAAA,EAAAK,iBAAiB,wBAAyB4D,GAE7C,KAAK,IAAAjE,EACV,OAAU,QAAVA,EAAAtB,KAAKM,WAAK,IAAAgB,OAAA,EAAAA,EAAAM,oBAAoB,wBAAyB2D,EAAQ,CAClE,wBCIG,cAA4B7F,EAAlC,WAAAC,uBACEK,KAAQC,SAAG,iBAIXyF,EAAA3F,IAAAC,KAA2B,KAyD5B,CAvDC,QAAIyE,SACF,IACE,OAAOC,KAAKiB,OAAc,UAAR3F,KAAKM,WAAG,IAAAgB,OAAA,EAAAA,EAAEyB,aAAa,UAAW,KACrD,CAAC,MAAA5B,GACA,MAAO,EACR,CACF,CAED,QAAIsD,CAAKlB,WACPrD,EAAAA,uBAAAF,OAAiB0E,KAAKC,UAAUpB,GAAM,KAKlCvC,EAAAA,uBAAAhB,KAAc0F,EAAA,QAAe,QAAVpE,EAAAtB,KAAKM,WAAK,IAAAgB,OAAA,EAAAA,EAAAyB,aAAa,WACtC,QAAR5B,EAAAnB,KAAKM,WAAG,IAAAa,GAAAA,EAAEW,aAAa,OAAQd,EAAAA,uBAAAhB,KAAc0F,EAAA,MAC9C,CAED,SAAInC,SACF,IACE,OAAOmB,KAAKiB,OAAc,UAAR3F,KAAKM,WAAG,IAAAgB,OAAA,EAAAA,EAAEyB,aAAa,WAAY,KACtD,CAAC,MAAA5B,GACA,MAAO,EACR,CACF,CAED,SAAIoC,CAAMA,SACA,QAARjC,EAAAtB,KAAKM,WAAG,IAAAgB,GAAAA,EAAEQ,aAAa,QAAS4C,KAAKC,UAAUpB,GAChD,CAED,OAAAqC,CAAQlE,SACN,MAAM6D,EAAWC,GAAa9D,EAAI8D,EAAkBC,QAEpD,OADU,QAAVnE,EAAAtB,KAAKM,WAAK,IAAAgB,GAAAA,EAAAK,iBAAiB,eAAgB4D,GACpC,KAAK,IAAAjE,EAAC,OAAU,QAAVA,EAAAtB,KAAKM,WAAK,IAAAgB,OAAA,EAAAA,EAAAM,oBAAoB,eAAgB2D,EAAQ,CACpE,CAED,OAAAM,CAAQnE,SACN,MAAM6D,EAAWC,GAAa9D,EAAI8D,EAAkBC,QAEpD,OADU,QAAVnE,EAAAtB,KAAKM,WAAK,IAAAgB,GAAAA,EAAAK,iBAAiB,eAAgB4D,GACpC,KAAK,IAAAjE,EAAC,OAAU,QAAVA,EAAAtB,KAAKM,WAAK,IAAAgB,OAAA,EAAAA,EAAAM,oBAAoB,eAAgB2D,EAAQ,CACpE,CAKD,YAAAO,CAAapE,GACX,MAAMpB,EAAMN,KAAKM,IACjB,IAAKA,EAAK,MAAO,OACjB,MAAMyF,EAAW,IAAIxD,kBAAiB,YACP,QAAxBjB,EAAAhB,EAAIyC,aAAa,eAAO,IAAAzB,EAAAA,EAAI,QAAUN,EAAAA,uBAAAhB,KAAc0F,EAAA,MACzDhE,GAAI,IAGN,OADAqE,EAAS9C,QAAQ3C,EAAK,CAAE4C,YAAY,EAAMC,gBAAiB,CAAC,UACrD,IAAM4C,EAASC,YACvB,4BCzGG,cAAgCxE,EACpC,UAAI6D,SACF,OAAe,QAAR/D,EAAAtB,KAAKM,WAAG,IAAAgB,OAAA,EAAAA,EAAEyB,aAAa,aAAc,EAC7C,sBCHG,cAA0BrD,EAAhC,WAAAC,uBACEK,KAAQC,SAAG,YAsCZ,CApCC,aAAIgG,CAAUA,SACF,QAAV3E,EAAAtB,KAAKM,WAAK,IAAAgB,GAAAA,EAAAQ,aAAa,aAAcmE,EACtC,CAED,WAAIC,CAAQA,SACA,QAAV5E,EAAAtB,KAAKM,WAAK,IAAAgB,GAAAA,EAAAQ,aAAa,WAAYoE,EACpC,CAED,UAAIb,CAAOA,SACC,QAAV/D,EAAAtB,KAAKM,WAAK,IAAAgB,GAAAA,EAAAQ,aAAa,UAAWuD,EACnC,CAED,SAAIc,CAAMA,WACHA,EAGO,QAAVhF,EAAAnB,KAAKM,WAAK,IAAAa,GAAAA,EAAAW,aAAa,QAASqE,GAFxB,QAAR7E,EAAAtB,KAAKM,WAAG,IAAAgB,GAAAA,EAAEU,gBAAgB,QAI7B,CAID,KAAAoE,mBACEjF,EAAmB,UAAlBnB,KAAKM,WAAa,IAAAgB,OAAA,EAAAA,EAAA8E,6BACpB,CAED,SAAAC,CAAU3E,SAGR,OAFU,QAAVJ,EAAAtB,KAAKM,WAAK,IAAAgB,GAAAA,EAAAK,iBAAiB,UAAWD,GAE/B,KAAK,IAAAJ,EAAC,OAAU,QAAVA,EAAAtB,KAAKM,WAAK,IAAAgB,OAAA,EAAAA,EAAAM,oBAAoB,UAAWF,EAAG,CAC1D,CACD,aAAA4E,CAAc5E,SAGZ,OAFU,QAAVJ,EAAAtB,KAAKM,WAAK,IAAAgB,GAAAA,EAAAK,iBAAiB,eAAgBD,GAEpC,KAAK,IAAAJ,EAAC,OAAU,QAAVA,EAAAtB,KAAKM,WAAK,IAAAgB,OAAA,EAAAA,EAAAM,oBAAoB,eAAgBF,EAAG,CAC/D,mCCtCG,cAAuCF,EAC3C,UAAI6D,SACF,OAAe,QAAR/D,EAAAtB,KAAKM,WAAG,IAAAgB,OAAA,EAAAA,EAAEyB,aAAa,aAAc,EAC7C,CACD,cAAIwD,SACF,eAAOjF,EAAAtB,KAAKM,0BAAKyC,aAAa,cAI/B,sBZQG,cAAyCrD,EAA/C,WAAAC,uBACEK,KAAQC,SAAG,eACXuG,EAAgDzG,IAAAC,UAAA,EAwDjD,CAtDC,qBAAAyG,CAAsB/E,SAGpB,OAFU,QAAVJ,EAAAtB,KAAKM,WAAK,IAAAgB,GAAAA,EAAAK,iBAAiB,yBAA0BD,GAE9C,KAAK,IAAAJ,EAAC,OAAU,QAAVA,EAAAtB,KAAKM,WAAK,IAAAgB,OAAA,EAAAA,EAAAM,oBAAoB,yBAA0BF,EAAG,CACzE,CAED,OAAIpB,GACF,OAAO0E,MAAM1E,GAKd,CAED,QAAImE,SACF,OAAe,UAARzE,KAAKM,WAAG,IAAAgB,OAAA,EAAAA,EAAEmD,IAClB,CAED,QAAIA,CAAKA,GACHzE,KAAKM,MAAKN,KAAKM,IAAImE,KAAOA,EAC/B,CAED,WAAIiC,GACF,OAAK1G,KAAKM,IACHqG,MAAMC,KAAK5G,KAAKM,IAAIuG,UAAUC,QAAO,CAACC,EAAKC,WAChD,MAAMC,EAAiD,QAApC3F,EAAAW,EAAYiF,KAAKF,EAAM9F,kBAAa,IAAAI,OAAA,EAAAA,EAAA,GACjD6F,EAASjF,EAAe+E,GAE9B,OAAKE,GAELJ,EAAIK,KAAK,IAAID,EAAOH,EAAO,CAAE7G,OAAQH,KAAKG,UAEnC4G,GAJaA,CAIV,GACT,IAVmB,EAWvB,CAED,aAAAM,CAAcC,WACZ,MAAMC,EAAoC,QAAlBjG,EAAAtB,KAAKM,IAAIoG,eAAS,IAAApF,OAAA,EAAAA,EAAAkG,OAAOF,GAC5CC,GAAoBvH,KAAKM,IAAIoG,UAC7Be,EAAaA,cAACF,EAAiBvH,KAAKM,IAAIoG,WAC3C1G,KAAKM,IAAIoG,QAAUa,EACI,QAAvBpG,EAAAH,EAAAA,uBAAAhB,KAAuBwG,EAAA,YAAA,IAAArF,GAAAA,EAAAF,KAAvBjB,KAA0BuH,IAE7B,CAED,eAAAG,CAAgBhG,GACdxB,EAAAA,uBAAAF,KAAIwG,EAAsB9E,EAAE,IAC7B,CAED,gBAAIiG,CACFC,GAEA5H,KAAKM,IAAIqH,aAAeC,CACzB,+Ba1EG,cAAmClI,EAAzC,WAAAC,uBACEK,KAAQC,SAAG,oBASZ,CAPC,YAAI4H,CAAStE,SACD,QAAVjC,EAAAtB,KAAKM,WAAK,IAAAgB,GAAAA,EAAAQ,aAAa,WAAYyB,EACpC,CAED,YAAIsE,WACF,OAA6C,QAAtC1G,EAAQ,QAARG,EAAAtB,KAAKM,WAAG,IAAAgB,OAAA,EAAAA,EAAEyB,aAAa,mBAAe,IAAA5B,EAAAA,EAAA,EAC9C,sBCTG,cAA0BzB,EAAhC,WAAAC,uBACEK,KAAQC,SAAG,cAgBZ,CAdC,OAAIK,GACF,OAAO0E,MAAM1E,GAId,CAED,QAAIwH,SACF,eAAOxG,EAAAtB,KAAKM,0BAAKyC,aAAa,OAC/B,CAED,QAAI+E,CAAKA,SACG,QAAVxG,EAAAtB,KAAKM,WAAK,IAAAgB,GAAAA,EAAAQ,aAAa,OAAQgG,QAAAA,EAAQ,GACxC,uBXhBG,cAA2BpI,EAW/B,WAAAC,IAAeoI,GACb/C,SAAS+C,eAXXC,EAAmCjI,IAAAC,UAAA,GAEnCsC,EAA8CvC,IAAAC,UAAA,GAM9CA,KAAQC,SAAG,gBAITe,EAAAA,uBAAAhB,KAAIiI,EAAA,IAAAC,GAAJjH,KAAAjB,KACD,CAkCD,UAAImI,SACF,MAA4C,UAA7B,QAAR7G,EAAAtB,KAAKM,WAAG,IAAAgB,OAAA,EAAAA,EAAEyB,aAAa,UAC/B,CAED,YAAIqF,GACF,OAAQpI,KAAKmI,MACd,CAED,KAAAE,SAEU,QAAR/G,EAAAtB,KAAKM,WAAG,IAAAgB,GAAAA,EAAEU,gBAAgB,SAC3B,CAED,UAAMsG,iBACiB,QAAfhH,EAAAtB,KAAKuI,kBAAU,IAAAjH,OAAA,EAAAA,EAAAL,KAAAjB,OAGrBgB,EAAAA,uBAAAhB,KAAIiI,EAAA,IAAAC,GAAJjH,KAAAjB,MACU,QAAVmB,EAAAnB,KAAKM,WAAK,IAAAa,GAAAA,EAAAW,aAAa,SAAU,OAClC,CAED,KAAA0G,SACMxI,KAAKM,MAAKN,KAAKM,IAAImI,UAAY,IAEnCzH,yBAAAhB,KAAkBgI,EAAA,eAChB1G,EAAAtB,KAAKM,oBAAKoI,OAAO1H,yBAAAhB,KAAIgI,EAAA,KAAeW,QAAQC,WAAU,IACzD,CAED,UAAAC,CAAWC,GACT5I,EAAAA,uBAAAF,KAAIgI,EAAiBc,EAAQ,KAC7B9I,KAAKwI,OACN,CAED,MAAAO,WACwB,QAAtBzH,EAAAN,yBAAAhB,KAAIsC,EAAA,YAAkB,IAAAhB,GAAAA,EAAA0E,aACZ,QAAV7E,EAAAnB,KAAKM,WAAK,IAAAa,GAAAA,EAAA4H,QACX,mCYlFG,cAAuCrJ,EAA7C,WAAAC,uBACEK,KAAQC,SAAG,6BA8BZ,CA5BC,OAAAuE,CACEC,SAEQ,QAARnD,EAAAtB,KAAKM,WAAG,IAAAgB,GAAAA,EAAEQ,aAAa,OAAQ4C,KAAKC,UAAUF,GAC/C,CAED,SAAIlB,SACF,OAA0B,UAAlBvD,KAAKM,WAAa,IAAAgB,OAAA,EAAAA,EAAAiC,QAAS,EACpC,CAED,SAAIA,CAAMyF,GACJhJ,KAAKM,MACNN,KAAKM,IAAYiD,MAAQyF,EAE7B,CAED,eAAIC,GACF,OAAOC,OAAOC,QACZnJ,KAAKuD,MACFiE,QAAO,EAAG4B,gBAAiBA,IAC3BtC,QAAiC,CAACC,GAAOqC,WAAUC,gBAClDtC,EAAIqC,GAAY,IACX,IAAIE,IAAI,IAAKvC,EAAIqC,IAAa,MAAQC,KAEpCtC,IACN,KACLwC,KAAI,EAAEH,EAAUC,OAAkBD,WAAUC,eAC/C,6BXAG,cAAiC3J,EAAvC,WAAAC,uBACEK,KAAQC,SAAG,gCAiBZ,CAfC,aAAMuE,CAAQC,GACZ,MAAMnE,QAAYN,KAAKI,SAClBE,IAEDmE,EAAK+E,MAAM/F,GAASA,EAAKD,gBAEzBlD,EACAmJ,WAAapG,GAGjB/C,EAAIwB,aACF,OACA4C,KAAKC,UAAU,IAAIF,GAAMG,MAAK,CAAC8E,EAAGC,IAAMD,EAAEpG,MAAMsG,cAAcD,EAAErG,WAEnE,wCYvCG,cAA4C5D,EAAlD,WAAAC,uBACEK,KAAQC,SAAG,mBAqCZ,CAnCC,QAAIwE,CAAKA,GACHzE,KAAKM,MAAKN,KAAKM,IAAImE,KAAOA,EAC/B,CAED,QAAIA,SACF,OAAe,UAARzE,KAAKM,WAAG,IAAAgB,OAAA,EAAAA,EAAEmD,IAClB,CAED,OAAInE,GACF,OAAO0E,MAAM1E,GAGd,CAED,gBAAIuJ,SACF,OAAe,QAARvI,EAAAtB,KAAKM,WAAG,IAAAgB,OAAA,EAAAA,EAAEyB,aAAa,yBAA0B,EACzD,CAED,gBAAI+G,SACF,OAAe,QAARxI,EAAAtB,KAAKM,WAAG,IAAAgB,OAAA,EAAAA,EAAEyB,aAAa,yBAA0B,EACzD,CAED,eAAAgH,CAAgBrI,SACd,MAAM6D,EAAU,IAAM7D,IAGtB,OAFU,QAAVJ,EAAAtB,KAAKM,WAAK,IAAAgB,GAAAA,EAAAK,iBAAiB,iBAAkB4D,GAEtC,KAAK,IAAAjE,EAAC,OAAU,QAAVA,EAAAtB,KAAKM,WAAK,IAAAgB,OAAA,EAAAA,EAAAM,oBAAoB,iBAAkB2D,EAAQ,CACtE,CAED,eAAAyE,CAAgBtI,SACd,MAAM6D,EAAWC,GAAiC9D,EAAG8D,EAAEC,QAGvD,OAFU,QAAVnE,EAAAtB,KAAKM,WAAK,IAAAgB,GAAAA,EAAAK,iBAAiB,iBAAkB4D,GAEtC,KAAK,IAAAjE,EAAC,OAAU,QAAVA,EAAAtB,KAAKM,WAAK,IAAAgB,OAAA,EAAAA,EAAAM,oBAAoB,iBAAkB2D,EAAQ,CACtE,8BC/CG,cAAkC7F,EAAxC,WAAAC,uBACEK,KAAQC,SAAG,sBAkBZ,CAhBC,KAAAoI,SACU,QAAR/G,EAAAtB,KAAKM,WAAG,IAAAgB,GAAAA,EAAEU,gBAAgB,SAC3B,CAED,IAAAiI,SACY,QAAV3I,EAAAtB,KAAKM,WAAK,IAAAgB,GAAAA,EAAAQ,aAAa,SAAU,OAClC,CAED,UAAA+G,CAAWC,GACT9I,KAAKM,IAAImI,UAAY,GACrBzI,KAAKM,IAAI2D,YAAY6E,EAASH,QAAQC,WAAU,GACjD,CAED,MAAAG,SACY,QAAVzH,EAAAtB,KAAKM,WAAK,IAAAgB,GAAAA,EAAAyH,QACX,kCCRG,cAAsCrJ,EAA5C,WAAAC,uBACEK,KAAQC,SAAG,uBAqCZ,CAnCC,QAAIwE,CAAKA,GACHzE,KAAKM,MAAKN,KAAKM,IAAImE,KAAOA,EAC/B,CAED,QAAIA,SACF,OAAe,UAARzE,KAAKM,WAAG,IAAAgB,OAAA,EAAAA,EAAEmD,IAClB,CAED,OAAInE,GACF,OAAO0E,MAAM1E,GAGd,CAED,iBAAI4J,SACF,OAAe,QAAR5I,EAAAtB,KAAKM,WAAG,IAAAgB,OAAA,EAAAA,EAAEyB,aAAa,qBAAsB,EACrD,CAED,oBAAIoH,SACF,OAAe,QAAR7I,EAAAtB,KAAKM,WAAG,IAAAgB,OAAA,EAAAA,EAAEyB,aAAa,wBAAyB,EACxD,CAED,cAAAqH,CAAe1I,SACb,MAAM6D,EAAWC,GAA2B9D,EAAG8D,EAAEC,QAGjD,OAFU,QAAVnE,EAAAtB,KAAKM,WAAK,IAAAgB,GAAAA,EAAAK,iBAAiB,kBAAmB4D,GAEvC,KAAK,IAAAjE,EAAC,OAAU,QAAVA,EAAAtB,KAAKM,WAAK,IAAAgB,OAAA,EAAAA,EAAAM,oBAAoB,kBAAmB2D,EAAQ,CACvE,CAED,iBAAA8E,CAAkB3I,SAChB,MAAM6D,EAAWC,GAA2B9D,EAAG8D,EAAEC,QAGjD,OAFU,QAAVnE,EAAAtB,KAAKM,WAAK,IAAAgB,GAAAA,EAAAK,iBAAiB,qBAAsB4D,GAE1C,KAAK,IAAAjE,EAAC,OAAU,QAAVA,EAAAtB,KAAKM,WAAK,IAAAgB,OAAA,EAAAA,EAAAM,oBAAoB,qBAAsB2D,EAAQ,CAC1E,6DC/CG,cAAoCjB,EACxC,UAAIgG,SACF,OAAgB,QAARhJ,EAAAtB,KAAKM,WAAG,IAAAgB,OAAA,EAAAA,EAAEyB,aAAa,iBAAkB,EAIlD,CAED,kBAAIwH,SACF,OAAOC,OAAe,QAARlJ,EAAAtB,KAAKM,WAAG,IAAAgB,OAAA,EAAAA,EAAEyB,aAAa,0BAA4B,GAClE,CAED,gBAAI0H,GACF,MAAuB,WAAhBzK,KAAKsK,MACb,sBCdG,cAA0B5K,EAAhC,WAAAC,uBACEK,KAAQC,SAAG,cAaZ,CAXC,OAAIK,GACF,OAAO0E,MAAM1E,GACd,CAED,QAAI6B,SACF,OAAe,UAARnC,KAAKM,WAAG,IAAAgB,OAAA,EAAAA,EAAEoJ,SAClB,CAED,QAAIvI,CAAKwG,GACH3I,KAAKM,MAAKN,KAAKM,IAAIoK,UAAY/B,EACpC,2BCbG,cAA+BjJ,EAArC,WAAAC,uBACEK,KAAQC,SAAG,oBAyBZ,CAvBC,OAAAsE,CAAQ7C,SAGN,OAFU,QAAVJ,EAAAtB,KAAKM,WAAK,IAAAgB,GAAAA,EAAAK,iBAAiB,QAASD,GAE7B,KAAK,IAAAJ,EAAC,OAAU,QAAVA,EAAAtB,KAAKM,WAAK,IAAAgB,OAAA,EAAAA,EAAAM,oBAAoB,QAASF,EAAG,CACxD,CAED,SAAI6B,SACF,OAAmC,UAATvD,KAAKM,WAAI,IAAAgB,OAAA,EAAAA,EAAEiC,KACtC,CAED,SAAIA,CAAMA,GACJvD,KAAKM,MACYN,KAAKM,IAAKiD,MAAQA,EAExC,CAED,OAAA1B,SACY,QAAVP,EAAAtB,KAAKM,WAAK,IAAAgB,GAAAA,EAAAQ,aAAa,WAAY,OACpC,CAED,MAAAC,SACU,QAART,EAAAtB,KAAKM,WAAG,IAAAgB,GAAAA,EAAEU,gBAAgB,WAC3B,+BCzBG,cAAmCtC,EAAzC,WAAAC,uBACEK,KAAQC,SAAG,wBAiCZ,CA/BC,SAAIsD,CAAMA,SACE,QAAVjC,EAAAtB,KAAKM,WAAK,IAAAgB,GAAAA,EAAAQ,aAAa,QAASyB,EACjC,CAED,cAAIoH,CAAWrH,SACH,QAAVhC,EAAAtB,KAAKM,WAAK,IAAAgB,GAAAA,EAAAQ,aAAa,cAAewB,EACvC,CAED,SAAIA,SACF,OAAe,QAARhC,EAAAtB,KAAKM,WAAG,IAAAgB,OAAA,EAAAA,EAAEyB,aAAa,WAAY,EAC3C,CAED,cAAI6H,SACF,OAAe,QAARtJ,EAAAtB,KAAKM,WAAG,IAAAgB,OAAA,EAAAA,EAAEyB,aAAa,kBAAmB,EAClD,CAED,gBAAI+G,SACF,OAAe,QAARxI,EAAAtB,KAAKM,WAAG,IAAAgB,OAAA,EAAAA,EAAEyB,aAAa,oBAAqB,EACpD,CAED,WAAA8H,CAAYnJ,SAGV,OAFU,QAAVJ,EAAAtB,KAAKM,WAAK,IAAAgB,GAAAA,EAAAK,iBAAiB,eAAgBD,GAEpC,KAAK,IAAAJ,EAAC,OAAU,QAAVA,EAAAtB,KAAKM,WAAK,IAAAgB,OAAA,EAAAA,EAAAM,oBAAoB,eAAgBF,EAAG,CAC/D,CAED,aAAAoJ,CAAcpJ,SAGZ,OAFU,QAAVJ,EAAAtB,KAAKM,WAAK,IAAAgB,GAAAA,EAAAK,iBAAiB,iBAAkBD,GAEtC,KAAK,IAAAJ,EAAC,OAAU,QAAVA,EAAAtB,KAAKM,WAAK,IAAAgB,OAAA,EAAAA,EAAAM,oBAAoB,iBAAkBF,EAAG,CACjE,gCCjCG,cAAoChC,EAA1C,WAAAC,uBACEK,KAAQC,SAAG,0BA2BZ,CAzBC,aAAI8K,CAAUC,WACZA,EACc,QAAV1J,EAAAtB,KAAKM,WAAK,IAAAgB,GAAAA,EAAAQ,aAAa,YAAa,gBACpCX,EAAAnB,KAAKM,oBAAK0B,gBAAgB,YAC/B,CAED,wBAAAiJ,CAAyBvJ,SAGvB,OAFU,QAAVJ,EAAAtB,KAAKM,WAAK,IAAAgB,GAAAA,EAAAK,iBAAiB,iBAAkBD,GAEtC,KAAK,IAAAJ,EAAC,OAAU,QAAVA,EAAAtB,KAAKM,WAAK,IAAAgB,OAAA,EAAAA,EAAAM,oBAAoB,iBAAkBF,EAAG,CACjE,CAED,sBAAAwJ,CAAuBxJ,SAGrB,OAFU,QAAVJ,EAAAtB,KAAKM,WAAK,IAAAgB,GAAAA,EAAAK,iBAAiB,2BAA4BD,GAEhD,KAAK,IAAAJ,EAAC,OAAU,QAAVA,EAAAtB,KAAKM,WAAK,IAAAgB,OAAA,EAAAA,EAAAM,oBAAoB,2BAA4BF,EAAG,CAC3E,CAED,UAAI2D,SACF,eAAO/D,EAAAtB,KAAKM,0BAAKyC,aAAa,UAC/B,CAED,mBAAIoI,SACF,eAAO7J,EAAAtB,KAAKM,0BAAKyC,aAAa,oBAC/B,8BCEG,cAAkCrD,EAAxC,WAAAC,uBACEK,KAAQC,SAAG,uBAoCZ,CAlCC,OAAIK,GACF,OAAO0E,MAAM1E,GAGd,CAED,QAAImE,SACF,OAAe,UAARzE,KAAKM,WAAG,IAAAgB,OAAA,EAAAA,EAAEmD,IAClB,CAED,QAAIA,CAAKA,GACHzE,KAAKM,MAAKN,KAAKM,IAAImE,KAAOA,EAC/B,CAED,oBAAI2G,SACF,eAAO9J,EAAAtB,KAAKM,0BAAKyC,aAAa,sBAC/B,CAED,uBAAIsI,SACF,eAAO/J,EAAAtB,KAAKM,0BAAKyC,aAAa,yBAC/B,CAED,iBAAAuI,CAAkB5J,SAEhB,OADU,QAAVJ,EAAAtB,KAAKM,WAAK,IAAAgB,GAAAA,EAAAK,iBAAiB,sBAAuBD,GAC3C,KAAK,IAAAJ,EAAC,OAAU,QAAVA,EAAAtB,KAAKM,WAAK,IAAAgB,OAAA,EAAAA,EAAAM,oBAAoB,sBAAuBF,EAAG,CACtE,CAED,oBAAA6J,CAAqB7J,SACnB,MAAM6D,EAAWC,GAA2B9D,EAAG8D,EAAEC,QAGjD,OAFU,QAAVnE,EAAAtB,KAAKM,WAAK,IAAAgB,GAAAA,EAAAK,iBAAiB,yBAA0B4D,GAE9C,KAAK,IAAAjE,EACV,OAAU,QAAVA,EAAAtB,KAAKM,WAAK,IAAAgB,OAAA,EAAAA,EAAAM,oBAAoB,yBAA0B2D,EAAQ,CACnE"}
1
+ {"version":3,"file":"index.cjs.js","sources":["../../src/BaseDriver.ts","../../src/helpers.ts","../../src/ButtonDriver.ts","../../src/gridDrivers/GridDriver.ts","../../src/gridDrivers/GridTextColumnDriver.ts","../../src/gridDrivers/GridCustomColumnDriver.ts","../../src/ModalDriver.ts","../../src/MultiSelectDriver.ts","../../src/SingleSelectDriver.ts","../../src/AppsListDriver.ts","../../src/AvatarDriver.ts","../../src/DeviceListDriver.ts","../../src/FilterDriver.ts","../../src/FlowButtonDriver.ts","../../src/FlowDriver.ts","../../src/GenericFlowButtonDriver.ts","../../src/LastAuthBadgeDriver.ts","../../src/LinkDriver.ts","../../src/MultiLineMappingsDriver.ts","../../src/MultiSsoConfigurationsDriver.ts","../../src/NotificationDriver.ts","../../src/OutboundAppsListDriver.ts","../../src/TenantSelectorDriver.ts","../../src/TextDriver.ts","../../src/TextFieldDriver.ts","../../src/UserAttributeDriver.ts","../../src/UserAuthMethodDriver.ts","../../src/UserPasskeysDriver.ts"],"sourcesContent":["import { waitForElement } from './helpers';\nimport { RefOrRefFn } from './types';\n\ntype Logger = {\n error(...data: any[]): void;\n warn(...data: any[]): void;\n info(...data: any[]): void;\n debug(...data: any[]): void;\n};\n\nexport class BaseDriver {\n #ele: RefOrRefFn;\n\n logger: Logger | undefined;\n\n // eslint-disable-next-line class-methods-use-this\n nodeName = '';\n\n constructor(refOrRefFn: RefOrRefFn, config: { logger: Logger }) {\n this.#ele = refOrRefFn;\n this.logger = config.logger;\n }\n\n get asyncEle() {\n return waitForElement(this.#ele, 1000);\n }\n\n get ele() {\n const ele = typeof this.#ele === 'function' ? this.#ele() : this.#ele;\n if (!ele) {\n this.logger?.debug(\n `Driver element is not available for ${this.nodeName}`,\n new Error(),\n );\n\n return null;\n }\n\n if (ele?.localName !== this.nodeName) {\n this.logger?.debug(\n `node name do not match, expected \"${this.nodeName}\", received \"${ele.localName}\" `,\n Error(),\n );\n\n return null;\n }\n\n return ele;\n }\n\n get isExists() {\n return !!this.ele;\n }\n}\n","import { RefOrRefFn } from './types';\n\nexport const waitForElement = async (ele: RefOrRefFn, timeout: number) =>\n new Promise<Element | null>((resolve) => {\n const interval = setInterval(() => {\n const element = typeof ele === 'function' ? ele() : ele;\n if (element) {\n clearInterval(interval);\n resolve(element);\n }\n }, 100);\n setTimeout(() => {\n clearInterval(interval);\n resolve(null);\n }, timeout);\n });\n","import { BaseDriver } from './BaseDriver';\n\nexport class ButtonDriver extends BaseDriver {\n nodeName = 'descope-button';\n\n onClick(cb: (e: Event) => void) {\n this.ele?.addEventListener('click', cb);\n\n return () => this.ele?.removeEventListener('click', cb);\n }\n\n disable() {\n this.ele?.setAttribute('disabled', 'true');\n }\n\n enable() {\n this.ele?.removeAttribute('disabled');\n }\n}\n","import { compareArrays } from '@descope/sdk-helpers';\nimport { BaseDriver } from '../BaseDriver';\nimport { GridCustomColumnDriver } from './GridCustomColumnDriver';\nimport { GridTextColumnDriver } from './GridTextColumnDriver';\n\ntype Column = {\n path: string;\n header: string;\n type: string;\n attrs: Record<string, string>;\n};\n\nconst columnRegex = /^descope-grid-([^-]+)-column$/;\n\nconst driversMapping = {\n text: GridTextColumnDriver,\n custom: GridCustomColumnDriver,\n};\n\nexport class GridDriver<T extends any> extends BaseDriver {\n nodeName = 'descope-grid';\n #onColumnsChangeCb: (columns: Column[]) => void;\n\n onSelectedItemsChange(cb: (e: CustomEvent<{ value: T[] }>) => void) {\n this.ele?.addEventListener('selected-items-changed', cb);\n\n return () => this.ele?.removeEventListener('selected-items-changed', cb);\n }\n\n get ele() {\n return super.ele as Element & {\n data: T[];\n columns: Column[];\n renderColumn: ({ path, header, type, attrs }: Column) => string;\n };\n }\n\n get data() {\n return this.ele?.data;\n }\n\n set data(data: T[]) {\n if (this.ele) this.ele.data = data;\n }\n\n get columns() {\n if (!this.ele) return [];\n return Array.from(this.ele.children).reduce((acc, child) => {\n const columnType = columnRegex.exec(child.localName)?.[1];\n const Driver = driversMapping[columnType];\n\n if (!Driver) return acc;\n\n acc.push(new Driver(child, { logger: this.logger }));\n\n return acc;\n }, []);\n }\n\n filterColumns(filterFn: (col: Column) => boolean) {\n const filteredColumns = this.ele.columns?.filter(filterFn);\n if (!filteredColumns || !this.ele.columns) return;\n if (!compareArrays(filteredColumns, this.ele.columns)) {\n this.ele.columns = filteredColumns;\n this.#onColumnsChangeCb?.(filteredColumns);\n }\n }\n\n onColumnsChange(cb: (columns: Column[]) => void) {\n this.#onColumnsChangeCb = cb;\n }\n\n set renderColumn(\n renderFn: ({ path, header, type, attrs }: Column) => string,\n ) {\n this.ele.renderColumn = renderFn;\n }\n}\n","import { BaseDriver } from '../BaseDriver';\n\nexport class GridTextColumnDriver extends BaseDriver {\n nodeName = 'descope-grid-text-column';\n\n onSortDirectionChange(\n cb: (e: CustomEvent<{ value: 'asc' | 'desc' | null }>) => void,\n ) {\n this.ele?.addEventListener('direction-changed', cb);\n\n return () => this.ele?.removeEventListener('selected-items-changed', cb);\n }\n}\n","import { BaseDriver } from '../BaseDriver';\n\nexport class GridCustomColumnDriver extends BaseDriver {\n nodeName = 'descope-grid-custom-column';\n\n onSortDirectionChange(\n cb: (e: CustomEvent<{ value: 'asc' | 'desc' | null }>) => void,\n ) {\n this.ele?.addEventListener('direction-changed', cb);\n\n return () => this.ele?.removeEventListener('selected-items-changed', cb);\n }\n}\n","import { BaseDriver } from './BaseDriver';\n\nexport class ModalDriver extends BaseDriver {\n #modalContent: HTMLTemplateElement;\n\n #openedObserver: MutationObserver | undefined;\n\n beforeOpen: undefined | (() => void | Promise<void>);\n\n afterClose: undefined | (() => void);\n\n nodeName = 'descope-modal';\n\n constructor(...args: ConstructorParameters<typeof BaseDriver>) {\n super(...args);\n this.#observeOpened();\n }\n\n // run afterClose whenever the modal becomes closed, regardless of how it was\n // closed - a programmatic close() or the component closing itself on a backdrop\n // click both just remove the `opened` attribute. observing the attribute keeps\n // the reset logic in one place instead of reacting to a specific trigger.\n #observeOpened() {\n if (this.#openedObserver) return;\n\n const ele = this.ele;\n if (!ele) return;\n\n this.#openedObserver = new MutationObserver((records) => {\n records.forEach((record, index) => {\n const wasOpen = record.oldValue === 'true';\n // the value after this mutation is the next record's oldValue, or the\n // current attribute value for the last record in the batch\n const valueAfter = records[index + 1]\n ? records[index + 1].oldValue\n : ele.getAttribute('opened');\n\n if (wasOpen && valueAfter !== 'true') {\n this.afterClose?.();\n }\n });\n });\n\n this.#openedObserver.observe(ele, {\n attributes: true,\n attributeFilter: ['opened'],\n attributeOldValue: true,\n });\n }\n\n get isOpen() {\n return this.ele?.getAttribute('opened') === 'true';\n }\n\n get isClosed() {\n return !this.isOpen;\n }\n\n close() {\n // removing `opened` triggers the observer above, which runs afterClose\n this.ele?.removeAttribute('opened');\n }\n\n async open() {\n await this.beforeOpen?.();\n // set up the observer lazily too, in case the element wasn't available yet\n // when the driver was constructed\n this.#observeOpened();\n this.ele?.setAttribute('opened', 'true');\n }\n\n reset() {\n if (this.ele) this.ele.innerHTML = '';\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n this.#modalContent &&\n this.ele?.append(this.#modalContent.content.cloneNode(true));\n }\n\n setContent(template: HTMLTemplateElement) {\n this.#modalContent = template;\n this.reset();\n }\n\n remove() {\n this.#openedObserver?.disconnect();\n this.ele?.remove();\n }\n}\n","import { BaseDriver } from './BaseDriver';\n\ntype MultiSelectItem = {\n label: string;\n value: string;\n description?: string;\n};\n\nconst renderItemWithDescription = ({\n label,\n value,\n description,\n}: MultiSelectItem) => {\n const item = document.createElement('span');\n item.setAttribute('data-name', label);\n item.setAttribute('data-id', value);\n item.style.display = 'flex';\n item.style.flexDirection = 'column';\n\n const labelEle = document.createElement('span');\n labelEle.textContent = label;\n item.appendChild(labelEle);\n\n if (description) {\n const descriptionEle = document.createElement('span');\n descriptionEle.textContent = description;\n descriptionEle.style.opacity = '0.6';\n descriptionEle.style.fontSize = '0.85em';\n item.appendChild(descriptionEle);\n }\n\n return item.outerHTML;\n};\n\nexport class MultiSelectDriver extends BaseDriver {\n nodeName = 'descope-multi-select-combo-box';\n\n async setData(data: MultiSelectItem[]) {\n const ele = await this.asyncEle;\n if (!ele) return;\n\n if (data.some((item) => item.description)) {\n (\n ele as Element & { renderItem?: typeof renderItemWithDescription }\n ).renderItem = renderItemWithDescription;\n }\n\n ele.setAttribute(\n 'data',\n JSON.stringify([...data].sort((a, b) => a.label.localeCompare(b.label))),\n );\n }\n}\n\nexport type { MultiSelectItem };\n","import { BaseDriver } from './BaseDriver';\n\nexport class SingleSelectDriver extends BaseDriver {\n nodeName = 'descope-combo-box';\n\n onInput(cb: (e: InputEvent) => void) {\n this.ele?.addEventListener('input', cb);\n\n return () => this.ele?.removeEventListener('input', cb);\n }\n\n get value() {\n return (<HTMLInputElement>this.ele)?.value;\n }\n\n set value(value: string) {\n if (this.ele) {\n (<HTMLInputElement>this.ele).value = value;\n }\n }\n\n async setData(data: { label: string; value: string }[]) {\n (await this.asyncEle)?.setAttribute('data', JSON.stringify(data.sort()));\n }\n\n setAllowCustomValue(allow: boolean) {\n if (this.ele) {\n this.ele.toggleAttribute('allow-custom-value', allow);\n }\n }\n}\n","import { BaseDriver } from './BaseDriver';\n\ntype Data = { name: string; icon: string; url: string }[];\n\nexport class AppsListDriver extends BaseDriver {\n nodeName = 'descope-apps-list';\n\n set data(data: Data) {\n if (this.ele) this.ele.data = data;\n }\n\n get data() {\n return this.ele?.data;\n }\n\n get ele() {\n return super.ele as Element & {\n data: Data;\n };\n }\n}\n","import { BaseDriver } from './BaseDriver';\n\nexport class AvatarDriver extends BaseDriver {\n nodeName = 'descope-avatar';\n\n set displayName(name: string) {\n this.ele?.setAttribute('display-name', name);\n }\n\n set image(imgUrl: string) {\n this.ele?.setAttribute('img', imgUrl);\n }\n\n get flowId() {\n return this.ele?.getAttribute('flow-id');\n }\n\n onClick(cb: (e: Event) => void) {\n this.ele?.addEventListener('click', cb);\n\n return () => this.ele?.removeEventListener('click', cb);\n }\n}\n","import { BaseDriver } from './BaseDriver';\n\ntype Data = {\n id: string;\n name: string;\n lastLoginDate: number;\n isCurrent: boolean;\n}[];\n\ntype Detail = { id: string; action: string };\n\nexport class DeviceListDriver extends BaseDriver {\n nodeName = 'descope-trusted-devices';\n\n set displayName(name: string) {\n this.ele?.setAttribute('display-name', name);\n }\n\n get ele() {\n return super.ele as Element & {\n data: Data;\n };\n }\n\n get data() {\n return this.ele?.data;\n }\n\n set data(data: Data) {\n if (this.ele) this.ele.data = data;\n }\n\n get flowId() {\n return this.ele?.getAttribute('flow-id');\n }\n\n onRemoveDeviceClick(cb: (detail: Detail) => void) {\n const handler = (e: CustomEvent<Detail>) => cb(e.detail);\n this.ele?.addEventListener('remove-device-clicked', handler);\n\n return () =>\n this.ele?.removeEventListener('remove-device-clicked', handler);\n }\n}\n","import { BaseDriver } from './BaseDriver';\n\nexport type FilterInputType =\n | 'text'\n | 'number'\n | 'email'\n | 'boolean'\n | 'singleselect'\n | 'multiselect';\n\nexport type FilterOption = { value: string; label: string };\n\nexport type FilterColumn = {\n id: string;\n label: string;\n inputType: FilterInputType;\n options?: FilterOption[];\n // A built-in operator id, or an object overriding widget defaults — notably\n // `prefix`/`suffix` (query affixes the consumer applies, e.g. SQL-LIKE `%`).\n operators?: (\n | string\n | {\n id: string;\n label?: string;\n noValue?: boolean;\n prefix?: string;\n suffix?: string;\n }\n )[];\n};\n\nexport type FilterRow = {\n column: string;\n operator: string;\n value: string | string[] | null;\n // Emitted on applied rows when the operator defines query affixes. The value\n // stays raw; the consumer builds the query as `${prefix}${value}${suffix}`.\n prefix?: string;\n suffix?: string;\n};\n\nexport type FilterEventDetail = {\n value: FilterRow[];\n action: 'apply' | 'clear-all' | 'cancel';\n};\n\nexport class FilterDriver extends BaseDriver {\n nodeName = 'descope-filter';\n\n // Serialized value of the last `data` we wrote, so onDataChange can tell our\n // own writes apart from external ones.\n #lastData: string | null = null;\n\n get data(): FilterColumn[] {\n try {\n return JSON.parse(this.ele?.getAttribute('data') || '[]');\n } catch {\n return [];\n }\n }\n\n set data(value: FilterColumn[]) {\n this.#lastData = JSON.stringify(value);\n // setAttribute always fires the component's attributeChangedCallback, even\n // for an identical value (the DOM doesn't short-circuit a same-value set).\n // The component re-renders its columns from `data` there, dropping the user's\n // applied rows - so skip the write when the attribute already holds this value.\n if (this.#lastData === this.ele?.getAttribute('data')) return;\n this.ele?.setAttribute('data', this.#lastData);\n }\n\n get value(): FilterRow[] {\n try {\n return JSON.parse(this.ele?.getAttribute('value') || '[]');\n } catch {\n return [];\n }\n }\n\n set value(value: FilterRow[]) {\n this.ele?.setAttribute('value', JSON.stringify(value));\n }\n\n onApply(cb: (detail: FilterEventDetail) => void) {\n const handler = (e: Event) => cb((e as CustomEvent).detail);\n this.ele?.addEventListener('filter-apply', handler);\n return () => this.ele?.removeEventListener('filter-apply', handler);\n }\n\n onClear(cb: (detail: FilterEventDetail) => void) {\n const handler = (e: Event) => cb((e as CustomEvent).detail);\n this.ele?.addEventListener('filter-clear', handler);\n return () => this.ele?.removeEventListener('filter-clear', handler);\n }\n\n // Fires when the `data` attribute is changed by something other than this\n // driver (e.g. the screen editor republishing a different pick list). The\n // driver's own writes are skipped by comparing against #lastData.\n onDataChange(cb: () => void) {\n const ele = this.ele;\n if (!ele) return () => {};\n const observer = new MutationObserver(() => {\n if ((ele.getAttribute('data') ?? '[]') === this.#lastData) return;\n cb();\n });\n observer.observe(ele, { attributes: true, attributeFilter: ['data'] });\n return () => observer.disconnect();\n }\n}\n","import { ButtonDriver } from './ButtonDriver';\n\nexport class FlowButtonDriver extends ButtonDriver {\n get flowId(): string {\n return this.ele?.getAttribute('flow-id') || '';\n }\n}\n","import { BaseDriver } from './BaseDriver';\n\nexport class FlowDriver extends BaseDriver {\n nodeName = 'descope-wc';\n\n set projectId(projectId: string) {\n this.ele?.setAttribute('project-id', projectId);\n }\n\n set baseUrl(baseUrl: string) {\n this.ele?.setAttribute('base-url', baseUrl);\n }\n\n set flowId(flowId: string) {\n this.ele?.setAttribute('flow-id', flowId);\n }\n\n set theme(theme: string | null | undefined) {\n if (!theme) {\n this.ele?.removeAttribute('theme');\n } else {\n this.ele?.setAttribute('theme', theme);\n }\n }\n\n // start a flow rendered with `lazy-start`, which preloads but holds its\n // start call until asked\n start() {\n (this.ele as any)?.start?.();\n }\n\n onSuccess(cb: () => void) {\n this.ele?.addEventListener('success', cb);\n\n return () => this.ele?.removeEventListener('success', cb);\n }\n onPageUpdated(cb: () => void) {\n this.ele?.addEventListener('page-updated', cb);\n\n return () => this.ele?.removeEventListener('page-updated', cb);\n }\n}\n","import { ButtonDriver } from './ButtonDriver';\n\nexport class GenericFlowButtonDriver extends ButtonDriver {\n get flowId(): string {\n return this.ele?.getAttribute('flow-id') || '';\n }\n get enableMode(): 'onlyOne' | 'oneOrMore' | 'always' {\n return this.ele?.getAttribute('enable-mode') as\n | 'onlyOne'\n | 'oneOrMore'\n | 'always';\n }\n}\n","import { BaseDriver } from './BaseDriver';\n\nexport class LastAuthBadgeDriver extends BaseDriver {\n nodeName = 'descope-attachment';\n\n set position(value: string) {\n this.ele?.setAttribute('position', value);\n }\n\n get position() {\n return this.ele?.getAttribute('position') ?? '';\n }\n}\n","import { BaseDriver } from './BaseDriver';\n\nexport class LinkDriver extends BaseDriver {\n nodeName = 'descope-link';\n\n get ele() {\n return super.ele as Element & {\n innerText: string;\n getAttribute: (name: string) => string | null;\n };\n }\n\n get href() {\n return this.ele?.getAttribute('href');\n }\n\n set href(href: string) {\n this.ele?.setAttribute('href', href ?? '');\n }\n}\n","import { BaseDriver } from './BaseDriver';\n\ntype Mapping = { tenantId: string; roleNames: string[] };\n\nexport class MultiLineMappingsDriver extends BaseDriver {\n nodeName = 'descope-multi-line-mappings';\n\n setData(\n data: Record<string, string[] | { label?: string; options: string[] }>,\n ) {\n this.ele?.setAttribute('data', JSON.stringify(data));\n }\n\n get value(): Mapping[] {\n return (this.ele as any)?.value || [];\n }\n\n set value(mappings: Mapping[]) {\n if (this.ele) {\n (this.ele as any).value = mappings;\n }\n }\n\n get mergedValue(): Mapping[] {\n return Object.entries(\n this.value\n .filter(({ tenantId }) => !!tenantId)\n .reduce<Record<string, string[]>>((acc, { tenantId, roleNames }) => {\n acc[tenantId] = [\n ...new Set([...(acc[tenantId] || []), ...roleNames]),\n ];\n return acc;\n }, {}),\n ).map(([tenantId, roleNames]) => ({ tenantId, roleNames }));\n }\n}\n","import { BaseDriver } from './BaseDriver';\n\ntype Data = {\n id: string;\n name: string;\n authType?: string;\n isDefault?: boolean;\n link?: string;\n // A login through this connection verifies identity and creates no user.\n authOnly?: boolean;\n}[];\n\ntype DeleteDetail = { id: string; name: string };\n\n// `data[].authOnly` marks a row as verifying identity only, which descope-multi-sso\n// renders as a badge. Display only: the classification is set when the configuration is created,\n// through the Descoper's create flow, and is not editable from the widget.\nexport class MultiSsoConfigurationsDriver extends BaseDriver {\n nodeName = 'descope-multi-sso';\n\n set data(data: Data) {\n if (this.ele) this.ele.data = data;\n }\n\n get data() {\n return this.ele?.data;\n }\n\n get ele() {\n return super.ele as Element & {\n data: Data;\n };\n }\n\n get createFlowId() {\n return this.ele?.getAttribute('data-create-flow-id') || '';\n }\n\n get deleteFlowId() {\n return this.ele?.getAttribute('data-delete-flow-id') || '';\n }\n\n onCreateClicked(cb: () => void) {\n const handler = () => cb();\n this.ele?.addEventListener('create-clicked', handler);\n\n return () => this.ele?.removeEventListener('create-clicked', handler);\n }\n\n onDeleteClicked(cb: (detail: DeleteDetail) => void) {\n const handler = (e: CustomEvent<DeleteDetail>) => cb(e.detail);\n this.ele?.addEventListener('delete-clicked', handler);\n\n return () => this.ele?.removeEventListener('delete-clicked', handler);\n }\n}\n","import { BaseDriver } from './BaseDriver';\n\nexport class NotificationDriver extends BaseDriver {\n nodeName = 'descope-notification';\n\n close() {\n this.ele?.removeAttribute('opened');\n }\n\n show() {\n this.ele?.setAttribute('opened', 'true');\n }\n\n setContent(template: HTMLTemplateElement) {\n this.ele.innerHTML = '';\n this.ele.appendChild(template.content.cloneNode(true));\n }\n\n remove() {\n this.ele?.remove();\n }\n}\n","import { BaseDriver } from './BaseDriver';\n\ntype Data = {\n id: string;\n name: string;\n description?: string;\n logo?: string;\n isConnected?: boolean;\n}[];\n\ntype Detail = { id: string; action: string };\n\nexport class OutboundAppsListDriver extends BaseDriver {\n nodeName = 'descope-outbound-apps';\n\n set data(data: Data) {\n if (this.ele) this.ele.data = data;\n }\n\n get data() {\n return this.ele?.data;\n }\n\n get ele() {\n return super.ele as Element & {\n data: Data;\n };\n }\n\n get connectFlowId() {\n return this.ele?.getAttribute('connect-flow-id') || '';\n }\n\n get disconnectFlowId() {\n return this.ele?.getAttribute('disconnect-flow-id') || '';\n }\n\n onConnectClick(cb: (detail: Detail) => void) {\n const handler = (e: CustomEvent<Detail>) => cb(e.detail);\n this.ele?.addEventListener('connect-clicked', handler);\n\n return () => this.ele?.removeEventListener('connect-clicked', handler);\n }\n\n onDisconnectClick(cb: (detail: Detail) => void) {\n const handler = (e: CustomEvent<Detail>) => cb(e.detail);\n this.ele?.addEventListener('disconnect-clicked', handler);\n\n return () => this.ele?.removeEventListener('disconnect-clicked', handler);\n }\n}\n","import { SingleSelectDriver } from './SingleSelectDriver';\n\nexport class TenantSelectorDriver extends SingleSelectDriver {\n get action(): 'reload' | 'none' | '' {\n return (this.ele?.getAttribute('data-action') || '') as\n | 'reload'\n | 'none'\n | '';\n }\n\n get refreshTimeout(): number {\n return Number(this.ele?.getAttribute('data-refresh-timeout')) || 500;\n }\n\n get shouldReload() {\n return this.action === 'reload';\n }\n}\n","import { BaseDriver } from './BaseDriver';\n\nexport class TextDriver extends BaseDriver {\n nodeName = 'descope-text';\n\n get ele() {\n return super.ele as Element & { innerText: string };\n }\n\n get text() {\n return this.ele?.innerText;\n }\n\n set text(content: string) {\n if (this.ele) this.ele.innerText = content;\n }\n}\n","import { BaseDriver } from './BaseDriver';\n\nexport class TextFieldDriver extends BaseDriver {\n nodeName = 'descope-text-field';\n\n onInput(cb: (e: InputEvent) => void) {\n this.ele?.addEventListener('input', cb);\n\n return () => this.ele?.removeEventListener('input', cb);\n }\n\n get value() {\n return (<HTMLInputElement>this.ele)?.value;\n }\n\n set value(value: string) {\n if (this.ele) {\n (<HTMLInputElement>this.ele).value = value;\n }\n }\n\n disable() {\n this.ele?.setAttribute('disabled', 'true');\n }\n\n enable() {\n this.ele?.removeAttribute('disabled');\n }\n}\n","import { BaseDriver } from './BaseDriver';\n\nexport class UserAttributeDriver extends BaseDriver {\n nodeName = 'descope-user-attribute';\n\n set value(value: string) {\n this.ele?.setAttribute('value', value);\n }\n\n set badgeLabel(label: string) {\n this.ele?.setAttribute('badge-label', label);\n }\n\n get label() {\n return this.ele?.getAttribute('label') || '';\n }\n\n get editFlowId() {\n return this.ele?.getAttribute('edit-flow-id') || '';\n }\n\n get deleteFlowId() {\n return this.ele?.getAttribute('delete-flow-id') || '';\n }\n\n onEditClick(cb: (e: Event) => void) {\n this.ele?.addEventListener('edit-clicked', cb);\n\n return () => this.ele?.removeEventListener('edit-clicked', cb);\n }\n\n onDeleteClick(cb: (e: Event) => void) {\n this.ele?.addEventListener('delete-clicked', cb);\n\n return () => this.ele?.removeEventListener('delete-clicked', cb);\n }\n}\n","import { BaseDriver } from './BaseDriver';\n\nexport class UserAuthMethodDriver extends BaseDriver {\n nodeName = 'descope-user-auth-method';\n\n set fulfilled(isFulfilled: boolean) {\n isFulfilled\n ? this.ele?.setAttribute('fulfilled', 'true')\n : this.ele?.removeAttribute('fulfilled');\n }\n\n onUnfulfilledButtonClick(cb: (e: Event) => void) {\n this.ele?.addEventListener('button-clicked', cb);\n\n return () => this.ele?.removeEventListener('button-clicked', cb);\n }\n\n onFulfilledButtonClick(cb: (e: Event) => void) {\n this.ele?.addEventListener('fulfilled-button-clicked', cb);\n\n return () => this.ele?.removeEventListener('fulfilled-button-clicked', cb);\n }\n\n get flowId() {\n return this.ele?.getAttribute('flow-id');\n }\n\n get fulfilledFlowId() {\n return this.ele?.getAttribute('fulfilled-flow-id');\n }\n}\n","import { BaseDriver } from './BaseDriver';\n\ntype PasskeyType =\n | 'apple'\n | 'google'\n | 'windows'\n | 'chrome'\n | 'edge'\n | 'samsung'\n | '1password'\n | 'bitwarden'\n | 'lastpass'\n | 'dashlane'\n | 'keeper'\n | 'keepassxc'\n | 'proton'\n | 'nordpass'\n | 'enpass'\n | 'key'\n | 'phone'\n | 'other';\n\ntype Data = {\n id: string;\n name: string;\n passkeyType: PasskeyType;\n createdAt: number;\n}[];\n\ntype Detail = { id: string; action: string };\n\nexport class UserPasskeysDriver extends BaseDriver {\n nodeName = 'descope-user-passkeys';\n\n get ele() {\n return super.ele as Element & {\n data: Data;\n };\n }\n\n get data() {\n return this.ele?.data;\n }\n\n set data(data: Data) {\n if (this.ele) this.ele.data = data;\n }\n\n get addPasskeyFlowId() {\n return this.ele?.getAttribute('add-passkey-flow-id');\n }\n\n get removePasskeyFlowId() {\n return this.ele?.getAttribute('remove-passkey-flow-id');\n }\n\n onAddPasskeyClick(cb: (e: Event) => void) {\n this.ele?.addEventListener('add-passkey-clicked', cb);\n return () => this.ele?.removeEventListener('add-passkey-clicked', cb);\n }\n\n onRemovePasskeyClick(cb: (detail: Detail) => void) {\n const handler = (e: CustomEvent<Detail>) => cb(e.detail);\n this.ele?.addEventListener('remove-passkey-clicked', handler);\n\n return () =>\n this.ele?.removeEventListener('remove-passkey-clicked', handler);\n }\n}\n"],"names":["BaseDriver","constructor","refOrRefFn","config","_BaseDriver_ele","set","this","nodeName","__classPrivateFieldSet","logger","asyncEle","async","ele","timeout","Promise","resolve","interval","setInterval","element","clearInterval","setTimeout","waitForElement","__classPrivateFieldGet","call","localName","_b","debug","Error","_a","isExists","ButtonDriver","onClick","cb","addEventListener","removeEventListener","disable","setAttribute","enable","removeAttribute","columnRegex","driversMapping","text","onSortDirectionChange","custom","_ModalDriver_openedObserver","MutationObserver","records","forEach","record","index","wasOpen","oldValue","valueAfter","getAttribute","afterClose","observe","attributes","attributeFilter","attributeOldValue","renderItemWithDescription","label","value","description","item","document","createElement","style","display","flexDirection","labelEle","textContent","appendChild","descriptionEle","opacity","fontSize","outerHTML","SingleSelectDriver","onInput","setData","data","JSON","stringify","sort","setAllowCustomValue","allow","toggleAttribute","super","displayName","name","image","imgUrl","flowId","onRemoveDeviceClick","handler","e","detail","_FilterDriver_lastData","parse","onApply","onClear","onDataChange","observer","disconnect","projectId","baseUrl","theme","start","onSuccess","onPageUpdated","enableMode","_GridDriver_onColumnsChangeCb","onSelectedItemsChange","columns","Array","from","children","reduce","acc","child","columnType","exec","Driver","push","filterColumns","filterFn","filteredColumns","filter","compareArrays","onColumnsChange","renderColumn","renderFn","position","href","args","_ModalDriver_modalContent","_ModalDriver_instances","_ModalDriver_observeOpened","isOpen","isClosed","close","open","beforeOpen","reset","innerHTML","append","content","cloneNode","setContent","template","remove","mappings","mergedValue","Object","entries","tenantId","roleNames","Set","map","some","renderItem","a","b","localeCompare","createFlowId","deleteFlowId","onCreateClicked","onDeleteClicked","show","connectFlowId","disconnectFlowId","onConnectClick","onDisconnectClick","action","refreshTimeout","Number","shouldReload","innerText","badgeLabel","editFlowId","onEditClick","onDeleteClick","fulfilled","isFulfilled","onUnfulfilledButtonClick","onFulfilledButtonClick","fulfilledFlowId","addPasskeyFlowId","removePasskeyFlowId","onAddPasskeyClick","onRemovePasskeyClick"],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -330,6 +330,7 @@ type Data = {
330
330
  authType?: string;
331
331
  isDefault?: boolean;
332
332
  link?: string;
333
+ authOnly?: boolean;
333
334
  }[];
334
335
  type DeleteDetail = {
335
336
  id: string;
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","sources":["../src/BaseDriver.ts","../src/helpers.ts","../src/AppsListDriver.ts","../src/AvatarDriver.ts","../src/FilterDriver.ts","../src/ButtonDriver.ts","../src/FlowDriver.ts","../src/GenericFlowButtonDriver.ts","../src/gridDrivers/GridDriver.ts","../src/gridDrivers/GridTextColumnDriver.ts","../src/gridDrivers/GridCustomColumnDriver.ts","../src/LinkDriver.ts","../src/ModalDriver.ts","../src/MultiLineMappingsDriver.ts","../src/MultiSelectDriver.ts","../src/NotificationDriver.ts","../src/OutboundAppsListDriver.ts","../src/SingleSelectDriver.ts","../src/TextDriver.ts","../src/TextFieldDriver.ts","../src/UserAttributeDriver.ts","../src/UserAuthMethodDriver.ts","../src/DeviceListDriver.ts","../src/FlowButtonDriver.ts","../src/LastAuthBadgeDriver.ts","../src/TenantSelectorDriver.ts","../src/UserPasskeysDriver.ts","../src/MultiSsoConfigurationsDriver.ts"],"sourcesContent":["import { waitForElement } from './helpers';\nimport { RefOrRefFn } from './types';\n\ntype Logger = {\n error(...data: any[]): void;\n warn(...data: any[]): void;\n info(...data: any[]): void;\n debug(...data: any[]): void;\n};\n\nexport class BaseDriver {\n #ele: RefOrRefFn;\n\n logger: Logger | undefined;\n\n // eslint-disable-next-line class-methods-use-this\n nodeName = '';\n\n constructor(refOrRefFn: RefOrRefFn, config: { logger: Logger }) {\n this.#ele = refOrRefFn;\n this.logger = config.logger;\n }\n\n get asyncEle() {\n return waitForElement(this.#ele, 1000);\n }\n\n get ele() {\n const ele = typeof this.#ele === 'function' ? this.#ele() : this.#ele;\n if (!ele) {\n this.logger?.debug(\n `Driver element is not available for ${this.nodeName}`,\n new Error(),\n );\n\n return null;\n }\n\n if (ele?.localName !== this.nodeName) {\n this.logger?.debug(\n `node name do not match, expected \"${this.nodeName}\", received \"${ele.localName}\" `,\n Error(),\n );\n\n return null;\n }\n\n return ele;\n }\n\n get isExists() {\n return !!this.ele;\n }\n}\n","import { RefOrRefFn } from './types';\n\nexport const waitForElement = async (ele: RefOrRefFn, timeout: number) =>\n new Promise<Element | null>((resolve) => {\n const interval = setInterval(() => {\n const element = typeof ele === 'function' ? ele() : ele;\n if (element) {\n clearInterval(interval);\n resolve(element);\n }\n }, 100);\n setTimeout(() => {\n clearInterval(interval);\n resolve(null);\n }, timeout);\n });\n","import { BaseDriver } from './BaseDriver';\n\ntype Data = { name: string; icon: string; url: string }[];\n\nexport class AppsListDriver extends BaseDriver {\n nodeName = 'descope-apps-list';\n\n set data(data: Data) {\n if (this.ele) this.ele.data = data;\n }\n\n get data() {\n return this.ele?.data;\n }\n\n get ele() {\n return super.ele as Element & {\n data: Data;\n };\n }\n}\n","import { BaseDriver } from './BaseDriver';\n\nexport class AvatarDriver extends BaseDriver {\n nodeName = 'descope-avatar';\n\n set displayName(name: string) {\n this.ele?.setAttribute('display-name', name);\n }\n\n set image(imgUrl: string) {\n this.ele?.setAttribute('img', imgUrl);\n }\n\n get flowId() {\n return this.ele?.getAttribute('flow-id');\n }\n\n onClick(cb: (e: Event) => void) {\n this.ele?.addEventListener('click', cb);\n\n return () => this.ele?.removeEventListener('click', cb);\n }\n}\n","import { BaseDriver } from './BaseDriver';\n\nexport type FilterInputType =\n | 'text'\n | 'number'\n | 'email'\n | 'boolean'\n | 'singleselect'\n | 'multiselect';\n\nexport type FilterOption = { value: string; label: string };\n\nexport type FilterColumn = {\n id: string;\n label: string;\n inputType: FilterInputType;\n options?: FilterOption[];\n // A built-in operator id, or an object overriding widget defaults — notably\n // `prefix`/`suffix` (query affixes the consumer applies, e.g. SQL-LIKE `%`).\n operators?: (\n | string\n | {\n id: string;\n label?: string;\n noValue?: boolean;\n prefix?: string;\n suffix?: string;\n }\n )[];\n};\n\nexport type FilterRow = {\n column: string;\n operator: string;\n value: string | string[] | null;\n // Emitted on applied rows when the operator defines query affixes. The value\n // stays raw; the consumer builds the query as `${prefix}${value}${suffix}`.\n prefix?: string;\n suffix?: string;\n};\n\nexport type FilterEventDetail = {\n value: FilterRow[];\n action: 'apply' | 'clear-all' | 'cancel';\n};\n\nexport class FilterDriver extends BaseDriver {\n nodeName = 'descope-filter';\n\n // Serialized value of the last `data` we wrote, so onDataChange can tell our\n // own writes apart from external ones.\n #lastData: string | null = null;\n\n get data(): FilterColumn[] {\n try {\n return JSON.parse(this.ele?.getAttribute('data') || '[]');\n } catch {\n return [];\n }\n }\n\n set data(value: FilterColumn[]) {\n this.#lastData = JSON.stringify(value);\n // setAttribute always fires the component's attributeChangedCallback, even\n // for an identical value (the DOM doesn't short-circuit a same-value set).\n // The component re-renders its columns from `data` there, dropping the user's\n // applied rows - so skip the write when the attribute already holds this value.\n if (this.#lastData === this.ele?.getAttribute('data')) return;\n this.ele?.setAttribute('data', this.#lastData);\n }\n\n get value(): FilterRow[] {\n try {\n return JSON.parse(this.ele?.getAttribute('value') || '[]');\n } catch {\n return [];\n }\n }\n\n set value(value: FilterRow[]) {\n this.ele?.setAttribute('value', JSON.stringify(value));\n }\n\n onApply(cb: (detail: FilterEventDetail) => void) {\n const handler = (e: Event) => cb((e as CustomEvent).detail);\n this.ele?.addEventListener('filter-apply', handler);\n return () => this.ele?.removeEventListener('filter-apply', handler);\n }\n\n onClear(cb: (detail: FilterEventDetail) => void) {\n const handler = (e: Event) => cb((e as CustomEvent).detail);\n this.ele?.addEventListener('filter-clear', handler);\n return () => this.ele?.removeEventListener('filter-clear', handler);\n }\n\n // Fires when the `data` attribute is changed by something other than this\n // driver (e.g. the screen editor republishing a different pick list). The\n // driver's own writes are skipped by comparing against #lastData.\n onDataChange(cb: () => void) {\n const ele = this.ele;\n if (!ele) return () => {};\n const observer = new MutationObserver(() => {\n if ((ele.getAttribute('data') ?? '[]') === this.#lastData) return;\n cb();\n });\n observer.observe(ele, { attributes: true, attributeFilter: ['data'] });\n return () => observer.disconnect();\n }\n}\n","import { BaseDriver } from './BaseDriver';\n\nexport class ButtonDriver extends BaseDriver {\n nodeName = 'descope-button';\n\n onClick(cb: (e: Event) => void) {\n this.ele?.addEventListener('click', cb);\n\n return () => this.ele?.removeEventListener('click', cb);\n }\n\n disable() {\n this.ele?.setAttribute('disabled', 'true');\n }\n\n enable() {\n this.ele?.removeAttribute('disabled');\n }\n}\n","import { BaseDriver } from './BaseDriver';\n\nexport class FlowDriver extends BaseDriver {\n nodeName = 'descope-wc';\n\n set projectId(projectId: string) {\n this.ele?.setAttribute('project-id', projectId);\n }\n\n set baseUrl(baseUrl: string) {\n this.ele?.setAttribute('base-url', baseUrl);\n }\n\n set flowId(flowId: string) {\n this.ele?.setAttribute('flow-id', flowId);\n }\n\n set theme(theme: string | null | undefined) {\n if (!theme) {\n this.ele?.removeAttribute('theme');\n } else {\n this.ele?.setAttribute('theme', theme);\n }\n }\n\n // start a flow rendered with `lazy-start`, which preloads but holds its\n // start call until asked\n start() {\n (this.ele as any)?.start?.();\n }\n\n onSuccess(cb: () => void) {\n this.ele?.addEventListener('success', cb);\n\n return () => this.ele?.removeEventListener('success', cb);\n }\n onPageUpdated(cb: () => void) {\n this.ele?.addEventListener('page-updated', cb);\n\n return () => this.ele?.removeEventListener('page-updated', cb);\n }\n}\n","import { ButtonDriver } from './ButtonDriver';\n\nexport class GenericFlowButtonDriver extends ButtonDriver {\n get flowId(): string {\n return this.ele?.getAttribute('flow-id') || '';\n }\n get enableMode(): 'onlyOne' | 'oneOrMore' | 'always' {\n return this.ele?.getAttribute('enable-mode') as\n | 'onlyOne'\n | 'oneOrMore'\n | 'always';\n }\n}\n","import { compareArrays } from '@descope/sdk-helpers';\nimport { BaseDriver } from '../BaseDriver';\nimport { GridCustomColumnDriver } from './GridCustomColumnDriver';\nimport { GridTextColumnDriver } from './GridTextColumnDriver';\n\ntype Column = {\n path: string;\n header: string;\n type: string;\n attrs: Record<string, string>;\n};\n\nconst columnRegex = /^descope-grid-([^-]+)-column$/;\n\nconst driversMapping = {\n text: GridTextColumnDriver,\n custom: GridCustomColumnDriver,\n};\n\nexport class GridDriver<T extends any> extends BaseDriver {\n nodeName = 'descope-grid';\n #onColumnsChangeCb: (columns: Column[]) => void;\n\n onSelectedItemsChange(cb: (e: CustomEvent<{ value: T[] }>) => void) {\n this.ele?.addEventListener('selected-items-changed', cb);\n\n return () => this.ele?.removeEventListener('selected-items-changed', cb);\n }\n\n get ele() {\n return super.ele as Element & {\n data: T[];\n columns: Column[];\n renderColumn: ({ path, header, type, attrs }: Column) => string;\n };\n }\n\n get data() {\n return this.ele?.data;\n }\n\n set data(data: T[]) {\n if (this.ele) this.ele.data = data;\n }\n\n get columns() {\n if (!this.ele) return [];\n return Array.from(this.ele.children).reduce((acc, child) => {\n const columnType = columnRegex.exec(child.localName)?.[1];\n const Driver = driversMapping[columnType];\n\n if (!Driver) return acc;\n\n acc.push(new Driver(child, { logger: this.logger }));\n\n return acc;\n }, []);\n }\n\n filterColumns(filterFn: (col: Column) => boolean) {\n const filteredColumns = this.ele.columns?.filter(filterFn);\n if (!filteredColumns || !this.ele.columns) return;\n if (!compareArrays(filteredColumns, this.ele.columns)) {\n this.ele.columns = filteredColumns;\n this.#onColumnsChangeCb?.(filteredColumns);\n }\n }\n\n onColumnsChange(cb: (columns: Column[]) => void) {\n this.#onColumnsChangeCb = cb;\n }\n\n set renderColumn(\n renderFn: ({ path, header, type, attrs }: Column) => string,\n ) {\n this.ele.renderColumn = renderFn;\n }\n}\n","import { BaseDriver } from '../BaseDriver';\n\nexport class GridTextColumnDriver extends BaseDriver {\n nodeName = 'descope-grid-text-column';\n\n onSortDirectionChange(\n cb: (e: CustomEvent<{ value: 'asc' | 'desc' | null }>) => void,\n ) {\n this.ele?.addEventListener('direction-changed', cb);\n\n return () => this.ele?.removeEventListener('selected-items-changed', cb);\n }\n}\n","import { BaseDriver } from '../BaseDriver';\n\nexport class GridCustomColumnDriver extends BaseDriver {\n nodeName = 'descope-grid-custom-column';\n\n onSortDirectionChange(\n cb: (e: CustomEvent<{ value: 'asc' | 'desc' | null }>) => void,\n ) {\n this.ele?.addEventListener('direction-changed', cb);\n\n return () => this.ele?.removeEventListener('selected-items-changed', cb);\n }\n}\n","import { BaseDriver } from './BaseDriver';\n\nexport class LinkDriver extends BaseDriver {\n nodeName = 'descope-link';\n\n get ele() {\n return super.ele as Element & {\n innerText: string;\n getAttribute: (name: string) => string | null;\n };\n }\n\n get href() {\n return this.ele?.getAttribute('href');\n }\n\n set href(href: string) {\n this.ele?.setAttribute('href', href ?? '');\n }\n}\n","import { BaseDriver } from './BaseDriver';\n\nexport class ModalDriver extends BaseDriver {\n #modalContent: HTMLTemplateElement;\n\n #openedObserver: MutationObserver | undefined;\n\n beforeOpen: undefined | (() => void | Promise<void>);\n\n afterClose: undefined | (() => void);\n\n nodeName = 'descope-modal';\n\n constructor(...args: ConstructorParameters<typeof BaseDriver>) {\n super(...args);\n this.#observeOpened();\n }\n\n // run afterClose whenever the modal becomes closed, regardless of how it was\n // closed - a programmatic close() or the component closing itself on a backdrop\n // click both just remove the `opened` attribute. observing the attribute keeps\n // the reset logic in one place instead of reacting to a specific trigger.\n #observeOpened() {\n if (this.#openedObserver) return;\n\n const ele = this.ele;\n if (!ele) return;\n\n this.#openedObserver = new MutationObserver((records) => {\n records.forEach((record, index) => {\n const wasOpen = record.oldValue === 'true';\n // the value after this mutation is the next record's oldValue, or the\n // current attribute value for the last record in the batch\n const valueAfter = records[index + 1]\n ? records[index + 1].oldValue\n : ele.getAttribute('opened');\n\n if (wasOpen && valueAfter !== 'true') {\n this.afterClose?.();\n }\n });\n });\n\n this.#openedObserver.observe(ele, {\n attributes: true,\n attributeFilter: ['opened'],\n attributeOldValue: true,\n });\n }\n\n get isOpen() {\n return this.ele?.getAttribute('opened') === 'true';\n }\n\n get isClosed() {\n return !this.isOpen;\n }\n\n close() {\n // removing `opened` triggers the observer above, which runs afterClose\n this.ele?.removeAttribute('opened');\n }\n\n async open() {\n await this.beforeOpen?.();\n // set up the observer lazily too, in case the element wasn't available yet\n // when the driver was constructed\n this.#observeOpened();\n this.ele?.setAttribute('opened', 'true');\n }\n\n reset() {\n if (this.ele) this.ele.innerHTML = '';\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n this.#modalContent &&\n this.ele?.append(this.#modalContent.content.cloneNode(true));\n }\n\n setContent(template: HTMLTemplateElement) {\n this.#modalContent = template;\n this.reset();\n }\n\n remove() {\n this.#openedObserver?.disconnect();\n this.ele?.remove();\n }\n}\n","import { BaseDriver } from './BaseDriver';\n\ntype Mapping = { tenantId: string; roleNames: string[] };\n\nexport class MultiLineMappingsDriver extends BaseDriver {\n nodeName = 'descope-multi-line-mappings';\n\n setData(\n data: Record<string, string[] | { label?: string; options: string[] }>,\n ) {\n this.ele?.setAttribute('data', JSON.stringify(data));\n }\n\n get value(): Mapping[] {\n return (this.ele as any)?.value || [];\n }\n\n set value(mappings: Mapping[]) {\n if (this.ele) {\n (this.ele as any).value = mappings;\n }\n }\n\n get mergedValue(): Mapping[] {\n return Object.entries(\n this.value\n .filter(({ tenantId }) => !!tenantId)\n .reduce<Record<string, string[]>>((acc, { tenantId, roleNames }) => {\n acc[tenantId] = [\n ...new Set([...(acc[tenantId] || []), ...roleNames]),\n ];\n return acc;\n }, {}),\n ).map(([tenantId, roleNames]) => ({ tenantId, roleNames }));\n }\n}\n","import { BaseDriver } from './BaseDriver';\n\ntype MultiSelectItem = {\n label: string;\n value: string;\n description?: string;\n};\n\nconst renderItemWithDescription = ({\n label,\n value,\n description,\n}: MultiSelectItem) => {\n const item = document.createElement('span');\n item.setAttribute('data-name', label);\n item.setAttribute('data-id', value);\n item.style.display = 'flex';\n item.style.flexDirection = 'column';\n\n const labelEle = document.createElement('span');\n labelEle.textContent = label;\n item.appendChild(labelEle);\n\n if (description) {\n const descriptionEle = document.createElement('span');\n descriptionEle.textContent = description;\n descriptionEle.style.opacity = '0.6';\n descriptionEle.style.fontSize = '0.85em';\n item.appendChild(descriptionEle);\n }\n\n return item.outerHTML;\n};\n\nexport class MultiSelectDriver extends BaseDriver {\n nodeName = 'descope-multi-select-combo-box';\n\n async setData(data: MultiSelectItem[]) {\n const ele = await this.asyncEle;\n if (!ele) return;\n\n if (data.some((item) => item.description)) {\n (\n ele as Element & { renderItem?: typeof renderItemWithDescription }\n ).renderItem = renderItemWithDescription;\n }\n\n ele.setAttribute(\n 'data',\n JSON.stringify([...data].sort((a, b) => a.label.localeCompare(b.label))),\n );\n }\n}\n\nexport type { MultiSelectItem };\n","import { BaseDriver } from './BaseDriver';\n\nexport class NotificationDriver extends BaseDriver {\n nodeName = 'descope-notification';\n\n close() {\n this.ele?.removeAttribute('opened');\n }\n\n show() {\n this.ele?.setAttribute('opened', 'true');\n }\n\n setContent(template: HTMLTemplateElement) {\n this.ele.innerHTML = '';\n this.ele.appendChild(template.content.cloneNode(true));\n }\n\n remove() {\n this.ele?.remove();\n }\n}\n","import { BaseDriver } from './BaseDriver';\n\ntype Data = {\n id: string;\n name: string;\n description?: string;\n logo?: string;\n isConnected?: boolean;\n}[];\n\ntype Detail = { id: string; action: string };\n\nexport class OutboundAppsListDriver extends BaseDriver {\n nodeName = 'descope-outbound-apps';\n\n set data(data: Data) {\n if (this.ele) this.ele.data = data;\n }\n\n get data() {\n return this.ele?.data;\n }\n\n get ele() {\n return super.ele as Element & {\n data: Data;\n };\n }\n\n get connectFlowId() {\n return this.ele?.getAttribute('connect-flow-id') || '';\n }\n\n get disconnectFlowId() {\n return this.ele?.getAttribute('disconnect-flow-id') || '';\n }\n\n onConnectClick(cb: (detail: Detail) => void) {\n const handler = (e: CustomEvent<Detail>) => cb(e.detail);\n this.ele?.addEventListener('connect-clicked', handler);\n\n return () => this.ele?.removeEventListener('connect-clicked', handler);\n }\n\n onDisconnectClick(cb: (detail: Detail) => void) {\n const handler = (e: CustomEvent<Detail>) => cb(e.detail);\n this.ele?.addEventListener('disconnect-clicked', handler);\n\n return () => this.ele?.removeEventListener('disconnect-clicked', handler);\n }\n}\n","import { BaseDriver } from './BaseDriver';\n\nexport class SingleSelectDriver extends BaseDriver {\n nodeName = 'descope-combo-box';\n\n onInput(cb: (e: InputEvent) => void) {\n this.ele?.addEventListener('input', cb);\n\n return () => this.ele?.removeEventListener('input', cb);\n }\n\n get value() {\n return (<HTMLInputElement>this.ele)?.value;\n }\n\n set value(value: string) {\n if (this.ele) {\n (<HTMLInputElement>this.ele).value = value;\n }\n }\n\n async setData(data: { label: string; value: string }[]) {\n (await this.asyncEle)?.setAttribute('data', JSON.stringify(data.sort()));\n }\n\n setAllowCustomValue(allow: boolean) {\n if (this.ele) {\n this.ele.toggleAttribute('allow-custom-value', allow);\n }\n }\n}\n","import { BaseDriver } from './BaseDriver';\n\nexport class TextDriver extends BaseDriver {\n nodeName = 'descope-text';\n\n get ele() {\n return super.ele as Element & { innerText: string };\n }\n\n get text() {\n return this.ele?.innerText;\n }\n\n set text(content: string) {\n if (this.ele) this.ele.innerText = content;\n }\n}\n","import { BaseDriver } from './BaseDriver';\n\nexport class TextFieldDriver extends BaseDriver {\n nodeName = 'descope-text-field';\n\n onInput(cb: (e: InputEvent) => void) {\n this.ele?.addEventListener('input', cb);\n\n return () => this.ele?.removeEventListener('input', cb);\n }\n\n get value() {\n return (<HTMLInputElement>this.ele)?.value;\n }\n\n set value(value: string) {\n if (this.ele) {\n (<HTMLInputElement>this.ele).value = value;\n }\n }\n\n disable() {\n this.ele?.setAttribute('disabled', 'true');\n }\n\n enable() {\n this.ele?.removeAttribute('disabled');\n }\n}\n","import { BaseDriver } from './BaseDriver';\n\nexport class UserAttributeDriver extends BaseDriver {\n nodeName = 'descope-user-attribute';\n\n set value(value: string) {\n this.ele?.setAttribute('value', value);\n }\n\n set badgeLabel(label: string) {\n this.ele?.setAttribute('badge-label', label);\n }\n\n get label() {\n return this.ele?.getAttribute('label') || '';\n }\n\n get editFlowId() {\n return this.ele?.getAttribute('edit-flow-id') || '';\n }\n\n get deleteFlowId() {\n return this.ele?.getAttribute('delete-flow-id') || '';\n }\n\n onEditClick(cb: (e: Event) => void) {\n this.ele?.addEventListener('edit-clicked', cb);\n\n return () => this.ele?.removeEventListener('edit-clicked', cb);\n }\n\n onDeleteClick(cb: (e: Event) => void) {\n this.ele?.addEventListener('delete-clicked', cb);\n\n return () => this.ele?.removeEventListener('delete-clicked', cb);\n }\n}\n","import { BaseDriver } from './BaseDriver';\n\nexport class UserAuthMethodDriver extends BaseDriver {\n nodeName = 'descope-user-auth-method';\n\n set fulfilled(isFulfilled: boolean) {\n isFulfilled\n ? this.ele?.setAttribute('fulfilled', 'true')\n : this.ele?.removeAttribute('fulfilled');\n }\n\n onUnfulfilledButtonClick(cb: (e: Event) => void) {\n this.ele?.addEventListener('button-clicked', cb);\n\n return () => this.ele?.removeEventListener('button-clicked', cb);\n }\n\n onFulfilledButtonClick(cb: (e: Event) => void) {\n this.ele?.addEventListener('fulfilled-button-clicked', cb);\n\n return () => this.ele?.removeEventListener('fulfilled-button-clicked', cb);\n }\n\n get flowId() {\n return this.ele?.getAttribute('flow-id');\n }\n\n get fulfilledFlowId() {\n return this.ele?.getAttribute('fulfilled-flow-id');\n }\n}\n","import { BaseDriver } from './BaseDriver';\n\ntype Data = {\n id: string;\n name: string;\n lastLoginDate: number;\n isCurrent: boolean;\n}[];\n\ntype Detail = { id: string; action: string };\n\nexport class DeviceListDriver extends BaseDriver {\n nodeName = 'descope-trusted-devices';\n\n set displayName(name: string) {\n this.ele?.setAttribute('display-name', name);\n }\n\n get ele() {\n return super.ele as Element & {\n data: Data;\n };\n }\n\n get data() {\n return this.ele?.data;\n }\n\n set data(data: Data) {\n if (this.ele) this.ele.data = data;\n }\n\n get flowId() {\n return this.ele?.getAttribute('flow-id');\n }\n\n onRemoveDeviceClick(cb: (detail: Detail) => void) {\n const handler = (e: CustomEvent<Detail>) => cb(e.detail);\n this.ele?.addEventListener('remove-device-clicked', handler);\n\n return () =>\n this.ele?.removeEventListener('remove-device-clicked', handler);\n }\n}\n","import { ButtonDriver } from './ButtonDriver';\n\nexport class FlowButtonDriver extends ButtonDriver {\n get flowId(): string {\n return this.ele?.getAttribute('flow-id') || '';\n }\n}\n","import { BaseDriver } from './BaseDriver';\n\nexport class LastAuthBadgeDriver extends BaseDriver {\n nodeName = 'descope-attachment';\n\n set position(value: string) {\n this.ele?.setAttribute('position', value);\n }\n\n get position() {\n return this.ele?.getAttribute('position') ?? '';\n }\n}\n","import { SingleSelectDriver } from './SingleSelectDriver';\n\nexport class TenantSelectorDriver extends SingleSelectDriver {\n get action(): 'reload' | 'none' | '' {\n return (this.ele?.getAttribute('data-action') || '') as\n | 'reload'\n | 'none'\n | '';\n }\n\n get refreshTimeout(): number {\n return Number(this.ele?.getAttribute('data-refresh-timeout')) || 500;\n }\n\n get shouldReload() {\n return this.action === 'reload';\n }\n}\n","import { BaseDriver } from './BaseDriver';\n\ntype PasskeyType =\n | 'apple'\n | 'google'\n | 'windows'\n | 'chrome'\n | 'edge'\n | 'samsung'\n | '1password'\n | 'bitwarden'\n | 'lastpass'\n | 'dashlane'\n | 'keeper'\n | 'keepassxc'\n | 'proton'\n | 'nordpass'\n | 'enpass'\n | 'key'\n | 'phone'\n | 'other';\n\ntype Data = {\n id: string;\n name: string;\n passkeyType: PasskeyType;\n createdAt: number;\n}[];\n\ntype Detail = { id: string; action: string };\n\nexport class UserPasskeysDriver extends BaseDriver {\n nodeName = 'descope-user-passkeys';\n\n get ele() {\n return super.ele as Element & {\n data: Data;\n };\n }\n\n get data() {\n return this.ele?.data;\n }\n\n set data(data: Data) {\n if (this.ele) this.ele.data = data;\n }\n\n get addPasskeyFlowId() {\n return this.ele?.getAttribute('add-passkey-flow-id');\n }\n\n get removePasskeyFlowId() {\n return this.ele?.getAttribute('remove-passkey-flow-id');\n }\n\n onAddPasskeyClick(cb: (e: Event) => void) {\n this.ele?.addEventListener('add-passkey-clicked', cb);\n return () => this.ele?.removeEventListener('add-passkey-clicked', cb);\n }\n\n onRemovePasskeyClick(cb: (detail: Detail) => void) {\n const handler = (e: CustomEvent<Detail>) => cb(e.detail);\n this.ele?.addEventListener('remove-passkey-clicked', handler);\n\n return () =>\n this.ele?.removeEventListener('remove-passkey-clicked', handler);\n }\n}\n","import { BaseDriver } from './BaseDriver';\n\ntype Data = {\n id: string;\n name: string;\n authType?: string;\n isDefault?: boolean;\n link?: string;\n}[];\n\ntype DeleteDetail = { id: string; name: string };\n\nexport class MultiSsoConfigurationsDriver extends BaseDriver {\n nodeName = 'descope-multi-sso';\n\n set data(data: Data) {\n if (this.ele) this.ele.data = data;\n }\n\n get data() {\n return this.ele?.data;\n }\n\n get ele() {\n return super.ele as Element & {\n data: Data;\n };\n }\n\n get createFlowId() {\n return this.ele?.getAttribute('data-create-flow-id') || '';\n }\n\n get deleteFlowId() {\n return this.ele?.getAttribute('data-delete-flow-id') || '';\n }\n\n onCreateClicked(cb: () => void) {\n const handler = () => cb();\n this.ele?.addEventListener('create-clicked', handler);\n\n return () => this.ele?.removeEventListener('create-clicked', handler);\n }\n\n onDeleteClicked(cb: (detail: DeleteDetail) => void) {\n const handler = (e: CustomEvent<DeleteDetail>) => cb(e.detail);\n this.ele?.addEventListener('delete-clicked', handler);\n\n return () => this.ele?.removeEventListener('delete-clicked', handler);\n }\n}\n"],"names":["BaseDriver","constructor","refOrRefFn","config","_BaseDriver_ele","set","this","nodeName","__classPrivateFieldSet","logger","asyncEle","async","ele","timeout","Promise","resolve","interval","setInterval","element","clearInterval","setTimeout","waitForElement","__classPrivateFieldGet","call","localName","_b","debug","Error","_a","isExists","AppsListDriver","data","super","AvatarDriver","displayName","name","setAttribute","image","imgUrl","flowId","getAttribute","onClick","cb","addEventListener","removeEventListener","FilterDriver","_FilterDriver_lastData","JSON","parse","value","stringify","onApply","handler","e","detail","onClear","onDataChange","observer","MutationObserver","observe","attributes","attributeFilter","disconnect","ButtonDriver","disable","enable","removeAttribute","FlowDriver","projectId","baseUrl","theme","start","onSuccess","onPageUpdated","GenericFlowButtonDriver","enableMode","columnRegex","driversMapping","text","onSortDirectionChange","custom","GridDriver","_GridDriver_onColumnsChangeCb","onSelectedItemsChange","columns","Array","from","children","reduce","acc","child","columnType","exec","Driver","push","filterColumns","filterFn","filteredColumns","filter","compareArrays","onColumnsChange","renderColumn","renderFn","LinkDriver","href","ModalDriver","args","_ModalDriver_modalContent","_ModalDriver_openedObserver","_ModalDriver_instances","_ModalDriver_observeOpened","isOpen","isClosed","close","open","beforeOpen","reset","innerHTML","append","content","cloneNode","setContent","template","remove","records","forEach","record","index","wasOpen","oldValue","valueAfter","afterClose","attributeOldValue","MultiLineMappingsDriver","setData","mappings","mergedValue","Object","entries","tenantId","roleNames","Set","map","renderItemWithDescription","label","description","item","document","createElement","style","display","flexDirection","labelEle","textContent","appendChild","descriptionEle","opacity","fontSize","outerHTML","MultiSelectDriver","some","renderItem","sort","a","b","localeCompare","NotificationDriver","show","OutboundAppsListDriver","connectFlowId","disconnectFlowId","onConnectClick","onDisconnectClick","SingleSelectDriver","onInput","setAllowCustomValue","allow","toggleAttribute","TextDriver","innerText","TextFieldDriver","UserAttributeDriver","badgeLabel","editFlowId","deleteFlowId","onEditClick","onDeleteClick","UserAuthMethodDriver","fulfilled","isFulfilled","onUnfulfilledButtonClick","onFulfilledButtonClick","fulfilledFlowId","DeviceListDriver","onRemoveDeviceClick","FlowButtonDriver","LastAuthBadgeDriver","position","TenantSelectorDriver","action","refreshTimeout","Number","shouldReload","UserPasskeysDriver","addPasskeyFlowId","removePasskeyFlowId","onAddPasskeyClick","onRemovePasskeyClick","MultiSsoConfigurationsDriver","createFlowId","onCreateClicked","onDeleteClicked"],"mappings":"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"}
1
+ {"version":3,"file":"index.esm.js","sources":["../src/BaseDriver.ts","../src/helpers.ts","../src/AppsListDriver.ts","../src/AvatarDriver.ts","../src/FilterDriver.ts","../src/ButtonDriver.ts","../src/FlowDriver.ts","../src/GenericFlowButtonDriver.ts","../src/gridDrivers/GridDriver.ts","../src/gridDrivers/GridTextColumnDriver.ts","../src/gridDrivers/GridCustomColumnDriver.ts","../src/LinkDriver.ts","../src/ModalDriver.ts","../src/MultiLineMappingsDriver.ts","../src/MultiSelectDriver.ts","../src/NotificationDriver.ts","../src/OutboundAppsListDriver.ts","../src/SingleSelectDriver.ts","../src/TextDriver.ts","../src/TextFieldDriver.ts","../src/UserAttributeDriver.ts","../src/UserAuthMethodDriver.ts","../src/DeviceListDriver.ts","../src/FlowButtonDriver.ts","../src/LastAuthBadgeDriver.ts","../src/TenantSelectorDriver.ts","../src/UserPasskeysDriver.ts","../src/MultiSsoConfigurationsDriver.ts"],"sourcesContent":["import { waitForElement } from './helpers';\nimport { RefOrRefFn } from './types';\n\ntype Logger = {\n error(...data: any[]): void;\n warn(...data: any[]): void;\n info(...data: any[]): void;\n debug(...data: any[]): void;\n};\n\nexport class BaseDriver {\n #ele: RefOrRefFn;\n\n logger: Logger | undefined;\n\n // eslint-disable-next-line class-methods-use-this\n nodeName = '';\n\n constructor(refOrRefFn: RefOrRefFn, config: { logger: Logger }) {\n this.#ele = refOrRefFn;\n this.logger = config.logger;\n }\n\n get asyncEle() {\n return waitForElement(this.#ele, 1000);\n }\n\n get ele() {\n const ele = typeof this.#ele === 'function' ? this.#ele() : this.#ele;\n if (!ele) {\n this.logger?.debug(\n `Driver element is not available for ${this.nodeName}`,\n new Error(),\n );\n\n return null;\n }\n\n if (ele?.localName !== this.nodeName) {\n this.logger?.debug(\n `node name do not match, expected \"${this.nodeName}\", received \"${ele.localName}\" `,\n Error(),\n );\n\n return null;\n }\n\n return ele;\n }\n\n get isExists() {\n return !!this.ele;\n }\n}\n","import { RefOrRefFn } from './types';\n\nexport const waitForElement = async (ele: RefOrRefFn, timeout: number) =>\n new Promise<Element | null>((resolve) => {\n const interval = setInterval(() => {\n const element = typeof ele === 'function' ? ele() : ele;\n if (element) {\n clearInterval(interval);\n resolve(element);\n }\n }, 100);\n setTimeout(() => {\n clearInterval(interval);\n resolve(null);\n }, timeout);\n });\n","import { BaseDriver } from './BaseDriver';\n\ntype Data = { name: string; icon: string; url: string }[];\n\nexport class AppsListDriver extends BaseDriver {\n nodeName = 'descope-apps-list';\n\n set data(data: Data) {\n if (this.ele) this.ele.data = data;\n }\n\n get data() {\n return this.ele?.data;\n }\n\n get ele() {\n return super.ele as Element & {\n data: Data;\n };\n }\n}\n","import { BaseDriver } from './BaseDriver';\n\nexport class AvatarDriver extends BaseDriver {\n nodeName = 'descope-avatar';\n\n set displayName(name: string) {\n this.ele?.setAttribute('display-name', name);\n }\n\n set image(imgUrl: string) {\n this.ele?.setAttribute('img', imgUrl);\n }\n\n get flowId() {\n return this.ele?.getAttribute('flow-id');\n }\n\n onClick(cb: (e: Event) => void) {\n this.ele?.addEventListener('click', cb);\n\n return () => this.ele?.removeEventListener('click', cb);\n }\n}\n","import { BaseDriver } from './BaseDriver';\n\nexport type FilterInputType =\n | 'text'\n | 'number'\n | 'email'\n | 'boolean'\n | 'singleselect'\n | 'multiselect';\n\nexport type FilterOption = { value: string; label: string };\n\nexport type FilterColumn = {\n id: string;\n label: string;\n inputType: FilterInputType;\n options?: FilterOption[];\n // A built-in operator id, or an object overriding widget defaults — notably\n // `prefix`/`suffix` (query affixes the consumer applies, e.g. SQL-LIKE `%`).\n operators?: (\n | string\n | {\n id: string;\n label?: string;\n noValue?: boolean;\n prefix?: string;\n suffix?: string;\n }\n )[];\n};\n\nexport type FilterRow = {\n column: string;\n operator: string;\n value: string | string[] | null;\n // Emitted on applied rows when the operator defines query affixes. The value\n // stays raw; the consumer builds the query as `${prefix}${value}${suffix}`.\n prefix?: string;\n suffix?: string;\n};\n\nexport type FilterEventDetail = {\n value: FilterRow[];\n action: 'apply' | 'clear-all' | 'cancel';\n};\n\nexport class FilterDriver extends BaseDriver {\n nodeName = 'descope-filter';\n\n // Serialized value of the last `data` we wrote, so onDataChange can tell our\n // own writes apart from external ones.\n #lastData: string | null = null;\n\n get data(): FilterColumn[] {\n try {\n return JSON.parse(this.ele?.getAttribute('data') || '[]');\n } catch {\n return [];\n }\n }\n\n set data(value: FilterColumn[]) {\n this.#lastData = JSON.stringify(value);\n // setAttribute always fires the component's attributeChangedCallback, even\n // for an identical value (the DOM doesn't short-circuit a same-value set).\n // The component re-renders its columns from `data` there, dropping the user's\n // applied rows - so skip the write when the attribute already holds this value.\n if (this.#lastData === this.ele?.getAttribute('data')) return;\n this.ele?.setAttribute('data', this.#lastData);\n }\n\n get value(): FilterRow[] {\n try {\n return JSON.parse(this.ele?.getAttribute('value') || '[]');\n } catch {\n return [];\n }\n }\n\n set value(value: FilterRow[]) {\n this.ele?.setAttribute('value', JSON.stringify(value));\n }\n\n onApply(cb: (detail: FilterEventDetail) => void) {\n const handler = (e: Event) => cb((e as CustomEvent).detail);\n this.ele?.addEventListener('filter-apply', handler);\n return () => this.ele?.removeEventListener('filter-apply', handler);\n }\n\n onClear(cb: (detail: FilterEventDetail) => void) {\n const handler = (e: Event) => cb((e as CustomEvent).detail);\n this.ele?.addEventListener('filter-clear', handler);\n return () => this.ele?.removeEventListener('filter-clear', handler);\n }\n\n // Fires when the `data` attribute is changed by something other than this\n // driver (e.g. the screen editor republishing a different pick list). The\n // driver's own writes are skipped by comparing against #lastData.\n onDataChange(cb: () => void) {\n const ele = this.ele;\n if (!ele) return () => {};\n const observer = new MutationObserver(() => {\n if ((ele.getAttribute('data') ?? '[]') === this.#lastData) return;\n cb();\n });\n observer.observe(ele, { attributes: true, attributeFilter: ['data'] });\n return () => observer.disconnect();\n }\n}\n","import { BaseDriver } from './BaseDriver';\n\nexport class ButtonDriver extends BaseDriver {\n nodeName = 'descope-button';\n\n onClick(cb: (e: Event) => void) {\n this.ele?.addEventListener('click', cb);\n\n return () => this.ele?.removeEventListener('click', cb);\n }\n\n disable() {\n this.ele?.setAttribute('disabled', 'true');\n }\n\n enable() {\n this.ele?.removeAttribute('disabled');\n }\n}\n","import { BaseDriver } from './BaseDriver';\n\nexport class FlowDriver extends BaseDriver {\n nodeName = 'descope-wc';\n\n set projectId(projectId: string) {\n this.ele?.setAttribute('project-id', projectId);\n }\n\n set baseUrl(baseUrl: string) {\n this.ele?.setAttribute('base-url', baseUrl);\n }\n\n set flowId(flowId: string) {\n this.ele?.setAttribute('flow-id', flowId);\n }\n\n set theme(theme: string | null | undefined) {\n if (!theme) {\n this.ele?.removeAttribute('theme');\n } else {\n this.ele?.setAttribute('theme', theme);\n }\n }\n\n // start a flow rendered with `lazy-start`, which preloads but holds its\n // start call until asked\n start() {\n (this.ele as any)?.start?.();\n }\n\n onSuccess(cb: () => void) {\n this.ele?.addEventListener('success', cb);\n\n return () => this.ele?.removeEventListener('success', cb);\n }\n onPageUpdated(cb: () => void) {\n this.ele?.addEventListener('page-updated', cb);\n\n return () => this.ele?.removeEventListener('page-updated', cb);\n }\n}\n","import { ButtonDriver } from './ButtonDriver';\n\nexport class GenericFlowButtonDriver extends ButtonDriver {\n get flowId(): string {\n return this.ele?.getAttribute('flow-id') || '';\n }\n get enableMode(): 'onlyOne' | 'oneOrMore' | 'always' {\n return this.ele?.getAttribute('enable-mode') as\n | 'onlyOne'\n | 'oneOrMore'\n | 'always';\n }\n}\n","import { compareArrays } from '@descope/sdk-helpers';\nimport { BaseDriver } from '../BaseDriver';\nimport { GridCustomColumnDriver } from './GridCustomColumnDriver';\nimport { GridTextColumnDriver } from './GridTextColumnDriver';\n\ntype Column = {\n path: string;\n header: string;\n type: string;\n attrs: Record<string, string>;\n};\n\nconst columnRegex = /^descope-grid-([^-]+)-column$/;\n\nconst driversMapping = {\n text: GridTextColumnDriver,\n custom: GridCustomColumnDriver,\n};\n\nexport class GridDriver<T extends any> extends BaseDriver {\n nodeName = 'descope-grid';\n #onColumnsChangeCb: (columns: Column[]) => void;\n\n onSelectedItemsChange(cb: (e: CustomEvent<{ value: T[] }>) => void) {\n this.ele?.addEventListener('selected-items-changed', cb);\n\n return () => this.ele?.removeEventListener('selected-items-changed', cb);\n }\n\n get ele() {\n return super.ele as Element & {\n data: T[];\n columns: Column[];\n renderColumn: ({ path, header, type, attrs }: Column) => string;\n };\n }\n\n get data() {\n return this.ele?.data;\n }\n\n set data(data: T[]) {\n if (this.ele) this.ele.data = data;\n }\n\n get columns() {\n if (!this.ele) return [];\n return Array.from(this.ele.children).reduce((acc, child) => {\n const columnType = columnRegex.exec(child.localName)?.[1];\n const Driver = driversMapping[columnType];\n\n if (!Driver) return acc;\n\n acc.push(new Driver(child, { logger: this.logger }));\n\n return acc;\n }, []);\n }\n\n filterColumns(filterFn: (col: Column) => boolean) {\n const filteredColumns = this.ele.columns?.filter(filterFn);\n if (!filteredColumns || !this.ele.columns) return;\n if (!compareArrays(filteredColumns, this.ele.columns)) {\n this.ele.columns = filteredColumns;\n this.#onColumnsChangeCb?.(filteredColumns);\n }\n }\n\n onColumnsChange(cb: (columns: Column[]) => void) {\n this.#onColumnsChangeCb = cb;\n }\n\n set renderColumn(\n renderFn: ({ path, header, type, attrs }: Column) => string,\n ) {\n this.ele.renderColumn = renderFn;\n }\n}\n","import { BaseDriver } from '../BaseDriver';\n\nexport class GridTextColumnDriver extends BaseDriver {\n nodeName = 'descope-grid-text-column';\n\n onSortDirectionChange(\n cb: (e: CustomEvent<{ value: 'asc' | 'desc' | null }>) => void,\n ) {\n this.ele?.addEventListener('direction-changed', cb);\n\n return () => this.ele?.removeEventListener('selected-items-changed', cb);\n }\n}\n","import { BaseDriver } from '../BaseDriver';\n\nexport class GridCustomColumnDriver extends BaseDriver {\n nodeName = 'descope-grid-custom-column';\n\n onSortDirectionChange(\n cb: (e: CustomEvent<{ value: 'asc' | 'desc' | null }>) => void,\n ) {\n this.ele?.addEventListener('direction-changed', cb);\n\n return () => this.ele?.removeEventListener('selected-items-changed', cb);\n }\n}\n","import { BaseDriver } from './BaseDriver';\n\nexport class LinkDriver extends BaseDriver {\n nodeName = 'descope-link';\n\n get ele() {\n return super.ele as Element & {\n innerText: string;\n getAttribute: (name: string) => string | null;\n };\n }\n\n get href() {\n return this.ele?.getAttribute('href');\n }\n\n set href(href: string) {\n this.ele?.setAttribute('href', href ?? '');\n }\n}\n","import { BaseDriver } from './BaseDriver';\n\nexport class ModalDriver extends BaseDriver {\n #modalContent: HTMLTemplateElement;\n\n #openedObserver: MutationObserver | undefined;\n\n beforeOpen: undefined | (() => void | Promise<void>);\n\n afterClose: undefined | (() => void);\n\n nodeName = 'descope-modal';\n\n constructor(...args: ConstructorParameters<typeof BaseDriver>) {\n super(...args);\n this.#observeOpened();\n }\n\n // run afterClose whenever the modal becomes closed, regardless of how it was\n // closed - a programmatic close() or the component closing itself on a backdrop\n // click both just remove the `opened` attribute. observing the attribute keeps\n // the reset logic in one place instead of reacting to a specific trigger.\n #observeOpened() {\n if (this.#openedObserver) return;\n\n const ele = this.ele;\n if (!ele) return;\n\n this.#openedObserver = new MutationObserver((records) => {\n records.forEach((record, index) => {\n const wasOpen = record.oldValue === 'true';\n // the value after this mutation is the next record's oldValue, or the\n // current attribute value for the last record in the batch\n const valueAfter = records[index + 1]\n ? records[index + 1].oldValue\n : ele.getAttribute('opened');\n\n if (wasOpen && valueAfter !== 'true') {\n this.afterClose?.();\n }\n });\n });\n\n this.#openedObserver.observe(ele, {\n attributes: true,\n attributeFilter: ['opened'],\n attributeOldValue: true,\n });\n }\n\n get isOpen() {\n return this.ele?.getAttribute('opened') === 'true';\n }\n\n get isClosed() {\n return !this.isOpen;\n }\n\n close() {\n // removing `opened` triggers the observer above, which runs afterClose\n this.ele?.removeAttribute('opened');\n }\n\n async open() {\n await this.beforeOpen?.();\n // set up the observer lazily too, in case the element wasn't available yet\n // when the driver was constructed\n this.#observeOpened();\n this.ele?.setAttribute('opened', 'true');\n }\n\n reset() {\n if (this.ele) this.ele.innerHTML = '';\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n this.#modalContent &&\n this.ele?.append(this.#modalContent.content.cloneNode(true));\n }\n\n setContent(template: HTMLTemplateElement) {\n this.#modalContent = template;\n this.reset();\n }\n\n remove() {\n this.#openedObserver?.disconnect();\n this.ele?.remove();\n }\n}\n","import { BaseDriver } from './BaseDriver';\n\ntype Mapping = { tenantId: string; roleNames: string[] };\n\nexport class MultiLineMappingsDriver extends BaseDriver {\n nodeName = 'descope-multi-line-mappings';\n\n setData(\n data: Record<string, string[] | { label?: string; options: string[] }>,\n ) {\n this.ele?.setAttribute('data', JSON.stringify(data));\n }\n\n get value(): Mapping[] {\n return (this.ele as any)?.value || [];\n }\n\n set value(mappings: Mapping[]) {\n if (this.ele) {\n (this.ele as any).value = mappings;\n }\n }\n\n get mergedValue(): Mapping[] {\n return Object.entries(\n this.value\n .filter(({ tenantId }) => !!tenantId)\n .reduce<Record<string, string[]>>((acc, { tenantId, roleNames }) => {\n acc[tenantId] = [\n ...new Set([...(acc[tenantId] || []), ...roleNames]),\n ];\n return acc;\n }, {}),\n ).map(([tenantId, roleNames]) => ({ tenantId, roleNames }));\n }\n}\n","import { BaseDriver } from './BaseDriver';\n\ntype MultiSelectItem = {\n label: string;\n value: string;\n description?: string;\n};\n\nconst renderItemWithDescription = ({\n label,\n value,\n description,\n}: MultiSelectItem) => {\n const item = document.createElement('span');\n item.setAttribute('data-name', label);\n item.setAttribute('data-id', value);\n item.style.display = 'flex';\n item.style.flexDirection = 'column';\n\n const labelEle = document.createElement('span');\n labelEle.textContent = label;\n item.appendChild(labelEle);\n\n if (description) {\n const descriptionEle = document.createElement('span');\n descriptionEle.textContent = description;\n descriptionEle.style.opacity = '0.6';\n descriptionEle.style.fontSize = '0.85em';\n item.appendChild(descriptionEle);\n }\n\n return item.outerHTML;\n};\n\nexport class MultiSelectDriver extends BaseDriver {\n nodeName = 'descope-multi-select-combo-box';\n\n async setData(data: MultiSelectItem[]) {\n const ele = await this.asyncEle;\n if (!ele) return;\n\n if (data.some((item) => item.description)) {\n (\n ele as Element & { renderItem?: typeof renderItemWithDescription }\n ).renderItem = renderItemWithDescription;\n }\n\n ele.setAttribute(\n 'data',\n JSON.stringify([...data].sort((a, b) => a.label.localeCompare(b.label))),\n );\n }\n}\n\nexport type { MultiSelectItem };\n","import { BaseDriver } from './BaseDriver';\n\nexport class NotificationDriver extends BaseDriver {\n nodeName = 'descope-notification';\n\n close() {\n this.ele?.removeAttribute('opened');\n }\n\n show() {\n this.ele?.setAttribute('opened', 'true');\n }\n\n setContent(template: HTMLTemplateElement) {\n this.ele.innerHTML = '';\n this.ele.appendChild(template.content.cloneNode(true));\n }\n\n remove() {\n this.ele?.remove();\n }\n}\n","import { BaseDriver } from './BaseDriver';\n\ntype Data = {\n id: string;\n name: string;\n description?: string;\n logo?: string;\n isConnected?: boolean;\n}[];\n\ntype Detail = { id: string; action: string };\n\nexport class OutboundAppsListDriver extends BaseDriver {\n nodeName = 'descope-outbound-apps';\n\n set data(data: Data) {\n if (this.ele) this.ele.data = data;\n }\n\n get data() {\n return this.ele?.data;\n }\n\n get ele() {\n return super.ele as Element & {\n data: Data;\n };\n }\n\n get connectFlowId() {\n return this.ele?.getAttribute('connect-flow-id') || '';\n }\n\n get disconnectFlowId() {\n return this.ele?.getAttribute('disconnect-flow-id') || '';\n }\n\n onConnectClick(cb: (detail: Detail) => void) {\n const handler = (e: CustomEvent<Detail>) => cb(e.detail);\n this.ele?.addEventListener('connect-clicked', handler);\n\n return () => this.ele?.removeEventListener('connect-clicked', handler);\n }\n\n onDisconnectClick(cb: (detail: Detail) => void) {\n const handler = (e: CustomEvent<Detail>) => cb(e.detail);\n this.ele?.addEventListener('disconnect-clicked', handler);\n\n return () => this.ele?.removeEventListener('disconnect-clicked', handler);\n }\n}\n","import { BaseDriver } from './BaseDriver';\n\nexport class SingleSelectDriver extends BaseDriver {\n nodeName = 'descope-combo-box';\n\n onInput(cb: (e: InputEvent) => void) {\n this.ele?.addEventListener('input', cb);\n\n return () => this.ele?.removeEventListener('input', cb);\n }\n\n get value() {\n return (<HTMLInputElement>this.ele)?.value;\n }\n\n set value(value: string) {\n if (this.ele) {\n (<HTMLInputElement>this.ele).value = value;\n }\n }\n\n async setData(data: { label: string; value: string }[]) {\n (await this.asyncEle)?.setAttribute('data', JSON.stringify(data.sort()));\n }\n\n setAllowCustomValue(allow: boolean) {\n if (this.ele) {\n this.ele.toggleAttribute('allow-custom-value', allow);\n }\n }\n}\n","import { BaseDriver } from './BaseDriver';\n\nexport class TextDriver extends BaseDriver {\n nodeName = 'descope-text';\n\n get ele() {\n return super.ele as Element & { innerText: string };\n }\n\n get text() {\n return this.ele?.innerText;\n }\n\n set text(content: string) {\n if (this.ele) this.ele.innerText = content;\n }\n}\n","import { BaseDriver } from './BaseDriver';\n\nexport class TextFieldDriver extends BaseDriver {\n nodeName = 'descope-text-field';\n\n onInput(cb: (e: InputEvent) => void) {\n this.ele?.addEventListener('input', cb);\n\n return () => this.ele?.removeEventListener('input', cb);\n }\n\n get value() {\n return (<HTMLInputElement>this.ele)?.value;\n }\n\n set value(value: string) {\n if (this.ele) {\n (<HTMLInputElement>this.ele).value = value;\n }\n }\n\n disable() {\n this.ele?.setAttribute('disabled', 'true');\n }\n\n enable() {\n this.ele?.removeAttribute('disabled');\n }\n}\n","import { BaseDriver } from './BaseDriver';\n\nexport class UserAttributeDriver extends BaseDriver {\n nodeName = 'descope-user-attribute';\n\n set value(value: string) {\n this.ele?.setAttribute('value', value);\n }\n\n set badgeLabel(label: string) {\n this.ele?.setAttribute('badge-label', label);\n }\n\n get label() {\n return this.ele?.getAttribute('label') || '';\n }\n\n get editFlowId() {\n return this.ele?.getAttribute('edit-flow-id') || '';\n }\n\n get deleteFlowId() {\n return this.ele?.getAttribute('delete-flow-id') || '';\n }\n\n onEditClick(cb: (e: Event) => void) {\n this.ele?.addEventListener('edit-clicked', cb);\n\n return () => this.ele?.removeEventListener('edit-clicked', cb);\n }\n\n onDeleteClick(cb: (e: Event) => void) {\n this.ele?.addEventListener('delete-clicked', cb);\n\n return () => this.ele?.removeEventListener('delete-clicked', cb);\n }\n}\n","import { BaseDriver } from './BaseDriver';\n\nexport class UserAuthMethodDriver extends BaseDriver {\n nodeName = 'descope-user-auth-method';\n\n set fulfilled(isFulfilled: boolean) {\n isFulfilled\n ? this.ele?.setAttribute('fulfilled', 'true')\n : this.ele?.removeAttribute('fulfilled');\n }\n\n onUnfulfilledButtonClick(cb: (e: Event) => void) {\n this.ele?.addEventListener('button-clicked', cb);\n\n return () => this.ele?.removeEventListener('button-clicked', cb);\n }\n\n onFulfilledButtonClick(cb: (e: Event) => void) {\n this.ele?.addEventListener('fulfilled-button-clicked', cb);\n\n return () => this.ele?.removeEventListener('fulfilled-button-clicked', cb);\n }\n\n get flowId() {\n return this.ele?.getAttribute('flow-id');\n }\n\n get fulfilledFlowId() {\n return this.ele?.getAttribute('fulfilled-flow-id');\n }\n}\n","import { BaseDriver } from './BaseDriver';\n\ntype Data = {\n id: string;\n name: string;\n lastLoginDate: number;\n isCurrent: boolean;\n}[];\n\ntype Detail = { id: string; action: string };\n\nexport class DeviceListDriver extends BaseDriver {\n nodeName = 'descope-trusted-devices';\n\n set displayName(name: string) {\n this.ele?.setAttribute('display-name', name);\n }\n\n get ele() {\n return super.ele as Element & {\n data: Data;\n };\n }\n\n get data() {\n return this.ele?.data;\n }\n\n set data(data: Data) {\n if (this.ele) this.ele.data = data;\n }\n\n get flowId() {\n return this.ele?.getAttribute('flow-id');\n }\n\n onRemoveDeviceClick(cb: (detail: Detail) => void) {\n const handler = (e: CustomEvent<Detail>) => cb(e.detail);\n this.ele?.addEventListener('remove-device-clicked', handler);\n\n return () =>\n this.ele?.removeEventListener('remove-device-clicked', handler);\n }\n}\n","import { ButtonDriver } from './ButtonDriver';\n\nexport class FlowButtonDriver extends ButtonDriver {\n get flowId(): string {\n return this.ele?.getAttribute('flow-id') || '';\n }\n}\n","import { BaseDriver } from './BaseDriver';\n\nexport class LastAuthBadgeDriver extends BaseDriver {\n nodeName = 'descope-attachment';\n\n set position(value: string) {\n this.ele?.setAttribute('position', value);\n }\n\n get position() {\n return this.ele?.getAttribute('position') ?? '';\n }\n}\n","import { SingleSelectDriver } from './SingleSelectDriver';\n\nexport class TenantSelectorDriver extends SingleSelectDriver {\n get action(): 'reload' | 'none' | '' {\n return (this.ele?.getAttribute('data-action') || '') as\n | 'reload'\n | 'none'\n | '';\n }\n\n get refreshTimeout(): number {\n return Number(this.ele?.getAttribute('data-refresh-timeout')) || 500;\n }\n\n get shouldReload() {\n return this.action === 'reload';\n }\n}\n","import { BaseDriver } from './BaseDriver';\n\ntype PasskeyType =\n | 'apple'\n | 'google'\n | 'windows'\n | 'chrome'\n | 'edge'\n | 'samsung'\n | '1password'\n | 'bitwarden'\n | 'lastpass'\n | 'dashlane'\n | 'keeper'\n | 'keepassxc'\n | 'proton'\n | 'nordpass'\n | 'enpass'\n | 'key'\n | 'phone'\n | 'other';\n\ntype Data = {\n id: string;\n name: string;\n passkeyType: PasskeyType;\n createdAt: number;\n}[];\n\ntype Detail = { id: string; action: string };\n\nexport class UserPasskeysDriver extends BaseDriver {\n nodeName = 'descope-user-passkeys';\n\n get ele() {\n return super.ele as Element & {\n data: Data;\n };\n }\n\n get data() {\n return this.ele?.data;\n }\n\n set data(data: Data) {\n if (this.ele) this.ele.data = data;\n }\n\n get addPasskeyFlowId() {\n return this.ele?.getAttribute('add-passkey-flow-id');\n }\n\n get removePasskeyFlowId() {\n return this.ele?.getAttribute('remove-passkey-flow-id');\n }\n\n onAddPasskeyClick(cb: (e: Event) => void) {\n this.ele?.addEventListener('add-passkey-clicked', cb);\n return () => this.ele?.removeEventListener('add-passkey-clicked', cb);\n }\n\n onRemovePasskeyClick(cb: (detail: Detail) => void) {\n const handler = (e: CustomEvent<Detail>) => cb(e.detail);\n this.ele?.addEventListener('remove-passkey-clicked', handler);\n\n return () =>\n this.ele?.removeEventListener('remove-passkey-clicked', handler);\n }\n}\n","import { BaseDriver } from './BaseDriver';\n\ntype Data = {\n id: string;\n name: string;\n authType?: string;\n isDefault?: boolean;\n link?: string;\n // A login through this connection verifies identity and creates no user.\n authOnly?: boolean;\n}[];\n\ntype DeleteDetail = { id: string; name: string };\n\n// `data[].authOnly` marks a row as verifying identity only, which descope-multi-sso\n// renders as a badge. Display only: the classification is set when the configuration is created,\n// through the Descoper's create flow, and is not editable from the widget.\nexport class MultiSsoConfigurationsDriver extends BaseDriver {\n nodeName = 'descope-multi-sso';\n\n set data(data: Data) {\n if (this.ele) this.ele.data = data;\n }\n\n get data() {\n return this.ele?.data;\n }\n\n get ele() {\n return super.ele as Element & {\n data: Data;\n };\n }\n\n get createFlowId() {\n return this.ele?.getAttribute('data-create-flow-id') || '';\n }\n\n get deleteFlowId() {\n return this.ele?.getAttribute('data-delete-flow-id') || '';\n }\n\n onCreateClicked(cb: () => void) {\n const handler = () => cb();\n this.ele?.addEventListener('create-clicked', handler);\n\n return () => this.ele?.removeEventListener('create-clicked', handler);\n }\n\n onDeleteClicked(cb: (detail: DeleteDetail) => void) {\n const handler = (e: CustomEvent<DeleteDetail>) => cb(e.detail);\n this.ele?.addEventListener('delete-clicked', handler);\n\n return () => this.ele?.removeEventListener('delete-clicked', handler);\n }\n}\n"],"names":["BaseDriver","constructor","refOrRefFn","config","_BaseDriver_ele","set","this","nodeName","__classPrivateFieldSet","logger","asyncEle","async","ele","timeout","Promise","resolve","interval","setInterval","element","clearInterval","setTimeout","waitForElement","__classPrivateFieldGet","call","localName","_b","debug","Error","_a","isExists","AppsListDriver","data","super","AvatarDriver","displayName","name","setAttribute","image","imgUrl","flowId","getAttribute","onClick","cb","addEventListener","removeEventListener","FilterDriver","_FilterDriver_lastData","JSON","parse","value","stringify","onApply","handler","e","detail","onClear","onDataChange","observer","MutationObserver","observe","attributes","attributeFilter","disconnect","ButtonDriver","disable","enable","removeAttribute","FlowDriver","projectId","baseUrl","theme","start","onSuccess","onPageUpdated","GenericFlowButtonDriver","enableMode","columnRegex","driversMapping","text","onSortDirectionChange","custom","GridDriver","_GridDriver_onColumnsChangeCb","onSelectedItemsChange","columns","Array","from","children","reduce","acc","child","columnType","exec","Driver","push","filterColumns","filterFn","filteredColumns","filter","compareArrays","onColumnsChange","renderColumn","renderFn","LinkDriver","href","ModalDriver","args","_ModalDriver_modalContent","_ModalDriver_openedObserver","_ModalDriver_instances","_ModalDriver_observeOpened","isOpen","isClosed","close","open","beforeOpen","reset","innerHTML","append","content","cloneNode","setContent","template","remove","records","forEach","record","index","wasOpen","oldValue","valueAfter","afterClose","attributeOldValue","MultiLineMappingsDriver","setData","mappings","mergedValue","Object","entries","tenantId","roleNames","Set","map","renderItemWithDescription","label","description","item","document","createElement","style","display","flexDirection","labelEle","textContent","appendChild","descriptionEle","opacity","fontSize","outerHTML","MultiSelectDriver","some","renderItem","sort","a","b","localeCompare","NotificationDriver","show","OutboundAppsListDriver","connectFlowId","disconnectFlowId","onConnectClick","onDisconnectClick","SingleSelectDriver","onInput","setAllowCustomValue","allow","toggleAttribute","TextDriver","innerText","TextFieldDriver","UserAttributeDriver","badgeLabel","editFlowId","deleteFlowId","onEditClick","onDeleteClick","UserAuthMethodDriver","fulfilled","isFulfilled","onUnfulfilledButtonClick","onFulfilledButtonClick","fulfilledFlowId","DeviceListDriver","onRemoveDeviceClick","FlowButtonDriver","LastAuthBadgeDriver","position","TenantSelectorDriver","action","refreshTimeout","Number","shouldReload","UserPasskeysDriver","addPasskeyFlowId","removePasskeyFlowId","onAddPasskeyClick","onRemovePasskeyClick","MultiSsoConfigurationsDriver","createFlowId","onCreateClicked","onDeleteClicked"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@descope/sdk-component-drivers",
3
- "version": "0.17.1",
3
+ "version": "0.18.0",
4
4
  "author": "Descope Team <info@descope.com>",
5
5
  "homepage": "https://github.com/descope/sdk-component-drivers",
6
6
  "bugs": {