@descope/flow-components 2.2.37 → 2.2.39
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/fm/222.js +2 -1
- package/dist/fm/222.js.map +1 -0
- package/dist/fm/467.js +3 -2
- package/dist/fm/467.js.map +1 -0
- package/dist/fm/{596.js → 530.js} +2 -1
- package/dist/fm/530.js.map +1 -0
- package/dist/fm/985.js +2 -1
- package/dist/fm/985.js.map +1 -0
- package/dist/fm/@mf-types/compiled-types/TenantSelector/TenantSelector.d.ts +5 -0
- package/dist/fm/@mf-types/compiled-types/TenantSelector/index.d.ts +1 -0
- package/dist/fm/@mf-types/compiled-types/components.d.ts +1 -0
- package/dist/fm/@mf-types.zip +0 -0
- package/dist/fm/__federation_expose_componentClasses.js +2 -1
- package/dist/fm/__federation_expose_componentClasses.js.map +1 -0
- package/dist/fm/__federation_expose_components.js +1 -1
- package/dist/fm/__federation_expose_theme.js +2 -1
- package/dist/fm/__federation_expose_theme.js.map +1 -0
- package/dist/fm/flowComponents.js +2 -1
- package/dist/fm/flowComponents.js.map +1 -0
- package/dist/fm/main.js +2 -1
- package/dist/fm/main.js.map +1 -0
- package/dist/fm/mf-manifest.json +2 -2
- package/dist/fm/mf-stats.json +2 -2
- package/dist/index.cjs.js +3 -0
- package/dist/index.d.ts +5 -1
- package/dist/index.esm.js +3 -1
- package/dist/types/TenantSelector/TenantSelector.d.ts +5 -0
- package/dist/types/TenantSelector/index.d.ts +1 -0
- package/dist/types/components.d.ts +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"222.js","mappings":"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ACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,aACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,WACNq7C,SAAU,QACVC,KAAM,MAER,CACEt7C,KAAM,UACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,UACNq7C,SAAU,MACVC,KAAM,MAER,CACEt7C,KAAM,SACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,QACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,UACNq7C,SAAU,QACVC,KAAM,MAER,CACEt7C,KAAM,SACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,kCACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,yBACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,WACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,SACNq7C,SAAU,MACVC,KAAM,MAER,CACEt7C,KAAM,iCACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,oBACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,WACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,eACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,UACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,WACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,WACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,SACNq7C,SAAU,KACVC,KAAM,MAER,CACEt7C,KAAM,aACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,iBACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,2BACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,OACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,QACNq7C,SAAU,MACVC,KAAM,MAER,CACEt7C,KAAM,QACNq7C,SAAU,MACVC,KAAM,MAER,CACEt7C,KAAM,mBACNq7C,SAAU,MACVC,KAAM,MAER,CACEt7C,KAAM,0BACNq7C,SAAU,MACVC,KAAM,MAER,CACEt7C,KAAM,WACNq7C,SAAU,MACVC,KAAM,MAER,CACEt7C,KAAM,UACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,QACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,8CACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,eACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,aACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,gBACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,UACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,OACNq7C,SAAU,MACVC,KAAM,MAER,CACEt7C,KAAM,SACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,iBACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,UACNq7C,SAAU,MACVC,KAAM,MAER,CACEt7C,KAAM,WACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,WACNq7C,SAAU,QACVC,KAAM,MAER,CACEt7C,KAAM,qBACNq7C,SAAU,QACVC,KAAM,MAER,CACEt7C,KAAM,UACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,QACNq7C,SAAU,MACVC,KAAM,MAER,CACEt7C,KAAM,cACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,oBACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,UACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,UACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,WACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,8BACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,gBACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,OACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,UACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,SACNq7C,SAAU,MACVC,KAAM,MAER,CACEt7C,KAAM,gBACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,mBACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,QACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,SACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,UACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,UACNq7C,SAAU,MACVC,KAAM,MAER,CACEt7C,KAAM,QACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,YACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,SACNq7C,SAAU,MACVC,KAAM,MAER,CACEt7C,KAAM,YACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,UACNq7C,SAAU,QACVC,KAAM,MAER,CACEt7C,KAAM,aACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,OACNq7C,SAAU,QACVC,KAAM,MAER,CACEt7C,KAAM,YACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,WACNq7C,SAAU,MACVC,KAAM,MAER,CACEt7C,KAAM,SACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,gBACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,SACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,QACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,gCACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,WACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,YACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,UACNq7C,SAAU,MACVC,KAAM,MAER,CACEt7C,KAAM,UACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,QACNq7C,SAAU,MACVC,KAAM,MAER,CACEt7C,KAAM,YACNq7C,SAAU,MACVC,KAAM,MAER,CACEt7C,KAAM,yCACNq7C,SAAU,MACVC,KAAM,MAER,CACEt7C,KAAM,OACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,UACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,cACNq7C,SAAU,MACVC,KAAM,MAER,CACEt7C,KAAM,SACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,QACNq7C,SAAU,MACVC,KAAM,MAER,CACEt7C,KAAM,UACNq7C,SAAU,QACVC,KAAM,MAER,CACEt7C,KAAM,QACNq7C,SAAU,MACVC,KAAM,MAER,CACEt7C,KAAM,SACNq7C,SAAU,MACVC,KAAM,MAER,CACEt7C,KAAM,SACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,aACNq7C,SAAU,MACVC,KAAM,MAER,CACEt7C,KAAM,QACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,WACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,+CACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,iCACNq7C,SAAU,MACVC,KAAM,MAER,CACEt7C,KAAM,SACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,aACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,OACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,SACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,UACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,UACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,UACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,yBACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,gBACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,YACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,aACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,QACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,YACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,aACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,SACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,WACNq7C,SAAU,MACVC,KAAM,MAER,CACEt7C,KAAM,WACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,OACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,QACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,mBACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,aACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,aACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,YACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,UACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,SACNq7C,SAAU,MACVC,KAAM,MAER,CACEt7C,KAAM,6CACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,UACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,SACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,WACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,aACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,aACNq7C,SAAU,QACVC,KAAM,MAER,CACEt7C,KAAM,UACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,aACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,UACNq7C,SAAU,MACVC,KAAM,MAER,CACEt7C,KAAM,UACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,QACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,QACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,cACNq7C,SAAU,MACVC,KAAM,MAER,CACEt7C,KAAM,uBACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,gBACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,cACNq7C,SAAU,MACVC,KAAM,MAER,CACEt7C,KAAM,YACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,QACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,UACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,OACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,iBACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,2BACNq7C,SAAU,QACVC,KAAM,MAER,CACEt7C,KAAM,SACNq7C,SAAU,MACVC,KAAM,MAER,CACEt7C,KAAM,OACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,WACNq7C,SAAU,MACVC,KAAM,MAER,CACEt7C,KAAM,QACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,kCACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,SACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,mBACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,WACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,OACNq7C,SAAU,MACVC,KAAM,MAER,CACEt7C,KAAM,cACNq7C,SAAU,MACVC,KAAM,MAER,CACEt7C,KAAM,WACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,SACNq7C,SAAU,MACVC,KAAM,MAER,CACEt7C,KAAM,WACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,QACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,UACNq7C,SAAU,MACVC,KAAM,MAER,CACEt7C,KAAM,SACNq7C,SAAU,KACVC,KAAM,MAER,CACEt7C,KAAM,SACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,UACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,mBACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,+CACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,wBACNq7C,SAAU,QACVC,KAAM,MAER,CACEt7C,KAAM,cACNq7C,SAAU,QACVC,KAAM,MAER,CACEt7C,KAAM,eACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,4BACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,mCACNq7C,SAAU,QACVC,KAAM,MAER,CACEt7C,KAAM,QACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,aACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,wBACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,eACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,UACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,SACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,aACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,eACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,YACNq7C,SAAU,MACVC,KAAM,MAER,CACEt7C,KAAM,WACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,WACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,kBACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,UACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,eACNq7C,SAAU,MACVC,KAAM,MAER,CACEt7C,KAAM,cACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,+CACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,QACNq7C,SAAU,MACVC,KAAM,MAER,CACEt7C,KAAM,YACNq7C,SAAU,MACVC,KAAM,MAER,CACEt7C,KAAM,QACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,WACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,yBACNq7C,SAAU,MACVC,KAAM,MAER,CACEt7C,KAAM,YACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,SACNq7C,SAAU,MACVC,KAAM,MAER,CACEt7C,KAAM,cACNq7C,SAAU,MACVC,KAAM,MAER,CACEt7C,KAAM,uBACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,SACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,aACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,wCACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,WACNq7C,SAAU,MACVC,KAAM,MAER,CACEt7C,KAAM,cACNq7C,SAAU,OACVC,KAAM,MAER,CACEt7C,KAAM,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","sources":["webpack://@descope/flow-components-2.2.39-1769669445404/../../../libs/common/src/constants.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../../libs/common/src/utils/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../../libs/common/src/componentsHelpers/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../../libs/common/src/themeHelpers/componentsThemeManager.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../../libs/common/src/themeHelpers/colorsHelpers.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../../libs/common/src/themeHelpers/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../../libs/common/src/componentsMixins/mixins/createStyleMixin/helpers.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../../libs/common/src/componentsMixins/mixins/createStyleMixin/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../../libs/common/src/componentsMixins/mixins/draggableMixin.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../../libs/common/src/componentsMixins/mixins/componentNameValidationMixin.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../../libs/common/src/componentsMixins/mixins/componentsContextMixin.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../../libs/common/src/componentsMixins/mixins/hoverableMixin.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../../libs/common/src/componentsMixins/mixins/normalizeBooleanAttributesMixin.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../../libs/common/src/baseClasses/baseClasses/createBaseClass.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../../libs/common/src/componentsMixins/helpers/mixinsHelpers.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../../libs/common/src/componentsMixins/mixins/changeMixin.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../../libs/common/src/componentsMixins/mixins/inputEventsDispatchingMixin.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../../libs/common/src/componentsMixins/mixins/inputValidationMixin.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../../libs/common/src/baseClasses/baseClasses/createBaseInputClass.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../../libs/common/src/baseClasses/baseClasses/createBaseConnectorClass.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../../libs/common/src/componentsMixins/mixins/createProxy.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../../libs/common/src/componentsMixins/mixins/proxyInputMixin.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../../libs/common/src/componentsMixins/mixins/portalMixin.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../../libs/common/src/componentsMixins/mixins/createDynamicDataMixin.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-enriched-text/src/component/consts.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-enriched-text/src/component/EnrichedTextClass.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-enriched-text/src/component/helpers.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/helpers/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/constants.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/helpers/componentHelpers.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/helpers/themeHelpers/colorsHelpers.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/helpers/themeHelpers/resetHelpers.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/helpers/themeHelpers/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/mixins/createStyleMixin/helpers.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/mixins/createStyleMixin/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/mixins/draggableMixin.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/mixins/componentNameValidationMixin.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/mixins/componentsContextMixin.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/mixins/hoverableMixin.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/mixins/normalizeBooleanAttributesMixin.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/baseClasses/createBaseClass.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/helpers/mixinsHelpers.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/mixins/createProxy.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/mixins/inputValidationMixin.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/mixins/proxyInputMixin.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/mixins/portalMixin.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/mixins/changeMixin.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/mixins/inputEventsDispatchingMixin.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/mixins/externalInputMixin.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/mixins/externalInputHelpers.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/mixins/inputOverrideValidConstraints.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/baseClasses/createBaseInputClass.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/boolean-fields/descope-boolean-field-internal/BooleanFieldInternal.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/boolean-fields/booleanFieldMixin.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/boolean-fields/commonStyles.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/boolean-fields/descope-checkbox/CheckboxClass.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-text/src/component/TextClass.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-link/src/component/LinkClass.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-text/src/component/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-link/src/component/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-enriched-text/src/component/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/boolean-fields/descope-boolean-field-internal/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/boolean-fields/descope-checkbox/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/boolean-fields/descope-switch-toggle/SwitchToggleClass.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/boolean-fields/descope-switch-toggle/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-loader-linear/LoaderLinearClass.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-loader-linear/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-loader-radial/LoaderRadialClass.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-loader-radial/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-container/ContainerClass.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-container/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-combo-box/src/component/ComboBoxClass.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../../libs/common/src/themeHelpers/resetHelpers.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-combo-box/src/component/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-image/src/component/helpers.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-image/src/component/ImageClass.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-icon/src/component/IconClass.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-button/src/component/ButtonClass.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-button/src/component/clickableMixin.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-button/src/component/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-date-field/consts.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-date-field/date-utils.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-date-field/formats.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-date-field/helpers.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-date-field/descope-calendar/helpers.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-date-field/descope-calendar/CalendarClass.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-date-field/icons.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-date-field/descope-calendar/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-text-field/textFieldMappings.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-text-field/TextFieldClass.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-text-field/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-date-field/DateCounterClass.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-date-field/DateFieldClass.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-date-field/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-divider/DividerClass.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-divider/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-email-field/EmailFieldClass.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-email-field/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/baseClasses/createCssVarImageClass.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-logo/LogoClass.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-logo/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-totp-image/TotpImageClass.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-totp-image/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-notp-image/NotpImageClass.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-notp-image/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-number-field/NumberFieldClass.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-number-field/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-passcode/descope-passcode-internal/helpers.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-passcode/descope-passcode-internal/PasscodeInternal.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-passcode/PasscodeClass.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-passcode/descope-passcode-internal/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-passcode/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-password/passwordDraggableMixin.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-password/PasswordClass.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-password/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-text-area/TextAreaClass.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-text-area/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/phone-fields/CountryCodes.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/phone-fields/descope-phone-field/helpers.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/phone-fields/descope-phone-field/descope-phone-field-internal/PhoneFieldInternal.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/phone-fields/descope-phone-field/descope-phone-field-internal/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/phone-fields/descope-phone-field/PhoneFieldClass.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/phone-fields/descope-phone-field/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/phone-fields/helpers.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/phone-fields/descope-phone-input-box-field/descope-phone-input-box-internal/PhoneFieldInternalInputBox.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/phone-fields/descope-phone-input-box-field/descope-phone-input-box-internal/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/phone-fields/descope-phone-input-box-field/PhoneFieldInputBoxClass.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/phone-fields/descope-phone-input-box-field/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-new-password/descope-new-password-internal/componentName.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-policy-validation/helpers.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-policy-validation/PolicyValidationClass.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-new-password/NewPasswordClass.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-policy-validation/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-new-password/descope-new-password-internal/NewPasswordInternal.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-new-password/descope-new-password-internal/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-new-password/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-recaptcha/RecaptchaClass.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-recaptcha/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-upload-file/helpers.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-upload-file/UploadFileClass.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-upload-file/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/button-selection-group-fields/createBaseButtonSelectionGroupInternalClass.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/button-selection-group-fields/descope-button-selection-group-internal/ButtonSelectionGroupInternalClass.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/button-selection-group-fields/baseButtonSelectionGroup.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/button-selection-group-fields/descope-button-selection-group/ButtonSelectionGroupClass.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/button-selection-group-fields/descope-button-selection-group-internal/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/button-selection-group-fields/descope-button-selection-group-item/ButtonSelectionGroupItemClass.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/button-selection-group-fields/descope-button-selection-group-item/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/button-selection-group-fields/descope-button-selection-group/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/button-selection-group-fields/descope-button-multi-selection-group-internal/ButtonMultiSelectionGroupInternalClass.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/button-selection-group-fields/descope-button-multi-selection-group/ButtonMultiSelectionGroupClass.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/button-selection-group-fields/descope-button-multi-selection-group-internal/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/button-selection-group-fields/descope-button-multi-selection-group/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-grid/descope-grid-text-column/GridTextColumnClass.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-grid/descope-grid-text-column/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-grid/descope-grid-custom-column/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-grid/descope-grid-custom-column/GridCustomColumnClass.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-grid/descope-grid-selection-column/GridSelectionColumnClass.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-grid/descope-grid-selection-column/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-grid/descope-grid-item-details-column/GridItemDetailsColumnClass.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-grid/descope-grid-item-details-column/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-code-snippet/helpers.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-code-snippet/CodeSnippetClass.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-code-snippet/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-grid/helpers.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-grid/GridClass.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-grid/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-multi-select-combo-box/MultiSelectComboBoxClass.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-multi-select-combo-box/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-modal/ModalClass.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-modal/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-notification/descope-notification-container.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-notification/descope-notification-card/NotificationCardClass.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-notification/descope-notification-card/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-notification/NotificationClass.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-notification/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/mapping-fields/descope-mappings-field/descope-mappings-field-internal/MappingsFieldInternal.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/mapping-fields/descope-mappings-field/MappingsFieldClass.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/mapping-fields/descope-mappings-field/descope-mappings-field-internal/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/mapping-fields/descope-mappings-field/descope-mapping-item/MappingItem.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/mapping-fields/descope-mappings-field/descope-mapping-item/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/mapping-fields/descope-mappings-field/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-badge/src/component/BadgeClass.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-user-attribute/UserAttributeClass.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-user-attribute/delete.svg","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-user-attribute/edit.svg","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-badge/src/component/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-image/src/component/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-icon/src/component/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-user-attribute/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-user-auth-method/UserAuthMethodClass.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-user-auth-method/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/mapping-fields/descope-saml-group-mappings/descope-saml-group-mappings-internal/SamlGroupMappingsInternal.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/mapping-fields/descope-saml-group-mappings/SamlGroupMappingsClass.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/mapping-fields/descope-saml-group-mappings/descope-saml-group-mappings-internal/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/mapping-fields/descope-saml-group-mappings/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-radio-group/RadioButtonClass.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-radio-group/RadioGroupClass.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-radio-group/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/mixins/createDynamicDataMixin.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-scopes-list/ScopesListClass.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-list-item/src/component/ListItemClass.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../../libs/common/src/componentsMixins/mixins/activeableMixin.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-list-item/src/component/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-list/src/component/ListClass.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-list/src/component/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-scopes-list/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-third-party-app-logo/ThirdPartyAppLogoClass.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-third-party-app-logo/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-security-questions-setup/SecurityQuestionsSetupClass.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-security-questions-setup/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-security-questions-verify/SecurityQuestionsVerifyClass.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-security-questions-verify/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-hybrid-field/helpers.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-hybrid-field/HybridFieldClass.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-hybrid-field/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-alert/AlertClass.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-alert/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-hcaptcha/HcaptchaClass.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/components/descope-hcaptcha/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/theme/globals.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../../libs/theme-globals/src/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-button/src/theme.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/theme/components/inputWrapper.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/theme/components/textField.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/theme/components/password.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/theme/components/numberField.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/theme/components/emailField.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/theme/components/textArea.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/theme/components/checkbox.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/theme/components/switchToggle.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/theme/components/container.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/theme/components/logo.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/theme/components/totpImage.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/theme/components/notpImage.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-text/src/theme.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-link/src/theme.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-enriched-text/src/theme.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/theme/components/divider.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/theme/components/passcode.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/theme/components/loader/loaderLinear.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/theme/components/loader/loaderRadial.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../../libs/theme-input-wrapper/src/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-combo-box/src/theme.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/theme/components/phoneField.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/theme/components/phoneInputBoxField.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/theme/components/newPassword.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/theme/components/uploadFile.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/theme/components/buttonSelectionGroup/buttonSelectionGroupItem.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/theme/components/buttonSelectionGroup/baseButtonSelectionGroup.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/theme/components/buttonSelectionGroup/buttonSelectionGroup.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/theme/components/buttonSelectionGroup/buttonMultiSelectionGroup.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/theme/components/modal.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/theme/components/grid.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/theme/components/notificationCard.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/theme/components/multiSelectComboBox.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-badge/src/theme.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-avatar/src/component/AvatarClass.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-avatar/src/theme.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/theme/components/mappingsField.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/theme/components/userAttribute.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/theme/components/userAuthMethod.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/theme/components/samlGroupMappings.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/theme/components/policyValidation.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-icon/src/theme.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-image/src/theme.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/theme/components/codeSnippet.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/theme/components/radioGroup/radioGroup.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/theme/components/radioGroup/radioButton.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/theme/components/calendar.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/theme/components/dateField.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-apps-list/src/component/AppsListClass.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-apps-list/src/theme.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-list/src/theme.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-list-item/src/theme.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/theme/components/scopesList.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/theme/components/thirdPartyAppLogo.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/theme/components/securityQuestionsSetup.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/theme/components/securityQuestionsVerify.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/theme/components/hybridField.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/theme/components/alert.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/theme/components/hcaptcha.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-autocomplete-field/src/component/descope-autocomplete-field-internal/AutocompleteFieldInternal.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-autocomplete-field/src/component/AutocompleteFieldClass.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-autocomplete-field/src/theme.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-address-field/src/connectors/google.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-address-field/src/connectors/googleScriptInit.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-address-field/src/connectors/radar.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-address-field/src/component/descope-address-field-internal/AddressFieldInternal.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../../libs/common/src/componentsMixins/mixins/connectorMixin.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-address-field/src/component/AddressFieldClass.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-address-field/src/theme.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-timer/src/component/helpers.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-timer/src/component/TimerClass.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-timer/src/theme.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-timer-button/src/component/TimerButtonClass.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-timer-button/src/theme.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-password-strength/src/component/PasswordStrengthClass.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-password-strength/src/theme.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-collapsible-container/src/component/CollapsibleContainerClass.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-collapsible-container/src/theme.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-recovery-codes/src/component/RecoveryCodesClass.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-recovery-codes/src/theme.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-outbound-apps/src/component/OutboundAppsClass.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-outbound-apps/src/theme.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-outbound-app-button/src/component/OutboundAppButtonClass.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-outbound-app-button/src/theme.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-trusted-devices/src/component/helpers.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-trusted-devices/src/component/icons/desktop-device-light.svg","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-trusted-devices/src/component/icons/desktop-device-dark.svg","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-trusted-devices/src/component/icons/mobile-device-light.svg","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-trusted-devices/src/component/icons/mobile-device-dark.svg","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-trusted-devices/src/component/icons/tablet-device-light.svg","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-trusted-devices/src/component/icons/tablet-device-dark.svg","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-trusted-devices/src/component/icons/unknown-device-light.svg","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-trusted-devices/src/component/icons/unknown-device-dark.svg","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-trusted-devices/src/component/TrustedDevicesClass.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-trusted-devices/src/theme.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-tooltip/src/component/TooltipClass.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-tooltip/src/theme.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/theme/components/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/theme/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../src/darkTheme.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-autocomplete-field/src/component/descope-autocomplete-field-internal/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../../libs/common/src/utils/asyncDebounce.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-autocomplete-field/src/component/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-address-field/src/component/descope-address-field-internal/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-address-field/src/component/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-avatar/src/component/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-apps-list/src/component/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-collapsible-container/src/component/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-outbound-app-button/src/component/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-outbound-apps/src/component/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-password-strength/src/component/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-ponyhot/src/component/HoneypotClass.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-ponyhot/src/component/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-recovery-codes/src/component/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-timer/src/component/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-timer-button/src/component/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-tooltip/src/component/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-trusted-devices/src/component/index.js","webpack://@descope/flow-components-2.2.39-1769669445404/../../components/descope-password-strength/src/component/calcScore.js"],"sourcesContent":["export const DESCOPE_PREFIX = 'descope';\nexport const CSS_SELECTOR_SPECIFIER_MULTIPLY = 5;\nexport const BASE_THEME_SECTION = 'host';\nexport const PORTAL_THEME_PREFIX = '@';\n","export { asyncDebounce } from './asyncDebounce';\n\nexport const kebabCase = (str) =>\n str\n .replace(/([a-z])([A-Z])/g, '$1-$2')\n .replace(/[\\s_.]+/g, '-')\n .toLowerCase();\n\nexport const kebabCaseJoin = (...args) =>\n kebabCase(args.filter((arg) => !!arg).join('-'));\n\nexport const upperFirst = (str) => str.charAt(0).toUpperCase() + str.slice(1);\n\nexport const camelCaseJoin = (...args) =>\n args\n .filter(Boolean)\n .map((arg, index) => (index === 0 ? arg : upperFirst(arg)))\n .join('');\n\nexport const compose =\n (...fns) =>\n (val) =>\n fns.reduceRight((res, fn) => fn(res), val);\n\nexport const isFunction = (maybeFunc) => typeof maybeFunc === 'function';\n\nexport const isUrl = (maybeUrl) => {\n try {\n // eslint-disable-next-line no-new\n new URL(maybeUrl);\n\n return true;\n } catch (e) {\n return false;\n }\n};\n\n/**\n * Compares two arrays unorderedly.\n * @param {Array} arr1 - The first array to compare.\n * @param {Array} arr2 - The second array to compare.\n * @returns {boolean} - Returns true if the arrays are equal unorderedly, false otherwise.\n */\nexport const compareArraysUnordered = (arr1, arr2) => {\n if (!Array.isArray(arr1) || !Array.isArray(arr2)) {\n return false;\n }\n\n if (arr1.length !== arr2.length) {\n return false;\n }\n\n const sortedArr1 = arr1.slice().sort();\n const sortedArr2 = arr2.slice().sort();\n\n for (let i = 0; i < sortedArr1.length; i++) {\n if (sortedArr1[i] !== sortedArr2[i]) {\n return false;\n }\n }\n\n return true;\n};\n\nexport const toTitle = (str) =>\n str\n .replace(/([A-Z])/g, ' $1')\n .trim()\n .split(' ')\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join(' ');\n","import { kebabCaseJoin } from '../utils';\nimport { DESCOPE_PREFIX } from '../constants';\n\nexport const observeAttributes = (\n ele,\n callback,\n { excludeAttrs = [], includeAttrs = [] },\n) => {\n // sync all attrs on init\n const filteredAttrs = Array.from(ele.attributes)\n .filter(\n (attr) =>\n !excludeAttrs.includes(attr.name) &&\n (!includeAttrs.length || includeAttrs.includes(attr.name)),\n )\n .map((attr) => attr.name);\n\n callback(filteredAttrs);\n\n const observer = new MutationObserver((mutationsList) => {\n mutationsList.forEach((mutation) => {\n if (\n mutation.type === 'attributes' &&\n !excludeAttrs.includes(mutation.attributeName) &&\n (!includeAttrs.length || includeAttrs.includes(mutation.attributeName))\n ) {\n callback([mutation.attributeName]);\n }\n });\n });\n\n observer.observe(ele, { attributes: true });\n};\n\n// calling the callback with this object: { addedNodes, removedNodes }\nexport const observeChildren = (ele, callback) => {\n callback({ addedNodes: Array.from(ele.children), removedNodes: [] });\n\n const observer = new MutationObserver((mutationsList) => {\n mutationsList.forEach((mutation) => {\n if (mutation.type === 'childList' || mutation.type === 'characterData') {\n callback(mutation);\n }\n });\n });\n\n observer.observe(ele, {\n childList: true,\n characterData: true,\n subtree: true,\n });\n};\n\nconst createSyncAttrsCb =\n (srcEle, targetEle, mapAttrs = {}) =>\n (attrNames) => {\n attrNames.forEach((attrName) => {\n const targetAttrName = mapAttrs[attrName] || attrName;\n const srcAttrVal = srcEle.getAttribute(attrName);\n\n if (!targetEle) return;\n\n if (srcAttrVal !== null) {\n if (targetEle.getAttribute(targetAttrName) !== srcAttrVal) {\n targetEle.setAttribute(targetAttrName, srcAttrVal);\n }\n } else {\n targetEle.removeAttribute(targetAttrName);\n }\n });\n };\n\nexport const syncAttrs = (ele1, ele2, options) => {\n observeAttributes(ele1, createSyncAttrsCb(ele1, ele2), options);\n observeAttributes(ele2, createSyncAttrsCb(ele2, ele1), options);\n};\n\nexport const getComponentName = (name) => kebabCaseJoin(DESCOPE_PREFIX, name);\n\nexport const getCssVarName = (...args) => `--${kebabCaseJoin(...args)}`;\n\nexport const forwardAttrs = (source, dest, options = {}) => {\n observeAttributes(\n source,\n createSyncAttrsCb(source, dest, options.mapAttrs),\n options,\n );\n};\n\nexport const forwardProps = (src, target, props = []) => {\n if (!props.length) return;\n\n const config = props.reduce(\n (acc, prop) =>\n Object.assign(acc, {\n [prop]: {\n get() {\n return src[prop];\n },\n set(v) {\n // eslint-disable-next-line no-param-reassign\n src[prop] = v;\n },\n },\n }),\n {},\n );\n\n Object.defineProperties(target, config);\n};\n\nexport const injectStyle = (cssString, ref, { prepend = false } = {}) => {\n let style;\n\n try {\n style = new CSSStyleSheet();\n } catch (e) {\n // fallback for browsers that don't support CSSStyleSheet\n return generateStyleTagFallback(cssString, ref, { prepend });\n }\n\n const _ref = ref?.shadowRoot || ref;\n if (cssString) {\n style.replaceSync(cssString);\n }\n if (_ref) {\n const adoptedStyleSheets = [...(_ref.adoptedStyleSheets || [])];\n adoptedStyleSheets[prepend ? 'unshift' : 'push'](style);\n\n _ref.adoptedStyleSheets = adoptedStyleSheets;\n }\n\n if (cssString && !style.cssRules[0]?.style) {\n console.warn(\n `No style rules were created, make sure the CSS is valid:\\n \"${cssString}\"`,\n );\n }\n\n return style;\n};\n\n// we should mimic the CSSStyleSheet API for the fns we are using\nclass CSSStyleSheetMock {\n constructor(cssString, ref, { prepend = false } = {}) {\n this.styleEle = document.createElement('style');\n this.styleEle.textContent = cssString;\n this.styleEle.setAttribute('nonce', window.DESCOPE_NONCE);\n this.ref = ref?.shadowRoot || ref;\n\n if (!this.ref) {\n return;\n }\n\n if (prepend) {\n this.ref.prepend(this.styleEle);\n } else {\n this.ref.append(this.styleEle);\n }\n }\n\n replaceSync(cssString) {\n this.styleEle.textContent = cssString;\n }\n\n get cssRules() {\n return this.styleEle.sheet?.cssRules;\n }\n}\n\nconst generateStyleTagFallback = (cssString, ref, { prepend = false } = {}) =>\n new CSSStyleSheetMock(cssString, ref, { prepend });\n\nexport const limitAbbreviation = (str, limit = 2) =>\n str\n .trim()\n .split(' ')\n .splice(0, limit)\n .map((s) => s[0]?.toUpperCase())\n .join('');\n","class ComponentsThemeManager {\n static mountOnPropName = 'DescopeThemeManager';\n\n #themes = {};\n\n #currentThemeName = 'light';\n\n #callbacks = new Set();\n\n #notify() {\n this.#callbacks.forEach((cb) => cb?.());\n }\n\n get currentThemeName() {\n return this.#currentThemeName;\n }\n\n set currentThemeName(themeName) {\n this.#currentThemeName = themeName;\n this.#notify();\n }\n\n get currentTheme() {\n return this.#themes[this.currentThemeName];\n }\n\n onCurrentThemeChange(cb) {\n this.#callbacks.add(cb);\n\n return () => {\n this.#callbacks.delete(cb);\n };\n }\n\n set themes(themes) {\n this.#themes = themes;\n this.#notify();\n }\n\n get hasThemes() {\n return !!Object.keys(this.#themes).length;\n }\n}\n\nexport const componentsThemeManager = new ComponentsThemeManager();\n","import Color from 'color';\n\nconst colorGaps = {\n darkLight: 0.4,\n highlight: 0.8,\n contrast: 1,\n edgeColor: {\n darkLight: 0.25,\n highlight: 0.1,\n },\n};\n\nconst darken = (c, percentage) => c.darken(percentage).hex();\n\nconst contrast = (c) => {\n const isDark = c.isDark();\n return c\n .mix(Color(isDark ? 'white' : 'black'), colorGaps.contrast)\n .saturate(1)\n .hex();\n};\n\nconst lighten = (c, percentage) => {\n const isDark = c.lightness() < 0.5;\n\n if (isDark) {\n return c.lightness(percentage * 100).hex();\n }\n\n return c.lighten(percentage).hex();\n};\n\nconst isNearBlack = (color) => color.luminosity() < 0.01;\nconst isNearWhite = (color) => color.luminosity() > 0.99;\n\nconst generateDarkColor = (color, theme) => {\n if (theme === 'dark') {\n return isNearWhite(color)\n ? darken(color, colorGaps.edgeColor.darkLight)\n : lighten(color, colorGaps.darkLight);\n }\n\n return isNearBlack(color)\n ? lighten(color, colorGaps.edgeColor.darkLight)\n : darken(color, colorGaps.darkLight);\n};\n\nconst generateLightColor = (color, theme) => {\n if (theme === 'dark') {\n return isNearBlack(color)\n ? lighten(color, colorGaps.edgeColor.darkLight)\n : darken(color, colorGaps.darkLight);\n }\n\n return isNearWhite(color)\n ? darken(color, colorGaps.edgeColor.darkLight)\n : lighten(color, colorGaps.darkLight);\n};\n\nconst generateHighlightColor = (color, theme) => {\n if (theme === 'dark') {\n return isNearBlack(color)\n ? lighten(color, colorGaps.edgeColor.highlight)\n : darken(color, colorGaps.highlight);\n }\n\n return isNearWhite(color)\n ? darken(color, colorGaps.edgeColor.highlight)\n : lighten(color, colorGaps.highlight);\n};\n\nexport const genColor = (color, theme) => {\n const mainColor = new Color(color.main || color);\n\n const res = {\n main: mainColor.hex(),\n dark: color.dark || generateDarkColor(mainColor, theme),\n light: color.light || generateLightColor(mainColor, theme),\n highlight: color.highlight || generateHighlightColor(mainColor, theme),\n contrast: color.contrast || contrast(mainColor),\n };\n\n return res;\n};\n\nexport const genColors = (colors) => {\n return Object.keys(colors).reduce((acc, colorName) => {\n const currentColor = colors[colorName];\n\n return Object.assign(acc, {\n [colorName]: genColor(currentColor),\n });\n }, {});\n};\n","import merge from 'lodash.merge';\nimport {\n BASE_THEME_SECTION,\n DESCOPE_PREFIX,\n PORTAL_THEME_PREFIX,\n} from '../constants';\nimport { isUrl, kebabCase } from '../utils';\nimport { getComponentName, getCssVarName } from '../componentsHelpers';\n\nconst getVarName = (path) => getCssVarName(DESCOPE_PREFIX, ...path);\n\n// lodash.set alternative\nconst set = (obj, path, value) => {\n const pathArray = Array.isArray(path) ? path : path.match(/([^[.\\]])+/g);\n\n pathArray.reduce((acc, key, i) => {\n if (acc[key] === undefined) acc[key] = {};\n if (i === pathArray.length - 1) acc[key] = value;\n return acc[key];\n }, obj);\n\n return obj;\n};\n\nconst transformTheme = (theme, path, getTransformation) => {\n return Object.entries(theme).reduce((acc, [key, val]) => {\n if (val?.constructor !== Object) {\n return merge(acc, getTransformation(path.concat(key), val));\n }\n return merge(acc, transformTheme(val, [...path, key], getTransformation));\n }, {});\n};\n\nconst stringifyArray = (strArr) =>\n strArr.map((str) => (str.includes(' ') ? `\"${str}\"` : str)).join(', ');\n\nconst getCssVarValue = (val) => {\n switch (true) {\n case Array.isArray(val):\n return stringifyArray(val);\n case isUrl(val):\n return `url(${val})`;\n default:\n return val;\n }\n};\n\nexport const themeToCSSVarsObj = (theme) =>\n transformTheme(theme, [], (path, val) => ({\n [getVarName(path)]: getCssVarValue(val),\n }));\n\nexport const getThemeRefs = (theme, prefix) =>\n transformTheme(theme, [], (path) =>\n set({}, path, `var(${getVarName(prefix ? [prefix, ...path] : path)})`),\n );\n\nexport const getThemeVars = (theme, prefix) =>\n transformTheme(theme, [], (path) =>\n set({}, path, getVarName(prefix ? [prefix, ...path] : path)),\n );\n\nexport const globalsThemeToStyle = (theme, themeName = '') => {\n const style = Object.entries(themeToCSSVarsObj(theme)).reduce(\n (acc, entry) => `${acc}${entry.join(':')};\\n`,\n '',\n );\n\n if (!themeName) return style;\n\n return `*[data-theme=\"${themeName}\"] {${style}}`;\n};\n\nfunction splitAmpersands(str) {\n const match = str.match(/^(&+)?(.*)$/);\n return [match[1] || \"\", (match[2] || \"\")];\n}\n\n// st attributes are also using selector multiplication\n// so we need to limit the multiplication\nconst MAX_SELECTOR_MULTIPLY = 3;\n\nconst componentsThemeToStyleObj = (componentsTheme) =>\n transformTheme(componentsTheme, [], (path, val) => {\n const [component, ...restPath] = path;\n const property = restPath.pop();\n const componentName = getComponentName(component);\n\n if (property === 'undefined') {\n // eslint-disable-next-line no-console\n console.warn(componentName, `theme value: \"${val}\" is mapped to an invalid property`);\n }\n\n // we need a support for portal components theme (e.g. overlay)\n // this allows us to generate those themes under different sections\n // if the theme has root level attribute that starts with #\n // we are generating a new theme\n let themeName = BASE_THEME_SECTION;\n\n if (restPath[0] && restPath[0].startsWith(PORTAL_THEME_PREFIX)) {\n themeName = restPath.shift();\n }\n\n // do not start with underscore -> key:value, must have 2 no underscore attrs in a row\n // starts with underscore -> attribute selector\n const attrsSelector = restPath.reduce((acc, section, idx) => {\n const [ampersands, content] = splitAmpersands(section);\n const selectorMultiplier = Math.min(\n ampersands.length + 1, // if there are no & we need to multiply by 1\n MAX_SELECTOR_MULTIPLY\n );\n\n if (content.startsWith('_')) return acc + `[${kebabCase(content.replace(/^_/, ''))}=\"true\"]`.repeat(selectorMultiplier);\n\n const nextSection = restPath[idx + 1];\n\n if (typeof nextSection !== 'string' || nextSection.startsWith('_') || nextSection.startsWith('&')) {\n // eslint-disable-next-line no-console\n console.error(\n 'theme generator',\n `your theme structure is invalid, attribute \"${section}\" is followed by \"${nextSection}\" which is not allowed`\n );\n return acc;\n }\n\n return acc + `[${kebabCase(content)}=\"${restPath.splice(idx + 1, 1).join('')}\"]`.repeat(selectorMultiplier);\n }, '');\n\n const selector = `:host${attrsSelector ? `(${attrsSelector})` : ''}`;\n\n return {\n [componentName]: {\n [themeName]: {\n [selector]: {\n [property]: getCssVarValue(val),\n },\n },\n },\n };\n });\n\nconst componentsThemeToStyle = (componentsTheme) =>\n Object.entries(componentsTheme).reduce(\n (acc, [selector, vars]) =>\n `${acc}${selector} { \\n${Object.entries(vars)\n .map(([key, val]) => `${key}: ${val}`)\n .join(';\\n')} \\n}\\n\\n`,\n '',\n );\n\nexport const createComponentsTheme = (componentsTheme) => {\n const styleObj = componentsThemeToStyleObj(componentsTheme);\n\n return Object.keys(styleObj).reduce((acc, componentName) => {\n const componentThemes = styleObj[componentName];\n\n return Object.assign(acc, {\n [componentName]: Object.keys(componentThemes).reduce(\n (res, theme) =>\n Object.assign(res, {\n [theme]: componentsThemeToStyle(componentThemes[theme]),\n }),\n {},\n ),\n });\n }, {});\n};\n\nexport const themeToStyle = ({ globals, components }, themeName) => ({\n globals: globalsThemeToStyle(globals, themeName),\n components: createComponentsTheme(components),\n});\n\n// allows to generate css variables with nested fallbacks\nexport const useVar = (...varNames) => {\n return varNames.reduceRight((acc, value) => {\n if (value.startsWith('--')) return `var(${value}${acc ? `, ${acc}` : acc})`;\n\n return `${value}${acc ? `, ${acc}` : acc}`;\n }, '');\n};\n\nexport const createHelperVars = (theme, prefix) => {\n const res = transformTheme(theme, [], (path, value) => {\n const modifiedPath = [...path];\n const property = modifiedPath.splice(-1);\n const varName = getCssVarName(prefix, property);\n\n const vars = { [property]: varName };\n const useVars = { [property]: useVar(varName) };\n\n return { theme: set({}, [...modifiedPath, varName], value), useVars, vars };\n });\n\n return [res.theme, res.useVars, res.vars];\n};\n\nexport { componentsThemeManager } from './componentsThemeManager';\nexport * from './colorsHelpers';\nexport * from './resetHelpers';\n","import { camelCaseJoin, isFunction, kebabCase, kebabCaseJoin } from '../../../utils';\nimport { getCssVarName } from '../../../componentsHelpers';\n\nconst getOverrideCssVarName = (origVarName) => `${origVarName}__override`;\n\nconst createCssVar = (varName, fallback, createOverride = false) => {\n const ret = `var(${varName}${fallback ? `, ${fallback}` : ''})`;\n\n if (!createOverride) return ret;\n\n // we are generating an override css var to allow override with fallback to the default var\n const overrideVarName = getOverrideCssVarName(varName);\n return `var(${overrideVarName}, ${ret})`;\n};\n\nconst createCssSelector = (baseSelector = '', relativeSelectorOrSelectorFn = '') =>\n isFunction(relativeSelectorOrSelectorFn)\n ? relativeSelectorOrSelectorFn(baseSelector)\n : `${baseSelector}${/^[A-Za-z]/.test(relativeSelectorOrSelectorFn)\n ? ` ${relativeSelectorOrSelectorFn}`\n : relativeSelectorOrSelectorFn\n }`;\n\nclass StyleBuilder {\n constructor() {\n this.styleMap = new Map();\n }\n\n add(selector, property, value) {\n if (!this.styleMap.has(selector)) {\n this.styleMap.set(selector, []);\n }\n\n this.styleMap.set(selector, [...this.styleMap.get(selector), { property, value }]);\n }\n\n toString() {\n return Array.from(this.styleMap.entries()).reduce((acc, [selector, propValArr]) => {\n const properties = propValArr\n .map(({ property, value }) => `${property}: ${value}`)\n .join(';\\n');\n\n return `${acc}${selector} { \\n${properties} \\n}\\n\\n`;\n }, '');\n }\n}\n\nconst normalizeConfig = (attr, config) => {\n const defaultMapping = { selector: '', property: kebabCase(attr) };\n\n if (!config || !Object.keys(config).length) return [defaultMapping];\n\n if (Array.isArray(config)) return config.map((entry) => ({ ...defaultMapping, ...entry }));\n\n return [{ ...defaultMapping, ...config }];\n};\n\nconst getFallbackVarName = (origVarName, suffix = 'fallback') => kebabCaseJoin(origVarName, suffix);\n\nexport const createStyle = (componentName, baseSelector, mappings) => {\n const style = new StyleBuilder();\n // we generate all the fallback vars recursively\n const createFallbackVar = (fallback, origVarName) => {\n if (!fallback) return '';\n if (typeof fallback === 'string') return fallback;\n\n const fallbackVarName = getFallbackVarName(origVarName, fallback?.suffix);\n return createCssVar(fallbackVarName, createFallbackVar(fallback.fallback, fallbackVarName));\n };\n\n Object.keys(mappings).forEach((attr) => {\n const attrConfig = normalizeConfig(attr, mappings[attr]);\n\n const cssVarName = getCssVarName(componentName, attr);\n\n attrConfig.forEach(\n ({ selector: relativeSelectorOrSelectorFn, property, important, fallback }) => {\n const fallbackValue = createFallbackVar(fallback, cssVarName);\n style.add(\n createCssSelector(baseSelector, relativeSelectorOrSelectorFn),\n isFunction(property) ? property() : property,\n createCssVar(cssVarName, fallbackValue, true) + (important ? '!important' : '')\n );\n }\n );\n });\n\n return style.toString();\n};\n\nconst getFallbackVarsNames = (attr, origVarName, { fallback }) => {\n if (!fallback) return {};\n\n const fallbackVarName = getFallbackVarName(origVarName, fallback.suffix);\n const fallbackAttrName = camelCaseJoin(attr, fallback.suffix || 'fallback');\n return {\n [fallbackAttrName]: fallbackVarName,\n ...getFallbackVarsNames(fallbackAttrName, fallbackVarName, fallback),\n };\n};\n\nexport const createCssVarsList = (componentName, mappings) =>\n Object.keys(mappings).reduce((acc, attr) => {\n const varName = getCssVarName(componentName, attr);\n\n return Object.assign(\n acc,\n { [attr]: varName },\n // we are exposing the override css var names, the convention is to add 'Override' suffix to the attribute name\n { [attr + 'Override']: getOverrideCssVarName(varName) },\n getFallbackVarsNames(attr, varName, mappings[attr])\n );\n }, {});\n\n// on some cases we need a selector to be more specific than another\n// for this we have this fn that generate a class selector multiple times\nexport const createClassSelectorSpecifier = (className, numOfRepeats) => `.${className}`.repeat(numOfRepeats);\n","import {\n BASE_THEME_SECTION,\n CSS_SELECTOR_SPECIFIER_MULTIPLY,\n} from '../../../constants';\nimport { kebabCaseJoin } from '../../../utils';\nimport {\n getCssVarName,\n injectStyle,\n observeAttributes,\n} from '../../../componentsHelpers';\nimport { componentsThemeManager } from '../../../themeHelpers';\nimport {\n createStyle,\n createCssVarsList,\n createClassSelectorSpecifier,\n} from './helpers';\n\nconst STYLE_OVERRIDE_ATTR_PREFIX = 'st';\n\nexport const createStyleMixin =\n ({ mappings = {}, componentNameOverride = '' }) =>\n (superclass) => {\n const componentName = componentNameOverride || superclass.componentName;\n\n return class CustomStyleMixinClass extends superclass {\n static get cssVarList() {\n return {\n ...superclass.cssVarList,\n ...createCssVarsList(componentName, {\n ...mappings,\n }),\n };\n }\n\n #overrideStyleEle;\n\n #themeStyleEle;\n\n #disconnectThemeManager;\n\n #componentNameSuffix;\n\n #themeSection;\n\n #rootElement;\n\n #baseSelector;\n\n #styleAttributes;\n\n #getRootElement;\n\n // we are using this mixin also for portalMixin\n // so we should be able to inject styles to other DOM elements\n // this is why we need to support these overrides\n constructor({\n getRootElement,\n componentNameSuffix = '',\n themeSection = BASE_THEME_SECTION,\n baseSelector,\n } = {}) {\n super();\n this.#componentNameSuffix = componentNameSuffix;\n this.#themeSection = themeSection;\n this.#baseSelector = baseSelector ?? this.baseSelector;\n this.#getRootElement = getRootElement;\n\n this.#styleAttributes = Object.keys(\n CustomStyleMixinClass.cssVarList,\n ).map((key) =>\n kebabCaseJoin(STYLE_OVERRIDE_ATTR_PREFIX, componentNameSuffix, key),\n );\n }\n\n // eslint-disable-next-line class-methods-use-this\n get #componentTheme() {\n return componentsThemeManager.currentTheme?.[componentName] || '';\n }\n\n #onComponentThemeChange() {\n this.#themeStyleEle.replaceSync(\n this.#componentTheme[this.#themeSection],\n );\n this.currentThemeName = componentsThemeManager.currentThemeName;\n // `onThemeChange` - This function is a hook for the component, so it can be implemented in the component\n // and is executed once theme is change.\n this.onThemeChange?.(componentsThemeManager.currentThemeName);\n }\n\n #createComponentTheme() {\n this.#themeStyleEle = injectStyle('', this.#rootElement, {\n prepend: true,\n });\n this.#disconnectThemeManager =\n componentsThemeManager.onCurrentThemeChange(\n this.#onComponentThemeChange.bind(this),\n );\n this.#onComponentThemeChange();\n }\n\n #createOverridesStyle() {\n if (this.#styleAttributes.length) {\n let classSpecifier = createClassSelectorSpecifier(\n componentName,\n CSS_SELECTOR_SPECIFIER_MULTIPLY,\n );\n const elementId = this.getAttribute('id');\n if (elementId) {\n // basically this is enough to make the selector more specific\n // but just in case there is no id, we will also add the class multiple times\n classSpecifier += `#${CSS.escape(elementId)}`;\n }\n\n this.#overrideStyleEle = injectStyle(\n `:host(${classSpecifier}) {}`,\n this.#rootElement,\n );\n }\n }\n\n #setAttrOverride(attrName, value) {\n const style = this.#overrideStyleEle.cssRules[0].style;\n\n if (!style) return;\n\n const varName = getCssVarName(\n componentName,\n attrName.replace(new RegExp(`^${STYLE_OVERRIDE_ATTR_PREFIX}-`), ''),\n );\n\n if (value) style?.setProperty(varName, value);\n else {\n style?.removeProperty(varName);\n this.removeAttribute(attrName);\n }\n }\n\n #updateOverridesStyle(attrs = []) {\n attrs.forEach((attr) => {\n if (this.#styleAttributes.includes(attr)) {\n this.#setAttrOverride(attr, this.getAttribute(attr));\n }\n });\n }\n\n #createMappingStyle() {\n if (Object.keys(mappings).length) {\n const style = createStyle(\n kebabCaseJoin(componentName, this.#componentNameSuffix),\n this.#baseSelector,\n mappings,\n );\n\n injectStyle(style, this.#rootElement, { prepend: true });\n }\n }\n\n #addClassName(className) {\n (\n this.#rootElement?.classList ||\n this.#rootElement?.host?.classList ||\n this.classList\n ).add(className);\n }\n\n async init() {\n super.init?.();\n if (this.shadowRoot?.isConnected || !this.shadowRoot) {\n this.#rootElement =\n (await this.#getRootElement?.(this)) || this.shadowRoot;\n\n this.#addClassName(componentName);\n\n this.#createMappingStyle();\n this.#createComponentTheme();\n this.#createOverridesStyle();\n\n // this is instead attributeChangedCallback because we cannot use static methods in this case\n observeAttributes(this, this.#updateOverridesStyle.bind(this), {});\n }\n }\n\n disconnectedCallback() {\n super.disconnectedCallback?.();\n\n this.#disconnectThemeManager?.();\n }\n };\n };\n","import { injectStyle } from '../../componentsHelpers'\nexport const draggableMixin = (superclass) =>\n class DraggableMixinClass extends superclass {\n constructor() {\n super();\n\n injectStyle(`:host([draggable=\"true\"]) * { cursor: inherit!important }`, this);\n }\n\n get isDraggable() {\n return this.hasAttribute('draggable') && this.getAttribute('draggable') !== 'false';\n }\n\n init() {\n // because we are delegating the focus from the outer component,\n // the D&D is not working well in the page editor\n // in order to solve it we are making the inner component focusable on mouse down\n // and removing it on complete\n this.addEventListener('mousedown', (e) => {\n if (this.isDraggable) {\n const prevTabIndex = this.baseElement.getAttribute('tabindex');\n this.baseElement.setAttribute('tabindex', '-1');\n\n const onComplete = () => {\n if (prevTabIndex) this.baseElement.setAttribute('tabindex', prevTabIndex)\n else this.baseElement.removeAttribute('tabindex');\n\n e.target.removeEventListener('mouseup', onComplete);\n e.target.removeEventListener('dragend', onComplete);\n };\n\n e.target.addEventListener('mouseup', onComplete, { once: true });\n e.target.addEventListener('dragend', onComplete, { once: true });\n }\n });\n\n super.init?.();\n }\n };\n","export const componentNameValidationMixin = (superclass) =>\n class ComponentNameValidationMixinClass extends superclass {\n #checkComponentName() {\n const currentComponentName = this.localName;\n\n if (!superclass.componentName) {\n throw Error(\n `component name is not defined on super class, make sure you have a static get for \"componentName\"`\n );\n }\n\n if (currentComponentName !== superclass.componentName) {\n throw Error(\n `component name mismatch, expected \"${superclass.componentName}\", current \"${currentComponentName}\"`\n );\n }\n }\n\n init() {\n super.init?.();\n this.#checkComponentName();\n }\n };\n","export const componentsContextMixin = (superclass) =>\n class ComponentsContextMixinClass extends superclass {\n updateComponentsContext(componentsContext) {\n this.dispatchEvent(\n new CustomEvent('components-context', {\n bubbles: true,\n composed: true,\n detail: componentsContext,\n })\n );\n }\n };\n","export const hoverableMixin = (superclass) =>\n class HoverableMixinClass extends superclass {\n init() {\n super.init?.();\n\n (this.baseElement || this).addEventListener('mouseover', (e) => {\n this.setAttribute('hover', 'true');\n e.target.addEventListener(\n 'mouseleave',\n () => this.removeAttribute('hover'),\n {\n once: true,\n },\n );\n });\n }\n };\n","import { observeAttributes } from '../../componentsHelpers';\n\nconst booleanAttributesList = [\n 'readonly',\n 'focused',\n 'invalid',\n 'has-label',\n 'required',\n 'disabled',\n 'checked',\n 'has-helper',\n 'has-value',\n 'step-buttons-visible',\n 'hover',\n 'has-error-message',\n 'focus-ring',\n 'opened',\n 'active',\n 'password-visible',\n 'opening',\n 'closing',\n 'has-no-options',\n 'loading',\n 'allow-custom-value',\n 'collapsed',\n];\n\nconst isBooleanAttribute = (attr) => {\n return booleanAttributesList.includes(attr);\n};\n// we want all the valueless attributes to have \"true\" value\n// and all the falsy attribute to be removed\nexport const normalizeBooleanAttributesMixin = (superclass) =>\n class NormalizeBooleanAttributesMixinClass extends superclass {\n init() {\n super.init?.();\n\n observeAttributes(\n this,\n (attrs) =>\n attrs.forEach((attr) => {\n const attrVal = this.getAttribute(attr);\n\n if (isBooleanAttribute(attr)) {\n if (attrVal === '') {\n this.setAttribute(attr, 'true');\n } else if (attrVal === 'false') {\n this.removeAttribute(attr);\n }\n } else if (!attrVal) {\n // eslint-disable-next-line no-console\n console.debug(\n `attribute \"${attr}\" has no value, should it be added to the boolean attributes list?`\n );\n }\n }),\n {}\n );\n }\n };\n","import { compose } from '../../utils';\nimport { componentNameValidationMixin } from '../../componentsMixins/mixins/componentNameValidationMixin';\nimport { componentsContextMixin } from '../../componentsMixins/mixins/componentsContextMixin';\nimport { hoverableMixin } from '../../componentsMixins/mixins/hoverableMixin';\nimport { normalizeBooleanAttributesMixin } from '../../componentsMixins/mixins/normalizeBooleanAttributesMixin';\n\nexport const createBaseClass = ({ componentName, baseSelector = '' }) => {\n class DescopeBaseClass extends HTMLElement {\n static get componentName() {\n return componentName;\n }\n\n #baseElement;\n\n #isInit = true;\n\n // base selector is the selector for the component wrapper,\n // it's the highest element that is relevant for the layout\n // eslint-disable-next-line class-methods-use-this\n get baseSelector() {\n return baseSelector;\n }\n\n // this is the base element, which returned by querying the base selector\n get baseElement() {\n this.#baseElement ??= this.baseSelector\n ? this.rootElement.querySelector(this.baseSelector)\n : this;\n\n if (!this.#baseElement) {\n // eslint-disable-next-line no-console\n console.warn('missing base element for component', this.localName);\n }\n return this.#baseElement;\n }\n\n // this is the component root level element,\n // it can be either a shadow root or the component's node from the light DOM\n get rootElement() {\n return this.shadowRoot || this;\n }\n\n get name() {\n return this.getAttribute('name');\n }\n\n connectedCallback() {\n super.connectedCallback?.();\n\n if (this.rootElement.isConnected) {\n // the init function is running once, on the first time the component is connected\n if (this.#isInit) {\n this.#isInit = false;\n this.init?.();\n }\n }\n }\n }\n\n return compose(\n componentNameValidationMixin,\n hoverableMixin,\n normalizeBooleanAttributesMixin,\n componentsContextMixin\n )(DescopeBaseClass);\n};\n","// create a dispatch event function that also calls to the onevent function in case it's set\n// usage example:\n// #dispatchSomething = createDispatchEvent.bind(this, 'something' { ...options })\n// this will dispatch a new event when called, but also call to \"onsomething\"\nexport function createDispatchEvent(eventName, options = {}) {\n const event = new Event(eventName, options);\n\n this[`on${eventName}`]?.(event); // in case we got an event callback as property\n this.dispatchEvent(event);\n}\n","import { createDispatchEvent } from '../../componentsMixins/helpers/mixinsHelpers';\n\nexport const changeMixin = (superclass) =>\n class ChangeMixinClass extends superclass {\n #dispatchChange = createDispatchEvent.bind(this, 'change');\n\n init() {\n super.init?.();\n this.prevValue = this.value;\n\n this.addEventListener('change', (e) => {\n e.stopPropagation();\n });\n\n this.addEventListener('blur', () => {\n if (this.value !== this.prevValue) {\n this.#dispatchChange();\n this.prevValue = this.value;\n }\n });\n }\n };\n","import { createDispatchEvent } from '../helpers/mixinsHelpers';\n\nexport const inputEventsDispatchingMixin = (superclass) =>\n class InputEventsDispatchingMixinClass extends superclass {\n init() {\n this.#blockNativeEvents();\n\n super.init?.();\n }\n\n // we want to block the native (trusted) events and control when these events are being dispatched\n #blockNativeEvents() {\n ['blur', 'focus', 'focusin', 'focusout'].forEach((event) => {\n this.addEventListener(event, (e) => {\n if (e.isTrusted && e.target === this) {\n e.stopImmediatePropagation()\n };\n });\n });\n }\n\n handleFocusEventsDispatching(inputs) {\n let timerId;\n\n // in order to simulate blur & focusout on root input element\n // we are checking if focus on one of the inner elements happened immediately after blur\n // if not, the component is no longer focused and we should dispatch blur & focusout\n inputs?.forEach((input) => {\n input?.addEventListener('focusout', (e) => {\n e.stopImmediatePropagation();\n timerId = setTimeout(() => {\n timerId = null;\n\n createDispatchEvent.call(this, 'blur');\n createDispatchEvent.call(this, 'focusout', { bubbles: true });\n });\n });\n\n // in order to simulate focus & focusin on the root input element\n // we are holding a timer id and clearing it on focusin\n // if there is a timer id, it means that the root input is still focused\n // otherwise, it was not focused before, and we should dispatch focus & focusin\n const onFocus = (e) => {\n e.stopImmediatePropagation();\n clearTimeout(timerId);\n if (!timerId) {\n createDispatchEvent.call(this, 'focus');\n createDispatchEvent.call(this, 'focusin', { bubbles: true });\n }\n };\n\n // some components are not dispatching focusin but only focus\n input?.addEventListener('focusin', onFocus);\n input?.addEventListener('focus', onFocus);\n });\n }\n\n // we want to block the input events from propagating in case the value of the root input wasn't change\n // this can happen if we are sanitizing characters on the internal inputs and do not want it to affect the root input element value\n // in this case, on each input event, we are comparing the root input value to the previous one, and only if it does not match, we are allowing the input event to propagate\n handleInputEventDispatching() {\n let previousRootComponentValue = this.value;\n\n // we are comparing the previous value to the new one,\n // and if they have the same value, we are blocking the input event\n this.addEventListener('input', (e) => {\n // We don't want to block our own event that we fire from handleInputEventDispatching\n if (this !== e.target) {\n e.stopImmediatePropagation();\n\n if (previousRootComponentValue !== this.value) {\n previousRootComponentValue = this.value;\n createDispatchEvent.call(this, 'input', { bubbles: true, composed: true });\n }\n }\n });\n }\n };\n","import 'element-internals-polyfill'; // this is needed in order to support older browsers\n\nconst observedAttributes = ['required', 'pattern'];\n\nconst errorAttributes = {\n valueMissing: 'data-errormessage-value-missing',\n patternMismatch: 'data-errormessage-pattern-mismatch',\n tooShort: 'data-errormessage-pattern-mismatch-too-short',\n tooLong: 'data-errormessage-pattern-mismatch-too-long',\n rangeUnderflow: 'data-errormessage-pattern-range-underflow',\n rangeOverflow: 'data-errormessage-pattern-range-overflow',\n typeMismatch: 'data-errormessage-type-mismatch',\n};\n\nconst validationTargetSymbol = Symbol('validationTarget');\n\nexport const inputValidationMixin = (superclass) =>\n class InputValidationMixinClass extends superclass {\n #validationTarget = validationTargetSymbol;\n\n static get observedAttributes() {\n return [...(superclass.observedAttributes || []), ...observedAttributes];\n }\n\n static get formAssociated() {\n return true;\n }\n\n #internals;\n\n get internals() {\n return this.#internals;\n }\n\n set internals(value) {\n this.#internals = value;\n }\n\n constructor() {\n super();\n\n this.#internals = this.attachInternals();\n }\n\n // eslint-disable-next-line class-methods-use-this\n get defaultErrorMsgValueMissing() {\n return 'Please fill out this field.';\n }\n\n // eslint-disable-next-line class-methods-use-this\n get defaultErrorMsgPatternMismatch() {\n return 'Please match the requested format.';\n }\n\n get defaultErrorMsgTooShort() {\n return `Minimum length is ${this.getAttribute('minlength')}.`;\n }\n\n get defaultErrorMsgTooLong() {\n return `Maximum length is ${this.getAttribute('maxlength')}. `;\n }\n\n get defaultErrorMsgRangeUnderflow() {\n return `At least ${this.getAttribute('min-items-selection')} items are required.`;\n }\n\n get defaultErrorMsgRangeOverflow() {\n return `At most ${this.getAttribute('max-items-selection')} items are allowed.`;\n }\n\n // eslint-disable-next-line class-methods-use-this\n get defaultErrorMsgTypeMismatch() {\n return `Please match the requested type.`;\n }\n\n getCustomErrorMessage(attr, defaultMsg) {\n return this.hasAttribute(attr)\n ? this.getAttribute(attr) || ' '\n : defaultMsg;\n }\n\n getErrorMessage(flags) {\n const {\n valueMissing,\n patternMismatch,\n typeMismatch,\n stepMismatch,\n tooShort,\n tooLong,\n rangeOverflow,\n rangeUnderflow,\n badInput,\n customError,\n } = flags;\n\n switch (true) {\n case valueMissing:\n return this.getCustomErrorMessage(\n errorAttributes.valueMissing,\n this.defaultErrorMsgValueMissing,\n );\n case patternMismatch || stepMismatch || badInput:\n return this.getCustomErrorMessage(\n errorAttributes.patternMismatch,\n this.defaultErrorMsgPatternMismatch,\n );\n case typeMismatch:\n return this.getCustomErrorMessage(\n errorAttributes.typeMismatch,\n this.defaultErrorMsgTypeMismatch,\n );\n case tooShort:\n return this.getCustomErrorMessage(\n errorAttributes.tooShort,\n this.defaultErrorMsgTooShort,\n );\n case tooLong:\n return this.getCustomErrorMessage(\n errorAttributes.tooLong,\n this.defaultErrorMsgTooLong,\n );\n case rangeUnderflow:\n return this.getCustomErrorMessage(\n errorAttributes.rangeUnderflow,\n this.defaultErrorMsgRangeUnderflow,\n );\n case rangeOverflow:\n return this.getCustomErrorMessage(\n errorAttributes.rangeOverflow,\n this.defaultErrorMsgRangeOverflow,\n );\n case customError:\n return this.validationMessage;\n default:\n return '';\n }\n }\n\n #setValidity() {\n const validity = this.isReadOnly ? {} : this.getValidity();\n this.#internals.setValidity(\n validity,\n this.getErrorMessage(validity),\n this.validationTarget,\n );\n }\n\n get validationMessage() {\n return this.#internals.validationMessage;\n }\n\n // eslint-disable-next-line class-methods-use-this\n getValidity() {\n // eslint-disable-next-line no-console\n console.warn('getValidity', 'is not implemented');\n }\n\n checkValidity() {\n return this.#internals.validity.valid;\n }\n\n reportValidity() {\n return this.#internals.reportValidity();\n }\n\n get validity() {\n return this.#internals.validity;\n }\n\n get validationTarget() {\n return this.#validationTarget === validationTargetSymbol\n ? this.inputElement\n : this.#validationTarget;\n }\n\n set validationTarget(val) {\n this.#validationTarget = val;\n }\n\n setCustomValidity(errorMessage) {\n if (errorMessage) {\n this.#internals.setValidity(\n { customError: true },\n errorMessage,\n this.validationTarget,\n );\n } else {\n this.#internals.setValidity({});\n this.#setValidity();\n }\n }\n\n get isRequired() {\n return (\n this.hasAttribute('required') &&\n this.getAttribute('required') !== 'false'\n );\n }\n\n get isReadOnly() {\n return (\n this.hasAttribute('readonly') &&\n this.getAttribute('readonly') !== 'false'\n );\n }\n\n get isDisabled() {\n return (\n this.hasAttribute('disabled') &&\n this.getAttribute('disabled') !== 'false'\n );\n }\n\n get pattern() {\n return this.getAttribute('pattern');\n }\n\n get form() {\n return this.#internals.form;\n }\n\n attributeChangedCallback(attrName, oldValue, newValue) {\n super.attributeChangedCallback?.(attrName, oldValue, newValue);\n\n if (observedAttributes.includes(attrName)) {\n this.#setValidity();\n }\n }\n\n init() {\n super.init?.();\n this.addEventListener('change', this.#setValidity);\n this.addEventListener('invalid', (e) => e.stopPropagation());\n this.addEventListener('input', this.#setValidity);\n\n // The attribute sync takes time, so getValidity returns valid,\n // even when it shouldn't. This way allows all attributes to sync\n // after render, before checking the validity.\n setTimeout(() => this.#setValidity());\n }\n };\n","import { compose } from '../../utils';\nimport { changeMixin } from '../../componentsMixins/mixins/changeMixin';\nimport { inputEventsDispatchingMixin } from '../../componentsMixins/mixins/inputEventsDispatchingMixin';\nimport { inputValidationMixin } from '../../componentsMixins/mixins/inputValidationMixin';\nimport { normalizeBooleanAttributesMixin } from '../../componentsMixins/mixins/normalizeBooleanAttributesMixin';\nimport { createBaseClass } from './createBaseClass';\n\nexport const createBaseInputClass = (...args) =>\n compose(\n inputValidationMixin,\n changeMixin,\n normalizeBooleanAttributesMixin,\n inputEventsDispatchingMixin\n )(createBaseClass(...args));\n","export const CONNECTOR_ERRORS = {\n CONNECTOR_INVALID: 'CONNECTOR_INVALID',\n FETCH_RESULTS_ERROR: 'FETCH_RESULTS_ERROR',\n};\n\nexport const createBaseConnectorClass = () =>\n class BaseConnectorClass {\n constructor(getAttribute) {\n this.getAttribute = getAttribute;\n this.isValid = this.#validateConfig();\n }\n\n checkConnectorValidity() {\n this.isValid = this.#validateConfig();\n }\n\n #validateConfig() {\n const missingOrInvalidParams = this.getRequiredParams().filter(\n (param) => {\n const value = this.getAttribute(param);\n return !value || !this.validateParam(param, value);\n },\n );\n\n if (missingOrInvalidParams.length) {\n return false;\n }\n return true;\n }\n\n // eslint-disable-next-line class-methods-use-this\n validateParam(param, value) {\n // Base validation - can be overridden by specific connectors\n return value.trim().length > 0;\n }\n\n // eslint-disable-next-line class-methods-use-this\n getRequiredParams() {\n // eslint-disable-next-line no-console\n console.error('Connector must implement getRequiredParams');\n return [];\n }\n\n async fetch(query) {\n if (!this.isValid) {\n // eslint-disable-next-line no-console\n console.error(\n `[${this.constructor.name}] Cannot fetch results: connector is not properly configured`,\n );\n return { results: [], error: CONNECTOR_ERRORS.CONNECTOR_INVALID };\n }\n\n return this._fetchResults(query);\n }\n\n // eslint-disable-next-line class-methods-use-this, no-unused-vars\n _fetchResults(query) {\n // eslint-disable-next-line no-console\n console.error('Connector must implement fetchResults');\n return { results: [], error: undefined };\n }\n };\n","import { createBaseClass } from '../../baseClasses';\nimport { isFunction } from '../../utils';\nimport { forwardProps, injectStyle, syncAttrs } from '../../componentsHelpers';\nimport { createDispatchEvent } from '../../componentsMixins/helpers/mixinsHelpers';\n\nexport const createProxy = ({\n componentName,\n wrappedEleName,\n slots = [],\n style,\n excludeAttrsSync = [],\n includeAttrsSync = [],\n includeForwardProps = [],\n delegatesFocus = true,\n}) => {\n class ProxyClass extends createBaseClass({ componentName, baseSelector: wrappedEleName }) {\n #dispatchBlur = createDispatchEvent.bind(this, 'blur');\n\n #dispatchFocus = createDispatchEvent.bind(this, 'focus');\n\n constructor() {\n super().attachShadow({ mode: 'open', delegatesFocus }).innerHTML = `\n\t\t\t<${wrappedEleName}>\n\t\t\t${slots\n .map(\n (\n slot // when slot is an empty string, we will create the default slot (without a name)\n ) => `<slot ${slot ? `name=\"${slot}\" slot=\"${slot}\"` : ''}></slot>`\n )\n .join('')}\n\t\t\t</${wrappedEleName}>\n\t\t`;\n\n injectStyle((isFunction(style) ? style() : style) || '', this);\n }\n\n init() {\n super.init?.();\n\n this.baseElement.addEventListener('blur', (_) => {\n this.#dispatchBlur();\n });\n\n this.baseElement.addEventListener('focus', (_) => {\n this.#dispatchFocus();\n });\n\n // this is needed for components that uses props, such as combo box\n forwardProps(this.baseElement, this, includeForwardProps);\n\n syncAttrs(this.baseElement, this, {\n excludeAttrs: excludeAttrsSync,\n includeAttrs: includeAttrsSync,\n });\n }\n }\n\n return ProxyClass;\n};\n","/* eslint-disable no-param-reassign */\nimport { compose } from '../../utils';\nimport { forwardAttrs, getComponentName } from '../../componentsHelpers';\nimport { createDispatchEvent } from '../helpers/mixinsHelpers';\nimport { inputValidationMixin } from '../mixins/inputValidationMixin';\nimport { createStyleMixin } from '../mixins/createStyleMixin';\n\nconst errorAttrs = ['invalid', 'required'];\n\nconst forwardProps = (src, targets, property) => {\n const targetArr = Array.isArray(targets) ? targets : [targets];\n\n Object.defineProperty(src, property, {\n set(v) {\n targetArr.forEach((target) => {\n target[property] = v;\n });\n },\n get() {\n return targets[0][property];\n },\n configurable: true,\n });\n};\n\n// recursively take the first slot child until it finds an element which is not a slot\n// stops after \"nestingLevel\" times\nconst getNestedInput = (ele) => {\n if (!ele) return undefined;\n\n const nestingLevel = 10;\n\n let nonSlotEle = ele;\n for (let i = 0; i < nestingLevel; i++) {\n [nonSlotEle] = nonSlotEle.assignedElements();\n if (nonSlotEle?.localName !== 'slot') return nonSlotEle;\n }\n return undefined;\n};\n\nconst proxyInputMixin =\n ({\n proxyProps = [],\n // useProxyTargets flag allows to forwardProps to other targets, other than\n // `this.inputElement`. It's to be used within `external-input` components,\n // if needed\n useProxyTargets = false,\n // allows us to set the event that should trigger validation\n // it can be either a string or an array of strings (for multiple events)\n inputEvent = 'input',\n triggerValidationEvents = [],\n // Proxies all validations from the parent component to the input element\n proxyParentValidation = false,\n }) =>\n (superclass) =>\n class ProxyInputMixinClass extends inputValidationMixin(superclass) {\n static get observedAttributes() {\n return [...(superclass.observedAttributes || []), ...errorAttrs];\n }\n\n #inputElement;\n\n #dispatchChange = createDispatchEvent.bind(this, 'change');\n\n constructor() {\n super();\n\n this.#inputElement = super.inputElement;\n }\n\n // the web-component does not loaded immediately, so we want to defer the warning\n // and show it only if the input element was not found after the component is loaded\n warnIfInputElementIsMissing() {\n clearTimeout(this.inputElementTimerId);\n\n this.inputElementTimerId = setTimeout(() => {\n // eslint-disable-next-line no-console\n !this.#inputElement && console.warn(this.localName, 'no input was found');\n }, 0);\n }\n\n get inputElement() {\n if (this.#inputElement) return this.#inputElement;\n\n this.warnIfInputElementIsMissing();\n\n const inputSlot = this.baseElement.shadowRoot?.querySelector('slot[name=\"input\"]');\n const textAreaSlot = this.baseElement.shadowRoot?.querySelector('slot[name=\"textarea\"]');\n\n this.#inputElement = getNestedInput(inputSlot) || getNestedInput(textAreaSlot);\n\n return this.#inputElement;\n }\n\n set inputElement(ele) {\n this.#inputElement = ele;\n }\n\n getValidity() {\n return this.inputElement?.validity || {};\n }\n\n #handleErrorMessage() {\n this.setAttribute('error-message', this.validationMessage);\n }\n\n // We do not want to show the default validity report tooltip\n // So we are overriding the reportValidity fn to show the input's error message\n reportValidity = () => {\n // we want to update validity so in case the value was set programmatically, we won't get an error\n this.inputElement.setCustomValidity('');\n this.setCustomValidity('');\n if (!this.checkValidity()) {\n this.setAttribute('invalid', 'true');\n this.#handleErrorMessage();\n this.focus();\n }\n };\n\n // we are keeping also the default reportValidity because there are some components that still using it\n defaultReportValidity() {\n return super.reportValidity();\n }\n\n init() {\n super.init?.();\n\n // vaadin sets invalid indication on blur\n // we want invalid indication to appear only when calling reportValidity\n // this is why we are overriding vaadin's setInvalid behavior\n // to update only when the element is valid (so invalid indication will only be removed)\n // and we are adding it in reportValidity\n // eslint-disable-next-line func-names\n this.baseElement._setInvalid = function (invalid) {\n if (!invalid && this._shouldSetInvalid(invalid)) {\n this.invalid = invalid;\n }\n };\n\n // We want to ensure that `input` events properly cross ShadowDOM boundries\n // e.g. When we autofill a component's input with 1Password, for instance,\n // the event is fired without `composed: true` and doesn't our component's\n // ShadowDOM.\n this.baseElement.addEventListener('input', (e) => {\n if (!e.composed) {\n this.dispatchEvent(new Event('input', { bubbles: true, composed: true }));\n }\n });\n\n triggerValidationEvents.forEach((e) => {\n this.baseElement?.addEventListener(e, () => {\n this.inputElement?.setCustomValidity('');\n });\n });\n\n // on some cases the base element is not ready so the inputElement is empty\n // we are deferring this section to make sure the base element is ready\n setTimeout(() => {\n const validationEvents = Array.isArray(inputEvent) ? inputEvent : [inputEvent];\n\n validationEvents.forEach((e) => {\n this.baseElement?.addEventListener(e, () => {\n if (!this.baseElement.checkValidity()) {\n this.#handleErrorMessage();\n } else {\n this.removeAttribute('invalid');\n }\n });\n });\n\n this.baseElement.addEventListener('change', () => {\n this.#dispatchChange();\n });\n\n this.addEventListener('invalid', () => {\n if (!this.checkValidity()) {\n this.setAttribute('invalid', 'true');\n }\n this.#handleErrorMessage();\n });\n\n // sync properties\n proxyProps.forEach((prop) => {\n const externalInput = this.querySelector('input[slot=\"external-input\"]') || null;\n const proxyTargets = useProxyTargets\n ? [this.baseElement, externalInput].filter(Boolean)\n : [];\n forwardProps(this, [this.inputElement, ...proxyTargets], prop);\n });\n\n this.setSelectionRange = this.inputElement.setSelectionRange?.bind(this.inputElement);\n\n forwardAttrs(this, this.inputElement, { includeAttrs: ['inputmode'] });\n });\n\n if (proxyParentValidation) {\n // All functions called on the inputElement internals will be applied to the parent\n // component internals as well. As a result, there's no need to add outer mechanisms\n // to update the parent component's validity state based on the input elements validity.\n const inputElementInternals = this.inputElement.internals;\n const parentThis = this;\n this.inputElement.internals = new Proxy(inputElementInternals, {\n get: (target, prop) => {\n if (typeof target[prop] === 'function' && prop === 'setValidity') {\n return (...args) => {\n // If we're calling setValidity with 3 args, then the validationTarget\n // needs to be swapped to be the inputElement\n if (args.length === 3) {\n const newArgs = args.slice(0, args.length - 1);\n newArgs.push(parentThis.inputElement);\n parentThis.internals[prop](...newArgs);\n } else {\n parentThis.internals[prop](...args);\n }\n return target[prop](...args);\n };\n }\n\n if (typeof target[prop] === 'function') {\n return (...args) => {\n parentThis.internals[prop](...args);\n return target[prop](...args);\n };\n }\n\n return target[prop];\n },\n });\n }\n }\n };\n\nconst composedProxyInputMixin = (proxyInputMixinConfig) =>\n compose(\n proxyInputMixin(proxyInputMixinConfig),\n // in order to use input-wrapper across all our input components, we need to inject its theme\n // to every proxy input mixin, to allow its css vars to be scoped properly and accessible\n // in the proxy input component\n createStyleMixin({ componentNameOverride: getComponentName('input-wrapper') })\n );\n\nexport { composedProxyInputMixin as proxyInputMixin };\n","import { kebabCaseJoin } from '../../utils';\nimport { forwardAttrs } from '../../componentsHelpers';\nimport { createStyleMixin } from '../mixins/createStyleMixin';\nimport { createCssVarsList } from './createStyleMixin/helpers';\n\n// this is needed because we might generate the same css vars names\n// e.g. \"overlayColor\" attribute in style mixin's mapping,\n// will generate the same var as \"color\" attribute in portals's mapping\n// when the portal name is \"overlay\".\n// because of that, we are adding this separator that is also used as a differentiator\nconst DISPLAY_NAME_SEPARATOR = '_';\n\nconst sanitizeSelector = (selector) => selector.replace(/[^\\w\\s]/gi, '');\n\nconst withWaitForShadowRoot = (getRootElementFn) => async (that) => {\n const ele = await getRootElementFn(that);\n\n return new Promise((res) => {\n const MAX_RETRIES = 20;\n let counter = 0;\n\n const check = () => {\n if (counter > MAX_RETRIES) {\n // eslint-disable-next-line no-console\n console.error('could not get shadow root for element', ele);\n res(ele);\n return;\n }\n\n counter++;\n\n if (!ele?.shadowRoot) {\n setTimeout(check);\n } else {\n res(ele.shadowRoot);\n return;\n }\n };\n check();\n });\n};\n\nexport const portalMixin =\n ({\n name,\n selector,\n mappings = {},\n forward: { attributes = [], include = true } = {},\n }) =>\n (superclass) => {\n const eleDisplayName = name || sanitizeSelector(selector);\n\n const BaseClass = createStyleMixin({\n mappings,\n })(superclass);\n\n return class PortalMixinClass extends BaseClass {\n static get cssVarList() {\n return {\n ...BaseClass.cssVarList,\n [eleDisplayName]: createCssVarsList(\n eleDisplayName\n ? kebabCaseJoin(\n superclass.componentName,\n DISPLAY_NAME_SEPARATOR + eleDisplayName,\n )\n : superclass.componentName,\n mappings,\n ),\n };\n }\n\n #portalEle;\n\n constructor() {\n // we cannot use \"this\" before calling \"super\"\n const getRootElement = async (that) => {\n const baseEle = (that.shadowRoot || that).querySelector(\n that.baseSelector,\n );\n if (!selector || !that.shadowRoot) {\n return baseEle;\n }\n\n // in case we have a selector, we should first wait for the base element shadow root\n // and then look for the internal element\n const baseEleShadowRoot = await withWaitForShadowRoot(() => baseEle)(\n that,\n );\n return baseEleShadowRoot.querySelector(selector);\n };\n\n const getPortalElement = withWaitForShadowRoot(getRootElement);\n\n super({\n getRootElement: getPortalElement,\n componentNameSuffix:\n eleDisplayName && DISPLAY_NAME_SEPARATOR + eleDisplayName,\n themeSection: eleDisplayName\n ? DISPLAY_NAME_SEPARATOR + eleDisplayName\n : undefined,\n baseSelector: '',\n });\n\n // Defer portal element lookup to init() for React compatibility\n // (elements created in init() won't exist during constructor)\n this.#getPortalElement = () =>\n getPortalElement(this).then((ele) => ele?.host || ele);\n }\n\n #getPortalElement;\n\n async #handleHoverAttribute() {\n const portalEle = await this.#portalEle;\n portalEle.onmouseenter = (e) => {\n e.target.setAttribute('hover', 'true');\n };\n portalEle.onmouseleave = (e) => {\n e.target.removeAttribute('hover');\n };\n }\n\n async init() {\n super.init?.();\n // Initialize portal element lookup here (deferred from constructor for React compatibility)\n this.#portalEle = this.#getPortalElement();\n const portalEle = await this.#portalEle;\n forwardAttrs(this, portalEle, {\n [include ? 'includeAttrs' : 'excludeAttrs']: attributes,\n });\n\n this.#handleHoverAttribute();\n }\n };\n };\n","import { observeAttributes } from '../../componentsHelpers';\n\nconst defaultValidateSchema = () => true;\nconst defaultItemRenderer = (item) =>\n `<pre>${JSON.stringify(item, null, 4)}</pre>`;\n\nconst createTemplate = (templateString) => {\n const template = document.createElement('template');\n template.innerHTML = templateString;\n\n return template;\n};\n\nconst getTemplateContent = (templateOrString) => {\n if (typeof templateOrString === 'string') {\n return createTemplate(templateOrString).content;\n }\n\n if (templateOrString instanceof HTMLTemplateElement) {\n return templateOrString.content;\n }\n\n // eslint-disable-next-line no-console\n console.error('Invalid template', templateOrString);\n return null;\n};\n\nexport const createDynamicDataMixin =\n ({\n itemRenderer = defaultItemRenderer,\n validateSchema = defaultValidateSchema,\n slotName,\n rerenderAttrsList = [],\n targetSelector,\n sortFn = (data) => data,\n }) =>\n (superclass) =>\n class DynamicDataMixinClass extends superclass {\n #data = [];\n\n #targetEle;\n\n // eslint-disable-next-line class-methods-use-this\n #validateSchema(data) {\n if (!validateSchema) return true;\n\n const validation = validateSchema(data);\n if (validation === true) return true;\n\n // eslint-disable-next-line no-console\n console.error('Data schema validation failed', validation || '');\n\n return false;\n }\n\n #removeOldItems() {\n const selector = slotName ? `*[slot=\"${slotName}\"]` : ':not([slot])';\n if (!this.#targetEle) return;\n this.#targetEle\n .querySelectorAll(selector)\n .forEach((item) => item.remove());\n }\n\n #renderItems() {\n this.#removeOldItems();\n const items = sortFn ? this.data.sort(sortFn) : this.data;\n items.forEach((item, index) => {\n const content = getTemplateContent(itemRenderer(item, index, this));\n if (!this.#targetEle) return;\n this.#targetEle.appendChild(content?.cloneNode(true));\n });\n }\n\n set data(value) {\n if (this.#validateSchema(value)) {\n this.#data = value;\n this.#renderItems();\n }\n }\n\n get data() {\n return this.#data;\n }\n\n init() {\n super.init?.();\n\n this.#targetEle = targetSelector\n ? this.shadowRoot.querySelector(targetSelector)\n : this.baseElement;\n\n observeAttributes(\n this,\n (attrs) => {\n if (attrs.includes('data')) this.#handleDataAttr();\n else this.#renderItems();\n },\n { includeAttrs: [...rerenderAttrsList, 'data'] },\n );\n }\n\n #handleDataAttr() {\n const dataAttr = this.getAttribute('data');\n\n if (!dataAttr) return;\n\n try {\n this.data = JSON.parse(dataAttr);\n } catch (e) {\n // eslint-disable-next-line no-console\n console.warn('Invalid JSON data', dataAttr);\n }\n }\n };\n","export const disableRules = [\n 'blockquote',\n 'list',\n 'image',\n 'table',\n 'code',\n 'hr',\n 'backticks',\n 'fence',\n 'reference',\n 'heading',\n 'lheading',\n 'html_block',\n];\n","/* eslint-disable no-param-reassign */\n\nimport MarkdownIt from 'markdown-it';\nimport { createStyleMixin, draggableMixin, componentNameValidationMixin } from '@descope-ui/common/components-mixins';\nimport { compose } from '@descope-ui/common/utils';\nimport { disableRules } from './consts';\nimport { createBaseClass } from '@descope-ui/common/base-classes';\nimport { decodeHTML } from './helpers';\nimport { getComponentName, injectStyle, observeChildren } from '@descope-ui/common/components-helpers';\n\nexport const componentName = getComponentName('enriched-text');\n\nclass EnrichedText extends createBaseClass({ componentName, baseSelector: ':host > div' }) {\n #origLinkRenderer;\n\n #origEmRenderer;\n\n constructor() {\n super();\n\n this.attachShadow({ mode: 'open' }).innerHTML = `\n <div class=\"content\"></div>\n `;\n\n injectStyle(\n `\n :host {\n line-height: 1em;\n word-break: break-word;\n }\n :host > slot {\n width: 100%;\n display: inline-block;\n }\n *, *:last-child {\n margin: 0;\n }\n h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n p {\n margin-bottom: 1em;\n }\n a {\n cursor: pointer;\n }\n blockquote {\n padding: 0 2em;\n }\n u {\n text-decoration: underline\n }\n s {\n color: currentColor;\n }\n `,\n this\n );\n\n this.#initProcessor();\n\n observeChildren(this, this.#parseChildren.bind(this));\n\n // Stop propagation on link clicks to prevent parent handlers from firing\n this.contentNode?.addEventListener('click', (e) => {\n if (e.target instanceof HTMLAnchorElement) {\n e.stopPropagation();\n }\n });\n }\n\n static get observedAttributes() {\n return ['readonly', 'link-target-blank'];\n }\n\n attributeChangedCallback(attrName, oldValue, newValue) {\n super.attributeChangedCallback?.(attrName, oldValue, newValue);\n\n if (newValue !== oldValue) {\n if (attrName === 'readonly') {\n this.onReadOnlyChange(newValue === 'true');\n }\n\n if (attrName === 'link-target-blank') {\n this.#initProcessor();\n }\n }\n }\n\n // We're overriding the rule for em with single underscore to perform as underline. (_underline_)\n customUnderlineRenderer() {\n this.processor.renderer.rules.em_open = (tokens, idx, options, env, self) => {\n if (tokens[idx].markup === '_') tokens[idx].tag = 'u';\n return this.#origEmRenderer(tokens, idx, options, env, self);\n };\n this.processor.renderer.rules.em_close = (tokens, idx, options, env, self) => {\n if (tokens[idx].markup === '_') tokens[idx].tag = 'u';\n return this.#origEmRenderer(tokens, idx, options, env, self);\n };\n }\n\n #customizeLinkRenderer() {\n if (this.linkTargetBlank) {\n this.processor.renderer.rules.link_open = (tokens, idx, options, env, self) => {\n // Add a new `target` attribute, or replace the value of the existing one.\n tokens[idx].attrSet('target', '_blank');\n // Pass the token to the default renderer.\n return this.#origLinkRenderer(tokens, idx, options, env, self);\n };\n } else {\n this.processor.renderer.rules.link_open = this.#origLinkRenderer;\n }\n }\n\n #disableCustomRules() {\n if (!this.processor) {\n return;\n }\n this.processor.disable(disableRules);\n }\n\n #updateProcessorRules() {\n this.#disableCustomRules();\n }\n\n #storeOrigRenderers() {\n const defaultLinkRenderer = (tokens, idx, options, _, self) =>\n self.renderToken(tokens, idx, options);\n this.#origLinkRenderer = this.processor.renderer.rules.link_open || defaultLinkRenderer;\n\n const defaultStrongRenderer = (tokens, idx, options, _, self) =>\n self.renderToken(tokens, idx, options);\n this.#origEmRenderer = this.processor.renderer.rules.em_open || defaultStrongRenderer;\n }\n\n #initProcessor() {\n this.processor = new MarkdownIt('commonmark', { html: true });\n this.#storeOrigRenderers();\n this.#updateProcessorRules();\n this.#customizeLinkRenderer();\n this.customUnderlineRenderer();\n }\n\n get linkTargetBlank() {\n return this.getAttribute('link-target-blank') === 'true';\n }\n\n get contentNode() {\n return this.shadowRoot.querySelector('.content');\n }\n\n #parseChildren() {\n if (!this.processor) {\n return;\n }\n\n let html = decodeHTML(this.innerHTML);\n\n if (!html?.trim() && this.isConnected) {\n this.setAttribute('empty', 'true');\n } else {\n this.removeAttribute('empty');\n }\n\n try {\n const tokens = this.processor.parse(html, { references: undefined });\n html = this.processor.renderer.render(tokens, { html: true, breaks: true });\n } catch (e) {\n // eslint-disable-next-line no-console\n console.warn('Not parsing invalid markdown token');\n }\n\n this.contentNode.innerHTML = html;\n this.contentNode.firstChild?.setAttribute('part', 'content');\n }\n\n onReadOnlyChange(isReadOnly) {\n if (isReadOnly) {\n this.contentNode.setAttribute('inert', isReadOnly);\n } else {\n this.contentNode.removeAttribute('inert');\n }\n }\n}\n\nexport const EnrichedTextClass = compose(\n createStyleMixin({\n mappings: {\n hostWidth: { selector: () => ':host', property: 'width' },\n hostDisplay: { selector: () => ':host', property: 'display', fallback: 'inline-block' },\n hostDirection: { selector: () => ':host', property: 'direction' },\n fontSize: {},\n fontFamily: {},\n fontWeight: {},\n fontWeightBold: [\n { selector: () => ':host strong', property: 'font-weight' },\n { selector: () => ':host b', property: 'font-weight' },\n ],\n textColor: { property: 'color' },\n textLineHeight: { property: 'line-height' },\n textAlign: {},\n linkColor: { selector: 'a', property: 'color' },\n linkTextDecoration: { selector: 'a', property: 'text-decoration' },\n linkHoverTextDecoration: { selector: 'a:hover', property: 'text-decoration' },\n minHeight: {},\n minWidth: {},\n },\n }),\n createStyleMixin({ componentNameOverride: getComponentName('link') }),\n createStyleMixin({ componentNameOverride: getComponentName('text') }),\n draggableMixin,\n componentNameValidationMixin\n)(EnrichedText);\n","export const decodeHTML = (html) => {\n const textArea = document.createElement('textarea');\n textArea.innerHTML = html;\n return textArea.value;\n};\n","export const kebabCase = (str) =>\n str\n .replace(/([a-z])([A-Z])/g, '$1-$2')\n .replace(/[\\s_.]+/g, '-')\n .toLowerCase();\n\nexport const kebabCaseJoin = (...args) => kebabCase(args.filter((arg) => !!arg).join('-'));\n\nexport const upperFirst = (str) => str.charAt(0).toUpperCase() + str.slice(1);\n\nexport const camelCaseJoin = (...args) =>\n args\n .filter(Boolean)\n .map((arg, index) => (index === 0 ? arg : upperFirst(arg)))\n .join('');\n\nexport const compose =\n (...fns) =>\n (val) =>\n fns.reduceRight((res, fn) => fn(res), val);\n\nexport const isFunction = (maybeFunc) => typeof maybeFunc === 'function';\n\nexport const isUrl = (maybeUrl) => {\n try {\n // eslint-disable-next-line no-new\n new URL(maybeUrl);\n\n return true;\n } catch (e) {\n return false;\n }\n};\n\n/**\n * Compares two arrays unorderedly.\n * @param {Array} arr1 - The first array to compare.\n * @param {Array} arr2 - The second array to compare.\n * @returns {boolean} - Returns true if the arrays are equal unorderedly, false otherwise.\n */\nexport const compareArraysUnordered = (arr1, arr2) => {\n if (!Array.isArray(arr1) || !Array.isArray(arr2)) {\n return false;\n }\n\n if (arr1.length !== arr2.length) {\n return false;\n }\n\n const sortedArr1 = arr1.slice().sort();\n const sortedArr2 = arr2.slice().sort();\n\n for (let i = 0; i < sortedArr1.length; i++) {\n if (sortedArr1[i] !== sortedArr2[i]) {\n return false;\n }\n }\n\n return true;\n};\n\nexport const toTitle = (str) =>\n str\n .replace(/([A-Z])/g, ' $1')\n .trim()\n .split(' ')\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join(' ');\n","export const DESCOPE_PREFIX = 'descope';\nexport const CSS_SELECTOR_SPECIFIER_MULTIPLY = 5;\nexport const BASE_THEME_SECTION = 'host';\nexport const PORTAL_THEME_PREFIX = '@';\n","import { kebabCaseJoin } from '.';\nimport { DESCOPE_PREFIX } from '../constants';\n\nexport const observeAttributes = (ele, callback, { excludeAttrs = [], includeAttrs = [] }) => {\n // sync all attrs on init\n const filteredAttrs = Array.from(ele.attributes)\n .filter(\n (attr) =>\n !excludeAttrs.includes(attr.name) &&\n (!includeAttrs.length || includeAttrs.includes(attr.name))\n )\n .map((attr) => attr.name);\n\n callback(filteredAttrs);\n\n const observer = new MutationObserver((mutationsList) => {\n mutationsList.forEach((mutation) => {\n if (\n mutation.type === 'attributes' &&\n !excludeAttrs.includes(mutation.attributeName) &&\n (!includeAttrs.length || includeAttrs.includes(mutation.attributeName))\n ) {\n callback([mutation.attributeName]);\n }\n });\n });\n\n observer.observe(ele, { attributes: true });\n};\n\n// calling the callback with this object: { addedNodes, removedNodes }\nexport const observeChildren = (ele, callback) => {\n callback({ addedNodes: Array.from(ele.children), removedNodes: [] });\n\n const observer = new MutationObserver((mutationsList) => {\n mutationsList.forEach((mutation) => {\n if (mutation.type === 'childList' || mutation.type === 'characterData') {\n callback(mutation);\n }\n });\n });\n\n observer.observe(ele, { childList: true, characterData: true, subtree: true });\n};\n\nconst createSyncAttrsCb =\n (srcEle, targetEle, mapAttrs = {}) =>\n (attrNames) => {\n attrNames.forEach((attrName) => {\n const targetAttrName = mapAttrs[attrName] || attrName;\n const srcAttrVal = srcEle.getAttribute(attrName);\n\n if (!targetEle) return;\n\n if (srcAttrVal !== null) {\n if (targetEle.getAttribute(targetAttrName) !== srcAttrVal) {\n targetEle.setAttribute(targetAttrName, srcAttrVal);\n }\n } else {\n targetEle.removeAttribute(targetAttrName);\n }\n });\n };\n\nexport const syncAttrs = (ele1, ele2, options) => {\n observeAttributes(ele1, createSyncAttrsCb(ele1, ele2), options);\n observeAttributes(ele2, createSyncAttrsCb(ele2, ele1), options);\n};\n\nexport const getComponentName = (name) => kebabCaseJoin(DESCOPE_PREFIX, name);\n\nexport const getCssVarName = (...args) => `--${kebabCaseJoin(...args)}`;\n\nexport const forwardAttrs = (source, dest, options = {}) => {\n observeAttributes(source, createSyncAttrsCb(source, dest, options.mapAttrs), options);\n};\n\nexport const forwardProps = (src, target, props = []) => {\n if (!props.length) return;\n\n const config = props.reduce(\n (acc, prop) =>\n Object.assign(acc, {\n [prop]: {\n get() {\n return src[prop];\n },\n set(v) {\n // eslint-disable-next-line no-param-reassign\n src[prop] = v;\n },\n },\n }),\n {}\n );\n\n Object.defineProperties(target, config);\n};\n","import Color from 'color';\n\nconst colorGaps = {\n darkLight: 0.4,\n highlight: 0.8,\n contrast: 1,\n edgeColor: {\n darkLight: 0.25,\n highlight: 0.1,\n },\n};\n\nconst darken = (c, percentage) => c.darken(percentage).hex();\n\nconst contrast = (c) => {\n const isDark = c.isDark();\n return c\n .mix(Color(isDark ? 'white' : 'black'), colorGaps.contrast)\n .saturate(1)\n .hex();\n};\n\nconst lighten = (c, percentage) => {\n const isDark = c.lightness() < 0.5;\n\n if (isDark) {\n return c.lightness(percentage * 100).hex();\n }\n\n return c.lighten(percentage).hex();\n};\n\nconst isNearBlack = (color) => color.luminosity() < 0.01;\nconst isNearWhite = (color) => color.luminosity() > 0.99;\n\nconst generateDarkColor = (color, theme) => {\n if (theme === 'dark') {\n return isNearWhite(color)\n ? darken(color, colorGaps.edgeColor.darkLight)\n : lighten(color, colorGaps.darkLight);\n }\n\n return isNearBlack(color)\n ? lighten(color, colorGaps.edgeColor.darkLight)\n : darken(color, colorGaps.darkLight);\n};\n\nconst generateLightColor = (color, theme) => {\n if (theme === 'dark') {\n return isNearBlack(color)\n ? lighten(color, colorGaps.edgeColor.darkLight)\n : darken(color, colorGaps.darkLight);\n }\n\n return isNearWhite(color)\n ? darken(color, colorGaps.edgeColor.darkLight)\n : lighten(color, colorGaps.darkLight);\n};\n\nconst generateHighlightColor = (color, theme) => {\n if (theme === 'dark') {\n return isNearBlack(color)\n ? lighten(color, colorGaps.edgeColor.highlight)\n : darken(color, colorGaps.highlight);\n }\n\n return isNearWhite(color)\n ? darken(color, colorGaps.edgeColor.highlight)\n : lighten(color, colorGaps.highlight);\n};\n\nexport const genColor = (color, theme) => {\n const mainColor = new Color(color.main || color);\n\n const res = {\n main: mainColor.hex(),\n dark: color.dark || generateDarkColor(mainColor, theme),\n light: color.light || generateLightColor(mainColor, theme),\n highlight: color.highlight || generateHighlightColor(mainColor, theme),\n contrast: color.contrast || contrast(mainColor),\n };\n\n return res;\n};\n\nexport const genColors = (colors) => {\n return Object.keys(colors).reduce((acc, colorName) => {\n const currentColor = colors[colorName];\n\n return Object.assign(acc, {\n [colorName]: genColor(currentColor),\n });\n }, {});\n};\n","export const useHostExternalPadding = (cssVarList) => `\n :host {\n padding: calc(var(${cssVarList.inputOutlineWidth}) + var(${cssVarList.inputOutlineOffset}))\n }\n`;\n\nexport const resetInputFieldUnderlayingBorder = (name) => `\n ${name}::part(input-field)::after {\n border: none;\n }\n`;\n\nexport const resetInitialHeight = (name) => `\n ${name}::before {\n\t\theight: unset;\n\t}\n`;\n\nexport const resetInputElement = (name) => `\n ${name} > input {\n -webkit-mask-image: none;\n min-height: 0;\n box-sizing: border-box;\n }\n`;\n\nexport const resetInputContainer = (name) => `\n ${name} {\n margin: 0;\n padding: 0;\n width: 100%;\n height: 100%;\n box-sizing: border-box;\n }\n`;\n\nexport const resetInputField = (name) => `\n ${name}::part(input-field) {\n overflow: hidden;\n padding: 0;\n box-shadow: none;\n }\n`;\n\nexport const resetInputCursor = (name) => `\n ${name} > label,\n ${name}::part(label),\n ${name}::part(required-indicator) {\n cursor: pointer;\n }\n`;\n\nexport const resetInputPlaceholder = (name, ele = 'input') => `\n ${name}[disabled] > ${ele}:placeholder-shown,\n\t${name}[readonly] > ${ele}:placeholder-shown {\n\t\topacity: 1;\n\t}\n`;\n\nexport const resetInputAutoFill = (name, cssVarList) => `\n ${name} input:-webkit-autofill,\n ${name} input:-webkit-autofill::first-line,\n ${name} input:-webkit-autofill:hover,\n ${name} input:-webkit-autofill:active,\n ${name} input:-webkit-autofill:focus {\n -webkit-text-fill-color: var(${cssVarList.inputValueTextColor});\n box-shadow: 0 0 0 var(${cssVarList.inputHeight}) var(${cssVarList.inputBackgroundColor}) inset;\n }\n`;\n\nexport const resetInputFieldDefaultWidth = () => `\n :host {\n --vaadin-field-default-width: auto;\n box-sizing: border-box;\n }\n`;\n\nexport const resetInputReadonlyStyle = (name) => `\n ${name}::part(input-field)::after {\n opacity: 0;\n }\n`;\n\nexport const resetInputFieldInvalidBackgroundColor = (name) => `\n ${name}::part(input-field)::after {\n background: none;\n }\n`;\n\nexport const resetInputOverrides = (name, cssVarList) => `\n ${resetInputContainer(name)}\n ${resetInputCursor(name)}\n ${resetInputPlaceholder(name)}\n ${resetInputField(name)}\n ${resetInputAutoFill(name, cssVarList)}\n ${resetInputFieldInvalidBackgroundColor(name)}\n ${resetInitialHeight(name)}\n ${resetInputElement(name)}\n ${resetInputFieldUnderlayingBorder(name)}\n`;\n\n// This function is used to support RTL correctly for input components.\n// It also fixes the error message to be displayed LTR since we currently\n// don't support RTL for error messages.\nexport const resetInputLabelPosition = (name) => `\n :host ::part(error-message) {\n direction: ltr;\n }\n :host([required]) ::part(required-indicator) {\n width: 1em;\n display: inline-flex;\n }\n :host([required]) ::part(required-indicator)::after {\n position: static;\n }\n :host([has-label]) ::part(label) {\n padding-right: 0;\n padding-bottom: 0;\n display: flex;\n width: 100%;\n }\n ${name} [slot=\"label\"] {\n max-width: calc(100% - 1em);\n overflow: hidden;\n text-overflow: ellipsis;\n padding-bottom: 0.5em;\n }\n`;\n\nexport const inputFloatingLabelStyle = () => {\n return `\n :host([label-type=\"floating\"]) {\n position: relative;\n }\n :host([label-type=\"floating\"][has-label]) > ::part(label) {\n z-index: 1;\n padding: 0;\n width: auto;\n }\n `;\n};\n","import merge from 'lodash.merge';\nimport { BASE_THEME_SECTION, DESCOPE_PREFIX, PORTAL_THEME_PREFIX } from '../../constants';\nimport { isUrl, kebabCase } from '..';\nimport { getComponentName, getCssVarName } from '../componentHelpers';\n\nconst getVarName = (path) => getCssVarName(DESCOPE_PREFIX, ...path);\n\n// lodash.set alternative\nconst set = (obj, path, value) => {\n const pathArray = Array.isArray(path) ? path : path.match(/([^[.\\]])+/g);\n\n pathArray.reduce((acc, key, i) => {\n if (acc[key] === undefined) acc[key] = {};\n if (i === pathArray.length - 1) acc[key] = value;\n return acc[key];\n }, obj);\n\n return obj;\n};\n\nconst transformTheme = (theme, path, getTransformation) => {\n return Object.entries(theme).reduce((acc, [key, val]) => {\n if (val?.constructor !== Object) {\n return merge(acc, getTransformation(path.concat(key), val));\n }\n return merge(acc, transformTheme(val, [...path, key], getTransformation));\n }, {});\n};\n\nconst stringifyArray = (strArr) =>\n strArr.map((str) => (str.includes(' ') ? `\"${str}\"` : str)).join(', ');\n\nconst getCssVarValue = (val) => {\n switch (true) {\n case Array.isArray(val):\n return stringifyArray(val);\n case isUrl(val):\n return `url(${val})`;\n default:\n return val;\n }\n};\n\nexport const themeToCSSVarsObj = (theme) =>\n transformTheme(theme, [], (path, val) => ({\n [getVarName(path)]: getCssVarValue(val),\n }));\n\nexport const getThemeRefs = (theme, prefix) =>\n transformTheme(theme, [], (path) =>\n set({}, path, `var(${getVarName(prefix ? [prefix, ...path] : path)})`)\n );\n\nexport const getThemeVars = (theme, prefix) =>\n transformTheme(theme, [], (path) => set({}, path, getVarName(prefix ? [prefix, ...path] : path)));\n\nexport const globalsThemeToStyle = (theme, themeName = '') => {\n const style = Object.entries(themeToCSSVarsObj(theme)).reduce(\n (acc, entry) => `${acc}${entry.join(':')};\\n`,\n ''\n );\n\n if (!themeName) return style;\n\n return `*[data-theme=\"${themeName}\"] {${style}}`;\n};\n\nfunction splitAmpersands(str) {\n const match = str.match(/^(&+)?(.*)$/);\n return [match[1] || '', match[2] || ''];\n}\n\n// st attributes are also using selector multiplication\n// so we need to limit the multiplication\nconst MAX_SELECTOR_MULTIPLY = 3;\n\nconst componentsThemeToStyleObj = (componentsTheme) =>\n transformTheme(componentsTheme, [], (path, val) => {\n const [component, ...restPath] = path;\n const property = restPath.pop();\n const componentName = getComponentName(component);\n\n if (property === 'undefined') {\n // eslint-disable-next-line no-console\n console.warn(componentName, `theme value: \"${val}\" is mapped to an invalid property`);\n }\n\n // we need a support for portal components theme (e.g. overlay)\n // this allows us to generate those themes under different sections\n // if the theme has root level attribute that starts with #\n // we are generating a new theme\n let themeName = BASE_THEME_SECTION;\n\n if (restPath[0] && restPath[0].startsWith(PORTAL_THEME_PREFIX)) {\n themeName = restPath.shift();\n }\n\n // do not start with underscore -> key:value, must have 2 no underscore attrs in a row\n // starts with underscore -> attribute selector\n const attrsSelector = restPath.reduce((acc, section, idx) => {\n const [ampersands, content] = splitAmpersands(section);\n const selectorMultiplier = Math.min(\n ampersands.length + 1, // if there are no & we need to multiply by 1\n MAX_SELECTOR_MULTIPLY\n );\n\n if (content.startsWith('_'))\n return acc + `[${kebabCase(content.replace(/^_/, ''))}=\"true\"]`.repeat(selectorMultiplier);\n\n const nextSection = restPath[idx + 1];\n\n if (\n typeof nextSection !== 'string' ||\n nextSection.startsWith('_') ||\n nextSection.startsWith('&')\n ) {\n // eslint-disable-next-line no-console\n console.error(\n 'theme generator',\n `your theme structure is invalid, attribute \"${section}\" is followed by \"${nextSection}\" which is not allowed`\n );\n return acc;\n }\n\n return (\n acc +\n `[${kebabCase(content)}=\"${restPath.splice(idx + 1, 1).join('')}\"]`.repeat(\n selectorMultiplier\n )\n );\n }, '');\n\n const selector = `:host${attrsSelector ? `(${attrsSelector})` : ''}`;\n\n return {\n [componentName]: {\n [themeName]: {\n [selector]: {\n [property]: getCssVarValue(val),\n },\n },\n },\n };\n });\n\nconst componentsThemeToStyle = (componentsTheme) =>\n Object.entries(componentsTheme).reduce(\n (acc, [selector, vars]) =>\n `${acc}${selector} { \\n${Object.entries(vars)\n .map(([key, val]) => `${key}: ${val}`)\n .join(';\\n')} \\n}\\n\\n`,\n ''\n );\n\nexport const createComponentsTheme = (componentsTheme) => {\n const styleObj = componentsThemeToStyleObj(componentsTheme);\n\n return Object.keys(styleObj).reduce((acc, componentName) => {\n const componentThemes = styleObj[componentName];\n\n return Object.assign(acc, {\n [componentName]: Object.keys(componentThemes).reduce(\n (res, theme) =>\n Object.assign(res, {\n [theme]: componentsThemeToStyle(componentThemes[theme]),\n }),\n {}\n ),\n });\n }, {});\n};\n\nexport const themeToStyle = ({ globals, components }, themeName) => ({\n globals: globalsThemeToStyle(globals, themeName),\n components: createComponentsTheme(components),\n});\n\n// allows to generate css variables with nested fallbacks\nexport const useVar = (...varNames) => {\n return varNames.reduceRight((acc, value) => {\n if (value.startsWith('--')) return `var(${value}${acc ? `, ${acc}` : acc})`;\n\n return `${value}${acc ? `, ${acc}` : acc}`;\n }, '');\n};\n\nexport const createHelperVars = (theme, prefix) => {\n const res = transformTheme(theme, [], (path, value) => {\n const modifiedPath = [...path];\n const property = modifiedPath.splice(-1);\n const varName = getCssVarName(prefix, property);\n\n const vars = { [property]: varName };\n const useVars = { [property]: useVar(varName) };\n\n return { theme: set({}, [...modifiedPath, varName], value), useVars, vars };\n });\n\n return [res.theme, res.useVars, res.vars];\n};\n\nexport { componentsThemeManager } from '@descope-ui/common/theme-helpers';\nexport * from './colorsHelpers';\nexport * from './resetHelpers';\n","import { camelCaseJoin, isFunction, kebabCase, kebabCaseJoin } from '../../helpers';\nimport { getCssVarName } from '../../helpers/componentHelpers';\n\nconst getOverrideCssVarName = (origVarName) => `${origVarName}__override`;\n\nconst createCssVar = (varName, fallback, createOverride = false) => {\n const ret = `var(${varName}${fallback ? `, ${fallback}` : ''})`;\n\n if (!createOverride) return ret;\n\n // we are generating an override css var to allow override with fallback to the default var\n const overrideVarName = getOverrideCssVarName(varName);\n return `var(${overrideVarName}, ${ret})`;\n};\n\nconst createCssSelector = (baseSelector = '', relativeSelectorOrSelectorFn = '') =>\n isFunction(relativeSelectorOrSelectorFn)\n ? relativeSelectorOrSelectorFn(baseSelector)\n : `${baseSelector}${\n /^[A-Za-z]/.test(relativeSelectorOrSelectorFn)\n ? ` ${relativeSelectorOrSelectorFn}`\n : relativeSelectorOrSelectorFn\n }`;\n\nclass StyleBuilder {\n constructor() {\n this.styleMap = new Map();\n }\n\n add(selector, property, value) {\n if (!this.styleMap.has(selector)) {\n this.styleMap.set(selector, []);\n }\n\n this.styleMap.set(selector, [...this.styleMap.get(selector), { property, value }]);\n }\n\n toString() {\n return Array.from(this.styleMap.entries()).reduce((acc, [selector, propValArr]) => {\n const properties = propValArr\n .map(({ property, value }) => `${property}: ${value}`)\n .join(';\\n');\n\n return `${acc}${selector} { \\n${properties} \\n}\\n\\n`;\n }, '');\n }\n}\n\nconst normalizeConfig = (attr, config) => {\n const defaultMapping = { selector: '', property: kebabCase(attr) };\n\n if (!config || !Object.keys(config).length) return [defaultMapping];\n\n if (Array.isArray(config)) return config.map((entry) => ({ ...defaultMapping, ...entry }));\n\n return [{ ...defaultMapping, ...config }];\n};\n\nconst getFallbackVarName = (origVarName, suffix = 'fallback') => kebabCaseJoin(origVarName, suffix);\n\nexport const createStyle = (componentName, baseSelector, mappings) => {\n const style = new StyleBuilder();\n // we generate all the fallback vars recursively\n const createFallbackVar = (fallback, origVarName) => {\n if (!fallback) return '';\n if (typeof fallback === 'string') return fallback;\n\n const fallbackVarName = getFallbackVarName(origVarName, fallback?.suffix);\n return createCssVar(fallbackVarName, createFallbackVar(fallback.fallback, fallbackVarName));\n };\n\n Object.keys(mappings).forEach((attr) => {\n const attrConfig = normalizeConfig(attr, mappings[attr]);\n\n const cssVarName = getCssVarName(componentName, attr);\n\n attrConfig.forEach(\n ({ selector: relativeSelectorOrSelectorFn, property, important, fallback }) => {\n const fallbackValue = createFallbackVar(fallback, cssVarName);\n style.add(\n createCssSelector(baseSelector, relativeSelectorOrSelectorFn),\n isFunction(property) ? property() : property,\n createCssVar(cssVarName, fallbackValue, true) + (important ? '!important' : '')\n );\n }\n );\n });\n\n return style.toString();\n};\n\nconst getFallbackVarsNames = (attr, origVarName, { fallback }) => {\n if (!fallback) return {};\n\n const fallbackVarName = getFallbackVarName(origVarName, fallback.suffix);\n const fallbackAttrName = camelCaseJoin(attr, fallback.suffix || 'fallback');\n return {\n [fallbackAttrName]: fallbackVarName,\n ...getFallbackVarsNames(fallbackAttrName, fallbackVarName, fallback),\n };\n};\n\nexport const createCssVarsList = (componentName, mappings) =>\n Object.keys(mappings).reduce((acc, attr) => {\n const varName = getCssVarName(componentName, attr);\n\n return Object.assign(\n acc,\n { [attr]: varName },\n // we are exposing the override css var names, the convention is to add 'Override' suffix to the attribute name\n { [attr + 'Override']: getOverrideCssVarName(varName) },\n getFallbackVarsNames(attr, varName, mappings[attr])\n );\n }, {});\n\n// on some cases we need a selector to be more specific than another\n// for this we have this fn that generate a class selector multiple times\nexport const createClassSelectorSpecifier = (className, numOfRepeats) =>\n `.${className}`.repeat(numOfRepeats);\n","import { injectStyle } from '@descope-ui/common/components-helpers';\nimport { BASE_THEME_SECTION, CSS_SELECTOR_SPECIFIER_MULTIPLY } from '../../constants';\nimport { kebabCaseJoin } from '../../helpers';\nimport { getCssVarName, observeAttributes } from '../../helpers/componentHelpers';\nimport { componentsThemeManager } from '../../helpers/themeHelpers';\nimport { createStyle, createCssVarsList, createClassSelectorSpecifier } from './helpers';\n\nconst STYLE_OVERRIDE_ATTR_PREFIX = 'st';\n\nexport const createStyleMixin =\n ({ mappings = {}, componentNameOverride = '' }) =>\n (superclass) => {\n const componentName = componentNameOverride || superclass.componentName;\n\n return class CustomStyleMixinClass extends superclass {\n static get cssVarList() {\n return {\n ...superclass.cssVarList,\n ...createCssVarsList(componentName, {\n ...mappings,\n }),\n };\n }\n\n #overrideStyleEle;\n\n #themeStyleEle;\n\n #disconnectThemeManager;\n\n #componentNameSuffix;\n\n #themeSection;\n\n #rootElement;\n\n #baseSelector;\n\n #styleAttributes;\n\n #getRootElement;\n\n // we are using this mixin also for portalMixin\n // so we should be able to inject styles to other DOM elements\n // this is why we need to support these overrides\n constructor({\n getRootElement,\n componentNameSuffix = '',\n themeSection = BASE_THEME_SECTION,\n baseSelector,\n } = {}) {\n super();\n this.#componentNameSuffix = componentNameSuffix;\n this.#themeSection = themeSection;\n this.#baseSelector = baseSelector ?? this.baseSelector;\n this.#getRootElement = getRootElement;\n\n this.#styleAttributes = Object.keys(CustomStyleMixinClass.cssVarList).map((key) =>\n kebabCaseJoin(STYLE_OVERRIDE_ATTR_PREFIX, componentNameSuffix, key)\n );\n }\n\n // eslint-disable-next-line class-methods-use-this\n get #componentTheme() {\n return componentsThemeManager.currentTheme?.[componentName] || '';\n }\n\n #onComponentThemeChange() {\n this.#themeStyleEle.replaceSync(this.#componentTheme[this.#themeSection]);\n }\n\n #createComponentTheme() {\n this.#themeStyleEle = injectStyle('', this.#rootElement, { prepend: true });\n this.#disconnectThemeManager = componentsThemeManager.onCurrentThemeChange(\n this.#onComponentThemeChange.bind(this)\n );\n this.#onComponentThemeChange();\n }\n\n #createOverridesStyle() {\n if (this.#styleAttributes.length) {\n let classSpecifier = createClassSelectorSpecifier(\n componentName,\n CSS_SELECTOR_SPECIFIER_MULTIPLY\n );\n const elementId = this.getAttribute('id');\n if (elementId) {\n // basically this is enough to make the selector more specific\n // but just in case there is no id, we will also add the class multiple times\n classSpecifier += `#${CSS.escape(elementId)}`;\n }\n\n this.#overrideStyleEle = injectStyle(`:host(${classSpecifier}) {}`, this.#rootElement);\n }\n }\n\n #setAttrOverride(attrName, value) {\n const style = this.#overrideStyleEle.cssRules[0].style;\n\n if (!style) return;\n\n const varName = getCssVarName(\n componentName,\n attrName.replace(new RegExp(`^${STYLE_OVERRIDE_ATTR_PREFIX}-`), '')\n );\n\n if (value) style?.setProperty(varName, value);\n else {\n style?.removeProperty(varName);\n this.removeAttribute(attrName);\n }\n }\n\n #updateOverridesStyle(attrs = []) {\n attrs.forEach((attr) => {\n if (this.#styleAttributes.includes(attr)) {\n this.#setAttrOverride(attr, this.getAttribute(attr));\n }\n });\n }\n\n #createMappingStyle() {\n if (Object.keys(mappings).length) {\n const style = createStyle(\n kebabCaseJoin(componentName, this.#componentNameSuffix),\n this.#baseSelector,\n mappings\n );\n\n injectStyle(style, this.#rootElement, { prepend: true });\n }\n }\n\n #addClassName(className) {\n (this.#rootElement.classList || this.#rootElement.host.classList).add(className);\n }\n\n async init() {\n super.init?.();\n if (this.shadowRoot?.isConnected) {\n this.#rootElement = (await this.#getRootElement?.(this)) || this.shadowRoot;\n\n this.#addClassName(componentName);\n\n this.#createMappingStyle();\n this.#createComponentTheme();\n this.#createOverridesStyle();\n\n // this is instead attributeChangedCallback because we cannot use static methods in this case\n observeAttributes(this, this.#updateOverridesStyle.bind(this), {});\n }\n }\n\n disconnectedCallback() {\n super.disconnectedCallback?.();\n\n this.#disconnectThemeManager?.();\n }\n };\n };\n","import { injectStyle } from '@descope-ui/common/components-helpers';\n\nexport const draggableMixin = (superclass) =>\n class DraggableMixinClass extends superclass {\n constructor() {\n super();\n\n injectStyle(`:host([draggable=\"true\"]) * { cursor: inherit!important }`, this);\n }\n\n get isDraggable() {\n return this.hasAttribute('draggable') && this.getAttribute('draggable') !== 'false';\n }\n\n init() {\n // because we are delegating the focus from the outer component,\n // the D&D is not working well in the page editor\n // in order to solve it we are making the inner component focusable on mouse down\n // and removing it on complete\n this.addEventListener('mousedown', (e) => {\n if (this.isDraggable) {\n const prevTabIndex = this.baseElement.getAttribute('tabindex');\n this.baseElement.setAttribute('tabindex', '-1');\n\n const onComplete = () => {\n prevTabIndex\n ? this.baseElement.setAttribute('tabindex', prevTabIndex)\n : this.baseElement.removeAttribute('tabindex');\n\n e.target.removeEventListener('mouseup', onComplete);\n e.target.removeEventListener('dragend', onComplete);\n };\n\n e.target.addEventListener('mouseup', onComplete, { once: true });\n e.target.addEventListener('dragend', onComplete, { once: true });\n }\n });\n\n super.init?.();\n }\n };\n","export const componentNameValidationMixin = (superclass) =>\n class ComponentNameValidationMixinClass extends superclass {\n #checkComponentName() {\n const currentComponentName = this.localName;\n\n if (!superclass.componentName) {\n throw Error(\n `component name is not defined on super class, make sure you have a static get for \"componentName\"`\n );\n }\n\n if (currentComponentName !== superclass.componentName) {\n throw Error(\n `component name mismatch, expected \"${superclass.componentName}\", current \"${currentComponentName}\"`\n );\n }\n }\n\n init() {\n super.init?.();\n this.#checkComponentName();\n }\n };\n","export const componentsContextMixin = (superclass) =>\n class ComponentsContextMixinClass extends superclass {\n updateComponentsContext(componentsContext) {\n this.dispatchEvent(\n new CustomEvent('components-context', {\n bubbles: true,\n composed: true,\n detail: componentsContext,\n })\n );\n }\n };\n","export const hoverableMixin = (superclass) =>\n class HoverableMixinClass extends superclass {\n init() {\n super.init?.();\n\n (this.baseElement || this).addEventListener('mouseover', (e) => {\n this.setAttribute('hover', 'true');\n e.target.addEventListener('mouseleave', () => this.removeAttribute('hover'), {\n once: true,\n });\n });\n }\n };\n","import { observeAttributes } from '../helpers/componentHelpers';\n\nconst booleanAttributesList = [\n 'readonly',\n 'focused',\n 'invalid',\n 'has-label',\n 'required',\n 'disabled',\n 'checked',\n 'has-helper',\n 'has-value',\n 'step-buttons-visible',\n 'hover',\n 'has-error-message',\n 'focus-ring',\n 'opened',\n 'active',\n 'password-visible',\n 'opening',\n 'closing',\n 'has-no-options',\n 'loading',\n 'allow-custom-value',\n 'loading',\n];\n\nconst isBooleanAttribute = (attr) => {\n return booleanAttributesList.includes(attr);\n};\n// we want all the valueless attributes to have \"true\" value\n// and all the falsy attribute to be removed\nexport const normalizeBooleanAttributesMixin = (superclass) =>\n class NormalizeBooleanAttributesMixinClass extends superclass {\n init() {\n super.init?.();\n\n observeAttributes(\n this,\n (attrs) =>\n attrs.forEach((attr) => {\n const attrVal = this.getAttribute(attr);\n\n if (isBooleanAttribute(attr)) {\n if (attrVal === '') {\n this.setAttribute(attr, 'true');\n } else if (attrVal === 'false') {\n this.removeAttribute(attr);\n }\n } else if (!attrVal) {\n // eslint-disable-next-line no-console\n console.debug(\n `attribute \"${attr}\" has no value, should it be added to the boolean attributes list?`\n );\n }\n }),\n {}\n );\n }\n };\n","import { compose } from '../helpers';\nimport { componentNameValidationMixin } from '../mixins/componentNameValidationMixin';\nimport { componentsContextMixin } from '../mixins/componentsContextMixin';\nimport { hoverableMixin } from '../mixins/hoverableMixin';\nimport { normalizeBooleanAttributesMixin } from '../mixins/normalizeBooleanAttributesMixin';\n\nexport const createBaseClass = ({ componentName, baseSelector = '' }) => {\n class DescopeBaseClass extends HTMLElement {\n static get componentName() {\n return componentName;\n }\n\n #baseElement;\n\n #isInit = true;\n\n // base selector is the selector for the component wrapper,\n // it's the highest element that is relevant for the layout\n // eslint-disable-next-line class-methods-use-this\n get baseSelector() {\n return baseSelector;\n }\n\n // this is the base element, which returned by querying the base selector\n get baseElement() {\n this.#baseElement ??= this.baseSelector\n ? this.rootElement.querySelector(this.baseSelector)\n : this;\n\n if (!this.#baseElement) {\n // eslint-disable-next-line no-console\n console.warn('missing base element for component', this.localName);\n }\n return this.#baseElement;\n }\n\n // this is the component root level element,\n // it can be either a shadow root or the component's node from the light DOM\n get rootElement() {\n return this.shadowRoot || this;\n }\n\n get name() {\n return this.getAttribute('name');\n }\n\n connectedCallback() {\n super.connectedCallback?.();\n\n if (this.rootElement.isConnected) {\n // the init function is running once, on the first time the component is connected\n if (this.#isInit) {\n this.#isInit = false;\n this.init?.();\n }\n }\n }\n }\n\n return compose(\n componentNameValidationMixin,\n hoverableMixin,\n normalizeBooleanAttributesMixin,\n componentsContextMixin\n )(DescopeBaseClass);\n};\n","// create a dispatch event function that also calls to the onevent function in case it's set\n// usage example:\n// #dispatchSomething = createDispatchEvent.bind(this, 'something' { ...options })\n// this will dispatch a new event when called, but also call to \"onsomething\"\nexport function createDispatchEvent(eventName, options = {}) {\n const event = new Event(eventName, options);\n\n this[`on${eventName}`]?.(event); // in case we got an event callback as property\n this.dispatchEvent(event);\n}\n","import { injectStyle } from '@descope-ui/common/components-helpers';\nimport { createBaseClass } from '../baseClasses/createBaseClass';\nimport { isFunction } from '../helpers';\nimport { forwardProps, syncAttrs } from '../helpers/componentHelpers';\nimport { createDispatchEvent } from '../helpers/mixinsHelpers';\n\nexport const createProxy = ({\n componentName,\n wrappedEleName,\n slots = [],\n style,\n excludeAttrsSync = [],\n includeAttrsSync = [],\n includeForwardProps = [],\n delegatesFocus = true,\n}) => {\n class ProxyClass extends createBaseClass({ componentName, baseSelector: wrappedEleName }) {\n #dispatchBlur = createDispatchEvent.bind(this, 'blur');\n\n #dispatchFocus = createDispatchEvent.bind(this, 'focus');\n\n constructor() {\n super().attachShadow({ mode: 'open', delegatesFocus }).innerHTML = `\n\t\t\t<${wrappedEleName}>\n\t\t\t${slots\n .map(\n (\n slot // when slot is an empty string, we will create the default slot (without a name)\n ) => `<slot ${slot ? `name=\"${slot}\" slot=\"${slot}\"` : ''}></slot>`\n )\n .join('')}\n\t\t\t</${wrappedEleName}>\n\t\t`;\n\n injectStyle((isFunction(style) ? style() : style) || '', this);\n }\n\n init() {\n super.init?.();\n\n this.baseElement.addEventListener('blur', (_) => {\n this.#dispatchBlur();\n });\n\n this.baseElement.addEventListener('focus', (_) => {\n this.#dispatchFocus();\n });\n\n // this is needed for components that uses props, such as combo box\n forwardProps(this.baseElement, this, includeForwardProps);\n\n syncAttrs(this.baseElement, this, {\n excludeAttrs: excludeAttrsSync,\n includeAttrs: includeAttrsSync,\n });\n }\n }\n\n return ProxyClass;\n};\n","import 'element-internals-polyfill'; // this is needed in order to support older browsers\n\nconst observedAttributes = ['required', 'pattern'];\n\nconst errorAttributes = {\n valueMissing: 'data-errormessage-value-missing',\n patternMismatch: 'data-errormessage-pattern-mismatch',\n tooShort: 'data-errormessage-pattern-mismatch-too-short',\n tooLong: 'data-errormessage-pattern-mismatch-too-long',\n rangeUnderflow: 'data-errormessage-pattern-range-underflow',\n rangeOverflow: 'data-errormessage-pattern-range-overflow',\n typeMismatch: 'data-errormessage-type-mismatch',\n};\n\nconst validationTargetSymbol = Symbol('validationTarget');\n\nexport const inputValidationMixin = (superclass) =>\n class InputValidationMixinClass extends superclass {\n #validationTarget = validationTargetSymbol;\n\n static get observedAttributes() {\n return [...(superclass.observedAttributes || []), ...observedAttributes];\n }\n\n static get formAssociated() {\n return true;\n }\n\n #internals;\n\n get internals() {\n return this.#internals;\n }\n\n set internals(value) {\n this.#internals = value;\n }\n\n constructor() {\n super();\n\n this.#internals = this.attachInternals();\n }\n\n // eslint-disable-next-line class-methods-use-this\n get defaultErrorMsgValueMissing() {\n return 'Please fill out this field.';\n }\n\n // eslint-disable-next-line class-methods-use-this\n get defaultErrorMsgPatternMismatch() {\n return 'Please match the requested format.';\n }\n\n get defaultErrorMsgTooShort() {\n return `Minimum length is ${this.getAttribute('minlength')}.`;\n }\n\n get defaultErrorMsgTooLong() {\n return `Maximum length is ${this.getAttribute('maxlength')}. `;\n }\n\n get defaultErrorMsgRangeUnderflow() {\n return `At least ${this.getAttribute('min-items-selection')} items are required.`;\n }\n\n get defaultErrorMsgRangeOverflow() {\n return `At most ${this.getAttribute('max-items-selection')} items are allowed.`;\n }\n\n // eslint-disable-next-line class-methods-use-this\n get defaultErrorMsgTypeMismatch() {\n return `Please match the requested type.`;\n }\n\n getCustomErrorMessage(attr, defaultMsg) {\n return this.hasAttribute(attr) ? this.getAttribute(attr) || ' ' : defaultMsg;\n }\n\n getErrorMessage(flags) {\n const {\n valueMissing,\n patternMismatch,\n typeMismatch,\n stepMismatch,\n tooShort,\n tooLong,\n rangeOverflow,\n rangeUnderflow,\n badInput,\n customError,\n } = flags;\n\n switch (true) {\n case valueMissing:\n return this.getCustomErrorMessage(\n errorAttributes.valueMissing,\n this.defaultErrorMsgValueMissing\n );\n case patternMismatch || stepMismatch || badInput:\n return this.getCustomErrorMessage(\n errorAttributes.patternMismatch,\n this.defaultErrorMsgPatternMismatch\n );\n case typeMismatch:\n return this.getCustomErrorMessage(\n errorAttributes.typeMismatch,\n this.defaultErrorMsgTypeMismatch\n );\n case tooShort:\n return this.getCustomErrorMessage(errorAttributes.tooShort, this.defaultErrorMsgTooShort);\n case tooLong:\n return this.getCustomErrorMessage(errorAttributes.tooLong, this.defaultErrorMsgTooLong);\n case rangeUnderflow:\n return this.getCustomErrorMessage(\n errorAttributes.rangeUnderflow,\n this.defaultErrorMsgRangeUnderflow\n );\n case rangeOverflow:\n return this.getCustomErrorMessage(\n errorAttributes.rangeOverflow,\n this.defaultErrorMsgRangeOverflow\n );\n case customError:\n return this.validationMessage;\n default:\n return '';\n }\n }\n\n #setValidity() {\n const validity = this.isReadOnly ? {} : this.getValidity();\n this.#internals.setValidity(validity, this.getErrorMessage(validity), this.validationTarget);\n }\n\n get validationMessage() {\n return this.#internals.validationMessage;\n }\n\n // eslint-disable-next-line class-methods-use-this\n getValidity() {\n // eslint-disable-next-line no-console\n console.warn('getValidity', 'is not implemented');\n }\n\n checkValidity() {\n return this.#internals.validity.valid;\n }\n\n reportValidity() {\n return this.#internals.reportValidity();\n }\n\n get validity() {\n return this.#internals.validity;\n }\n\n get validationTarget() {\n return this.#validationTarget === validationTargetSymbol\n ? this.inputElement\n : this.#validationTarget;\n }\n\n set validationTarget(val) {\n this.#validationTarget = val;\n }\n\n setCustomValidity(errorMessage) {\n if (errorMessage) {\n this.#internals.setValidity({ customError: true }, errorMessage, this.validationTarget);\n } else {\n this.#internals.setValidity({});\n this.#setValidity();\n }\n }\n\n get isRequired() {\n return this.hasAttribute('required') && this.getAttribute('required') !== 'false';\n }\n\n get isReadOnly() {\n return this.hasAttribute('readonly') && this.getAttribute('readonly') !== 'false';\n }\n\n get isDisabled() {\n return this.hasAttribute('disabled') && this.getAttribute('disabled') !== 'false';\n }\n\n get pattern() {\n return this.getAttribute('pattern');\n }\n\n get form() {\n return this.#internals.form;\n }\n\n attributeChangedCallback(attrName, oldValue, newValue) {\n super.attributeChangedCallback?.(attrName, oldValue, newValue);\n\n if (observedAttributes.includes(attrName)) {\n this.#setValidity();\n }\n }\n\n init() {\n super.init?.();\n this.addEventListener('change', this.#setValidity);\n this.addEventListener('invalid', (e) => e.stopPropagation());\n this.addEventListener('input', this.#setValidity);\n\n // The attribute sync takes time, so getValidity returns valid,\n // even when it shouldn't. This way allows all attributes to sync\n // after render, before checking the validity.\n setTimeout(() => this.#setValidity());\n }\n };\n","/* eslint-disable no-param-reassign */\nimport { compose } from '../helpers';\nimport { forwardAttrs, getComponentName } from '../helpers/componentHelpers';\nimport { createDispatchEvent } from '../helpers/mixinsHelpers';\nimport { createStyleMixin } from './createStyleMixin';\nimport { inputValidationMixin } from './inputValidationMixin';\n\nconst errorAttrs = ['invalid', 'required'];\n\nconst forwardProps = (src, targets, property) => {\n const targetArr = Array.isArray(targets) ? targets : [targets];\n\n Object.defineProperty(src, property, {\n set(v) {\n targetArr.forEach((target) => {\n target[property] = v;\n });\n },\n get() {\n return targets[0][property];\n },\n configurable: true,\n });\n};\n\n// recursively take the first slot child until it finds an element which is not a slot\n// stops after \"nestingLevel\" times\nconst getNestedInput = (ele) => {\n if (!ele) return undefined;\n\n const nestingLevel = 10;\n\n let nonSlotEle = ele;\n for (let i = 0; i < nestingLevel; i++) {\n [nonSlotEle] = nonSlotEle.assignedElements();\n if (nonSlotEle?.localName !== 'slot') return nonSlotEle;\n }\n return undefined;\n};\n\nconst proxyInputMixin =\n ({\n proxyProps = [],\n // useProxyTargets flag allows to forwardProps to other targets, other than\n // `this.inputElement`. It's to be used within `external-input` components,\n // if needed\n useProxyTargets = false,\n // allows us to set the event that should trigger validation\n // it can be either a string or an array of strings (for multiple events)\n inputEvent = 'input',\n triggerValidationEvents = [],\n // Proxies all validations from the parent component to the input element\n proxyParentValidation = false,\n }) =>\n (superclass) =>\n class ProxyInputMixinClass extends inputValidationMixin(superclass) {\n static get observedAttributes() {\n return [...(superclass.observedAttributes || []), ...errorAttrs];\n }\n\n #inputElement;\n\n #dispatchChange = createDispatchEvent.bind(this, 'change');\n\n constructor() {\n super();\n\n this.#inputElement = super.inputElement;\n }\n\n // the web-component does not loaded immediately, so we want to defer the warning\n // and show it only if the input element was not found after the component is loaded\n warnIfInputElementIsMissing() {\n clearTimeout(this.inputElementTimerId);\n\n this.inputElementTimerId = setTimeout(() => {\n // eslint-disable-next-line no-console\n !this.#inputElement && console.warn(this.localName, 'no input was found');\n }, 0);\n }\n\n get inputElement() {\n if (this.#inputElement) return this.#inputElement;\n\n this.warnIfInputElementIsMissing();\n\n const inputSlot = this.baseElement.shadowRoot?.querySelector('slot[name=\"input\"]');\n const textAreaSlot = this.baseElement.shadowRoot?.querySelector('slot[name=\"textarea\"]');\n\n this.#inputElement = getNestedInput(inputSlot) || getNestedInput(textAreaSlot);\n\n return this.#inputElement;\n }\n\n set inputElement(ele) {\n this.#inputElement = ele;\n }\n\n getValidity() {\n return this.inputElement?.validity || {};\n }\n\n #handleErrorMessage() {\n this.setAttribute('error-message', this.validationMessage);\n }\n\n // We do not want to show the default validity report tooltip\n // So we are overriding the reportValidity fn to show the input's error message\n reportValidity = () => {\n // we want to update validity so in case the value was set programmatically, we won't get an error\n this.inputElement.setCustomValidity('');\n this.setCustomValidity('');\n if (!this.checkValidity()) {\n this.setAttribute('invalid', 'true');\n this.#handleErrorMessage();\n this.focus();\n }\n };\n\n // we are keeping also the default reportValidity because there are some components that still using it\n defaultReportValidity() {\n return super.reportValidity();\n }\n\n init() {\n super.init?.();\n\n // vaadin sets invalid indication on blur\n // we want invalid indication to appear only when calling reportValidity\n // this is why we are overriding vaadin's setInvalid behavior\n // to update only when the element is valid (so invalid indication will only be removed)\n // and we are adding it in reportValidity\n // eslint-disable-next-line func-names\n this.baseElement._setInvalid = function (invalid) {\n if (!invalid && this._shouldSetInvalid(invalid)) {\n this.invalid = invalid;\n }\n };\n\n // We want to ensure that `input` events properly cross ShadowDOM boundries\n // e.g. When we autofill a component's input with 1Password, for instance,\n // the event is fired without `composed: true` and doesn't our component's\n // ShadowDOM.\n this.baseElement.addEventListener('input', (e) => {\n if (!e.composed) {\n this.dispatchEvent(new Event('input', { bubbles: true, composed: true }));\n }\n });\n\n triggerValidationEvents.forEach((e) => {\n this.baseElement?.addEventListener(e, () => {\n this.inputElement?.setCustomValidity('');\n });\n });\n\n // on some cases the base element is not ready so the inputElement is empty\n // we are deferring this section to make sure the base element is ready\n setTimeout(() => {\n const validationEvents = Array.isArray(inputEvent) ? inputEvent : [inputEvent];\n\n validationEvents.forEach((e) => {\n this.baseElement?.addEventListener(e, () => {\n if (!this.baseElement.checkValidity()) {\n this.#handleErrorMessage();\n } else {\n this.removeAttribute('invalid');\n }\n });\n });\n\n this.baseElement.addEventListener('change', () => {\n this.#dispatchChange();\n });\n\n this.addEventListener('invalid', () => {\n if (!this.checkValidity()) {\n this.setAttribute('invalid', 'true');\n }\n this.#handleErrorMessage();\n });\n\n // sync properties\n proxyProps.forEach((prop) => {\n const externalInput = this.querySelector('input[slot=\"external-input\"]') || null;\n const proxyTargets = useProxyTargets\n ? [this.baseElement, externalInput].filter(Boolean)\n : [];\n forwardProps(this, [this.inputElement, ...proxyTargets], prop);\n });\n\n this.setSelectionRange = this.inputElement?.setSelectionRange?.bind(this.inputElement);\n\n forwardAttrs(this, this.inputElement, { includeAttrs: ['inputmode'] });\n });\n\n if (proxyParentValidation) {\n // All functions called on the inputElement internals will be applied to the parent\n // component internals as well. As a result, there's no need to add outer mechanisms\n // to update the parent component's validity state based on the input elements validity.\n const inputElementInternals = this.inputElement.internals;\n const parentThis = this;\n this.inputElement.internals = new Proxy(inputElementInternals, {\n get: (target, prop) => {\n if (typeof target[prop] === 'function' && prop === 'setValidity') {\n return (...args) => {\n // If we're calling setValidity with 3 args, then the validationTarget\n // needs to be swapped to be the inputElement\n if (args.length === 3) {\n const newArgs = args.slice(0, args.length - 1);\n newArgs.push(parentThis.inputElement);\n parentThis.internals[prop](...newArgs);\n } else {\n parentThis.internals[prop](...args);\n }\n return target[prop](...args);\n };\n }\n\n if (typeof target[prop] === 'function') {\n return (...args) => {\n parentThis.internals[prop](...args);\n return target[prop](...args);\n };\n }\n\n return target[prop];\n },\n });\n }\n }\n };\n\nconst composedProxyInputMixin = (proxyInputMixinConfig) =>\n compose(\n proxyInputMixin(proxyInputMixinConfig),\n // in order to use input-wrapper across all our input components, we need to inject its theme\n // to every proxy input mixin, to allow its css vars to be scoped properly and accessible\n // in the proxy input component\n createStyleMixin({ componentNameOverride: getComponentName('input-wrapper') })\n );\n\nexport { composedProxyInputMixin as proxyInputMixin };\n","import { kebabCaseJoin } from '../helpers';\nimport { forwardAttrs } from '../helpers/componentHelpers';\nimport { createStyleMixin } from './createStyleMixin';\nimport { createCssVarsList } from './createStyleMixin/helpers';\n\n// this is needed because we might generate the same css vars names\n// e.g. \"overlayColor\" attribute in style mixin's mapping,\n// will generate the same var as \"color\" attribute in portals's mapping\n// when the portal name is \"overlay\".\n// because of that, we are adding this separator that is also used as a differentiator\nconst DISPLAY_NAME_SEPARATOR = '_';\n\nconst sanitizeSelector = (selector) => selector.replace(/[^\\w\\s]/gi, '');\n\nconst withWaitForShadowRoot = (getRootElementFn) => async (that) => {\n const ele = await getRootElementFn(that);\n\n return new Promise((res) => {\n const MAX_RETRIES = 20;\n let counter = 0;\n\n const check = () => {\n if (counter > MAX_RETRIES) {\n // eslint-disable-next-line no-console\n console.error('could not get shadow root for element', ele);\n res(ele);\n return;\n }\n\n counter++;\n\n if (!ele?.shadowRoot) {\n setTimeout(check);\n } else {\n res(ele.shadowRoot);\n return;\n }\n };\n check();\n });\n};\n\nexport const portalMixin =\n ({ name, selector, mappings = {}, forward: { attributes = [], include = true } = {} }) =>\n (superclass) => {\n const eleDisplayName = name || sanitizeSelector(selector);\n\n const BaseClass = createStyleMixin({\n mappings,\n })(superclass);\n\n return class PortalMixinClass extends BaseClass {\n static get cssVarList() {\n return {\n ...BaseClass.cssVarList,\n [eleDisplayName]: createCssVarsList(\n eleDisplayName\n ? kebabCaseJoin(superclass.componentName, DISPLAY_NAME_SEPARATOR + eleDisplayName)\n : superclass.componentName,\n mappings\n ),\n };\n }\n\n #portalEle;\n\n constructor() {\n // we cannot use \"this\" before calling \"super\"\n const getRootElement = async (that) => {\n const baseEle = (that.shadowRoot || that).querySelector(that.baseSelector);\n if (!selector || !that.shadowRoot) {\n return baseEle;\n }\n\n // in case we have a selector, we should first wait for the base element shadow root\n // and then look for the internal element\n const baseEleShadowRoot = await withWaitForShadowRoot(() => baseEle)(that);\n return baseEleShadowRoot.querySelector(selector);\n };\n\n const getPortalElement = withWaitForShadowRoot(getRootElement);\n\n super({\n getRootElement: getPortalElement,\n componentNameSuffix: eleDisplayName && DISPLAY_NAME_SEPARATOR + eleDisplayName,\n themeSection: eleDisplayName ? DISPLAY_NAME_SEPARATOR + eleDisplayName : undefined,\n baseSelector: '',\n });\n\n // Defer portal element lookup to init() for React compatibility\n // (elements created in init() won't exist during constructor)\n this.#getPortalElement = () => getPortalElement(this).then((ele) => ele?.host || ele);\n }\n\n #getPortalElement;\n\n async #handleHoverAttribute() {\n const portalEle = await this.#portalEle;\n portalEle.onmouseenter = (e) => {\n e.target.setAttribute('hover', 'true');\n };\n portalEle.onmouseleave = (e) => {\n e.target.removeAttribute('hover');\n };\n }\n\n async init() {\n super.init?.();\n // Initialize portal element lookup here (deferred from constructor for React compatibility)\n this.#portalEle = this.#getPortalElement();\n const portalEle = await this.#portalEle;\n forwardAttrs(this, portalEle, {\n [include ? 'includeAttrs' : 'excludeAttrs']: attributes,\n });\n\n this.#handleHoverAttribute();\n }\n };\n };\n","import { createDispatchEvent } from '../helpers/mixinsHelpers';\n\nexport const changeMixin = (superclass) =>\n class ChangeMixinClass extends superclass {\n #dispatchChange = createDispatchEvent.bind(this, 'change');\n\n init() {\n super.init?.();\n this.prevValue = this.value;\n\n this.addEventListener('change', (e) => {\n e.stopPropagation();\n });\n\n this.addEventListener('blur', () => {\n if (this.value !== this.prevValue) {\n this.#dispatchChange();\n this.prevValue = this.value;\n }\n });\n }\n };\n","import { createDispatchEvent } from '../helpers/mixinsHelpers';\n\nexport const inputEventsDispatchingMixin = (superclass) =>\n class InputEventsDispatchingMixinClass extends superclass {\n init() {\n this.#blockNativeEvents();\n\n super.init?.();\n }\n\n // we want to block the native (trusted) events and control when these events are being dispatched\n #blockNativeEvents() {\n ['blur', 'focus', 'focusin', 'focusout'].forEach((event) => {\n this.addEventListener(event, (e) => {\n e.isTrusted && e.target === this && e.stopImmediatePropagation();\n });\n });\n }\n\n handleFocusEventsDispatching(inputs) {\n let timerId;\n\n // in order to simulate blur & focusout on root input element\n // we are checking if focus on one of the inner elements happened immediately after blur\n // if not, the component is no longer focused and we should dispatch blur & focusout\n inputs?.forEach((input) => {\n input?.addEventListener('focusout', (e) => {\n e.stopImmediatePropagation();\n timerId = setTimeout(() => {\n timerId = null;\n\n createDispatchEvent.call(this, 'blur');\n createDispatchEvent.call(this, 'focusout', { bubbles: true });\n });\n });\n\n // in order to simulate focus & focusin on the root input element\n // we are holding a timer id and clearing it on focusin\n // if there is a timer id, it means that the root input is still focused\n // otherwise, it was not focused before, and we should dispatch focus & focusin\n const onFocus = (e) => {\n e.stopImmediatePropagation();\n clearTimeout(timerId);\n if (!timerId) {\n createDispatchEvent.call(this, 'focus');\n createDispatchEvent.call(this, 'focusin', { bubbles: true });\n }\n };\n\n // some components are not dispatching focusin but only focus\n input?.addEventListener('focusin', onFocus);\n input?.addEventListener('focus', onFocus);\n });\n }\n\n // we want to block the input events from propagating in case the value of the root input wasn't change\n // this can happen if we are sanitizing characters on the internal inputs and do not want it to affect the root input element value\n // in this case, on each input event, we are comparing the root input value to the previous one, and only if it does not match, we are allowing the input event to propagate\n handleInputEventDispatching() {\n let previousRootComponentValue = this.value;\n\n // we are comparing the previous value to the new one,\n // and if they have the same value, we are blocking the input event\n this.addEventListener('input', (e) => {\n // We don't want to block our own event that we fire from handleInputEventDispatching\n if (this !== e.target) {\n e.stopImmediatePropagation();\n\n if (previousRootComponentValue !== this.value) {\n previousRootComponentValue = this.value;\n createDispatchEvent.call(this, 'input', { bubbles: true, composed: true });\n }\n }\n });\n }\n };\n","import { syncAttrs } from '../helpers/componentHelpers';\nimport {\n applyExternalInputStyles,\n createExternalInputEle,\n createExternalInputSlot,\n} from './externalInputHelpers';\n\nexport const externalInputMixin =\n ({ inputType, inputName, autocompleteType, includeAttrs = [], noBlurDispatch = false }) =>\n (superclass) =>\n class ExternalInputMixinClass extends superclass {\n #timers = [];\n\n get isExternalInput() {\n return this.getAttribute('external-input') === 'true';\n }\n\n createExternalInput() {\n if (!this.isExternalInput || this.isReadOnly || this.isDisabled) {\n return null;\n }\n\n // use original input element as reference\n const origInput = this.baseElement.querySelector('input');\n\n if (!origInput) {\n return null;\n }\n\n // to avoid focus loop between external-input and origInput\n // we set origInput's tabindex to -1\n // otherwise, shift-tab will never leave the component focus\n origInput.setAttribute('tabindex', '-1');\n\n // create external slot\n const externalInputSlot = createExternalInputSlot('external-input', 'suffix');\n\n // append external slot to base element\n this.baseElement.appendChild(externalInputSlot);\n\n this.externalInput = createExternalInputEle(\n 'external-input',\n inputType,\n this.getAutocompleteType(),\n inputName\n );\n\n // apply original input's styles to external input\n setTimeout(() => {\n applyExternalInputStyles(origInput, this.externalInput, this.getAttribute('label-type'));\n });\n\n // 1Password catches the internal input, so we forward the value to the external input\n this.forwardInputValue(origInput, this.externalInput);\n\n syncAttrs(origInput, this.externalInput, {\n includeAttrs,\n });\n\n // We disable Vaadin's original `_setFocused` function, and use handleFocusEvents\n // and handleBlurEvents functions\n this.baseElement\n .querySelector('input')\n .addEventListener('focusout', (e) => e.stopImmediatePropagation(), true);\n\n // In order to manage focus/blur events when moving between parts of the component\n // we're managing the event dispatching by ourselves, with the following strategy:\n // - If one of the component parts is focused - it means that the component is still focused - so we stop the blur events.\n // - When none of the component parts is focused, we dispatch blur event.\n this.handleFocusEvents();\n this.handleBlurEvents();\n\n // sync input value\n this.handlelInputEvents(this.externalInput);\n\n // append external input to component's DOM\n this.appendChild(this.externalInput);\n\n return this.externalInput;\n }\n\n clearBlurTimers() {\n this.#timers.forEach((timer) => clearTimeout(timer));\n this.#timers.length = 0;\n }\n\n dispatchBlur() {\n return setTimeout(() => {\n this.dispatchEvent(new Event('blur', { bubbles: true, composed: true }));\n this.removeAttribute('focused');\n });\n }\n\n handleFocusEvents() {\n // on baseElement `focus` we forward the focus to the external input.\n // also, in order to avoid any blur within the component, we clear the blur timers.\n this.baseElement.addEventListener('focus', () => {\n this.externalInput.focus();\n this.clearBlurTimers();\n });\n\n // on `focus` of the external input, we manually set the `focused` attribute\n this.externalInput.addEventListener('focus', () => {\n this.clearBlurTimers();\n setTimeout(() => this.baseElement.setAttribute('focused', 'true'));\n });\n }\n\n handleBlurEvents() {\n this.baseElement.addEventListener(\n 'blur',\n (e) => {\n e.stopImmediatePropagation();\n // some components do not require this synthetic blur dispatch (e.g. Password)\n // so we allow them to override this dispatch\n if (noBlurDispatch) return;\n this.#timers.push(this.dispatchBlur());\n },\n true\n );\n\n this.externalInput.addEventListener(\n 'blur',\n (e) => {\n e.stopImmediatePropagation();\n this.#timers.push(this.dispatchBlur());\n },\n true\n );\n }\n\n handlelInputEvents(externalInput) {\n // sync value of insible input back to original input\n externalInput.addEventListener('input', (e) => {\n this.value = e.target.value;\n });\n\n // handle has-value attr\n externalInput.addEventListener('input', (e) => {\n if (!e.target.value) {\n this.removeAttribute('has-value');\n } else {\n this.setAttribute('has-value', 'true');\n }\n });\n }\n\n getAutocompleteType() {\n return this.getAttribute('autocomplete') || autocompleteType;\n }\n\n forwardInputValue(source, target) {\n // set internal sync events\n const valueDescriptor = Object.getOwnPropertyDescriptor(\n this.inputElement.constructor.prototype,\n 'value'\n );\n\n Object.defineProperty(source, 'value', {\n ...valueDescriptor,\n\n set(v) {\n valueDescriptor.set.call(this, v);\n // eslint-disable-next-line no-param-reassign\n target.value = v;\n },\n configurable: true,\n });\n }\n };\n","// since on load we can only sample the color of the placeholder,\n// we need to temporarily populate the input in order to sample the value color\nconst getValueColor = (ele, computedStyle) => {\n // to support setting dynamic values, we have to store the existing value\n // and re-set it if we are returning from this hack\n const origVal = ele.value;\n\n // eslint-disable-next-line no-param-reassign\n ele.value = '_';\n\n const valueColor = computedStyle.getPropertyValue('color');\n\n if (ele.value === '_') {\n // eslint-disable-next-line no-param-reassign\n ele.value = origVal;\n }\n\n return valueColor;\n};\n\nexport const createExternalInputSlot = (slotName, targetSlotName) => {\n const slotEle = document.createElement('slot');\n\n slotEle.setAttribute('name', slotName);\n slotEle.setAttribute('slot', targetSlotName);\n\n return slotEle;\n};\n\nexport const createExternalInputEle = (targetSlotName, type, autocompleteType, inputName) => {\n const inputEle = document.createElement('input');\n\n inputEle.setAttribute('slot', targetSlotName);\n inputEle.setAttribute('type', type);\n inputEle.setAttribute('name', inputName);\n inputEle.setAttribute('data-hidden-input', 'true');\n inputEle.setAttribute('autocomplete', autocompleteType);\n\n return inputEle;\n};\n\n// We apply the original input's style to the external-input.\n// Eventually, the user should interact directly with the external input.\n// We keep the original input\nexport const applyExternalInputStyles = (sourceInputEle, targetInputEle, labelType) => {\n // We set a timeout here to avoid \"Double Print\" cases,\n // caused by sampling the computed style before it's ready.\n setTimeout(() => {\n const computedStyle = getComputedStyle(sourceInputEle);\n // Get minimal set of computed theme properties to set on external input\n const height = computedStyle.getPropertyValue('height');\n const paddingLeft = computedStyle.getPropertyValue('padding-left');\n const paddingRight = computedStyle.getPropertyValue('padding-right');\n const fontSize = computedStyle.getPropertyValue('font-size');\n const fontFamily = computedStyle.getPropertyValue('font-family');\n const letterSpacing = computedStyle.getPropertyValue('letter-spacing');\n const caretColor = computedStyle.getPropertyValue('caret-color');\n\n const valueColor = getValueColor(sourceInputEle, computedStyle);\n\n const commonThemeStyles = [\n ['all', 'unset'],\n ['position', 'absolute'],\n ['background-color', 'transparent'],\n ['height', height],\n ['left', paddingLeft],\n ['right', paddingRight],\n ['font-size', fontSize],\n ['font-family', fontFamily],\n ['letter-spacing', letterSpacing],\n ['caret-color', caretColor], // this is for seeing caret when focusing on external input\n ['color', valueColor],\n ];\n\n commonThemeStyles.forEach(([key, val]) =>\n targetInputEle.style.setProperty(key, val, 'important')\n );\n\n // Handle floating label theme properties\n if (labelType === 'floating') {\n const marginBottom = computedStyle.getPropertyValue('margin-bottom');\n targetInputEle.style.setProperty('margin-bottom', marginBottom, 'important');\n }\n\n // sample and apply width only after original input is ready and fully rendered\n const width = computedStyle.getPropertyValue('width');\n targetInputEle.style.setProperty(\n 'width',\n `calc(${width} - ${paddingLeft} - ${paddingRight}`,\n 'important'\n );\n }, 0);\n};\n","export const inputOverrideValidConstraintsMixin = (superclass) =>\n class InputOverrideValidConstraintsMixinClass extends superclass {\n init() {\n super.init?.();\n\n // vaadin uses `validConstraints` (required, pattern, minlength, maxlength) to determine if it should validate\n // the input or not. We want to override this behavior, so we can enforce validation even if these attributes are not present.\n if (this.baseElement._hasValidConstraints) {\n this.baseElement._hasValidConstraints = () => true;\n }\n }\n };\n","import { compose } from '../helpers';\nimport {\n changeMixin,\n inputEventsDispatchingMixin,\n inputValidationMixin,\n normalizeBooleanAttributesMixin,\n} from '../mixins';\nimport { createBaseClass } from './createBaseClass';\n\nexport const createBaseInputClass = (...args) =>\n compose(\n inputValidationMixin,\n changeMixin,\n normalizeBooleanAttributesMixin,\n inputEventsDispatchingMixin\n )(createBaseClass(...args));\n","import { createBaseInputClass } from '../../../baseClasses/createBaseInputClass';\nimport { forwardAttrs, getComponentName, syncAttrs } from '../../../helpers/componentHelpers';\n\nexport const componentName = getComponentName('boolean-field-internal');\n\nconst forwardAttributes = ['disabled', 'invalid', 'readonly'];\n\nconst BaseInputClass = createBaseInputClass({ componentName, baseSelector: 'div' });\n\nclass BooleanInputInternal extends BaseInputClass {\n static get observedAttributes() {\n return ['readonly', 'label'];\n }\n\n constructor() {\n super();\n this.innerHTML = `\n\t\t\t<div class=\"wrapper\">\n\t\t\t\t<vaadin-checkbox>\n\t\t\t\t\t<descope-enriched-text link-target-blank=\"true\" class=\"label-content\" slot=\"label\"></descope-enriched-text>\n\t\t\t\t</vaadin-checkbox>\n\t\t\t</div>\n\t\t`;\n this.wrapperEle = this.querySelector('div');\n this.checkbox = this.querySelector('vaadin-checkbox');\n this.labelContent = this.querySelector('.label-content');\n }\n\n get value() {\n return this.checkbox?.checked;\n }\n\n set value(val) {\n this.checkbox.checked = val;\n }\n\n get checked() {\n return this.value;\n }\n\n set checked(val) {\n this.value = val;\n }\n\n init() {\n this.addEventListener('focus', (e) => {\n if (e.isTrusted) {\n this.checkbox.focus();\n }\n });\n super.init?.();\n\n forwardAttrs(this, this.checkbox, { includeAttrs: forwardAttributes });\n syncAttrs(this, this.checkbox, { includeAttrs: ['checked'] });\n\n // Handle label click to toggle checkbox\n this.labelContent.addEventListener('click', (e) => {\n if (!this.hasAttribute('disabled') && !this.hasAttribute('readonly')) {\n this.checkbox.click();\n }\n });\n\n // we need it in order to set the focus ring and trigger validation on descope-checkbox\n this.handleFocusEventsDispatching([this.checkbox]);\n }\n\n attributeChangedCallback(attrName, oldValue, newValue) {\n super.attributeChangedCallback?.(attrName, oldValue, newValue);\n\n if (attrName === 'readonly') {\n this.onReadOnlyChange(newValue !== null);\n }\n\n if (attrName === 'label') {\n this.onLabelChange();\n }\n }\n\n onLabelChange() {\n const labelValue = this.getAttribute('label');\n if (labelValue) {\n this.labelContent.textContent = labelValue;\n } else {\n this.labelContent.textContent = '';\n }\n }\n\n onReadOnlyChange(val) {\n this.baseElement.setAttribute('inert', val);\n }\n\n getValidity() {\n if (this.isRequired && !this.value) {\n return { valueMissing: true };\n }\n return {};\n }\n}\n\nexport default BooleanInputInternal;\n","import { forwardAttrs, forwardProps, syncAttrs } from '../../helpers/componentHelpers';\nimport { componentName as descopeInternalComponentName } from './descope-boolean-field-internal/BooleanFieldInternal';\n\nexport const booleanFieldMixin = (superclass) =>\n class BooleanFieldMixinClass extends superclass {\n init() {\n super.init?.();\n\n const template = document.createElement('template');\n template.innerHTML = `\n\t\t\t\t<${descopeInternalComponentName}\n\t\t\t\t\ttabindex=\"-1\"\n\t\t\t\t\tslot=\"input\"\n\t\t\t\t></${descopeInternalComponentName}>\n\t\t\t`;\n\n this.baseElement.appendChild(template.content.cloneNode(true));\n this.inputElement = this.shadowRoot.querySelector(descopeInternalComponentName);\n this.checkbox = this.inputElement.querySelector('vaadin-checkbox');\n\n forwardAttrs(this, this.inputElement, {\n includeAttrs: [\n 'required',\n 'full-width',\n 'size',\n 'label',\n 'invalid',\n 'disabled',\n 'readonly',\n ],\n });\n\n forwardProps(this.inputElement, this, ['checked']);\n syncAttrs(this, this.inputElement, { includeAttrs: ['checked'] });\n }\n };\n","import { EnrichedTextClass } from '@descope-ui/descope-enriched-text/class';\nimport { resetInputFieldDefaultWidth } from '../../helpers/themeHelpers/resetHelpers';\n\nexport default (cssVarList) => `\n:host {\n\tdisplay: inline-flex;\n}\n\n${resetInputFieldDefaultWidth()}\n\n.wrapper {\n\tdisplay: flex;\n\tbox-sizing: border-box;\n}\nvaadin-text-field {\n\tposition: relative;\n\tpadding: 0;\n\tdisplay: inline-flex;\n\talign-items: flex-start;\n}\nvaadin-text-field::before {\n content: unset;\n}\nvaadin-text-field::part(label) {\n position: absolute;\n top: 0;\n}\nvaadin-text-field::part(input-field) {\n\tpadding: 0;\n\tbackground: none;\n\tmin-height: 0;\n}\nvaadin-text-field::part(input-field)::after {\n background: none;\n}\nvaadin-text-field[focus-ring]::part(input-field) {\n\tbox-shadow: none;\n}\n\nvaadin-checkbox [slot=\"label\"] {\n align-self: flex-start;\n padding: 0;\n}\n[required] vaadin-checkbox [slot=\"label\"]:not(:empty) {\n\tpadding-inline-end: 1em;\n}\ndescope-boolean-field-internal {\n -webkit-mask-image: none;\n min-height: initial;\n}\n\ndescope-enriched-text[empty] {\n\t${EnrichedTextClass.cssVarList.hostDisplay}: none;\n}\n\ndescope-enriched-text {\n\t${EnrichedTextClass.cssVarList.hostDirection}: var(${cssVarList.hostDirection});\n}\n\n`;\n","import { EnrichedTextClass } from '@descope-ui/descope-enriched-text/class';\nimport { getComponentName } from '../../../helpers/componentHelpers';\nimport { compose } from '../../../helpers';\nimport {\n createStyleMixin,\n proxyInputMixin,\n draggableMixin,\n componentNameValidationMixin,\n createProxy,\n} from '../../../mixins';\nimport { booleanFieldMixin } from '../booleanFieldMixin';\nimport commonStyles from '../commonStyles';\nimport { useHostExternalPadding } from '../../../helpers/themeHelpers/resetHelpers';\n\nexport const componentName = getComponentName('checkbox');\n\nconst {\n host,\n component,\n checkboxElement,\n checkboxSurface,\n checkboxLabel,\n requiredIndicator,\n checkboxContainer,\n helperText,\n errorMessage,\n} = {\n host: { selector: () => ':host' },\n requiredIndicator: {\n selector: '[required] vaadin-checkbox [slot=\"label\"]:not(:empty)::part(content)::after',\n },\n component: { selector: 'vaadin-checkbox' },\n checkboxElement: { selector: 'vaadin-checkbox::part(checkbox)' },\n checkboxSurface: { selector: 'vaadin-checkbox::part(checkbox)::after' },\n checkboxLabel: { selector: 'vaadin-checkbox [slot=\"label\"]:not(:empty)' },\n helperText: { selector: '::part(helper-text)' },\n errorMessage: { selector: '::part(error-message)' },\n};\n\nexport const CheckboxClass = compose(\n createStyleMixin({\n mappings: {\n hostWidth: { ...host, property: 'width' },\n hostDirection: { ...host, property: 'direction' },\n\n fontSize: [host, checkboxElement, checkboxLabel],\n fontFamily: [checkboxLabel, helperText, errorMessage],\n\n labelTextColor: { ...checkboxLabel, property: 'color' },\n labelSpacing: { ...checkboxLabel, property: 'padding-inline-start' },\n labelLineHeight: { ...checkboxLabel, property: 'line-height' },\n labelFontWeight: { ...checkboxLabel, property: 'font-weight' },\n labelRequiredIndicator: { ...requiredIndicator, property: 'content' },\n\n errorMessageTextColor: { ...errorMessage, property: 'color' },\n errorMessageIcon: { ...errorMessage, property: 'background-image' },\n errorMessageIconSize: { ...errorMessage, property: 'background-size' },\n errorMessageIconPadding: { ...errorMessage, property: 'padding-inline-start' },\n errorMessageIconRepeat: { ...errorMessage, property: 'background-repeat' },\n errorMessageIconPosition: { ...errorMessage, property: 'background-position' },\n errorMessageFontSize: { ...errorMessage, property: 'font-size' },\n\n inputValueTextColor: { ...checkboxSurface, property: 'color' },\n inputBackgroundColor: { ...checkboxElement, property: 'background-color' },\n\n inputBorderRadius: { ...checkboxElement, property: 'border-radius' },\n inputBorderWidth: { ...checkboxElement, property: 'border-width' },\n inputBorderOffset: { ...checkboxElement, property: 'border-offset' },\n inputBorderColor: { ...checkboxElement, property: 'border-color' },\n inputBorderStyle: { ...checkboxElement, property: 'border-style' },\n\n inputOutlineWidth: { ...checkboxElement, property: 'outline-width' },\n inputOutlineOffset: { ...checkboxElement, property: 'outline-offset' },\n inputOutlineColor: { ...checkboxElement, property: 'outline-color' },\n inputOutlineStyle: { ...checkboxElement, property: 'outline-style' },\n inputAlign: { ...checkboxElement, property: 'align-self' },\n\n inputContainerPadding: { ...component, property: 'padding' },\n inputContainerBackgroundColor: { ...component, property: 'background-color' },\n inputContainerBorderRadius: { ...component, property: 'border-radius' },\n inputContainerBorderWidth: { ...component, property: 'border-width' },\n inputContainerBorderColor: { ...component, property: 'border-color' },\n inputContainerBorderStyle: { ...component, property: 'border-style' },\n inputContainerOutlineWidth: { ...component, property: 'outline-width' },\n inputContainerOutlineOffset: { ...component, property: 'outline-offset' },\n inputContainerOutlineColor: { ...component, property: 'outline-color' },\n inputContainerOutlineStyle: { ...component, property: 'outline-style' },\n\n inputSize: [\n { ...checkboxElement, property: 'width' },\n { ...checkboxElement, property: 'height' },\n { ...checkboxSurface, property: 'font-size' },\n { ...component, property: 'font-size' },\n ],\n },\n }),\n draggableMixin,\n proxyInputMixin({ proxyProps: ['value', 'selectionStart'] }),\n componentNameValidationMixin,\n booleanFieldMixin\n)(\n createProxy({\n slots: [],\n wrappedEleName: 'vaadin-text-field',\n style: () => `\n\t\t\t${commonStyles(CheckboxClass.cssVarList)}\n ${useHostExternalPadding(CheckboxClass.cssVarList)}\n\n :host {\n\t\t\t\tdisplay: inline-flex;\n\t\t\t\tmax-width: 100%;\n }\n\n :host ::part(error-message) {\n direction: ltr;\n }\n\n vaadin-text-field {\n width: 100%;\n }\n\n descope-boolean-field-internal {\n\t\t\t\tpadding: 2px;\n\t\t\t\twidth: 100%;\n height: 100%;\n }\n\n :host([full-width]) vaadin-checkbox {\n flex-grow: 1;\n }\n\n vaadin-checkbox::part(checkbox) {\n margin: 0;\n }\n\n vaadin-checkbox::part(checkbox)::after {\n top: 0;\n left: 0;\n -webkit-text-fill-color: initial;\n }\n\n vaadin-checkbox label {\n -webkit-text-fill-color: initial;\n }\n\n vaadin-text-field::part(input-field)::after {\n content: none;\n }\n `,\n excludeAttrsSync: ['label', 'tabindex', 'style'],\n componentName,\n })\n);\n","import {\n createStyleMixin,\n draggableMixin,\n componentNameValidationMixin,\n} from '@descope-ui/common/components-mixins';\nimport { compose } from '@descope-ui/common/utils';\nimport {\n getComponentName,\n injectStyle,\n observeChildren,\n} from '@descope-ui/common/components-helpers';\nimport { createBaseClass } from '@descope-ui/common/base-classes';\n\nexport const componentName = getComponentName('text');\n\nclass RawText extends createBaseClass({\n componentName,\n baseSelector: ':host > slot',\n}) {\n constructor() {\n super();\n\n this.attachShadow({ mode: 'open' }).innerHTML = `\n <slot part=\"text-wrapper\"></slot>\n `;\n\n injectStyle(`\n :host {\n display: inline-block;\n line-height: 1em;\n }\n :host > slot {\n width: 100%;\n display: inline-block;\n }\n `, this);\n }\n\n get hideWhenEmpty() {\n return this.getAttribute('hide-when-empty') === 'true';\n }\n\n init() {\n super.init();\n\n observeChildren(this, () => {\n const hasChildren = !!this.childNodes.length;\n this.style.display = !hasChildren && this.hideWhenEmpty ? 'none' : '';\n });\n }\n}\n\nconst { host } = {\n host: { selector: () => ':host' }\n}\n\nexport const TextClass = compose(\n createStyleMixin({\n mappings: {\n hostWidth: { ...host, property: 'width' },\n hostDirection: { ...host, property: 'direction' },\n fontSize: {},\n textColor: [\n { property: 'color' }\n ],\n textLineHeight: { property: 'line-height' },\n textLetterSpacing: { property: 'letter-spacing' },\n textShadow: {},\n textAlign: {},\n textTransform: {},\n fontFamily: {},\n fontStyle: {},\n fontWeight: {},\n borderWidth: {},\n borderStyle: {},\n borderColor: {},\n },\n }),\n draggableMixin,\n componentNameValidationMixin,\n)(RawText);\n","import {\n createStyleMixin,\n draggableMixin,\n componentNameValidationMixin,\n} from '@descope-ui/common/components-mixins';\nimport { compose } from '@descope-ui/common/utils';\nimport {\n getComponentName,\n forwardAttrs,\n injectStyle,\n} from '@descope-ui/common/components-helpers';\nimport { createBaseClass } from '@descope-ui/common/base-classes';\nimport { TextClass } from '@descope-ui/descope-text/class';\n\nexport const componentName = getComponentName('link');\n\nclass RawLink extends createBaseClass({ componentName, baseSelector: ':host a' }) {\n constructor() {\n super();\n\n this.attachShadow({ mode: 'open' }).innerHTML = `\n\t\t<div>\n\t\t\t<descope-text part=\"wrapper\">\n\t\t\t\t<a>\n\t\t\t\t\t<slot></slot>\n\t\t\t\t</a>\n\t\t\t</descope-text>\n\t\t</div>\n\t\t`;\n\n injectStyle(\n `\n :host {\n\t\t\tdisplay: inline-block;\n line-height: 1em;\n\t\t}\n\t\t:host a {\n\t\t\tdisplay: inline;\n\t\t}\n\n :host([ellipsis=\"true\"]) descope-text {\n display: inline-flex;\n }\n :host([ellipsis=\"true\"]) descope-text::part(text-wrapper) {\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n }\n `,\n this\n );\n\n forwardAttrs(this, this.shadowRoot.querySelector('a'), {\n includeAttrs: ['href', 'target', 'tooltip'],\n mapAttrs: {\n tooltip: 'title',\n },\n });\n\n forwardAttrs(this, this.shadowRoot.querySelector('descope-text'), {\n includeAttrs: ['mode', 'variant'],\n });\n }\n}\n\nconst selectors = {\n host: { selector: () => ':host' },\n link: { selector: () => ':host a' },\n anchor: {},\n wrapper: { selector: () => ':host > div' },\n text: { selector: () => TextClass.componentName },\n};\n\nconst { anchor, text, host, wrapper, link } = selectors;\n\nexport const LinkClass = compose(\n createStyleMixin({\n mappings: {\n hostWidth: { ...host, property: 'width' },\n hostDirection: { ...text, property: 'direction' },\n textAlign: wrapper,\n textDecoration: { ...link, property: 'text-decoration', fallback: 'none' },\n textColor: [\n { ...anchor, property: 'color' },\n { ...text, property: TextClass.cssVarList.textColor },\n ],\n cursor: anchor,\n },\n }),\n draggableMixin,\n componentNameValidationMixin\n)(RawLink);\n","import { componentName, TextClass } from './TextClass';\n\ncustomElements.define(componentName, TextClass);\n\nexport { TextClass, componentName };\n","import { componentName, LinkClass } from './LinkClass';\nimport '@descope-ui/descope-text';\n\ncustomElements.define(componentName, LinkClass);\n\nexport { LinkClass, componentName };\n","import '@descope-ui/descope-link';\n\nimport { componentName, EnrichedTextClass } from './EnrichedTextClass';\n\ncustomElements.define(componentName, EnrichedTextClass);\n\nexport { EnrichedTextClass, componentName };\n","import BooleanFieldInternal, { componentName } from './BooleanFieldInternal';\n\ncustomElements.define(componentName, BooleanFieldInternal);\n","import { componentName, CheckboxClass } from './CheckboxClass';\nimport '@vaadin/checkbox';\nimport '@vaadin/text-field';\nimport '@descope-ui/descope-enriched-text';\nimport '../descope-boolean-field-internal';\n\ncustomElements.define(componentName, CheckboxClass);\n\nexport { CheckboxClass, componentName };\n","import { EnrichedTextClass } from '@descope-ui/descope-enriched-text/class';\nimport { getComponentName } from '../../../helpers/componentHelpers';\nimport { compose } from '../../../helpers';\nimport {\n createStyleMixin,\n proxyInputMixin,\n draggableMixin,\n componentNameValidationMixin,\n createProxy,\n} from '../../../mixins';\nimport { booleanFieldMixin } from '../booleanFieldMixin';\nimport commonStyles from '../commonStyles';\nimport { useHostExternalPadding } from '../../../helpers/themeHelpers/resetHelpers';\n\nexport const componentName = getComponentName('switch-toggle');\n\nconst {\n host,\n component,\n checkboxElement: track,\n checkboxSurface: knob,\n checkboxLabel,\n requiredIndicator,\n helperText,\n errorMessage,\n} = {\n host: { selector: () => ':host' },\n requiredIndicator: {\n selector: '[required] vaadin-checkbox [slot=\"label\"]:not(:empty)::part(content)::after',\n },\n component: { selector: 'vaadin-checkbox' },\n checkboxElement: { selector: 'vaadin-checkbox::part(checkbox)' },\n checkboxSurface: { selector: 'vaadin-checkbox::part(checkbox)::after' },\n checkboxLabel: { selector: 'vaadin-checkbox [slot=\"label\"]:not(:empty)' },\n helperText: { selector: '::part(helper-text)' },\n errorMessage: { selector: '::part(error-message)' },\n};\n\nexport const SwitchToggleClass = compose(\n createStyleMixin({\n mappings: {\n hostWidth: { ...host, property: 'width' },\n hostDirection: { ...host, property: 'direction' },\n\n fontSize: [component, checkboxLabel, checkboxLabel],\n fontFamily: [checkboxLabel, helperText, errorMessage],\n\n labelTextColor: [\n { ...checkboxLabel, property: 'color' },\n { ...checkboxLabel, property: '-webkit-text-fill-color' },\n ],\n labelSpacing: { ...checkboxLabel, property: 'padding-inline-start' },\n labelLineHeight: { ...checkboxLabel, property: 'line-height' },\n labelFontWeight: { ...checkboxLabel, property: 'font-weight' },\n labelRequiredIndicator: { ...requiredIndicator, property: 'content' },\n\n errorMessageTextColor: { ...errorMessage, property: 'color' },\n\n errorMessageIcon: { ...errorMessage, property: 'background-image' },\n errorMessageIconSize: { ...errorMessage, property: 'background-size' },\n errorMessageIconPadding: { ...errorMessage, property: 'padding-inline-start' },\n errorMessageIconRepeat: { ...errorMessage, property: 'background-repeat' },\n errorMessageIconPosition: { ...errorMessage, property: 'background-position' },\n errorMessageFontSize: { ...errorMessage, property: 'font-size' },\n\n trackBorderWidth: { ...track, property: 'border-width' },\n trackBorderStyle: { ...track, property: 'border-style' },\n trackBorderColor: { ...track, property: 'border-color' },\n trackBackgroundColor: { ...track, property: 'background-color' },\n trackBorderRadius: { ...track, property: 'border-radius' },\n trackWidth: [{ ...track, property: 'width' }],\n trackHeight: [\n { ...knob, property: 'font-size' },\n { ...track, property: 'height' },\n ],\n\n knobSize: [\n { ...knob, property: 'width' },\n { ...knob, property: 'height' },\n ],\n knobTextColor: { ...knob, property: 'color' },\n knobRadius: { ...knob, property: 'border-radius' },\n knobTransitionDuration: { ...knob, property: 'transition' },\n knobColor: { ...knob, property: 'background-color' },\n knobTopOffset: { ...knob, property: 'top' },\n knobLeftOffset: { ...knob, property: 'left' },\n\n inputOutlineWidth: { ...track, property: 'outline-width' },\n inputOutlineOffset: { ...track, property: 'outline-offset' },\n inputOutlineColor: { ...track, property: 'outline-color' },\n inputOutlineStyle: { ...track, property: 'outline-style' },\n },\n }),\n draggableMixin,\n proxyInputMixin({ proxyProps: ['value', 'selectionStart'] }),\n componentNameValidationMixin,\n booleanFieldMixin\n)(\n createProxy({\n slots: [],\n wrappedEleName: 'vaadin-text-field',\n style: () => `\n\t\t\t${commonStyles(SwitchToggleClass.cssVarList)}\n\t\t\t${useHostExternalPadding(SwitchToggleClass.cssVarList)}\n\n :host {\n\t\t\t\tdisplay: inline-flex;\n\t\t\t\tmax-width: 100%;\n }\n\n :host ::part(error-message) {\n direction: ltr;\n }\n\n vaadin-text-field {\n width: 100%;\n }\n\n vaadin-text-field::part(input-field)::after {\n content: none;\n }\n\n descope-boolean-field-internal {\n\t\t\t\tpadding: 0;\n width: 100%;\n }\n\n vaadin-text-field::part(input-field) {\n cursor: pointer;\n }\n\n vaadin-checkbox {\n cursor: pointer;\n }\n\n vaadin-checkbox [slot=\"label\"]:not(:empty) {\n cursor: pointer;\n\t\t\t}\n\n vaadin-checkbox::part(checkbox) {\n margin: 0;\n\t\t\t}\n\n vaadin-checkbox::part(checkbox)::before {\n content: '';\n\t\t\t}\n\n vaadin-checkbox[active]::part(checkbox) {\n\t\t\t\ttransform: none;\n\t\t\t}\n\n vaadin-checkbox::part(checkbox)::after {\n\t\t\t\tposition: absolute;\n\t\t\t\topacity: 1;\n\t\t\t\tcontent: '';\n\t\t\t}\n\t\t`,\n excludeAttrsSync: ['label', 'tabindex', 'style'],\n componentName,\n })\n);\n","import { componentName, SwitchToggleClass } from './SwitchToggleClass';\nimport '@vaadin/checkbox';\nimport '@vaadin/text-field';\nimport '@descope-ui/descope-enriched-text';\nimport '../descope-boolean-field-internal';\n\ncustomElements.define(componentName, SwitchToggleClass);\n\nexport { SwitchToggleClass, componentName };\n","import { createStyleMixin, draggableMixin, componentNameValidationMixin } from '../../mixins';\nimport { createBaseClass } from '../../baseClasses/createBaseClass';\nimport { compose } from '../../helpers';\nimport { getComponentName } from '../../helpers/componentHelpers';\nimport { injectStyle } from '@descope-ui/common/components-helpers';\n\nexport const componentName = getComponentName('loader-linear');\n\nclass RawLoaderLinear extends createBaseClass({ componentName, baseSelector: ':host > div' }) {\n static get componentName() {\n return componentName;\n }\n\n constructor() {\n super();\n\n this.attachShadow({ mode: 'open' }).innerHTML = `\n\t\t<div></div>\n\t`;\n\n injectStyle(\n `\n @keyframes tilt {\n\t\t\t\t0% { transform: translateX(0); }\n\t\t\t\t50% { transform: translateX(400%); }\n\t\t\t}\n\t\t\t:host {\n\t\t\t\tposition: relative;\n\t\t\t\tdisplay: flex;\n\t\t\t}\n\t\t\tdiv::after {\n\t\t\t\tcontent: '';\n\t\t\t\tanimation-name: tilt;\n\t\t\t\tposition: absolute;\n\t\t\t\tleft: 0;\n\t\t\t}\n\t\t\t:host > div {\n\t\t\t\twidth: 100%;\n\t\t\t}\n `,\n this\n );\n }\n}\n\nconst selectors = {\n after: { selector: '::after' },\n host: { selector: () => ':host' },\n};\n\nconst { after, host } = selectors;\n\nexport const LoaderLinearClass = compose(\n createStyleMixin({\n mappings: {\n hostDisplay: {},\n hostWidth: { ...host, property: 'width' },\n barHeight: [{ property: 'height' }, { ...after, property: 'height' }],\n barBorderRadius: [{ property: 'border-radius' }, { ...after, property: 'border-radius' }],\n verticalPadding: [\n { ...host, property: 'padding-top' },\n { ...host, property: 'padding-bottom' },\n ],\n barBackgroundColor: { property: 'background-color' },\n barColor: { ...after, property: 'background-color' },\n barWidth: { ...after, property: 'width' },\n animationDuration: [{}, after],\n animationTimingFunction: [{}, after],\n animationIterationCount: [{}, after],\n },\n }),\n draggableMixin,\n componentNameValidationMixin\n)(RawLoaderLinear);\n","import { componentName, LoaderLinearClass } from './LoaderLinearClass';\n\ncustomElements.define(componentName, LoaderLinearClass);\n\nexport { LoaderLinearClass, componentName };\n","import { createStyleMixin, draggableMixin, componentNameValidationMixin } from '../../mixins';\nimport { createBaseClass } from '../../baseClasses/createBaseClass';\nimport { compose } from '../../helpers';\nimport { getComponentName } from '../../helpers/componentHelpers';\nimport { injectStyle } from '@descope-ui/common/components-helpers';\n\nexport const componentName = getComponentName('loader-radial');\n\nclass RawLoaderRadial extends createBaseClass({ componentName, baseSelector: ':host > div' }) {\n constructor() {\n super();\n\n this.attachShadow({ mode: 'open' }).innerHTML = `\n\t\t<div></div>\n\t`;\n\n injectStyle(\n `\n @keyframes spin {\n\t\t\t\t0% { transform: rotate(0deg); }\n\t\t\t\t100% { transform: rotate(360deg); }\n\t\t\t}\n\t\t\t:host {\n\t\t\t\tposition: relative;\n\t\t\t\tdisplay: inline-flex;\n\t\t\t}\n\t\t\t:host > div {\n\t\t\t\tanimation-name: spin;\n\t\t\t}\n `,\n this\n );\n }\n}\n\nexport const LoaderRadialClass = compose(\n createStyleMixin({\n mappings: {\n hostDisplay: { property: 'display' },\n spinnerSize: [{ property: 'width' }, { property: 'height' }],\n spinnerBorderWidth: { property: 'border-width' },\n spinnerBorderStyle: { property: 'border-style' },\n spinnerBorderRadius: { property: 'border-radius' },\n spinnerQuadrant1Color: { property: 'border-top-color' },\n spinnerQuadrant2Color: { property: 'border-bottom-color' },\n spinnerQuadrant3Color: { property: 'border-right-color' },\n spinnerQuadrant4Color: { property: 'border-left-color' },\n animationDuration: {},\n animationTimingFunction: {},\n animationIterationCount: {},\n },\n }),\n draggableMixin,\n componentNameValidationMixin\n)(RawLoaderRadial);\n","import { componentName, LoaderRadialClass } from './LoaderRadialClass';\n\ncustomElements.define(componentName, LoaderRadialClass);\n\nexport { LoaderRadialClass, componentName };\n","import { createStyleMixin, draggableMixin, componentNameValidationMixin } from '../../mixins';\nimport { createBaseClass } from '../../baseClasses/createBaseClass';\nimport { compose } from '../../helpers';\nimport { getComponentName } from '../../helpers/componentHelpers';\nimport { injectStyle } from '@descope-ui/common/components-helpers';\n\nexport const componentName = getComponentName('container');\n\nclass RawContainer extends createBaseClass({ componentName, baseSelector: 'slot' }) {\n constructor() {\n super();\n\n this.attachShadow({ mode: 'open' }).innerHTML = `\n\t\t<slot></slot>\n\t`;\n\n injectStyle(\n `\n\t\t\t:host > slot {\n\t\t\t\tbox-sizing: border-box;\n\t\t\t\twidth: 100%;\n\t\t\t\theight: 100%;\n\t\t\t\tdisplay: flex;\n\t\t\t\toverflow: auto;\n\t\t\t}\n\t\t\t:host {\n\t\t\t\tdisplay: inline-block;\n\t\t\t}\n `,\n this\n );\n }\n}\n\nexport const ContainerClass = compose(\n createStyleMixin({\n mappings: {\n hostHeight: { selector: () => ':host', property: 'height' },\n hostWidth: { selector: () => ':host', property: 'width' },\n hostDirection: { selector: () => ':host', property: 'direction' },\n itemsGrow: { selector: () => '::slotted(*)', property: 'flex-grow', fallback: '0' },\n verticalPadding: [{ property: 'padding-top' }, { property: 'padding-bottom' }],\n horizontalPadding: [{ property: 'padding-left' }, { property: 'padding-right' }],\n\n flexDirection: {},\n justifyContent: {},\n alignItems: {},\n gap: {},\n flexWrap: {},\n\n backgroundColor: {},\n backgroundImage: {},\n backgroundPositionX: {},\n backgroundPositionY: {},\n backgroundSize: {},\n backgroundRepeat: {},\n\n color: {},\n borderRadius: {},\n\n borderColor: {},\n borderStyle: {},\n borderWidth: {},\n\n boxShadow: {},\n },\n }),\n draggableMixin,\n componentNameValidationMixin\n)(RawContainer);\n","import { componentName, ContainerClass } from './ContainerClass';\n\ncustomElements.define(componentName, ContainerClass);\n\nexport { ContainerClass, componentName };\n","import { compose } from '@descope-ui/common/utils';\nimport {\n getComponentName,\n observeAttributes,\n observeChildren,\n} from '@descope-ui/common/components-helpers';\nimport {\n resetInputLabelPosition,\n resetInputCursor,\n resetInputPlaceholder,\n resetInputReadonlyStyle,\n useHostExternalPadding,\n inputFloatingLabelStyle,\n} from '@descope-ui/common/theme-helpers';\nimport {\n createStyleMixin,\n draggableMixin,\n createProxy,\n componentNameValidationMixin,\n portalMixin,\n proxyInputMixin,\n} from '@descope-ui/common/components-mixins';\n\nexport const componentName = getComponentName('combo-box');\n\nconst ComboBoxMixin = (superclass) =>\n class ComboBoxMixinClass extends superclass {\n static get observedAttributes() {\n return ['label-type'];\n }\n\n // eslint-disable-next-line class-methods-use-this\n #renderItem = ({ displayName, value, label }) => {\n return `<span data-name=\"${label}\" data-id=\"${value}\">${\n displayName || label\n }</span>`;\n };\n\n #data;\n\n get defaultValue() {\n return this.getAttribute('default-value');\n }\n\n get renderItem() {\n return this.#renderItem;\n }\n\n set renderItem(renderFn) {\n this.#renderItem = renderFn;\n this.renderItems();\n }\n\n set renderer(fn) {\n // fn takes (root, comboBox, model) as arguments\n this.baseElement.renderer = fn;\n }\n\n get loading() {\n return this.getAttribute('loading') === 'true';\n }\n\n set loading(val) {\n if (val) {\n this.setAttribute('loading', 'true');\n } else {\n this.removeAttribute('loading');\n }\n }\n\n get data() {\n if (this.#data) return this.#data;\n\n const dataAttr = this.getAttribute('data');\n\n if (dataAttr) {\n try {\n const data = JSON.parse(dataAttr);\n if (this.isValidDataType(data)) {\n return data;\n }\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error(\n 'could not parse data string from attribute \"data\" -',\n e.message,\n );\n }\n }\n\n return [];\n }\n\n set data(data) {\n if (this.isValidDataType(data)) {\n this.#data = data;\n this.renderItems();\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n isValidDataType(data) {\n const isValid = Array.isArray(data);\n if (!isValid) {\n // eslint-disable-next-line no-console\n console.error('data must be an array, received:', data);\n }\n\n return isValid;\n }\n\n getItemsTemplate() {\n return this.data?.reduce?.(\n (acc, item) => acc + (this.renderItem?.(item || {}) || ''),\n '',\n );\n }\n\n renderItems() {\n if (this.#data || this.getAttribute('data')) {\n const template = this.getItemsTemplate();\n this.innerHTML = template;\n }\n }\n\n get hasDynamicData() {\n return this.getAttribute('has-dynamic-data') === 'true';\n }\n\n get shouldSelectItemOnItemsChange() {\n return !this.hasDynamicData || this.allowCustomValue;\n }\n\n handleSelectedItem() {\n const { selectedItem } = this.baseElement;\n const currentSelected = selectedItem?.['data-id'];\n\n // If the selected item is still a child, there's no need to update the value\n if (selectedItem && Array.from(this.children).includes(selectedItem)) {\n return;\n }\n\n // if previously selected item ID exists in current children, set it as selected\n if (currentSelected && this.shouldSelectItemOnItemsChange) {\n this.value = currentSelected;\n }\n\n // otherwise, if default value is specified, set default value as selected item\n if (!this.value) {\n this.setDefaultValue();\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n customValueTransformFn(val) {\n return val;\n }\n\n // We want to override Vaadin's Combo Box value setter. This is needed since Vaadin couples between the\n // field that it searches the value, and the finaly display value of the input.\n // We provide a custom transform function to override that behavior.\n setComboBoxDescriptor() {\n const valueDescriptor = Object.getOwnPropertyDescriptor(\n this.inputElement.constructor.prototype,\n 'value',\n );\n\n const comboBox = this;\n\n Object.defineProperties(this.inputElement, {\n value: {\n ...valueDescriptor,\n set(val) {\n if (\n !comboBox.baseElement.items?.length &&\n !comboBox.allowCustomValue\n ) {\n return;\n }\n\n const transformedValue = comboBox.customValueTransformFn(val) || '';\n\n if (transformedValue === this.value) {\n return;\n }\n\n valueDescriptor.set.call(this, transformedValue);\n },\n },\n });\n }\n\n // vaadin api is to set props on their combo box node,\n // in order to avoid it, we are passing the children of this component\n // to the items & renderer props, so it will be used as the combo box items\n #onChildrenChange() {\n const items = Array.from(this.children);\n\n // we want the data-name attribute to be accessible as an object attribute\n items.forEach((node) => {\n Object.defineProperty(node, 'data-name', {\n value: node.getAttribute('data-name'),\n configurable: true,\n writable: true,\n });\n Object.defineProperty(node, 'data-id', {\n value: node.getAttribute('data-id'),\n configurable: true,\n writable: true,\n });\n });\n\n this.baseElement.items = items;\n setTimeout(() => {\n // set timeout to ensure this runs after customValueTransformFn had the chance to be overriden\n this.handleSelectedItem();\n }, 0);\n }\n\n // the default vaadin behavior is to attach the overlay to the body when opened\n // we do not want that because it's difficult to style the overlay in this way\n // so we override it to open inside the shadow DOM\n #overrideOverlaySettings() {\n const overlay = this.baseElement.shadowRoot.querySelector(\n 'vaadin-combo-box-overlay',\n );\n overlay._attachOverlay = () => {\n overlay.bringToFront();\n };\n overlay._detachOverlay = () => {};\n overlay._enterModalState = () => {};\n }\n\n #overrideRenderer() {\n // use vaadin combobox custom renderer to render options as HTML\n // and not via default renderer, which renders only the data-name's value\n // in its own HTML template\n this.baseElement.renderer = (root, combo, model) => {\n // eslint-disable-next-line no-param-reassign\n root.innerHTML = model.item.outerHTML;\n };\n }\n\n #disableDataProviderFilterEventIfNeeded() {\n if (this.hasDynamicData) {\n // For the autocomplete field, we don't want to trigger the data provider filter changed event\n // because it changes the loading state on every keystroke, making the overlay open and close\n // on every keystroke, causing a flickering effect in the loading state.\n this.baseElement._dataProviderFilterChanged = () => {};\n }\n }\n\n init() {\n super.init?.();\n\n // eslint-disable-next-line func-names\n this.getValidity = function () {\n if (!this.value && this.isRequired) {\n return {\n valueMissing: true,\n };\n }\n return {};\n };\n\n this.#overrideRenderer();\n this.#disableDataProviderFilterEventIfNeeded();\n\n // This is a workaround for a problem we have in Console App, where in ScreenBuilder - the inputElement is not ready when trying to\n // set the component's descriptor and override the overlay settings.\n // THIS IS A PROBLEM WITH THE CONSOLE APP THAT NEEDS TO BE RESOLVED. Until then, we use this workaround.\n setTimeout(() => {\n this.setComboBoxDescriptor();\n this.#overrideOverlaySettings();\n });\n\n // Set up observers - order matters here since renderItems can clear innerHTML\n observeAttributes(this, this.renderItems.bind(this), {\n includeAttrs: ['data'],\n });\n observeChildren(this, this.#onChildrenChange.bind(this));\n\n this.setDefaultValue();\n\n // Using \"value-changed\" event instead of \"selected-item-changed\" event to avoid\n // the issue of the value not being updated in the input field when the user enter a custom value\n this.baseElement.addEventListener('value-changed', () => {\n this.dispatchEvent(\n new Event('input', { bubbles: true, composed: true }),\n );\n });\n\n this.baseElement.addEventListener('filter-changed', (e) => {\n this.dispatchEvent(\n new CustomEvent('filter-changed', {\n bubbles: true,\n composed: true,\n detail: e.detail,\n }),\n );\n });\n }\n\n onLabelClick() {\n if (this.isReadOnly || this.isDisabled) {\n return;\n }\n this.focus();\n if (!this.autoOpenDisabled) {\n this.setAttribute('opened', 'true');\n }\n }\n\n attributeChangedCallback(attrName, oldValue, newValue) {\n super.attributeChangedCallback?.(attrName, oldValue, newValue);\n\n if (oldValue !== newValue) {\n if (attrName === 'label-type') {\n if (newValue === 'floating') {\n this.addEventListener('click', this.onLabelClick);\n } else {\n this.removeEventListener('click', this.onLabelClick);\n }\n }\n }\n }\n\n setDefaultValue() {\n if (this.defaultValue) {\n this.value = this.defaultValue;\n }\n }\n\n #getChildToSelect(val) {\n return this.baseElement.items?.find((item) => item['data-id'] === val);\n }\n\n #preventSelectedItemChangeEventIfNeeded(val, selectedChild) {\n // If the actual value didn't change, but the selected item did (the element changed),\n // we want to stop the event propagation since it's not a real change\n const shouldPreventItemChangeEvent =\n val === this.value && selectedChild !== this.baseElement.selectedItem;\n if (shouldPreventItemChangeEvent) {\n this.baseElement.addEventListener(\n 'selected-item-changed',\n (e) => {\n e.stopImmediatePropagation();\n },\n { once: true, capture: true },\n );\n }\n }\n\n set value(val) {\n const selectedChild = this.#getChildToSelect(val);\n this.#preventSelectedItemChangeEventIfNeeded(val, selectedChild);\n if (val && selectedChild) {\n this.baseElement.selectedItem = selectedChild;\n } else if (!selectedChild && this.allowCustomValue) {\n this.baseElement.value = val;\n } else {\n this.baseElement.selectedItem = undefined;\n }\n }\n\n get value() {\n return this.baseElement.selectedItem?.['data-id'] || this.allowCustomValue\n ? this.baseElement.__data.value || ''\n : '';\n }\n\n get allowCustomValue() {\n return this.getAttribute('allow-custom-value') === 'true';\n }\n\n get autoOpenDisabled() {\n return this.getAttribute('auto-open-disabled') === 'true';\n }\n };\n\nconst {\n host,\n inputField,\n inputElement,\n placeholder,\n toggle,\n clearButton,\n label,\n requiredIndicator,\n helperText,\n errorMessage,\n loader,\n overlayContent,\n} = {\n host: { selector: () => ':host' },\n inputField: { selector: '::part(input-field)' },\n inputElement: { selector: 'input' },\n placeholder: { selector: '> input:placeholder-shown' },\n toggle: { selector: '::part(toggle-button)' },\n clearButton: { selector: '::part(clear-button)' },\n label: { selector: '::part(label)' },\n requiredIndicator: {\n selector: '[required]::part(required-indicator)::after',\n },\n helperText: { selector: '::part(helper-text)' },\n errorMessage: { selector: '::part(error-message)' },\n loader: { selector: 'vaadin-combo-box-overlay::part(loader)' },\n overlayContent: { selector: 'vaadin-combo-box-overlay::part(content)' },\n};\n\nexport const ComboBoxClass = compose(\n createStyleMixin({\n mappings: {\n hostWidth: { ...host, property: 'width' },\n hostDirection: { ...host, property: 'direction' },\n // we apply font-size also on the host so we can set its width with em\n fontSize: [{}, host],\n fontFamily: [label, placeholder, inputField, helperText, errorMessage],\n labelFontSize: { ...label, property: 'font-size' },\n labelFontWeight: { ...label, property: 'font-weight' },\n labelTextColor: [\n { ...label, property: 'color' },\n { ...label, property: '-webkit-text-fill-color' },\n { ...requiredIndicator, property: 'color' },\n ],\n errorMessageTextColor: { ...errorMessage, property: 'color' },\n errorMessageIcon: { ...errorMessage, property: 'background-image' },\n errorMessageIconSize: { ...errorMessage, property: 'background-size' },\n errorMessageIconPadding: {\n ...errorMessage,\n property: 'padding-inline-start',\n },\n errorMessageIconRepeat: {\n ...errorMessage,\n property: 'background-repeat',\n },\n errorMessageIconPosition: {\n ...errorMessage,\n property: 'background-position',\n },\n errorMessageFontSize: { ...errorMessage, property: 'font-size' },\n inputHeight: { ...inputField, property: 'height' },\n inputBackgroundColor: { ...inputField, property: 'background-color' },\n inputBorderColor: { ...inputField, property: 'border-color' },\n inputBorderWidth: { ...inputField, property: 'border-width' },\n inputBorderStyle: { ...inputField, property: 'border-style' },\n inputBorderRadius: { ...inputField, property: 'border-radius' },\n labelRequiredIndicator: { ...requiredIndicator, property: 'content' },\n inputValueTextColor: { ...inputField, property: 'color' },\n inputPlaceholderTextColor: { ...placeholder, property: 'color' },\n inputDropdownButtonCursor: [\n { ...toggle, property: 'cursor' },\n { ...clearButton, property: 'cursor' },\n ],\n inputDropdownButtonColor: [\n { ...toggle, property: 'color' },\n { ...clearButton, property: 'color' },\n ],\n inputDropdownButtonSize: [\n { ...toggle, property: 'font-size' },\n { ...clearButton, property: 'font-size' },\n ],\n inputDropdownButtonOffset: [\n { ...toggle, property: 'margin-right' },\n { ...toggle, property: 'margin-left' },\n ],\n inputOutlineColor: { ...inputField, property: 'outline-color' },\n inputOutlineWidth: { ...inputField, property: 'outline-width' },\n inputOutlineStyle: { ...inputField, property: 'outline-style' },\n inputOutlineOffset: { ...inputField, property: 'outline-offset' },\n inputHorizontalPadding: [\n { ...inputElement, property: 'padding-left' },\n { ...inputElement, property: 'padding-right' },\n ],\n\n labelPosition: { ...label, property: 'position' },\n labelTopPosition: { ...label, property: 'top' },\n labelHorizontalPosition: [\n { ...label, property: 'left' },\n { ...label, property: 'right' },\n ],\n inputTransformY: { ...label, property: 'transform' },\n inputTransition: { ...label, property: 'transition' },\n marginInlineStart: { ...label, property: 'margin-inline-start' },\n placeholderOpacity: { ...placeholder, property: 'opacity' },\n inputVerticalAlignment: { ...inputField, property: 'align-items' },\n valueInputHeight: { ...inputElement, property: 'height' },\n valueInputMarginBottom: { ...inputElement, property: 'margin-bottom' },\n\n // we need to use the variables from the portal mixin\n // so we need to use an arrow function on the selector\n // for that to work, because ComboBox is not available\n // at this time.\n overlayBackground: {\n property: () => ComboBoxClass.cssVarList.overlay.backgroundColor,\n },\n overlayTextColor: {\n property: () => ComboBoxClass.cssVarList.overlay.textColor,\n },\n overlayBorder: {\n property: () => ComboBoxClass.cssVarList.overlay.border,\n },\n overlayFontSize: {\n property: () => ComboBoxClass.cssVarList.overlay.fontSize,\n },\n overlayFontFamily: {\n property: () => ComboBoxClass.cssVarList.overlay.fontFamily,\n },\n overlayCursor: {\n property: () => ComboBoxClass.cssVarList.overlay.cursor,\n },\n overlayItemBoxShadow: {\n property: () => ComboBoxClass.cssVarList.overlay.itemBoxShadow,\n },\n overlayItemPaddingInlineStart: {\n property: () => ComboBoxClass.cssVarList.overlay.itemPaddingInlineStart,\n },\n overlayItemPaddingInlineEnd: {\n property: () => ComboBoxClass.cssVarList.overlay.itemPaddingInlineEnd,\n },\n overlayCheckmarkDisplay: {\n property: () => ComboBoxClass.cssVarList.overlay.checkmarkDisplay,\n },\n overlaySelectedItemBackground: {\n property: () => ComboBoxClass.cssVarList.overlay.selectedItemBackground,\n },\n overlaySelectedItemHoverBackground: {\n property: () =>\n ComboBoxClass.cssVarList.overlay.selectedItemHoverBackground,\n },\n overlaySelectedItemFocusBackground: {\n property: () =>\n ComboBoxClass.cssVarList.overlay.selectedItemFocusBackground,\n },\n overlayItemHoverBackground: {\n property: () => ComboBoxClass.cssVarList.overlay.itemHoverBackground,\n },\n overlayItemFocusBackground: {\n property: () => ComboBoxClass.cssVarList.overlay.itemFocusBackground,\n },\n },\n }),\n draggableMixin,\n portalMixin({\n name: 'overlay',\n selector: '',\n mappings: {\n backgroundColor: [\n { selector: 'vaadin-combo-box-scroller' },\n { selector: 'vaadin-combo-box-overlay::part(overlay)' },\n ],\n minHeight: { selector: 'vaadin-combo-box-overlay' },\n margin: { selector: 'vaadin-combo-box-overlay' },\n cursor: { selector: 'vaadin-combo-box-item' },\n fontFamily: { selector: 'vaadin-combo-box-item' },\n textColor: { selector: 'vaadin-combo-box-item', property: 'color' },\n fontSize: { selector: 'vaadin-combo-box-item' },\n itemBoxShadow: {\n selector: 'vaadin-combo-box-item',\n property: 'box-shadow',\n },\n itemPaddingInlineStart: {\n selector: 'vaadin-combo-box-item',\n property: 'padding-inline-start',\n },\n itemPaddingInlineEnd: {\n selector: 'vaadin-combo-box-item',\n property: 'padding-inline-end',\n },\n checkmarkDisplay: {\n selector: 'vaadin-combo-box-item::part(checkmark)',\n property: 'display',\n },\n selectedItemBackground: {\n selector: 'vaadin-combo-box-item[selected]',\n property: 'background-color',\n },\n selectedItemHoverBackground: {\n selector: 'vaadin-combo-box-item[selected]:hover:not([disabled])',\n property: 'background-color',\n },\n selectedItemFocusBackground: {\n selector: 'vaadin-combo-box-item[selected][focused]:not([disabled])',\n property: 'background-color',\n },\n itemHoverBackground: {\n selector: 'vaadin-combo-box-item:hover:not([selected]):not([disabled])',\n property: 'background-color',\n },\n itemFocusBackground: {\n selector:\n 'vaadin-combo-box-item[focused]:not([selected]):not([disabled])',\n property: 'background-color',\n },\n\n loaderTop: { ...loader, property: 'top' },\n loaderLeft: { ...loader, property: 'left' },\n loaderRight: { ...loader, property: 'right' },\n loaderMargin: { ...loader, property: 'margin' },\n loaderWidth: { ...loader, property: 'width' },\n loaderHeight: { ...loader, property: 'height' },\n loaderBorder: { ...loader, property: 'border' },\n loaderBorderColor: { ...loader, property: 'border-color' },\n loaderBorderRadius: { ...loader, property: 'border-radius' },\n contentHeight: { ...overlayContent, property: 'height' },\n contentOpacity: { ...overlayContent, property: 'opacity' },\n scrollerMinHeight: {\n selector: 'vaadin-combo-box-scroller',\n property: 'min-height',\n },\n },\n forward: {\n include: false,\n attributes: ['size'],\n },\n }),\n proxyInputMixin({\n proxyProps: ['selectionStart'],\n inputEvent: 'value-changed',\n }),\n componentNameValidationMixin,\n ComboBoxMixin,\n)(\n createProxy({\n slots: ['', 'prefix'],\n wrappedEleName: 'vaadin-combo-box',\n style: () => `\n\t\t:host {\n\t\t\tdisplay: inline-flex;\n\t\t\tbox-sizing: border-box;\n\t\t\t-webkit-mask-image: none;\n\t\t}\n\t\t${useHostExternalPadding(ComboBoxClass.cssVarList)}\n\t\t${resetInputReadonlyStyle('vaadin-combo-box')}\n\t\t${resetInputPlaceholder('vaadin-combo-box')}\n\t\t${resetInputCursor('vaadin-combo-box')}\n\n\t\tvaadin-combo-box {\n\t\t\tpadding: 0;\n\t\t\twidth: 100%;\n\t\t}\n\t\tvaadin-combo-box::before {\n\t\t\theight: initial;\n\t\t}\n\t\tvaadin-combo-box [slot=\"input\"] {\n\t\t\t-webkit-mask-image: none;\n\t\t\tmin-height: 0;\n\t\t\tbox-sizing: border-box;\n\t\t}\n\n\t\tvaadin-combo-box::part(input-field) {\n\t\t\tpadding: 0;\n\t\t\tbox-shadow: none;\n\t\t}\n\n vaadin-combo-box::part(toggle-button),\n vaadin-combo-box::part(clear-button) {\n align-self: center;\n }\n\n vaadin-combo-box[hide-toggle-button=\"true\"]::part(toggle-button) {\n display: none;\n }\n\n vaadin-combo-box[label-type=\"floating\"]:not([focused])[readonly] > input:placeholder-shown {\n opacity: 0;\n }\n vaadin-combo-box[label-type=\"floating\"]:not([focused])[disabled] > input:placeholder-shown {\n opacity: 0;\n }\n\n ${resetInputLabelPosition('vaadin-combo-box')}\n ${inputFloatingLabelStyle()}\n\t\t`,\n // Note: we exclude `size` to avoid overriding Vaadin's ComboBox property\n // with the same name. Including it will cause Vaadin to calculate NaN size,\n // and reset items to an empty array, and opening the list box with no items\n // to display.\n excludeAttrsSync: ['tabindex', 'size', 'data', 'loading', 'style'],\n componentName,\n includeForwardProps: ['items', 'renderer', 'selectedItem'],\n }),\n);\n","export const useHostExternalPadding = (cssVarList) => `\n :host {\n padding: calc(var(${cssVarList.inputOutlineWidth}) + var(${cssVarList.inputOutlineOffset}))\n }\n`;\n\nexport const resetInputFieldUnderlayingBorder = (name) => `\n ${name}::part(input-field)::after {\n border: none;\n }\n`;\n\nexport const resetInitialHeight = (name) => `\n ${name}::before {\n\t\theight: unset;\n\t}\n`;\n\nexport const resetInputElement = (name) => `\n ${name} > input {\n -webkit-mask-image: none;\n min-height: 0;\n box-sizing: border-box;\n }\n`;\n\nexport const resetInputContainer = (name) => `\n ${name} {\n margin: 0;\n padding: 0;\n width: 100%;\n height: 100%;\n box-sizing: border-box;\n }\n`;\n\nexport const resetInputField = (name) => `\n ${name}::part(input-field) {\n overflow: hidden;\n padding: 0;\n box-shadow: none;\n }\n`;\n\nexport const resetInputCursor = (name) => `\n ${name} > label,\n ${name}::part(label),\n ${name}::part(required-indicator) {\n cursor: pointer;\n }\n`;\n\nexport const resetInputPlaceholder = (name, ele = 'input') => `\n ${name}[disabled] > ${ele}:placeholder-shown,\n\t${name}[readonly] > ${ele}:placeholder-shown {\n\t\topacity: 1;\n\t}\n`;\n\nexport const resetInputAutoFill = (name, cssVarList) => `\n ${name} input:-webkit-autofill,\n ${name} input:-webkit-autofill::first-line,\n ${name} input:-webkit-autofill:hover,\n ${name} input:-webkit-autofill:active,\n ${name} input:-webkit-autofill:focus {\n -webkit-text-fill-color: var(${cssVarList.inputValueTextColor});\n box-shadow: 0 0 0 var(${cssVarList.inputHeight}) var(${cssVarList.inputBackgroundColor}) inset;\n }\n`;\n\nexport const resetInputFieldDefaultWidth = () => `\n :host {\n --vaadin-field-default-width: auto;\n box-sizing: border-box;\n }\n`;\n\nexport const resetInputReadonlyStyle = (name) => `\n ${name}::part(input-field)::after {\n opacity: 0;\n }\n`;\n\nexport const resetInputFieldInvalidBackgroundColor = (name) => `\n ${name}::part(input-field)::after {\n background: none;\n }\n`;\n\nexport const resetInputOverrides = (name, cssVarList) => `\n ${resetInputContainer(name)}\n ${resetInputCursor(name)}\n ${resetInputPlaceholder(name)}\n ${resetInputField(name)}\n ${resetInputAutoFill(name, cssVarList)}\n ${resetInputFieldInvalidBackgroundColor(name)}\n ${resetInitialHeight(name)}\n ${resetInputElement(name)}\n ${resetInputFieldUnderlayingBorder(name)}\n`;\n\n// This function is used to support RTL correctly for input components.\n// It also fixes the error message to be displayed LTR since we currently\n// don't support RTL for error messages.\nexport const resetInputLabelPosition = (name) => `\n :host ::part(error-message) {\n direction: ltr;\n }\n :host([required]) ::part(required-indicator) {\n width: 1em;\n display: inline-flex;\n }\n :host([required]) ::part(required-indicator)::after {\n position: static;\n }\n :host([has-label]) ::part(label) {\n padding-right: 0;\n padding-bottom: 0;\n display: flex;\n width: 100%;\n }\n ${name} [slot=\"label\"] {\n max-width: calc(100% - 1em);\n overflow: hidden;\n text-overflow: ellipsis;\n padding-bottom: 0.5em;\n }\n`;\n\nexport const inputFloatingLabelStyle = () => {\n return `\n :host([label-type=\"floating\"]) {\n position: relative;\n }\n :host([label-type=\"floating\"][has-label]) > ::part(label) {\n z-index: 1;\n padding: 0;\n width: auto;\n }\n `;\n};\n","import '@vaadin/combo-box';\nimport { componentName, ComboBoxClass } from './ComboBoxClass';\n\ncustomElements.define(componentName, ComboBoxClass);\n\nexport { ComboBoxClass, componentName };\n","import DOMPurify from 'dompurify';\n\nconst getFileExtension = (path) => {\n const match = path.match(/\\.([0-9a-z]+)(?:[\\\\?#]|$)/i);\n return match ? match[1] : null;\n};\n\nconst base64Prefix = 'data:image/svg+xml;base64,';\n\nconst isBase64Svg = (src) => src.startsWith(base64Prefix);\n\nconst createImgEle = (src, altText) => {\n const ele = document.createElement('img');\n ele.setAttribute('src', src);\n ele.setAttribute('alt', altText);\n return ele;\n};\n\nconst createSvgEle = (text) => {\n // we want to purify the SVG to avoid XSS attacks\n const clean = DOMPurify.sanitize(text, {\n USE_PROFILES: { svg: true, svgFilters: true },\n // allow image to render\n ADD_TAGS: ['image'],\n // forbid interactiviy via `use` tags (which are sanitized by default)\n FORBID_TAGS: ['defs']\n });\n\n const parser = new DOMParser();\n const ele = parser\n .parseFromString(clean, 'image/svg+xml')\n .querySelector('svg');\n return ele;\n};\n\nexport const createImage = async (src, altText) => {\n try {\n let ele;\n if (isBase64Svg(src)) {\n // handle base64 source\n const svgXml = atob(src.slice(base64Prefix.length));\n ele = createSvgEle(svgXml);\n } else if (getFileExtension(src) === 'svg') {\n // handle urls\n const fetchedSrc = await fetch(src);\n const text = await fetchedSrc.text();\n ele = createSvgEle(text);\n } else {\n // handle binary\n ele = createImgEle(src, altText);\n }\n\n ele.style.setProperty('max-width', '100%');\n ele.style.setProperty('max-height', '100%');\n\n return ele;\n } catch {\n return null;\n }\n};\n","/* eslint-disable no-use-before-define */\nimport {\n createStyleMixin,\n draggableMixin,\n componentNameValidationMixin,\n} from '@descope-ui/common/components-mixins';\nimport { createBaseClass } from '@descope-ui/common/base-classes';\nimport { compose } from '@descope-ui/common/utils';\nimport { getComponentName } from '@descope-ui/common/components-helpers';\nimport { createImage } from './helpers';\nimport { injectStyle } from '@descope-ui/common/components-helpers';\n\nexport const componentName = getComponentName('image');\n\nconst srcAttrs = ['src', 'src-dark'];\n\nclass RawImage extends createBaseClass({\n componentName,\n baseSelector: 'slot',\n}) {\n static get observedAttributes() {\n return srcAttrs;\n }\n\n constructor() {\n super();\n\n this.attachShadow({ mode: 'open' }).innerHTML = `\n\t\t<slot></slot>\n\t`;\n\n injectStyle(\n `\n\t\t\t:host {\n\t\t\t\tdisplay: inline-flex;\n\t\t\t}\n :host > slot {\n width: 100%;\n height: 100%;\n\t\t\t\tbox-sizing: border-box;\n\t\t\t\tdisplay: flex;\n\t\t\t\toverflow: hidden;\n\t\t\t}\n\n ::slotted(*) {\n width: 100%;\n\t\t\t}\n\n .hidden {\n display: none;\n }\n `,\n this,\n );\n }\n\n init() {\n super.init?.();\n this.toggleVisibility(this.getSrc);\n }\n\n onThemeChange() {\n this.renderImage();\n }\n\n toggleVisibility(isVisible) {\n if (isVisible) {\n this.classList.remove('hidden');\n } else {\n this.classList.add('hidden');\n }\n }\n\n get altText() {\n return this.getAttribute('alt') || '';\n }\n\n get legacySrc() {\n return this.getAttribute('src');\n }\n\n get themeSrc() {\n return this.getAttribute(`src-${this.currentThemeName}`);\n }\n\n get getSrc() {\n return this.themeSrc || this.legacySrc;\n }\n\n // in order to fill an SVG with `currentColor` override all of its `fill` and `path` nodes\n // with the value from the `st-fill` attribute\n // eslint-disable-next-line class-methods-use-this\n updateFillColor(node) {\n // set fill to root node and all its relevant selectors\n const elementsToReplace = [node, ...node.querySelectorAll('*[fill]')];\n\n elementsToReplace.forEach((ele) => {\n ele.setAttribute(\n 'fill',\n `var(${ImageClass.cssVarList.fill}, ${ele.getAttribute('fill') || \"''\"})`,\n );\n });\n }\n\n renderImage() {\n this.toggleVisibility(this.getSrc);\n\n createImage(this.getSrc, this.altText).then((res) => {\n this.innerHTML = '';\n if (res) {\n this.updateFillColor(res);\n this.appendChild(res);\n }\n });\n }\n\n // render only when src attribute matches current theme\n shouldRender(src) {\n const srcVal = this.getAttribute(src);\n return this.getSrc === srcVal;\n }\n\n attributeChangedCallback(attrName, oldValue, newValue) {\n super.attributeChangedCallback?.(attrName, oldValue, newValue);\n\n if (oldValue === newValue) return;\n\n if (this.shouldRender(attrName)) {\n this.renderImage();\n }\n }\n}\n\nexport const ImageClass = compose(\n createStyleMixin({\n mappings: {\n fill: {},\n height: { selector: () => ':host' },\n width: { selector: () => ':host' },\n },\n }),\n draggableMixin,\n componentNameValidationMixin,\n)(RawImage);\n","import {\n componentNameValidationMixin,\n createProxy,\n createStyleMixin,\n draggableMixin,\n} from '@descope-ui/common/components-mixins';\nimport { getComponentName } from '@descope-ui/common/components-helpers';\nimport { ImageClass } from '@descope-ui/descope-image/class';\nimport { compose } from '@descope-ui/common/utils';\n\nexport const componentName = getComponentName('icon');\n\nexport const IconClass = compose(\n createStyleMixin({\n mappings: {\n fill: [{}, { property: ImageClass.cssVarList.fill }],\n },\n }),\n draggableMixin,\n componentNameValidationMixin,\n)(\n createProxy({\n slots: [],\n wrappedEleName: 'descope-image',\n style: () => `\n :host {\n display: inline-flex;\n max-height: 100%;\n }\n `,\n excludeAttrsSync: ['tabindex', 'class', 'style'],\n componentName,\n }),\n);\n","import { compose } from '@descope-ui/common/utils';\nimport { getComponentName } from '@descope-ui/common/components-helpers';\nimport {\n createStyleMixin,\n draggableMixin,\n createProxy,\n componentNameValidationMixin,\n} from '@descope-ui/common/components-mixins';\nimport { IconClass } from '@descope-ui/descope-icon/class';\nimport { clickableMixin } from './clickableMixin';\n\nexport const componentName = getComponentName('button');\n\nconst resetStyles = `\n\t:host {\n\t\tdisplay: inline-block;\n\t\tbox-sizing: border-box;\n\t}\n\tvaadin-button::before,\n\tvaadin-button::after {\n\t\topacity: 0;\n\t}\n\tvaadin-button {\n\t\tmargin: 0;\n\t\tmin-width: 0;\n\t\twidth: 100%;\n\t\theight: auto;\n\t\tbox-shadow: none;\n\t}\n\tvaadin-button::part(label) {\n\t\tpadding: 0;\n width: 100%;\n\t}\n\tvaadin-button::part(prefix) {\n\t\tmargin-left: 0;\n\t\tmargin-right: 0;\n\t}\n`;\n\nconst iconStyles = `\n\tvaadin-button::part(prefix),\n\tvaadin-button::part(label) {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t}\n`;\n\nconst editorOverrides = `vaadin-button::part(label) { pointer-events: none; }`;\n\nconst { host, label, slottedIcon } = {\n host: { selector: () => ':host' },\n label: { selector: '::part(label)' },\n slottedIcon: { selector: () => '::slotted(descope-icon)' },\n};\n\nlet loadingIndicatorStyles;\n\nexport const ButtonClass = compose(\n createStyleMixin({\n mappings: {\n hostWidth: { property: 'width' },\n hostHeight: { property: 'height' },\n hostDirection: { ...host, property: 'direction' },\n fontSize: {},\n fontFamily: {},\n\n cursor: {},\n backgroundColor: {},\n\n outlineOffset: {},\n outlineColor: {},\n outlineStyle: {},\n outlineWidth: {},\n\n borderRadius: {},\n borderColor: {},\n borderStyle: {},\n borderWidth: {},\n\n verticalPadding: [{ property: 'padding-top' }, { property: 'padding-bottom' }],\n horizontalPadding: [\n { property: 'padding-right', fallback: '0.875em' },\n { property: 'padding-left', fallback: '0.875em' },\n ],\n\n labelTextColor: { property: 'color' },\n iconColor: {\n\t\tselector: () => `::slotted(*)`,\n\t\tproperty: IconClass.cssVarList.fill\n\t },\n labelTextDecoration: { ...label, property: 'text-decoration' },\n labelSpacing: { ...label, property: 'gap' },\n textAlign: { ...label, property: 'justify-content', fallback: 'center' },\n\n iconSize: [\n { ...slottedIcon, property: 'width' },\n { ...slottedIcon, property: 'height' },\n ],\n },\n }),\n clickableMixin,\n draggableMixin,\n componentNameValidationMixin\n)(\n createProxy({\n slots: ['', 'prefix', 'label', 'suffix'],\n wrappedEleName: 'vaadin-button',\n style: () => `\n\t\t\t${resetStyles}\n\t\t\t${iconStyles}\n\t\t\t${loadingIndicatorStyles}\n\t\t\t${editorOverrides}\n\t\t\t:host {\n\t\t\t\tpadding: calc(var(${ButtonClass.cssVarList.outlineWidth}) + var(${ButtonClass.cssVarList.outlineOffset}));\n\t\t\t}\n :host([full-width=\"true\"]) {\n width: var(${ButtonClass.cssVarList.hostWidth});\n }\n\t\t\tvaadin-button {\n\t\t\t\theight: calc(var(${ButtonClass.cssVarList.hostHeight}) - var(${ButtonClass.cssVarList.outlineWidth}) - var(${ButtonClass.cssVarList.outlineOffset}));\n\t\t\t}\n\t\t\t[square=\"true\"]:not([full-width=\"true\"]) {\n\t\t\t\twidth: calc(var(${ButtonClass.cssVarList.hostWidth}) - var(${ButtonClass.cssVarList.outlineWidth}) - var(${ButtonClass.cssVarList.outlineOffset}));\n padding: 0;\n\t\t\t}\n\t\t`,\n excludeAttrsSync: ['tabindex', 'class', 'style'],\n componentName,\n })\n);\n\nconst { color, fontSize } = ButtonClass.cssVarList;\nloadingIndicatorStyles = `\n\t@keyframes spin {\n\t\t0% { -webkit-transform: rotate(0deg); }\n\t\t100% { -webkit-transform: rotate(360deg); }\n\t}\n\t:host([loading=\"true\"]) ::before {\n\t\tanimation: spin 2s linear infinite;\n\t\tposition: absolute;\n\t\tcontent: '';\n\t\tz-index: 1;\n\t\tbox-sizing: border-box;\n\t\tborder-radius: 50%;\n\t\tborder-bottom-color: transparent;\n\t\tborder-left-color: transparent;\n\t\tborder-style: solid;\n\t\tcolor: var(${color});\n\t\ttop: calc(50% - (var(${fontSize}) / 2));\n\t\tleft: calc(50% - (var(${fontSize}) / 2));\n\t\tborder-width: calc(var(${fontSize}) / 10);\n\t\twidth: var(${fontSize});\n\t\theight: var(${fontSize});\n\t}\n\t:host([disabled=\"true\"]),\n\t:host([loading=\"true\"]) {\n\t\tpointer-events: none;\n\t}\n\t:host([loading=\"true\"]) ::part(prefix),\n\t:host([loading=\"true\"]) ::part(label) {\n\t\tvisibility: hidden;\n\t}\n`;\n","export const clickableMixin = (superclass) =>\n class ClickableMixinClass extends superclass {\n get isLoading() {\n return this.getAttribute('loading') === 'true';\n }\n\n click() {\n this.isLoading || super.click();\n }\n };\n","import { componentName, ButtonClass } from './ButtonClass';\nimport '@vaadin/button';\n\ncustomElements.define(componentName, ButtonClass);\n\nexport { ButtonClass, componentName };\n","export const SUPPORTED_FORMATS = ['MM/DD/YYYY', 'DD/MM/YYYY', 'YYYY/MM/DD'];\n\nexport const DEFAULT_FORMAT = SUPPORTED_FORMATS[0];\n\nexport const NATIVE_FORMAT = 'YYYY-MM-DD';\n\nexport const YEARS_RANGE = 100;\n\nexport const DIVIDER = '/';\n\nexport const months = [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n];\n\nexport const weekdays = [\n 'Sunday',\n 'Monday',\n 'Tuesday',\n 'Wednesday',\n 'Thursday',\n 'Friday',\n 'Saturday',\n];\n\nexport const counterConfig = {\n MONTH: { id: 'month', min: 1, max: 12, placeholder: 'MM' },\n DAY: { id: 'day', min: 1, max: 31, placeholder: 'DD' },\n YEAR: { id: 'year', min: 0, max: 9999, placeholder: 'YYYY' },\n};\n\nexport const valRange = {\n year: { min: 1900, max: 2099 },\n};\n\nexport const BUTTON_LABEL_DONE = 'Done';\nexport const BUTTON_LABEL_CANCEL = 'Cancel';\nexport const CALENDAR_LABEL_TODAY = 'Today';\n\nexport const MOBILE_DEVICE_INTERACTION_TIMEOUT_MS = 150;\n","// polyfill for safari Date API (which doesn't accept \"YYYY-MM-DD\" string as value)\nexport const newDate = (date, isUtcTime) => {\n if (typeof date === 'number') {\n return new Date(date);\n }\n if (typeof date === 'string') {\n const d = new Date(date.replace(/-/g, '/'));\n if (isUtcTime) {\n return new Date(\n Date.UTC(\n d.getFullYear(),\n d.getMonth(),\n d.getDate(),\n d.getHours(),\n d.getMinutes(),\n d.getSeconds(),\n d.getMilliseconds()\n )\n );\n }\n return new Date(d);\n }\n return new Date();\n};\n","import { DIVIDER, SUPPORTED_FORMATS } from './consts';\nimport { newDate } from './date-utils';\n\nconst patterns = {\n MM: '(0?[1-9]|1[0-2])',\n DD: '(0?[1-9]|[12][0-9]|3[01])',\n YYYY: '([0-9]{4})',\n};\n\nconst createPattern = (format) => {\n const pattern = format\n .split(DIVIDER)\n .map((part) => patterns[part])\n .join('\\\\D');\n\n return `^${pattern}$`;\n};\n\nconst createToValuesFn = (format) => {\n const order = format.split(DIVIDER);\n return (match) => {\n const values = {};\n order.forEach((part, index) => {\n values[part] = match[index + 1];\n });\n return [values.YYYY, values.MM, values.DD];\n };\n};\n\nconst createDate = (val, regexp, toValuesFn) => {\n const match = regexp.exec(val);\n if (!match) return null;\n const [year, month, day] = toValuesFn(match);\n return newDate([year, month, day].join(DIVIDER));\n};\n\nconst createFormat = (format) => {\n const pattern = createPattern(format);\n const toValuesFn = createToValuesFn(format);\n const regexp = new RegExp(pattern);\n\n return {\n pattern,\n validate: (val) => regexp.test(val),\n getDate: (val) => createDate(val, regexp, toValuesFn),\n };\n};\n\nexport const formats = Object.fromEntries(SUPPORTED_FORMATS.map((f) => [f, createFormat(f)]));\n","import { formats } from './formats';\nimport { newDate } from './date-utils';\n\nexport const isValidEpoch = (val) => !Number.isNaN(Number(val));\n\nexport const isNumber = (val) => !!String(val || '').trim() && !Number.isNaN(Number(val));\n\nexport const getPartsFromEpoch = (epoch) => {\n const date = newDate(epoch);\n const year = date.getFullYear();\n const month = date.getMonth() + 1;\n const day = date.getDate();\n return [year, month, day];\n};\n\nexport const formatEpoch = (epoch, format) => {\n const [year, month, day] = getPartsFromEpoch(epoch);\n\n const parts = {\n DD: String(day).padStart(2, '0'),\n MM: String(month).padStart(2, '0'),\n YYYY: String(year),\n };\n\n return format.replace(/DD|MM|YYYY/g, (match) => parts[match]);\n};\n\nexport const getCurrentTime = () => newDate().getTime();\nexport const getFullYear = (epoch) => newDate(epoch).getFullYear().toString();\nexport const getMonth = (epoch) => (newDate(epoch).getMonth() + 1).toString();\nexport const getCurrentDay = () => newDate().getDate();\nexport const getCurrentYear = () => newDate().getFullYear().toString();\n\n// Vaadin uses \"constructed stylesheet\" to hide the host in dialog components.\n// To override it, we need to push an overriding constructed stylesheet to the shadow DOM\n// opened issue in vaadin: https://github.com/vaadin/web-components/issues/7979\nexport const overrideConstructedStylesheet = (ele) => {\n const cs = new CSSStyleSheet();\n cs.insertRule(':host{display:block!important;}');\n ele?.shadowRoot?.adoptedStyleSheets?.push(cs);\n};\n\nexport const parseDateString = (val, format) => {\n const trimmed = val.trim?.();\n if (!trimmed) return null;\n return formats[format].getDate(trimmed);\n};\n\nexport const dateToEpoch = (date, isUtc) => {\n // If it's already a number (epoch), return it directly - no conversion needed\n if (typeof date === 'number') {\n return date;\n }\n\n if (isUtc) {\n return Date.UTC(date.getFullYear(), date.getMonth(), date.getDate());\n }\n\n // Default: return epoch in local timezone\n return date.getTime();\n};\n","import { months, weekdays } from '../consts';\nimport { getPartsFromEpoch } from '../helpers';\nimport { newDate } from '../date-utils';\n\nconst isValidAttrArr = (arr, count) =>\n Array.isArray(arr) && arr.length === count && arr.filter(Boolean).length === count;\n\nconst generateYearList = (range) => {\n const [start, end] = range;\n const years = [];\n\n for (let year = start; year <= end; year++) {\n years.push(year);\n }\n\n return years;\n};\n\nconst getMaxDaysInMonth = (year, month) => {\n return new Date(year, month, 0).getDate();\n};\n\nconst comboBoxItemTpl = ({ label, dataId, dataName }) => `\n\t<div class=\"combo-box-item\"\n\t\tdata-id=\"${dataId}\"\n\t\tdata-name=\"${dataName}\"\n\t>\n\t\t\t${label}\n\t</div>\n`;\n\nexport const createMonthView = (year, month, shortWeekdays) => {\n const daysInMonth = getMaxDaysInMonth(year, month);\n\n // Get day of the week (0 = Sunday, 1 = Monday, etc.)\n const firstDayOfMonth = new Date(year, month - 1, 1).getDay();\n\n let monthView = '<table>';\n\n // Add the table headers (days of the week)\n monthView += `<thead><tr>${shortWeekdays.reduce(\n (acc, d) => `${acc}<th><span class=\"weekday\">${d}</span></th>`,\n ''\n )}</tr></thead>`;\n\n monthView += '<tbody>';\n\n // Add empty cells for the days before the start of the month\n monthView += '<tr>';\n for (let i = 0; i < firstDayOfMonth; i++) {\n monthView += '<td></td>';\n }\n\n // Add days of the month\n let dayOfWeek = firstDayOfMonth;\n for (let i = 1; i <= daysInMonth; i++) {\n if (dayOfWeek === 7) {\n dayOfWeek = 0;\n monthView += '</tr><tr>';\n }\n\n monthView += `\n <td\n data-date-day=\"${i}\"\n class=\"day-entry\">\n <span class=\"day\" data-date-day=${i}>\n ${i}\n </span>\n </td>\n `;\n dayOfWeek++;\n }\n\n // Add empty cells for the days after the end of the month\n while (dayOfWeek < 7) {\n monthView += '<td></td>';\n dayOfWeek++;\n }\n\n monthView += '</tr></tbody></table>';\n\n return monthView;\n};\n\nexport const getYearOptions = (range) =>\n generateYearList(range)\n .map((item) => comboBoxItemTpl({ label: item, dataId: item, dataName: item }))\n .join('');\n\nexport const getMonthsOptions = (customMonths = months) =>\n customMonths\n .map((item, index) => comboBoxItemTpl({ label: item, dataId: index + 1, dataName: item }))\n .join('');\n\nexport const isViewVisible = (selectionEpoch, previewEpoch) => {\n const [previewYear, previewMonth] = getPartsFromEpoch(previewEpoch);\n const [selectedYear, selectedMonth] = getPartsFromEpoch(selectionEpoch);\n return selectedYear === previewYear && selectedMonth === previewMonth;\n};\n\nexport const createInputs = () => {\n const ele = document.createElement('span');\n\n ele.innerHTML = `\n <descope-combo-box\n label-type=\"static\"\n bordered=\"true\"\n item-label-path=\"data-name\"\n item-value-path=\"data-id\"\n class=\"month-input\"\n >\n ${getMonthsOptions()}\n </descope-combo-box>\n <descope-combo-box\n allow-custom-value=\"true\"\n label-type=\"static\"\n bordered=\"true\"\n item-label-path=\"data-name\"\n item-value-path=\"data-id\"\n class=\"year-input\"\n no-empty-value=\"true\"\n >\n </descope-combo-box>\n `;\n\n return ele;\n};\n\nexport const initComboBox = (input, onChange, onBlur) => {\n input.addEventListener('input', onChange);\n input.addEventListener('focusout', onBlur);\n return input;\n};\n\nexport const ensureMonthNamesArr = (attrVal) => {\n const monthArr = attrVal?.split(',');\n return isValidAttrArr(monthArr, 12) ? monthArr : months;\n};\n\nexport const ensureWeekdayNamesArr = (attrVal) => {\n const customWeekdayArr = attrVal?.split?.(',');\n const isCustomValid = isValidAttrArr(customWeekdayArr, 7);\n return isCustomValid ? customWeekdayArr : weekdays;\n};\n\nexport const ensureShortWeekdayNamesArr = (attrVal) => {\n const customShortWeekdays = attrVal;\n\n if (!attrVal || !isValidAttrArr(customShortWeekdays, 7)) {\n return weekdays.map((d) => d.substring(0, 3));\n }\n\n return customShortWeekdays.map((d) => d.substring(0, 3));\n};\n\nexport const truncateWeekdays = (arr) => arr.map((d) => d.substring(0, 3));\n\nexport const prevMonth = (epoch) => {\n const date = newDate(epoch);\n const month = date.getMonth();\n\n if (month === 0) {\n const year = date.getFullYear();\n date.setFullYear(year - 1);\n date.setMonth(11);\n } else {\n date.setMonth(month - 1);\n }\n\n return date;\n};\n\nexport const nextMonth = (epoch) => {\n const date = newDate(epoch);\n const month = date.getMonth();\n\n if (month === 11) {\n const year = date.getFullYear();\n date.setFullYear(year + 1);\n date.setMonth(0);\n } else {\n date.setMonth(month + 1);\n }\n\n return date;\n};\n","import { createBaseInputClass } from '../../../baseClasses/createBaseInputClass';\nimport { compose } from '../../../helpers';\nimport { forwardAttrs, getComponentName } from '../../../helpers/componentHelpers';\nimport { inputFloatingLabelStyle } from '../../../helpers/themeHelpers/resetHelpers';\nimport { componentNameValidationMixin, createStyleMixin, draggableMixin } from '../../../mixins';\nimport {\n getCurrentDay,\n getPartsFromEpoch,\n isValidEpoch,\n formatEpoch,\n getCurrentTime,\n getFullYear,\n getMonth,\n} from '../helpers';\nimport { arrowLeftIcon, arrowRightIcon } from '../icons';\nimport {\n BUTTON_LABEL_CANCEL,\n BUTTON_LABEL_DONE,\n CALENDAR_LABEL_TODAY,\n NATIVE_FORMAT,\n YEARS_RANGE,\n} from '../consts';\nimport {\n createMonthView,\n createInputs,\n getMonthsOptions,\n getYearOptions,\n initComboBox,\n ensureMonthNamesArr,\n isViewVisible,\n ensureWeekdayNamesArr,\n truncateWeekdays,\n prevMonth,\n nextMonth,\n} from './helpers';\nimport { ButtonClass } from '@descope-ui/descope-button/class';\nimport { injectStyle } from '@descope-ui/common/components-helpers';\nimport { newDate } from '../date-utils';\n\nexport const componentName = getComponentName('calendar');\n\nconst observedAttrs = [\n 'initial-value',\n 'initial-year',\n 'initial-month',\n 'years-range',\n 'calendar-months',\n 'calendar-weekdays',\n 'calendar-label-today',\n 'st-host-direction',\n 'disabled',\n 'full-width',\n];\n\nconst calendarUiAttrs = ['calendar-label-submit', 'calendar-label-cancel'];\n\nconst BaseInputClass = createBaseInputClass({ componentName, baseSelector: 'div' });\n\nclass RawCalendar extends BaseInputClass {\n static get observedAttributes() {\n return [].concat(BaseInputClass.observedAttributes || [], observedAttrs, calendarUiAttrs);\n }\n\n // preview state epoch\n preview;\n\n // value epoch\n epoch;\n\n constructor() {\n super();\n\n this.attachShadow({ mode: 'open' }).innerHTML = `\n <div>\n <nav class=\"nav top-nav\">\n <div class=\"nav-prev\">\n </div>\n <div class=\"selectors\"></div>\n <div class=\"nav-next\">\n </div>\n </nav>\n <div class=\"calendar\"></div>\n <nav class=\"nav bottom-nav\">\n <descope-button class=\"cancel-button\" variant=\"link\" mode=\"primary\">Cancel</descope-button>\n <descope-button class=\"submit-button\" variant=\"link\" mode=\"primary\" disabled=\"true\">Done</descope-button>\n </nav>\n </div>\n `;\n\n injectStyle(\n `\n :host {\n display: inline-block;\n box-sizing: border-box;\n max-width: 100%;\n user-select: none;\n -webkit-user-select: none;\n }\n\n :host ::slotted {\n padding: 0;\n }\n\n [data-toggle-calendar] {\n cursor: pointer;\n display: flex;\n align-self: center;\n z-index: 1;\n }\n\n [data-disabled=\"true\"] {\n pointer-events: none;\n }\n\n .calendar .day {\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .nav {\n display: flex;\n align-items: center;\n box-sizing: border-box;\n }\n\n .selectors,\n .selectors span {\n display: flex;\n justify-content: center;\n }\n\n descope-button {\n padding: 0;\n ${ButtonClass.cssVarList.horizontalPadding}: 0;\n ${ButtonClass.cssVarList.verticalPadding}: 0;\n ${ButtonClass.cssVarList.outlineWidth}: 0;\n }\n\n .combo-box-item {\n display:flex;\n flex-direction: column;\n }\n\n ${inputFloatingLabelStyle()}\n `,\n this\n );\n }\n\n set value(val) {\n if (!val) return;\n\n const epoch = newDate(val).getTime();\n\n if (!isValidEpoch(epoch) || epoch === this.epoch) {\n return;\n }\n\n this.epoch = epoch;\n\n this.renderCalendar();\n }\n\n get value() {\n return this.epoch ? formatEpoch(this.epoch, NATIVE_FORMAT) : '';\n }\n\n get isSelectedView() {\n return isViewVisible(this.preview, this.epoch);\n }\n\n get isTodayView() {\n return isViewVisible(getCurrentTime(), this.preview);\n }\n\n get monthNames() {\n return ensureMonthNamesArr(this.getAttribute('calendar-months'));\n }\n\n get weekdayNames() {\n return ensureWeekdayNamesArr(this.getAttribute('calendar-weekdays'));\n }\n\n get hasYearValue() {\n return !!this.yearInput.value;\n }\n\n get hasMonthValue() {\n return !!this.monthInput.value;\n }\n\n get yearsRange() {\n const range = this.getAttribute('years-range')?.split('-');\n\n if (range?.length === 2) {\n const [start, end] = range.map(Number);\n if (start <= end) return [start, end];\n }\n\n const currentYear = newDate().getFullYear();\n\n return [currentYear, currentYear + YEARS_RANGE];\n }\n\n init() {\n super.init?.();\n this.initCalendar();\n this.renderCalendar();\n }\n\n initCalendar() {\n this.calendar = this.shadowRoot.querySelector('.calendar');\n\n this.navPrevEle = this.shadowRoot.querySelector('.nav-prev');\n this.navNextEle = this.shadowRoot.querySelector('.nav-next');\n this.submitButton = this.shadowRoot.querySelector('.submit-button');\n this.cancelButton = this.shadowRoot.querySelector('.cancel-button');\n\n this.initInputs();\n this.initNav();\n\n this.addEventListener('day-changed', () => this.submitButton.removeAttribute('disabled'));\n // This is a workaround for descope-components inside Vaadin's Popover component.\n // When we sync attributes, the `disabled` attribute is being compared to the attribute\n // on Vaadin component; since the Vaadin component has no `disabled` attribute, we sync\n // that back to our component. This happens when using Popover, and for specific attributes,\n // namely `disabled`. This is pending a more generic fix in the way we sync attibutes.\n this.submitButton.shadowRoot.querySelector('vaadin-button').setAttribute('disabled', 'true');\n }\n\n initInputs() {\n const ele = createInputs(this.monthNames, this.yearsRange);\n this.shadowRoot.querySelector('.selectors').appendChild(ele);\n\n this.monthInput = initComboBox(\n this.shadowRoot.querySelector('.month-input'),\n this.onMonthChange.bind(this),\n this.onMonthInputBlur.bind(this)\n );\n\n this.yearInput = initComboBox(\n this.shadowRoot.querySelector('.year-input'),\n this.onYearChange.bind(this),\n this.onYearInputBlur.bind(this)\n );\n\n [this.monthInput, this.yearInput].forEach((selector) =>\n forwardAttrs(this, selector, {\n includeAttrs: ['disabled', 'size', 'st-host-direction'],\n })\n );\n }\n\n initNav() {\n this.navPrevEle.addEventListener('click', this.navPrevMonth.bind(this));\n this.navNextEle.addEventListener('click', this.navNextMonth.bind(this));\n this.cancelButton.addEventListener('click', this.onCancel.bind(this));\n this.submitButton.addEventListener('click', this.onSubmit.bind(this));\n\n [this.navPrevEle, this.navNextEle].forEach((btn) =>\n forwardAttrs(this, btn, {\n includeAttrs: ['size'],\n })\n );\n\n this.shadowRoot.querySelector('.nav-next').innerHTML = arrowRightIcon;\n this.shadowRoot.querySelector('.nav-prev').innerHTML = arrowLeftIcon;\n }\n\n onSubmit() {\n if (this.isDisabled) return;\n if (!this.value) return;\n this.dispatchEvent(new CustomEvent('date-submit', { detail: newDate(this.preview) }));\n }\n\n onCancel() {\n if (this.isDisabled) return;\n this.dispatchEvent(new CustomEvent('cancel'));\n this.dispatchEvent(new CustomEvent('date-cancel'));\n this.clearSelectedDay();\n }\n\n clearSelectedDay() {\n this.getSelectedDayEle()?.removeAttribute('data-selected');\n this.submitButton.setAttribute('disabled', 'true');\n this.epoch = '';\n }\n\n updateInputs() {\n if (this.yearInput && this.monthInput) {\n const epoch = this.preview || getCurrentTime();\n const year = getFullYear(epoch);\n const month = getMonth(epoch);\n this.monthInput.value = month;\n // For the yearInput we update the base element directly to properly trigger the change event\n // since this can be a custom value\n setTimeout(() => {\n this.yearInput.baseElement.value = year;\n });\n }\n }\n\n renderCalendar() {\n const date = newDate(this.preview || getCurrentTime());\n const epoch = date.getTime();\n\n const [year, month] = getPartsFromEpoch(epoch);\n\n if (this.calendar) {\n this.calendar.innerHTML = createMonthView(year, month, truncateWeekdays(this.weekdayNames));\n }\n\n Array.from(this.calendar?.querySelectorAll('.day-entry .day') || []).forEach((ele) =>\n ele.addEventListener('click', this.onDayChange.bind(this))\n );\n\n this.updateInputs();\n this.setSelectedDay();\n this.setCurrentDay();\n }\n\n onDayChange(e) {\n if (this.isDisabled) return;\n const date = newDate(this.preview);\n date.setDate(Number(e.target.getAttribute('data-date-day')));\n this.value = formatEpoch(date.getTime(), NATIVE_FORMAT);\n this.dispatchEvent(new CustomEvent('day-changed', { detail: date }));\n }\n\n onYearChange(e) {\n if (!e.target.value) return;\n const date = newDate(this.preview);\n date.setFullYear(Number(e.target.value.trim()));\n this.preview = date.getTime();\n this.renderCalendar();\n this.dispatchEvent(new CustomEvent('year-changed', { detail: date }));\n }\n\n onMonthChange(e) {\n if (!e.target.value) return;\n const date = newDate(this.preview);\n date.setMonth(Number(e.target.value) - 1);\n this.preview = date.getTime();\n this.renderCalendar();\n this.dispatchEvent(new CustomEvent('month-changed', { detail: date }));\n }\n\n onYearInputBlur(e) {\n this.yearInput.baseElement.value = e.target.value || getFullYear(this.preview);\n }\n\n onMonthInputBlur(e) {\n this.monthInput.baseElement.value = e.target.value || getMonth(this.preview);\n }\n\n getSelectedDayEle() {\n const day = newDate(this.epoch).getDate();\n return this.calendar?.querySelector(`[data-date-day=\"${day}\"]`);\n }\n\n getCurrentDayEle() {\n return this.calendar?.querySelector(`[data-date-day=\"${getCurrentDay()}\"]`);\n }\n\n clearSelectedDays() {\n const cells = this.calendar?.querySelectorAll(`[data-selected]`);\n if (!cells) return;\n cells.forEach((c) => c.removeAttribute('data-selected'));\n }\n\n setSelectedDay() {\n this.clearSelectedDays();\n if (this.value && this.isSelectedView) {\n this.getSelectedDayEle().setAttribute('data-selected', 'true');\n }\n }\n\n setCurrentDay() {\n if (this.isTodayView) {\n const ele = this.getCurrentDayEle();\n const title = this.getAttribute('calendar-label-today') || CALENDAR_LABEL_TODAY;\n ele?.setAttribute('data-current-day', 'true');\n ele?.setAttribute('title', title);\n }\n }\n\n navPrevMonth() {\n if (this.isDisabled) {\n return;\n }\n const date = prevMonth(this.preview);\n this.preview = date.getTime();\n this.renderCalendar();\n }\n\n navNextMonth() {\n if (this.isDisabled) {\n return;\n }\n const date = nextMonth(this.preview);\n this.preview = date.getTime();\n this.renderCalendar();\n }\n\n clearValue() {\n this.epoch = '';\n this.value = '';\n this.removeAttribute('preview');\n this.submitButton.setAttribute('disabled', 'true');\n }\n\n onInitialValueChange(newValue) {\n // if component already has a value don't re-set value\n if (this.value) {\n return;\n }\n\n const date = newDate(newValue);\n const epoch = date.getTime();\n\n if (isValidEpoch(epoch)) {\n this.epoch = epoch;\n this.preview = epoch;\n } else {\n this.clearValue();\n }\n }\n\n onYearsRangeChange() {\n setTimeout(() => {\n if (this.yearInput) {\n this.yearInput.innerHTML = getYearOptions(this.yearsRange);\n }\n });\n }\n\n onMonthNamesChange() {\n setTimeout(() => {\n if (this.monthInput) {\n this.monthInput.innerHTML = getMonthsOptions(this.monthNames);\n }\n });\n }\n\n onSubmitLabelChange(newValue) {\n if (this.submitButton) {\n this.submitButton.textContent = newValue || BUTTON_LABEL_DONE;\n }\n }\n\n onCancelLabelChange(newValue) {\n if (this.cancelButton) {\n this.cancelButton.textContent = newValue || BUTTON_LABEL_CANCEL;\n }\n }\n\n onInitialMonthChange(val) {\n const currYear = getFullYear(this.preview);\n this.preview = newDate(`${currYear}/${val}/1`).getTime();\n }\n\n onInitialYearChange(val) {\n const currMonth = getMonth(this.preview);\n this.preview = newDate(`${val}/${currMonth}/1`).getTime();\n }\n\n attributeChangedCallback(attrName, oldValue, newValue) {\n super.attributeChangedCallback(attrName, oldValue, newValue);\n if (oldValue !== newValue) {\n // attrs for which affect static ui parts doesn't require calendar re-render\n if (calendarUiAttrs.includes(attrName)) {\n if (attrName === 'calendar-label-submit') {\n this.onSubmitLabelChange(newValue);\n }\n if (attrName === 'calendar-label-cancel') {\n this.onCancelLabelChange(newValue);\n }\n } else {\n // we want to render the calendar for each of these attr change\n\n if (newValue && attrName === 'initial-value') {\n this.onInitialValueChange(newValue);\n }\n if (newValue && attrName === 'initial-month') {\n this.onInitialMonthChange(newValue);\n }\n if (newValue && attrName === 'initial-year') {\n this.onInitialYearChange(newValue);\n }\n if (attrName === 'years-range') {\n this.onYearsRangeChange(Number(newValue));\n }\n if (attrName === 'calendar-months') {\n this.onMonthNamesChange();\n }\n if (attrName === 'calendar-label-today') {\n this.setCurrentDay(newValue);\n }\n if (attrName === 'disabled') {\n setTimeout(() => {\n this.cancelButton?.setAttribute('disabled', newValue === 'true');\n });\n }\n\n this.renderCalendar();\n }\n }\n }\n\n getValidity() {\n if (this.isRequired && !this.value) {\n return { valueMissing: true };\n }\n return {};\n }\n}\n\nconst {\n calendar,\n day,\n dayEntry,\n currentDay,\n selectedDay,\n disabledDay,\n weekday,\n topNav,\n topNavSelectors,\n bottomNav,\n navPrev,\n navNext,\n navPrevRTL,\n navNextRTL,\n yearInput,\n monthInput,\n} = {\n calendar: { selector: () => '.calendar' },\n topNav: { selector: () => '.nav.top-nav' },\n topNavSelectors: { selector: () => '.nav.top-nav .selectors > span' },\n bottomNav: { selector: () => '.nav.bottom-nav' },\n day: { selector: () => '.day' },\n dayEntry: { selector: () => '.day-entry' },\n currentDay: { selector: () => '.day-entry[data-current-day] .day' },\n selectedDay: { selector: () => '.day-entry[data-selected] .day' },\n disabledDay: { selector: () => '.day-entry[data-disabled=\"true\"] .day' },\n weekday: { selector: () => '.weekday' },\n navPrev: { selector: () => '.nav-prev' },\n navNext: { selector: () => '.nav-next' },\n navPrevRTL: { selector: () => ':host([st-host-direction=\"rtl\"]) .nav-prev' },\n navNextRTL: { selector: () => ':host([st-host-direction=\"rtl\"]) .nav-next' },\n yearInput: { selector: () => '.year-input' },\n monthInput: { selector: () => '.month-input' },\n};\n\nexport const CalendarClass = compose(\n createStyleMixin({ componentNameOverride: getComponentName('input-wrapper') }),\n createStyleMixin({\n mappings: {\n fontSize: {},\n fontFamily: {},\n hostWidth: [\n { selector: () => ':host', property: 'width' },\n { selector: 'table', property: 'width' },\n ],\n hostDirection: { property: 'direction' },\n\n topNavVerticalPadding: [\n { ...topNav, property: 'padding-top' },\n { ...topNav, property: 'padding-bottom' },\n ],\n topNavHorizointalPadding: [\n { ...topNav, property: 'padding-right' },\n { ...topNav, property: 'padding-left' },\n ],\n topNavAlignment: { ...topNav, property: 'justify-content' },\n topNavGap: { ...topNav, property: 'gap' },\n topNavSelectorsGap: { ...topNavSelectors, property: 'gap' },\n\n bottomNavVerticalPadding: [\n { ...bottomNav, property: 'padding-top' },\n { ...bottomNav, property: 'padding-bottom' },\n ],\n bottomNavHorizontalPadding: [\n { ...bottomNav, property: 'padding-right' },\n { ...bottomNav, property: 'padding-left' },\n ],\n bottomNavAlignment: { ...bottomNav, property: 'justify-content' },\n bottomNavGap: { ...bottomNav, property: 'gap' },\n\n navMarginBottom: { ...topNav, property: 'margin-bottom' },\n\n calendarPadding: [\n { ...calendar, property: 'padding-bottom' },\n { ...calendar, property: 'padding-right' },\n { ...calendar, property: 'padding-left' },\n ],\n\n navBorderBottomWidth: { ...topNav, property: 'border-bottom-width' },\n navBorderBottomColor: { ...topNav, property: 'border-bottom-color' },\n navBorderBottomStyle: { ...topNav, property: 'border-bottom-style' },\n\n weekdayFontSize: { ...weekday, property: 'font-size' },\n weekdayFontWeight: { ...weekday, property: 'font-weight' },\n\n currentDayBorderColor: {\n ...currentDay,\n property: 'border-color',\n },\n currentDayBorderWidth: {\n ...currentDay,\n property: 'border-width',\n },\n currentDayBorderStyle: {\n ...currentDay,\n property: 'border-style',\n },\n\n dayHeight: { ...dayEntry, property: 'height' },\n daySize: [\n { ...day, property: 'height' },\n { ...day, property: 'width' },\n ],\n dayPadding: { ...day, property: 'padding' },\n dayRadius: { ...day, property: 'border-radius' },\n dayTextAlign: { ...day, property: 'text-align' },\n dayBlockAlign: { ...day, property: 'margin' },\n dayTextColor: { ...day, property: 'color' },\n dayFontWeight: { ...day, property: 'font-weight' },\n dayBackgroundColor: { ...day, property: 'background-color' },\n dayCursor: { ...day, property: 'cursor' },\n dayFontSize: { ...day, property: 'font-size' },\n\n dayBackgroundColorHover: {\n selector: () => '.day:hover',\n property: 'background-color',\n },\n\n daySelectedTextdColor: {\n ...selectedDay,\n property: 'color',\n },\n daySelectedBackgroundColor: {\n ...selectedDay,\n property: 'background-color',\n },\n dayDisabledTextdColor: {\n ...disabledDay,\n property: 'color',\n },\n\n yearInputWidth: { ...yearInput, property: 'width' },\n monthInputWidth: { ...monthInput, property: 'width' },\n\n navButtonSize: [\n { ...navPrev, property: 'width' },\n { ...navPrev, property: 'height' },\n { ...navNext, property: 'width' },\n { ...navNext, property: 'height' },\n ],\n navButtonCursor: [\n { ...navPrev, property: 'cursor' },\n { ...navNext, property: 'cursor' },\n ],\n navButtonRotation: [\n { ...navPrevRTL, property: 'transform' },\n { ...navNextRTL, property: 'transform' },\n ],\n navButtonOpacity: [\n { ...navPrev, property: 'opacity' },\n { ...navNext, property: 'opacity' },\n ],\n },\n }),\n draggableMixin,\n componentNameValidationMixin\n)(RawCalendar);\n","export const calendarIcon = `\n<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M9 5H15V4.50468C15 4.21404 15.226 4 15.5047 4H16.4953C16.786 4 17 4.22595 17 4.50468V5H18.7568C19.3028 5 19.75 5.44725 19.75 5.99896V7.00104C19.75 7.55734 19.3053 8 18.7568 8H5.24317C4.69717 8 4.25 7.55275 4.25 7.00104V5.99896C4.25 5.44266 4.69466 5 5.24317 5H7V4.50468C7 4.21404 7.22596 4 7.50468 4H8.49532C8.78596 4 9 4.22595 9 4.50468V5ZM5.50468 9H6.49532C6.78596 9 7 9.22596 7 9.50468V10.4953C7 10.786 6.77404 11 6.49532 11H5.50468C5.21404 11 5 10.774 5 10.4953V9.50468C5 9.21404 5.22595 9 5.50468 9ZM8.50468 9H9.49532C9.78596 9 10 9.22596 10 9.50468V10.4953C10 10.786 9.77404 11 9.49532 11H8.50468C8.21404 11 8 10.774 8 10.4953V9.50468C8 9.21404 8.22596 9 8.50468 9ZM11.5047 9H12.4953C12.786 9 13 9.22596 13 9.50468V10.4953C13 10.786 12.774 11 12.4953 11H11.5047C11.214 11 11 10.774 11 10.4953V9.50468C11 9.21404 11.226 9 11.5047 9ZM5.50468 12H6.49532C6.78596 12 7 12.226 7 12.5047V13.4953C7 13.786 6.77404 14 6.49532 14H5.50468C5.21404 14 5 13.774 5 13.4953V12.5047C5 12.214 5.22595 12 5.50468 12ZM8.50468 12H9.49532C9.78596 12 10 12.226 10 12.5047V13.4953C10 13.786 9.77404 14 9.49532 14H8.50468C8.21404 14 8 13.774 8 13.4953V12.5047C8 12.214 8.22596 12 8.50468 12ZM11.5047 12H12.4953C12.786 12 13 12.226 13 12.5047V13.4953C13 13.786 12.774 14 12.4953 14H11.5047C11.214 14 11 13.774 11 13.4953V12.5047C11 12.214 11.226 12 11.5047 12ZM5.50468 15H6.49532C6.78596 15 7 15.226 7 15.5047V16.4953C7 16.786 6.77404 17 6.49532 17H5.50468C5.21404 17 5 16.774 5 16.4953V15.5047C5 15.214 5.22595 15 5.50468 15ZM8.50468 15H9.49532C9.78596 15 10 15.226 10 15.5047V16.4953C10 16.786 9.77404 17 9.49532 17H8.50468C8.21404 17 8 16.774 8 16.4953V15.5047C8 15.214 8.22596 15 8.50468 15ZM11.5047 15H12.4953C12.786 15 13 15.226 13 15.5047V16.4953C13 16.786 12.774 17 12.4953 17H11.5047C11.214 17 11 16.774 11 16.4953V15.5047C11 15.214 11.226 15 11.5047 15ZM14.5047 9H15.4953C15.786 9 16 9.22596 16 9.50468V10.4953C16 10.786 15.774 11 15.4953 11H14.5047C14.214 11 14 10.774 14 10.4953V9.50468C14 9.21404 14.226 9 14.5047 9ZM14.5047 12H15.4953C15.786 12 16 12.226 16 12.5047V13.4953C16 13.786 15.774 14 15.4953 14H14.5047C14.214 14 14 13.774 14 13.4953V12.5047C14 12.214 14.226 12 14.5047 12ZM14.5047 15H15.4953C15.786 15 16 15.226 16 15.5047V16.4953C16 16.786 15.774 17 15.4953 17H14.5047C14.214 17 14 16.774 14 16.4953V15.5047C14 15.214 14.226 15 14.5047 15ZM17.5047 15H18.4953C18.786 15 19 15.226 19 15.5047V16.4953C19 16.786 18.774 17 18.4953 17H17.5047C17.214 17 17 16.774 17 16.4953V15.5047C17 15.214 17.226 15 17.5047 15ZM5.50468 18H6.49532C6.78596 18 7 18.226 7 18.5047V19.4953C7 19.786 6.77404 20 6.49532 20H5.50468C5.21404 20 5 19.774 5 19.4953V18.5047C5 18.214 5.22595 18 5.50468 18ZM8.50468 18H9.49532C9.78596 18 10 18.226 10 18.5047V19.4953C10 19.786 9.77404 20 9.49532 20H8.50468C8.21404 20 8 19.774 8 19.4953V18.5047C8 18.214 8.22596 18 8.50468 18ZM11.5047 18H12.4953C12.786 18 13 18.226 13 18.5047V19.4953C13 19.786 12.774 20 12.4953 20H11.5047C11.214 20 11 19.774 11 19.4953V18.5047C11 18.214 11.226 18 11.5047 18ZM14.5047 18H15.4953C15.786 18 16 18.226 16 18.5047V19.4953C16 19.786 15.774 20 15.4953 20H14.5047C14.214 20 14 19.774 14 19.4953V18.5047C14 18.214 14.226 18 14.5047 18ZM17.5047 18H18.4953C18.786 18 19 18.226 19 18.5047V19.4953C19 19.786 18.774 20 18.4953 20H17.5047C17.214 20 17 19.774 17 19.4953V18.5047C17 18.214 17.226 18 17.5047 18ZM17.5047 12H18.4953C18.786 12 19 12.226 19 12.5047V13.4953C19 13.786 18.774 14 18.4953 14H17.5047C17.214 14 17 13.774 17 13.4953V12.5047C17 12.214 17.226 12 17.5047 12ZM17.5047 9H18.4953C18.786 9 19 9.22596 19 9.50468V10.4953C19 10.786 18.774 11 18.4953 11H17.5047C17.214 11 17 10.774 17 10.4953V9.50468C17 9.21404 17.226 9 17.5047 9Z\" fill=\"#808080\"/>\n</svg>\n`;\n\nexport const arrowRightIcon = `\n<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M9.27283 6.78069C8.87912 6.34164 8.91587 5.66655 9.35492 5.27283C9.79397 4.87912 10.4691 4.91587 10.8628 5.35492C10.8628 5.35492 16.0022 10.9543 16.366 11.36C16.7298 11.7657 16.7298 12.2392 16.366 12.6448L10.8628 18.6451C10.4691 19.0841 9.79397 19.1209 9.35492 18.7272C8.91587 18.3334 8.87912 17.6584 9.27283 17.2193L14.1368 12L9.27283 6.78069Z\" fill=\"#808080\"/>\n</svg>`;\n\nexport const arrowLeftIcon = `<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M14.7272 17.2193C15.1209 17.6584 15.0841 18.3334 14.6451 18.7272C14.206 19.1209 13.5309 19.0841 13.1372 18.6451C13.1372 18.6451 7.99776 13.0457 7.63399 12.64C7.27023 12.2343 7.27023 11.7608 7.63399 11.3552L13.1372 5.35492C13.5309 4.91587 14.206 4.87912 14.6451 5.27283C15.0841 5.66655 15.1209 6.34164 14.7272 6.78069L9.86322 12L14.7272 17.2193Z\" fill=\"#808080\"/>\n</svg>`;\n","import '@descope-ui/descope-combo-box';\nimport '@descope-ui/descope-button';\n\nimport { componentName, CalendarClass } from './CalendarClass';\n\ncustomElements.define(componentName, CalendarClass);\n\nexport { CalendarClass, componentName };\n","const {\n host,\n label,\n placeholder,\n requiredIndicator,\n inputField,\n input,\n inputMask,\n helperText,\n errorMessage,\n disabledPlaceholder,\n inputDisabled,\n inputIcon,\n externalInput,\n externalInputDisabled,\n externalPlaceholder,\n externalDisabledPlaceholder,\n} = {\n host: { selector: () => ':host' },\n label: { selector: '::part(label)' },\n requiredIndicator: { selector: '[required]::part(required-indicator)::after' },\n placeholder: [\n { selector: '> input:placeholder-shown' },\n { selector: () => ':host::slotted(input:placeholder-shown)' },\n ],\n disabledPlaceholder: { selector: '> input:disabled::placeholder' },\n inputField: { selector: '::part(input-field)' },\n input: { selector: 'input' },\n inputMask: { selector: '::part(input-field)::before' },\n inputDisabled: { selector: 'input:disabled' },\n helperText: { selector: '::part(helper-text)' },\n errorMessage: { selector: '::part(error-message)' },\n inputIcon: { selector: 'vaadin-icon' },\n externalInput: { selector: () => '::slotted(input)' },\n externalInputDisabled: { selector: () => '::slotted(input:disabled)' },\n externalPlaceholder: { selector: () => '::slotted(input:placeholder-shown)' },\n externalDisabledPlaceholder: { selector: () => '::slotted(input:disabled::placeholder)' },\n};\n\nexport default {\n // we apply font-size also on the host so we can set its width with em\n fontSize: [{}, host],\n fontFamily: [label, inputField, helperText, errorMessage],\n\n labelFontSize: { ...label, property: 'font-size' },\n labelFontWeight: { ...label, property: 'font-weight' },\n\n labelTextColor: [\n { ...label, property: 'color' },\n { ...requiredIndicator, property: 'color' },\n { ...label, property: '-webkit-text-fill-color' },\n { ...requiredIndicator, property: '-webkit-text-fill-color' },\n ],\n\n hostWidth: { ...host, property: 'width' },\n hostMinWidth: { ...host, property: 'min-width' },\n hostDirection: { ...host, property: 'direction' },\n inputDirection: { ...input, property: 'direction' },\n\n inputBackgroundColor: [\n { ...inputField, property: 'background-color' },\n { ...inputMask, property: 'background-color' },\n ],\n\n errorMessageTextColor: { ...errorMessage, property: 'color' },\n errorMessageIcon: { ...errorMessage, property: 'background-image' },\n errorMessageIconSize: { ...errorMessage, property: 'background-size' },\n errorMessageIconPadding: { ...errorMessage, property: 'padding-inline-start' },\n errorMessageIconRepeat: { ...errorMessage, property: 'background-repeat' },\n errorMessageIconPosition: { ...errorMessage, property: 'background-position' },\n errorMessageFontSize: { ...errorMessage, property: 'font-size' },\n\n helperTextColor: { ...helperText, property: '-webkit-text-fill-color' },\n\n inputValueTextColor: [\n { ...inputField, property: 'color' },\n { ...inputDisabled, property: '-webkit-text-fill-color' },\n { ...externalInputDisabled, property: '-webkit-text-fill-color' },\n ],\n inputCaretTextColor: [\n { ...input, property: 'caret-color' },\n { ...externalInput, property: 'caret-color' },\n ],\n\n labelRequiredIndicator: { ...requiredIndicator, property: 'content' },\n\n inputBorderColor: { ...inputField, property: 'border-color' },\n inputBorderWidth: { ...inputField, property: 'border-width' },\n inputBorderStyle: { ...inputField, property: 'border-style' },\n inputBorderRadius: { ...inputField, property: 'border-radius' },\n\n inputHeight: { ...inputField, property: 'height' },\n inputHorizontalPadding: [\n { ...input, property: 'padding-left' },\n { ...input, property: 'padding-right' },\n { ...externalInput, property: 'padding-left' },\n { ...externalInput, property: 'padding-right' },\n ],\n\n inputOutlineColor: { ...inputField, property: 'outline-color' },\n inputOutlineStyle: { ...inputField, property: 'outline-style' },\n inputOutlineWidth: { ...inputField, property: 'outline-width' },\n inputOutlineOffset: { ...inputField, property: 'outline-offset' },\n\n textAlign: {},\n\n inputTextAlign: [\n { ...input, property: 'text-align' },\n { ...externalInput, property: 'text-align' },\n ],\n\n inputPlaceholderColor: [\n { selector: () => ':host input:placeholder-shown', property: 'color' },\n { ...externalPlaceholder, property: 'color' },\n { ...placeholder, property: 'color' },\n { ...disabledPlaceholder, property: '-webkit-text-fill-color' },\n { ...externalDisabledPlaceholder, property: '-webkit-text-fill-color' },\n ],\n\n labelPosition: { ...label, property: 'position' },\n labelTopPosition: { ...label, property: 'top' },\n labelHorizontalPosition: [\n { ...label, property: 'left' },\n { ...label, property: 'right' },\n ],\n inputTransformY: { ...label, property: 'transform' },\n inputTransition: { ...label, property: 'transition' },\n marginInlineStart: { ...label, property: 'margin-inline-start' },\n placeholderOpacity: [\n { selector: '> input:placeholder-shown', property: 'opacity' },\n { ...externalPlaceholder, property: 'opacity' },\n ],\n inputVerticalAlignment: [\n { ...inputField, property: 'align-items' },\n { ...externalInput, property: 'align-items' },\n ],\n valueInputHeight: [\n { ...input, property: 'height' },\n { ...externalInput, property: 'height' },\n ],\n valueInputMarginBottom: [\n { ...input, property: 'margin-bottom' },\n { ...externalInput, property: 'margin-bottom' },\n ],\n\n inputIconOffset: [\n { ...inputIcon, property: 'margin-right' },\n { ...inputIcon, property: 'margin-left' },\n ],\n inputIconSize: { ...inputIcon, property: 'font-size' },\n inputIconColor: { ...inputIcon, property: 'color' },\n};\n","import {\n createStyleMixin,\n draggableMixin,\n createProxy,\n proxyInputMixin,\n componentNameValidationMixin,\n} from '../../mixins';\nimport textFieldMappings from './textFieldMappings';\nimport { compose } from '../../helpers';\nimport { getComponentName } from '../../helpers/componentHelpers';\nimport {\n inputFloatingLabelStyle,\n resetInputLabelPosition,\n resetInputOverrides,\n useHostExternalPadding,\n} from '../../helpers/themeHelpers/resetHelpers';\n\nexport const componentName = getComponentName('text-field');\n\nconst observedAttrs = ['type', 'label-type', 'copy-to-clipboard'];\n\nconst customMixin = (superclass) =>\n class TextFieldClass extends superclass {\n static get observedAttributes() {\n return observedAttrs.concat(superclass.observedAttributes || []);\n }\n\n icon;\n\n init() {\n super.init?.();\n }\n\n renderCopyToClipboard(shouldRender) {\n if (!shouldRender) {\n this.icon?.remove();\n return;\n }\n\n const iconInitConfig = {\n icon: 'vaadin:copy-o',\n title: 'Copy',\n style: 'cursor: pointer',\n };\n\n const iconCopiedConfig = {\n icon: 'vaadin:check-circle-o',\n title: 'Copied',\n style: 'cursor: initial',\n };\n\n this.icon = Object.assign(document.createElement('vaadin-icon'), {\n slot: 'suffix',\n ...iconInitConfig,\n });\n\n this.baseElement.appendChild(this.icon);\n this.icon.addEventListener('click', () => {\n navigator.clipboard.writeText(this.value);\n Object.assign(this.icon, iconCopiedConfig);\n\n // we want the icon to go back to the initial state after 5 seconds\n setTimeout(() => {\n Object.assign(this.icon, iconInitConfig);\n }, 5000);\n });\n }\n\n onLabelClick() {\n this.focus();\n }\n\n attributeChangedCallback(attrName, oldVal, newVal) {\n super.attributeChangeCallback?.(attrName, oldVal, newVal);\n\n // Vaadin doesn't allow to change the input type attribute.\n // We need the ability to do that, so we're overriding their\n // behavior with their private API.\n // When receiving a `type` attribute, we use their private API\n // to set it on the input.\n if (attrName === 'type') {\n this.baseElement._setType(newVal);\n }\n\n if (oldVal !== newVal) {\n if (attrName === 'label-type') {\n if (newVal === 'floating') {\n this.addEventListener('click', this.onLabelClick);\n } else {\n this.removeEventListener('click', this.onLabelClick);\n }\n } else if (attrName === 'copy-to-clipboard') {\n this.renderCopyToClipboard(newVal === 'true');\n }\n }\n }\n };\n\nexport const TextFieldClass = compose(\n createStyleMixin({\n mappings: textFieldMappings,\n }),\n draggableMixin,\n proxyInputMixin({ proxyProps: ['value', 'selectionStart'], useProxyTargets: true }),\n componentNameValidationMixin,\n customMixin\n)(\n createProxy({\n slots: ['prefix', 'suffix'],\n wrappedEleName: 'vaadin-text-field',\n style: () => `\n\t\t\t:host {\n\t\t\t\tdisplay: inline-block;\n\t\t\t\tmax-width: 100%;\n\t\t\t\tpadding: calc(var(${TextFieldClass.cssVarList.inputOutlineWidth}) + var(${\n TextFieldClass.cssVarList.inputOutlineOffset\n }));\n box-sizing: border-box;\n\t\t\t}\n :host(:is([readonly], [disabled])) ::slotted(:is(input, textarea):placeholder-shown) {\n opacity: 1;\n }\n\n vaadin-text-field[label-type=\"floating\"]:not([focused])[readonly] > input:placeholder-shown {\n opacity: 0;\n }\n vaadin-text-field[label-type=\"floating\"]:not([focused])[disabled] > input:placeholder-shown {\n opacity: 0;\n }\n ${resetInputLabelPosition('vaadin-text-field')}\n\t\t\t${useHostExternalPadding(TextFieldClass.cssVarList)}\n\t\t\t${resetInputOverrides('vaadin-text-field', TextFieldClass.cssVarList)}\n ${inputFloatingLabelStyle()}\n\n vaadin-text-field vaadin-icon {\n align-self: center;\n }\n\t\t`,\n excludeAttrsSync: ['tabindex', 'style'],\n componentName,\n })\n);\n","import '@vaadin/text-field';\nimport '@vaadin/icons';\nimport '@vaadin/icon';\n\nimport { componentName, TextFieldClass } from './TextFieldClass';\n\ncustomElements.define(componentName, TextFieldClass);\n\nexport { TextFieldClass, componentName };\n","// DateCounterClass allows us to add several counters to the input, and use them seperately.\n// For examele, we have a DayCounter, MonthCounter and YearCounter, which can each separately navigate\n// between different ranges.\nexport class DateCounter {\n #data = Object.freeze([]);\n\n constructor({ id, min, max, placeholder }, onChange) {\n this.id = id;\n this.min = min;\n this.max = max;\n this.placeholder = placeholder;\n this.onChange = onChange;\n }\n\n get data() {\n return this.#data;\n }\n\n set data(val) {\n this.#data = Object.freeze(val);\n this.onChange?.();\n }\n\n get #initialNumValue() {\n return this.data.length ? this.numberValue : 0;\n }\n\n get numberValue() {\n return Number(this.stringValue);\n }\n\n get stringValue() {\n return (this.data.join('') || this.placeholder).padStart(this.length, '0');\n }\n\n get isFull() {\n return this.numberValue * 10 > this.max || this.data.length === this.length;\n }\n\n get isEmpty() {\n return this.stringValue === this.placeholder;\n }\n\n get length() {\n return this.max.toString().length;\n }\n\n set(val) {\n this.data = val.toString().split('');\n }\n\n add(num) {\n // use local var to avoid triggering onChange\n let data = this.data;\n\n data = [...data, num];\n\n // we need to re-evaluate the number value\n const numVal = Number(data.join(''));\n\n if (numVal > this.max) {\n data = [num];\n } else if (this.length < data.length) {\n data = data.slice(1, data.length);\n }\n\n this.data = data;\n\n return num;\n }\n\n del() {\n if (!this.data.filter((d) => d !== '0').filter(Boolean).length) {\n this.data = [];\n } else {\n this.data = this.data.slice(0, this.data.length - 1);\n }\n }\n\n clear() {\n this.data = [];\n }\n\n inc(gap) {\n this.replaceValue(\n this.#initialNumValue < this.max\n ? Math.max(this.#initialNumValue + (gap || 1), this.min)\n : this.min\n );\n }\n\n dec(gap) {\n this.replaceValue(\n this.#initialNumValue > this.min\n ? Math.min(this.#initialNumValue - (gap || 1), this.max)\n : this.max\n );\n }\n\n isInRange(val) {\n return val >= this.min && val <= this.max;\n }\n\n replaceValue(val) {\n if (this.isInRange(val)) {\n this.data = val.toString().padStart(this.length, 0).split('');\n }\n }\n\n setMin(val) {\n this.min = Number(val);\n }\n\n setMax(val) {\n this.max = Number(val);\n }\n}\n","import { createBaseInputClass } from '../../baseClasses/createBaseInputClass';\nimport {\n createStyleMixin,\n draggableMixin,\n componentNameValidationMixin,\n portalMixin,\n} from '../../mixins';\nimport { forwardAttrs, getComponentName } from '../../helpers/componentHelpers';\nimport { compose } from '../../helpers';\nimport {\n isValidEpoch,\n formatEpoch,\n isNumber,\n getCurrentTime,\n overrideConstructedStylesheet,\n dateToEpoch,\n} from './helpers';\nimport { formats } from './formats';\nimport { calendarIcon } from './icons';\nimport {\n counterConfig,\n DEFAULT_FORMAT,\n DIVIDER,\n MOBILE_DEVICE_INTERACTION_TIMEOUT_MS,\n NATIVE_FORMAT,\n valRange,\n} from './consts';\nimport { DateCounter } from './DateCounterClass';\nimport { TextFieldClass } from '../descope-text-field/TextFieldClass';\nimport { injectStyle } from '@descope-ui/common/components-helpers';\nimport { parseDateString } from './helpers';\nimport { newDate } from './date-utils';\n\nexport const componentName = getComponentName('date-field');\n\n// we set baseSelector to `vaadin-popover` as a temporary hack, so our portalMixin will\n// be able to process this component's overlay. The whole process needs refactoring as soon as possible.\nconst BASE_SELECTOR = 'vaadin-popover';\nconst BaseInputClass = createBaseInputClass({ componentName, baseSelector: BASE_SELECTOR });\n\nconst dateFieldAttrs = [\n 'format',\n 'opened',\n 'initial-value',\n 'readonly',\n 'disable-calendar',\n 'utc-time',\n];\nconst calendarAttrs = ['years-range', 'calendar-months', 'calendar-weekdays'];\nconst observedAttrs = [...dateFieldAttrs, ...calendarAttrs];\n\nclass RawDateFieldClass extends BaseInputClass {\n epoch = '';\n\n format = DEFAULT_FORMAT;\n\n selectedCounterIdx = 0;\n\n updateCountersDisplay() {\n this.inputElement.value = this.countersValue;\n }\n\n updateValue() {\n if (this.isCountersOutOfRange) {\n this.resetEpoch();\n } else {\n const date = formats[this.format].getDate(this.inputElement.value);\n this.updateEpoch(dateToEpoch(date, this.isUtcTime));\n }\n }\n\n onDateCounterChange = () => {\n this.updateCountersDisplay();\n this.updateValue();\n // update validity\n this.#dispatchInput();\n };\n\n updateEpoch(epoch) {\n this.epoch = dateToEpoch(epoch, this.isUtcTime);\n }\n\n dateCounters = [\n new DateCounter(counterConfig.MONTH, this.onDateCounterChange.bind(this)),\n new DateCounter(counterConfig.DAY, this.onDateCounterChange.bind(this)),\n new DateCounter(counterConfig.YEAR, this.onDateCounterChange.bind(this)),\n ];\n\n static get observedAttributes() {\n return [].concat(BaseInputClass.observedAttributes || [], observedAttrs);\n }\n\n constructor() {\n super();\n\n this.attachShadow({ mode: 'open' }).innerHTML = `\n <div>\n <descope-text-field inputmode=\"numeric\">\n <span slot=\"suffix\" class=\"toggle-calendar\">\n ${calendarIcon}\n </span>\n </descope-text-field>\n <vaadin-popover></vaadin-popover>\n </div>\n `;\n\n injectStyle(\n `\n :host {\n display: inline-block;\n box-sizing: border-box;\n user-select: none;\n max-width: 100%;\n }\n\n :host ::slotted {\n padding: 0;\n }\n\n .toggle-calendar {\n cursor: pointer;\n display: flex;\n align-self: center;\n z-index: 1;\n height: 100%;\n align-items: center;\n }\n\n :host([readonly=\"true\"]) .toggle-calendar {\n pointer-events: none;\n }\n\n .hidden {\n display: none;\n }\n `,\n this\n );\n\n this.inputElement = this.shadowRoot.querySelector('descope-text-field');\n this.popoverToggleButton = this.inputElement.querySelector('.toggle-calendar');\n }\n\n get validationTarget() {\n return this.inputElement;\n }\n\n get opened() {\n return this.getAttribute('opened') === 'true';\n }\n\n // returns the input's value as a epoch\n get displayValueEpoch() {\n const date = formats[this.format].getDate(this.inputElement.value);\n\n if (!isValidEpoch(date?.getTime())) {\n return null;\n }\n\n return date.getTime();\n }\n\n get sortedCounters() {\n return this.format\n .split(DIVIDER)\n .map((placeholder) => this.dateCounters.find((dc) => dc.placeholder === placeholder));\n }\n\n get activeCounter() {\n return this.sortedCounters[this.selectedCounterIdx];\n }\n\n get countersValue() {\n return this.sortedCounters.map((dc) => dc.stringValue).join(DIVIDER);\n }\n\n get overlay() {\n return this.baseElement.shadowRoot?.querySelector('vaadin-popover-overlay');\n }\n\n get backdrop() {\n return this.overlay.shadowRoot?.querySelector('#backdrop');\n }\n\n get calendar() {\n return this.overlay?.querySelector('descope-calendar');\n }\n\n get isRTL() {\n const computedStyleDirection = getComputedStyle(this.baseElement).getPropertyValue('direction');\n\n if (computedStyleDirection) {\n return computedStyleDirection === 'rtl';\n }\n\n // Fallback: If for some reason computed style was not calculated in time, fallback to check on attribute\n return this.getAttribute('st-host-direction') === 'rtl';\n }\n\n get value() {\n if (this.isInvalidDate()) {\n return '';\n }\n return this.epoch;\n }\n\n set value(val) {\n let value = parseInt(val, 10);\n if (!Number.isNaN(value)) {\n this.updateEpoch(value);\n this.updateDateCounters(new Date(value));\n } else {\n this.resetEpoch();\n this.resetDateCounters();\n this.clearInputEle();\n }\n }\n\n resetEpoch() {\n this.epoch = '';\n }\n\n get isCountersEmpty() {\n return this.dateCounters.every((dc) => dc.isEmpty);\n }\n\n get isCountersOutOfRange() {\n return this.dateCounters.some((dc) => !dc.isInRange(dc.numberValue));\n }\n\n get disableCalendar() {\n return this.getAttribute('disable-calendar') === 'true';\n }\n\n get isUtcTime() {\n return this.getAttribute('utc-time') === 'true';\n }\n\n get isSelectAll() {\n const inputEle = this.inputElement.baseElement.inputElement;\n return inputEle.value.length === inputEle.selectionStart + inputEle.selectionEnd;\n }\n\n reportValidity() {\n this.inputElement.reportValidity();\n }\n\n #dispatchInput() {\n this.inputElement.baseElement.dispatchEvent(new Event('input', { bubbles: true }));\n }\n\n updateInputDisplay() {\n this.inputElement.value = formatEpoch(newDate(this.countersValue).getTime(), this.format);\n }\n\n init() {\n super.init?.();\n\n this.updateFormatPattern();\n this.initPopover();\n this.onDateCounterChange();\n this.initInputElement();\n\n setTimeout(() => {\n this.#overrideOverlaySettings();\n }, 0);\n }\n\n initInputElement() {\n this.inputElement.getValidity = this.getValidity.bind(this);\n this.inputElement.baseElement.checkValidity = this.checkValidity.bind(this);\n\n this.popoverToggleButton.addEventListener('click', this.onPopoverToggle.bind(this));\n\n this.inputElement.addEventListener('focus', this.onFocus.bind(this));\n this.inputElement.addEventListener('blur', this.onBlur.bind(this));\n this.inputElement.addEventListener('click', this.handleMouseCaretPositionChange.bind(this));\n this.inputElement.addEventListener('keydown', this.handleKeyboard.bind(this));\n this.inputElement.addEventListener('beforeinput', this.handleInput.bind(this));\n this.inputElement.addEventListener('pointerdown', this.onPointerDown.bind(this));\n this.inputElement.addEventListener('paste', this.onPaste.bind(this));\n\n forwardAttrs(this, this.inputElement, {\n includeAttrs: [\n 'label',\n 'label-type',\n 'placeholder',\n 'disabled',\n 'readonly',\n 'bordered',\n 'required',\n 'full-width',\n 'st-host-direction',\n 'pattern',\n 'bordered',\n 'data-errormessage-value-missing',\n 'data-errormessage-pattern-mismatch',\n 'data-errormessage-range-underflow',\n 'data-errormessage-range-overflow',\n 'st-error-message-icon',\n 'st-error-message-icon-size',\n 'st-error-message-icon-padding',\n ],\n });\n }\n\n handleInput(e) {\n e.preventDefault();\n\n this.handleSelectAll();\n\n if (e.data && isNumber(e.data)) {\n this.parseDigits(e.data);\n this.updateCountersDisplay();\n } else if (e.inputType) {\n this.handleNavKeys(e);\n }\n }\n\n initPopover() {\n this.baseElement.trigger = ['click'];\n this.baseElement.withBackdrop = true;\n this.baseElement.renderer = this.#popoverRenderer.bind(this);\n\n // block popover events from focusing/blurring the text-field\n this.baseElement.addEventListener('click', (e) => {\n e.preventDefault();\n e.stopPropagation();\n });\n }\n\n handleSelectAll() {\n if (this.isSelectAll) {\n this.selectFirstCounter();\n }\n }\n\n #popoverPosStylesheet;\n\n #popoverRenderer(root) {\n // popoverRenderer should run only once, when the popover is first rendering.\n if (!root.firstChild) {\n this.overlay.positionTarget = this.shadowRoot.querySelector('.toggle-calendar');\n\n root.appendChild(this.#getPopoverContent());\n\n // override vaadin's constructed stylesheet which hides the host element\n overrideConstructedStylesheet(this.baseElement);\n\n this.backdrop.addEventListener('click', this.closePopover.bind(this));\n }\n\n // Hide overlay before adjusting position to prevent flickering\n root.style.setProperty('visibility', 'hidden');\n\n // Wait until overlay is ready\n setTimeout(() => {\n this.#adjustPopoverPosition(root);\n\n // Show adjusted overlay\n root.style.setProperty('visibility', 'visible');\n this.updateCalendarView(root);\n }, 100);\n }\n\n #adjustPopoverPosition() {\n const popover = this.shadowRoot.querySelector('vaadin-popover').shadowRoot;\n\n // Remove previously added stylesheets\n this.#popoverPosStylesheet?.remove();\n\n const windowRect = document.body.getBoundingClientRect();\n const inputRect = this.getBoundingClientRect();\n const calendarRect = this.calendar.getBoundingClientRect();\n\n const side = this.isRTL ? 'right' : 'left';\n const offset = inputRect[side] - calendarRect[side];\n const availableLeft = calendarRect.left;\n const availableRight = windowRect.width - calendarRect.right;\n\n let newOffset;\n if (offset > 0) {\n newOffset = Math.min(offset, availableRight);\n } else {\n newOffset = Math.min(Math.abs(offset), availableLeft) * -1;\n }\n\n injectStyle(\n `\n vaadin-popover-overlay::part(overlay) {\n transform: translateX(${newOffset}px);\n }\n `,\n popover\n );\n }\n\n #getPopoverContent() {\n const ele = document.createElement('span');\n\n ele.innerHTML = `<descope-calendar></descope-calendar>`;\n\n const calendar = ele.querySelector('descope-calendar');\n\n calendar.addEventListener('date-submit', this.onCalendarSubmit.bind(this));\n calendar.addEventListener('cancel', this.closePopover.bind(this));\n\n return ele;\n }\n\n // the default vaadin behavior is to attach the overlay to the body when opened\n // we do not want that because it's difficult to style the overlay in this way\n // so we override it to open inside the shadow DOM\n #overrideOverlaySettings() {\n this.overlay._attachOverlay = () => this.overlay.bringToFront();\n this.overlay._detachOverlay = () => {};\n this.overlay._enterModalState = () => {};\n }\n\n onPopoverToggle() {\n this.opened ? this.closePopover() : this.openPopover();\n }\n\n openPopover() {\n if (this.disableCalendar) return;\n this.setAttribute('opened', 'true');\n }\n\n closePopover() {\n this.removeAttribute('opened');\n this.inputElement.focus();\n }\n\n getCounterById(id) {\n return this.dateCounters.find((dc) => dc.id === id);\n }\n\n onCalendarSubmit() {\n if (!this.isReadOnly) {\n if (!this.calendar.value) return;\n\n const calendarDate = newDate(this.calendar.value);\n\n this.value = dateToEpoch(calendarDate, this.isUtcTime);\n\n this.getCounterById('year').replaceValue(calendarDate.getFullYear());\n this.getCounterById('month').replaceValue(calendarDate.getMonth() + 1);\n this.getCounterById('day').replaceValue(calendarDate.getDate());\n\n this.#dispatchInput();\n }\n\n this.closePopover();\n }\n\n updateCalendarView() {\n const validInputVal =\n isValidEpoch(newDate(this.inputElement.value || '').getTime()) &&\n formats[this.format].validate(this.inputElement.value);\n\n if (this.displayValueEpoch || validInputVal) {\n this.calendar.setAttribute(\n 'initial-value',\n formatEpoch(this.displayValueEpoch || this.epoch, NATIVE_FORMAT)\n );\n } else {\n this.calendar.clearValue();\n this.calendar.setAttribute('preview', formatEpoch(getCurrentTime(), NATIVE_FORMAT));\n }\n\n forwardAttrs(this, this.calendar, {\n includeAttrs: [\n 'st-host-direction',\n 'readonly',\n 'initial-month',\n 'initial-year',\n 'years-range',\n 'calendar-label-submit',\n 'calendar-label-cancel',\n 'calendar-months',\n 'calendar-weekdays',\n 'calendar-weekdays-short',\n ],\n });\n }\n\n // In mobile devices, there are cases were `pointerdown` is triggered\n // instead of `click`.\n onPointerDown(e) {\n setTimeout(() => this.handleMouseCaretPositionChange(e), MOBILE_DEVICE_INTERACTION_TIMEOUT_MS);\n }\n\n onFocus() {\n if (this.isReadOnly) {\n return;\n }\n\n // We need to wait for focus to end before we set selection\n setTimeout(() => this.resetDisplay());\n }\n\n resetDisplay() {\n if (!this.inputElement.value) {\n this.inputElement.value = this.format;\n }\n\n // On focus select the first counter\n this.selectFirstCounter();\n // set selection on first counter\n this.inputElement.setSelectionRange(0, this.sortedCounters[0].length);\n }\n\n onBlur() {\n if (this.opened) {\n return;\n }\n\n if (this.inputElement.value === this.format) {\n this.clearInputEle();\n }\n }\n\n clearInputEle() {\n this.inputElement.value = '';\n }\n\n onFormatUpdate(format) {\n if (Object.keys(formats).includes(format)) {\n this.format = format;\n this.updateFormatPattern();\n }\n }\n\n updateFormatPattern() {\n const format = this.getAttribute('format') || this.format || DEFAULT_FORMAT;\n this.setAttribute('type', 'date');\n this.setAttribute('pattern', formats[format].pattern);\n }\n\n parseDigits(value) {\n this.activeCounter.add(value);\n\n if (this.activeCounter.isFull) {\n this.selectNextCounter();\n }\n\n // We wait for the digit to be parsed, and only then set the selection.\n // Failing to do so results in unexpected \"jump\" of the screen in mobile devices.\n this.setInputSelectionRange();\n }\n\n getCounterIdx(caretPos) {\n const [counter1ln, counter2ln] = this.sortedCounters.map((dc) => dc.length);\n\n const c1 = caretPos <= counter1ln;\n const c2 = caretPos >= counter1ln && caretPos <= counter1ln + counter2ln + 1;\n const c3 = caretPos >= counter1ln + counter2ln + 2;\n\n return [c1, c2, c3].indexOf(true);\n }\n\n setSelectedCounterByCaretPosition(e) {\n this.selectedCounterIdx = this.getCounterIdx(\n // if triggered by touch event, target might not include `selectionStart`\n // in that case we fall back to the inputElement's `selectionStart` value.\n // Therefore, it is recommended to run this function with setTimeout,\n // at least for mobile events.\n e.target?.selectionStart || this.inputElement.selectionStart\n );\n }\n\n selectFirstCounter() {\n this.selectedCounterIdx = 0;\n }\n\n selectNextCounter() {\n if (this.selectedCounterIdx < this.dateCounters.length) {\n this.selectedCounterIdx = Math.min(this.selectedCounterIdx + 1, 2);\n }\n }\n\n selectPrevCounter() {\n if (this.selectedCounterIdx > 0) {\n this.selectedCounterIdx = Math.min(this.selectedCounterIdx - 1, 1);\n }\n }\n\n // Sets the text selection range in the input element based on the selected counter.\n // The function calculates the starting position of the selection by summing the lengths\n // of all counters before the currently selected counter (`selectedCounterIdx`).\n // It then selects the entire length of the current counter in the input element.\n setInputSelectionRange() {\n // For preview/readonly state we don't have a caret or a caretIdx, so we skip setting input selection range\n if (this.selectedCounterIdx < 0) {\n return;\n }\n\n // We wait for before setting the selection, otherwise there's an\n // unexpected \"jump\" of the screen in mobile devices.\n setTimeout(() => {\n const caretStart = this.sortedCounters\n .slice(0, this.selectedCounterIdx)\n .reduce((acc, counter) => acc + counter.length, this.selectedCounterIdx);\n\n this.inputElement.setSelectionRange(\n caretStart,\n caretStart + this.sortedCounters[this.selectedCounterIdx].length\n );\n });\n }\n\n resetDateCounters() {\n this.dateCounters.forEach((dc) => dc.clear());\n }\n\n // in case value is set from external source we need to update date counters\n updateDateCounters(date) {\n this.dateCounters.forEach((dc) => {\n switch (dc.id) {\n case counterConfig.MONTH.id:\n dc.set(this.isUtcTime ? date.getUTCMonth() + 1 : date.getMonth() + 1);\n break;\n case counterConfig.YEAR.id:\n dc.set(this.isUtcTime ? date.getUTCFullYear() : date.getFullYear());\n break;\n case counterConfig.DAY.id:\n dc.set(this.isUtcTime ? date.getUTCDate() : date.getDate());\n break;\n default:\n break;\n }\n });\n }\n\n handleKeyboard(e) {\n if (e.metaKey || e.ctrlKey) {\n if (e.key.toLowerCase() === 'x') {\n this.onCut(e);\n }\n\n return;\n }\n\n this.handleSelectAll();\n\n if (e.key === 'ArrowUp') {\n this.activeCounter.inc();\n } else if (e.key === 'ArrowDown') {\n this.activeCounter.dec();\n } else if (e.key === 'ArrowRight') {\n this.selectNextCounter();\n } else if (e.key === 'ArrowLeft') {\n this.selectPrevCounter();\n }\n\n this.setInputSelectionRange();\n }\n\n handleNavKeys(e) {\n if (this.isReadOnly) {\n return;\n }\n\n if (this.opened) {\n this.closePopover();\n }\n\n if (!this.activeCounter) return;\n\n if (e.inputType === 'deleteContentBackward') {\n this.handleBackspace();\n }\n\n this.setInputSelectionRange();\n }\n\n handleBackspace() {\n if (this.isSelectAll) {\n this.resetToInitialState();\n return;\n }\n\n const counter = this.activeCounter;\n\n if (counter.isEmpty) {\n this.selectPrevCounter();\n this.setInputSelectionRange();\n } else {\n counter.set('');\n }\n\n // To support keyboards like SwiftKey, we need to re-render the counters display and selection,\n // otherwise we get an unexpected behavior, where the format is deleted.\n setTimeout(() => {\n this.updateCountersDisplay();\n this.setInputSelectionRange();\n });\n }\n\n handleMouseCaretPositionChange(e) {\n if (this.opened) {\n return;\n }\n\n e.preventDefault();\n\n this.setSelectedCounterByCaretPosition(e);\n this.setInputSelectionRange();\n }\n\n onInitialValueChange(val) {\n // if component already has a value don't re-set value\n if (this.value) return;\n\n // we need to wait for the text-field to init\n setTimeout(() => {\n if (Number.isNaN(parseInt(val, 10))) {\n return;\n }\n this.value = Number(val);\n });\n }\n\n togglePopoverAccess(visibility) {\n if (visibility) {\n this.popoverToggleButton.classList.remove('hidden');\n } else {\n this.popoverToggleButton.classList.add('hidden');\n }\n }\n\n attributeChangedCallback(attrName, oldValue, newValue) {\n super.attributeChangedCallback?.(attrName, oldValue, newValue);\n\n if (oldValue !== newValue) {\n if (attrName === 'disable-calendar') {\n this.togglePopoverAccess(newValue !== 'true');\n }\n if (dateFieldAttrs.includes(attrName)) {\n if (newValue && attrName === 'format') {\n this.onFormatUpdate(newValue);\n }\n if (attrName === 'initial-value') {\n this.onInitialValueChange(newValue);\n }\n } else if (calendarAttrs.includes(attrName)) {\n if (newValue) {\n this.calendar?.setAttribute(attrName, newValue);\n } else {\n this.calendar?.removeAttribute(attrName);\n }\n }\n }\n }\n\n // we want to validate the date supplied actually exists. For example: Feb 31 is not an actual date,\n // but in JS when create a `new Date('1999-02-31') we get March 2nd 1999.\n // To prevent this error from being submitted, we evaluate the\n // date parts against their generated Date value.\n isInvalidDate() {\n const yearCounter = this.getCounterById('year');\n const isYearOutOfRange =\n yearCounter.numberValue > valRange['year'].max ||\n yearCounter.numberValue < valRange['year'].min;\n\n const isDateDisplayMismatch = Object.entries(this.getDateVals()).some(([key, val]) => {\n const counter = this.getCounterById(key);\n return !val || counter.numberValue !== val;\n });\n\n return isYearOutOfRange || isDateDisplayMismatch;\n }\n\n getValidity() {\n if (this.isRequired && this.isCountersEmpty) {\n return { valueMissing: true };\n }\n\n if (this.isCountersOutOfRange || this.isInvalidDate()) {\n return { patternMismatch: true };\n }\n\n return {};\n }\n\n getDateVals() {\n const ret = {\n day: '',\n month: '',\n year: '',\n };\n\n if (Number.isNaN(this.epoch)) {\n return ret;\n }\n\n try {\n const date = new Date(this.epoch);\n\n if (this.isUtcTime) {\n ret.month = date.getUTCMonth() + 1;\n ret.day = date.getUTCDate();\n ret.year = date.getUTCFullYear();\n } else {\n ret.month = date.getMonth() + 1;\n ret.day = date.getDate();\n ret.year = date.getFullYear();\n }\n } catch (e) {}\n\n return ret;\n }\n\n resetToInitialState() {\n this.resetDateCounters();\n this.selectFirstCounter();\n this.resetDisplay();\n }\n\n onCut(e) {\n e.preventDefault();\n\n if (this.isSelectAll) {\n this.#copyToClipboard(this.countersValue);\n this.resetToInitialState();\n } else {\n this.#copyToClipboard(this.activeCounter.stringValue);\n this.activeCounter.set('');\n }\n\n this.setInputSelectionRange();\n }\n\n #copyToClipboard(value) {\n try {\n navigator.clipboard.writeText(value);\n } catch (err) {\n console.error('Failed to copy date value:', err);\n }\n }\n\n onPaste(e) {\n e.preventDefault();\n\n const clipboardData = e.clipboardData || window.clipboardData;\n const pastedData = clipboardData.getData('Text');\n\n // try paste entire date if valid\n const validDate = parseDateString(pastedData, this.format);\n\n if (validDate) {\n this.value = dateToEpoch(validDate, this.isUtcTime);\n this.onDateCounterChange();\n\n // select all\n setTimeout(() => this.inputElement.setSelectionRange(0, this.inputElement.value.length));\n } else {\n const value = Number(pastedData);\n\n // try paste in counter if possible\n if (value && this.activeCounter.min <= value && this.activeCounter.max >= value) {\n // use String to get rid of any zero padding\n this.activeCounter.set(String(value));\n\n setTimeout(() => this.setInputSelectionRange());\n }\n }\n }\n}\n\nconst textVars = TextFieldClass.cssVarList;\nconst { host, input, inputEleRTL, toggleButton, overlay, backdrop, errorMessage } = {\n host: { selector: () => ':host' },\n input: { selector: () => 'descope-text-field' },\n inputEleRTL: { selector: () => ':host([st-host-direction=\"rtl\"]) descope-text-field' },\n toggleButton: { selector: () => '.toggle-calendar' },\n overlay: { selector: 'vaadin-popover-overlay::part(overlay)' },\n backdrop: { selector: 'vaadin-popover-overlay::part(backdrop)' },\n};\n\nexport const DateFieldClass = compose(\n createStyleMixin({ componentNameOverride: getComponentName('input-wrapper') }),\n createStyleMixin({\n mappings: {\n iconMargin: { ...toggleButton, property: 'margin-inline-end' },\n hostWidth: { ...host, property: 'width' },\n hostDirection: { ...host, property: 'direction' },\n textAlign: { ...input, property: 'text-align' },\n rtlInputDirection: { ...inputEleRTL, property: textVars.inputDirection },\n rtlInputAlignment: { ...inputEleRTL, property: textVars.inputTextAlign },\n overlayGap: {\n property: () => DateFieldClass.cssVarList.overlayGap,\n },\n overlayBackgroundColor: {\n property: () => DateFieldClass.cssVarList.overlayBackgroundColor,\n },\n overlayPadding: {\n property: () => DateFieldClass.cssVarList.overlayPadding,\n },\n overlayBoxShadow: { property: () => DateFieldClass.overlayBoxShadow },\n overlayOutlineWidth: {\n property: () => DateFieldClass.cssVarList.overlayOutlineWidth,\n },\n overlayOutlineColor: {\n property: () => DateFieldClass.cssVarList.overlayOutlineColor,\n },\n overlayOutlineStyle: {\n property: () => DateFieldClass.cssVarList.overlayOutlineStyle,\n },\n errorMessageIcon: {\n selector: TextFieldClass.componentName,\n property: TextFieldClass.cssVarList.errorMessageIcon,\n },\n errorMessageIconSize: {\n selector: TextFieldClass.componentName,\n property: TextFieldClass.cssVarList.errorMessageIconSize,\n },\n errorMessageIconPadding: {\n selector: TextFieldClass.componentName,\n property: TextFieldClass.cssVarList.errorMessageIconPadding,\n },\n errorMessageIconRepeat: {\n selector: TextFieldClass.componentName,\n property: TextFieldClass.cssVarList.errorMessageIconRepeat,\n },\n errorMessageIconPosition: {\n selector: TextFieldClass.componentName,\n property: TextFieldClass.cssVarList.errorMessageIconPosition,\n },\n errorMessageFontSize: {\n selector: TextFieldClass.componentName,\n property: TextFieldClass.cssVarList.errorMessageFontSize,\n },\n },\n }),\n portalMixin({\n name: 'overlay',\n selector: '',\n mappings: {\n marginTop: { ...overlay, property: 'margin-top' },\n backgroundColor: { ...overlay },\n backdropBackgroundColor: { ...backdrop, property: 'background-color' },\n backdropPointerEvents: { ...backdrop, property: 'pointer-events' },\n padding: { ...overlay },\n boxShadow: { ...overlay },\n outlineWidth: { ...overlay },\n outlineColor: { ...overlay },\n outlineStyle: { ...overlay },\n },\n }),\n draggableMixin,\n componentNameValidationMixin\n)(RawDateFieldClass);\n","import '@vaadin/popover/src/vaadin-popover';\nimport './descope-calendar';\nimport '../descope-text-field';\n\nimport { componentName, DateFieldClass } from './DateFieldClass';\n\ncustomElements.define(componentName, DateFieldClass);\n\nexport { DateFieldClass, componentName };\n","import { createStyleMixin, draggableMixin, componentNameValidationMixin } from '../../mixins';\nimport { createBaseClass } from '../../baseClasses/createBaseClass';\nimport { compose } from '../../helpers';\nimport { forwardAttrs, getComponentName } from '../../helpers/componentHelpers';\nimport { TextClass } from '@descope-ui/descope-text/class';\nimport { injectStyle } from '@descope-ui/common/components-helpers';\n\nexport const componentName = getComponentName('divider');\nclass RawDivider extends createBaseClass({ componentName, baseSelector: ':host > div' }) {\n constructor() {\n super();\n\n this.attachShadow({ mode: 'open' }).innerHTML = `\n\t\t\t<div>\n\t\t\t\t<descope-text>\n\t\t\t\t\t<slot></slot>\n\t\t\t\t</descope-text>\n\t\t\t</div>\n\t\t`;\n\n injectStyle(\n `\n \t:host {\n\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t}\n\t\t\t\t:host > div {\n\t\t\t\t\tdisplay: flex;\n\t\t\t\t\theight: 100%;\n\t\t\t\t\twidth: 100%;\n\t\t\t\t}\n\t\t\t\t:host > div::before,\n\t\t\t\t:host > div::after {\n\t\t\t\t\tcontent: '';\n\t\t\t\t\tflex-grow: 1;\n\t\t\t\t}\n\t\t\t\tdescope-text {\n\t\t\t\t\tflex-grow: 0;\n\t\t\t\t\tflex-shrink: 0;\n\t\t\t\t}\n\t\t\t\t:host(:empty) descope-text {\n\t\t\t\t\tdisplay: none;\n\t\t\t\t}\n\t\t\t\t:host([vertical=\"true\"]) div {\n\t\t\t\t\twidth: fit-content;\n\t\t\t\t}\n `,\n this\n );\n\n this.textComponent = this.shadowRoot.querySelector('descope-text');\n\n forwardAttrs(this, this.textComponent, {\n includeAttrs: ['mode', 'variant', 'italic'],\n });\n }\n}\n\nconst textVars = TextClass.cssVarList;\nconst { host, before, after, text } = {\n host: { selector: () => ':host' },\n before: { selector: '::before' },\n after: { selector: '::after' },\n text: { selector: 'descope-text' },\n};\n\nexport const DividerClass = compose(\n createStyleMixin({\n mappings: {\n hostWidth: { ...host, property: 'width' },\n hostPadding: { ...host, property: 'padding' },\n hostDirection: { ...text, property: 'direction' },\n\n minHeight: {},\n alignItems: {},\n alignSelf: {},\n flexDirection: {},\n textAlign: { ...text, property: textVars.textAlign },\n\n labelTextWidth: { ...text, property: 'width' },\n labelTextMaxWidth: { ...text, property: 'max-width' },\n labelTextVerticalSpacing: [\n { ...text, property: 'padding-top' },\n { ...text, property: 'padding-bottom' },\n ],\n labelTextHorizontalSpacing: [\n { ...text, property: 'padding-right' },\n { ...text, property: 'padding-left' },\n ],\n\n stripeColor: [\n { ...before, property: 'background-color' },\n { ...after, property: 'background-color' },\n ],\n stripeHorizontalThickness: [\n { ...before, property: 'height' },\n { ...after, property: 'height' },\n ],\n stripeVerticalThickness: [\n { ...before, property: 'width' },\n { ...after, property: 'width' },\n ],\n stripeColorOpacity: [\n { ...before, property: 'opacity' },\n { ...after, property: 'opacity' },\n ],\n },\n }),\n draggableMixin,\n componentNameValidationMixin\n)(RawDivider);\n","import { componentName, DividerClass } from './DividerClass';\nimport '@descope-ui/descope-text';\n\ncustomElements.define(componentName, DividerClass);\n\nexport { DividerClass, componentName };\n","import {\n createStyleMixin,\n draggableMixin,\n createProxy,\n proxyInputMixin,\n componentNameValidationMixin,\n externalInputMixin,\n} from '../../mixins';\nimport textFieldMappings from '../descope-text-field/textFieldMappings';\nimport { compose } from '../../helpers';\nimport { getComponentName } from '../../helpers/componentHelpers';\nimport {\n inputFloatingLabelStyle,\n resetInputLabelPosition,\n resetInputOverrides,\n useHostExternalPadding,\n} from '../../helpers/themeHelpers/resetHelpers';\n\nexport const componentName = getComponentName('email-field');\n\nconst defaultPattern = \"^[\\\\w\\\\.\\\\%\\\\+\\\\-']+@[\\\\w\\\\.\\\\-]+\\\\.[A-Za-z]{2,}$\";\nconst defaultAutocomplete = 'username';\n\nconst customMixin = (superclass) =>\n class EmailFieldMixinClass extends superclass {\n init() {\n super.init?.();\n\n // we need to set the pattern on the base element because vaadin-email-field is overriding it\n this.baseElement.setAttribute('pattern', defaultPattern);\n\n if (!this.getAttribute('autocomplete')) {\n this.setAttribute('autocomplete', defaultAutocomplete);\n }\n\n this.createExternalInput();\n }\n };\n\nexport const EmailFieldClass = compose(\n createStyleMixin({\n mappings: textFieldMappings,\n }),\n draggableMixin,\n externalInputMixin({\n inputType: 'email',\n inputName: 'email',\n autocompleteType: 'username',\n includeAttrs: ['disabled', 'readonly', 'pattern'],\n }),\n proxyInputMixin({ proxyProps: ['value', 'selectionStart'], useProxyTargets: true }),\n componentNameValidationMixin,\n customMixin\n)(\n createProxy({\n slots: ['', 'suffix'],\n wrappedEleName: 'vaadin-email-field',\n style: () => `\n\t\t\t:host {\n\t\t\t\tdisplay: inline-block;\n\t\t\t\tmax-width: 100%;\n\t\t\t\tpadding: calc(var(${EmailFieldClass.cssVarList.inputOutlineWidth}) + var(${\n EmailFieldClass.cssVarList.inputOutlineOffset\n }));\n box-sizing: border-box;\n\t\t\t}\n ${resetInputLabelPosition('vaadin-email-field')}\n\t\t\t${useHostExternalPadding(EmailFieldClass.cssVarList)}\n\t\t\t${resetInputOverrides('vaadin-email-field', EmailFieldClass.cssVarList)}\n ${inputFloatingLabelStyle()}\n\n vaadin-email-field[label-type=\"floating\"]:not([focused])[readonly] > input:placeholder-shown {\n opacity: 0;\n }\n vaadin-email-field[label-type=\"floating\"]:not([focused])[disabled] > input:placeholder-shown {\n opacity: 0;\n }\n\n :host ::slotted(*) {\n -webkit-mask-image: none;\n }\n\n vaadin-email-field[external-input=\"true\"] > input:not(:placeholder-shown) {\n opacity: 0;\n }\n\t\t`,\n excludeAttrsSync: ['tabindex', 'style'],\n componentName,\n })\n);\n","import '@vaadin/email-field';\nimport { componentName, EmailFieldClass } from './EmailFieldClass';\n\ncustomElements.define(componentName, EmailFieldClass);\n\nexport { EmailFieldClass, componentName };\n","import { injectStyle } from '@descope-ui/common/components-helpers';\nimport { compose } from '../helpers';\nimport { componentNameValidationMixin, createStyleMixin, draggableMixin } from '../mixins';\nimport { createBaseClass } from './createBaseClass';\n\nexport const createCssVarImageClass = ({ componentName, varName, fallbackVarName }) => {\n let style;\n const getContent = () => style;\n\n class RawCssVarImageClass extends createBaseClass({\n componentName,\n baseSelector: ':host > div',\n }) {\n constructor() {\n super();\n this.attachShadow({ mode: 'open' }).innerHTML = `\n\t\t\t<div></div>\n\t\t\t`;\n\n injectStyle(\n `\n\t\t\t\t:host {\n\t\t\t\t\tdisplay: inline-flex;\n\t\t\t\t}\n\t\t\t\t:host([draggable=\"true\"]) > div {\n\t\t\t\t\tpointer-events: none\n\t\t\t\t}\n\t\t\t\t:host > div {\n\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t\tmax-width: 100%;\n\t\t\t\t\tmax-height: 100%;\n\t\t\t\t\tobject-fit: contain;\n\t\t\t\t\tmargin: auto;\n\t\t\t\t\t${getContent()}\n\t\t\t\t}\n `,\n this\n );\n }\n }\n\n const CssVarImageClass = compose(\n createStyleMixin({\n mappings: {\n height: { selector: () => ':host > div' },\n width: { selector: () => ':host > div' },\n [varName]: { property: 'content' },\n [fallbackVarName]: { property: 'content' },\n },\n }),\n draggableMixin,\n componentNameValidationMixin\n )(RawCssVarImageClass);\n\n style = `content: var(${CssVarImageClass.cssVarList[varName]}, var(${CssVarImageClass.cssVarList[fallbackVarName]}));`;\n\n return CssVarImageClass;\n};\n","import { getComponentName } from '../../helpers/componentHelpers';\nimport { createCssVarImageClass } from '../../baseClasses/createCssVarImageClass';\n\nexport const componentName = getComponentName('logo');\n\nexport const LogoClass = createCssVarImageClass({\n componentName,\n varName: 'url',\n fallbackVarName: 'fallbackUrl',\n});\n","import { componentName, LogoClass } from './LogoClass';\n\ncustomElements.define(componentName, LogoClass);\n\nexport { LogoClass, componentName };\n","import { getComponentName } from '../../helpers/componentHelpers';\nimport { createCssVarImageClass } from '../../baseClasses/createCssVarImageClass';\n\nexport const componentName = getComponentName('totp-image');\n\nexport const TotpImageClass = createCssVarImageClass({\n componentName,\n varName: 'url',\n fallbackVarName: 'fallbackUrl',\n});\n","import { componentName, TotpImageClass } from './TotpImageClass';\n\ncustomElements.define(componentName, TotpImageClass);\n\nexport { TotpImageClass, componentName };\n","import { getComponentName } from '../../helpers/componentHelpers';\nimport { createCssVarImageClass } from '../../baseClasses/createCssVarImageClass';\n\nexport const componentName = getComponentName('notp-image');\n\nexport const NotpImageClass = createCssVarImageClass({\n componentName,\n varName: 'url',\n fallbackVarName: 'fallbackUrl',\n});\n","import { componentName, NotpImageClass } from './NotpImageClass';\n\ncustomElements.define(componentName, NotpImageClass);\n\nexport { NotpImageClass, componentName };\n","import {\n createStyleMixin,\n draggableMixin,\n createProxy,\n proxyInputMixin,\n componentNameValidationMixin,\n} from '../../mixins';\nimport textFieldMappings from '../descope-text-field/textFieldMappings';\nimport { compose } from '../../helpers';\nimport { getComponentName } from '../../helpers/componentHelpers';\nimport {\n inputFloatingLabelStyle,\n resetInputLabelPosition,\n resetInputOverrides,\n useHostExternalPadding,\n} from '../../helpers/themeHelpers/resetHelpers';\n\nexport const componentName = getComponentName('number-field');\n\nexport const NumberFieldClass = compose(\n createStyleMixin({\n mappings: textFieldMappings,\n }),\n draggableMixin,\n proxyInputMixin({ proxyProps: ['value', 'selectionStart'] }),\n componentNameValidationMixin\n)(\n createProxy({\n slots: ['', 'prefix', 'suffix'],\n wrappedEleName: 'vaadin-number-field',\n style: () => `\n\t\t\t:host {\n\t\t\t\tdisplay: inline-block;\n\t\t\t\tmax-width: 100%;\n\t\t\t\tpadding: calc(var(${NumberFieldClass.cssVarList.inputOutlineWidth}) + var(${\n NumberFieldClass.cssVarList.inputOutlineOffset\n }));\n\t\t\t}\n ${resetInputLabelPosition('vaadin-number-field')}\n\t\t\t${useHostExternalPadding(NumberFieldClass.cssVarList)}\n\t\t\t${resetInputOverrides('vaadin-number-field', NumberFieldClass.cssVarList)}\n ${inputFloatingLabelStyle()}\n\n vaadin-number-field[label-type=\"floating\"]:not([focused])[readonly] > input:placeholder-shown {\n opacity: 0;\n }\n vaadin-number-field[label-type=\"floating\"]:not([focused])[disabled] > input:placeholder-shown {\n opacity: 0;\n }\n\t\t`,\n excludeAttrsSync: ['tabindex', 'style'],\n componentName,\n })\n);\n","import '@vaadin/number-field';\nimport { componentName, NumberFieldClass } from './NumberFieldClass';\n\ncustomElements.define(componentName, NumberFieldClass);\n\nexport { NumberFieldClass, componentName };\n","export const INPUT_MASK_TEXT_PROP = '--descope-input-mask-content';\nexport const INPUT_MASK_DISPLAY_PROP = '--descope-input-mask-display';\nexport const INPUT_MASK_FALLBACK_PROP = '--descope-input-mask-fallback';\n\nexport const focusElement = (ele) => {\n ele?.focus();\n ele?.setSelectionRange?.(1, 1);\n};\n\nexport const sanitizeStr = (str) => {\n return str.replace(/\\D/g, '') || '';\n};\n\nexport const toggleMaskVisibility = (input, value) => {\n if (value) {\n input.style.setProperty(INPUT_MASK_TEXT_PROP, `\"${value}\"`);\n input.style.setProperty(INPUT_MASK_DISPLAY_PROP, 'flex');\n } else {\n input.style.removeProperty(INPUT_MASK_TEXT_PROP);\n input.style.removeProperty(INPUT_MASK_DISPLAY_PROP);\n }\n};\n","/* eslint-disable no-param-reassign */\nimport debounce from 'lodash.debounce';\nimport { createBaseInputClass } from '../../../baseClasses/createBaseInputClass';\nimport { forwardAttrs, getComponentName } from '../../../helpers/componentHelpers';\nimport {\n sanitizeStr,\n focusElement,\n toggleMaskVisibility,\n INPUT_MASK_FALLBACK_PROP,\n INPUT_MASK_TEXT_PROP,\n INPUT_MASK_DISPLAY_PROP,\n} from './helpers';\nimport { injectStyle } from '@descope-ui/common/components-helpers';\n\nexport const componentName = getComponentName('passcode-internal');\n\nconst observedAttributes = ['digits', 'loading'];\n\nconst forwardAttributes = [\n 'disabled',\n 'bordered',\n 'size',\n 'invalid',\n 'readonly',\n 'aria-labelledby',\n];\n\nconst BaseInputClass = createBaseInputClass({ componentName, baseSelector: 'div' });\n\nclass PasscodeInternal extends BaseInputClass {\n static get observedAttributes() {\n return observedAttributes.concat(BaseInputClass.observedAttributes || []);\n }\n\n constructor() {\n super();\n\n this.innerHTML = `\n\t\t<div class=\"wrapper\"></div>\n\t\t<div class=\"loader-container\">\n <descope-loader-radial size=\"xs\" mode=\"primary\"></descope-loader-radial>\n </div>\n\t\t`;\n\n this.wrapperEle = this.querySelector('.wrapper');\n this.loaderContainer = this.querySelector('.loader-container');\n }\n\n renderInputs() {\n const inputs = [...Array(this.digits).keys()].map(\n (idx) => `\n\t\t<descope-text-field\n\t\t\tdata-id=${idx}\n\t\t\ttype=\"tel\"\n\t\t\tautocomplete=\"one-time-code\"\n\t\t\tinputMode=\"numeric\"\n\t\t></descope-text-field>\n\t`\n );\n\n this.wrapperEle.innerHTML = inputs.join('');\n\n this.inputs = Array.from(this.querySelectorAll('descope-text-field'));\n\n this.initInputs();\n }\n\n handleLoadingState(isLoading) {\n if (isLoading) {\n this.setAttribute('inert', 'true');\n } else {\n this.removeAttribute('inert');\n }\n }\n\n get digits() {\n return Number.parseInt(this.getAttribute('digits'), 10) || 6;\n }\n\n get value() {\n return this.inputs?.map(({ value }) => value).join('') || '';\n }\n\n set value(val) {\n if (val === this.value) return;\n\n this.parseInputValue(this.inputs[0], sanitizeStr(val));\n }\n\n getValidity() {\n if (this.isRequired && !this.value) {\n return { valueMissing: true };\n }\n if (this.pattern && !new RegExp(this.pattern).test(this.value)) {\n return { patternMismatch: true };\n }\n\n return {};\n }\n\n init() {\n // we are adding listeners before calling to super because it's stopping the events\n this.addEventListener('focus', (e) => {\n // we want to ignore focus events we are dispatching\n if (e.isTrusted) this.inputs[0].focus();\n });\n\n super.init?.();\n\n this.renderInputs();\n }\n\n // eslint-disable-next-line class-methods-use-this\n getInputIdx(inputEle) {\n return Number.parseInt(inputEle.getAttribute('data-id'), 10);\n }\n\n getNextInput(currInput) {\n const currentIdx = this.getInputIdx(currInput);\n const newIdx = Math.min(currentIdx + 1, this.inputs.length - 1);\n return this.inputs[newIdx];\n }\n\n getPrevInput(currInput) {\n const currentIdx = this.getInputIdx(currInput);\n const newIdx = Math.max(currentIdx - 1, 0);\n return this.inputs[newIdx];\n }\n\n fillDigits(charArr, currentInput) {\n for (let i = 0; i < charArr.length; i += 1) {\n currentInput.value = charArr[i] ?? '';\n\n const nextInput = this.getNextInput(currentInput);\n\n if (nextInput === currentInput) break;\n currentInput = nextInput;\n }\n\n focusElement(currentInput);\n }\n\n parseInputValue(input, value = '') {\n const charArr = value.split('');\n\n if (!charArr.length) {\n // if we got an invalid value we want to clear the input\n input.value = '';\n } else this.fillDigits(charArr, input);\n }\n\n initInputs() {\n this.inputs.forEach((input) => {\n // During debounced input we hide the value with a mask.\n // This allows us to hide the multiple population of the first input\n // in case of an automated input (e.g. Safari OTP Autofill or paste).\n injectStyle(\n `\n vaadin-text-field::part(input-field)::before {\n ${INPUT_MASK_FALLBACK_PROP}: '';\n content: var(${INPUT_MASK_TEXT_PROP}, var(${INPUT_MASK_FALLBACK_PROP}));\n position: absolute;\n width: 100%;\n height: 100%;\n display: var(${INPUT_MASK_DISPLAY_PROP}, none);\n align-items: center;\n justify-content: center;\n }`,\n input\n );\n\n const handleParseInput = (val) => {\n this.parseInputValue(input, val);\n toggleMaskVisibility(input);\n };\n\n const debouncedHandleParseInput = debounce(handleParseInput, 0, { trailing: true });\n\n // sanitize the input\n input.addEventListener('input', (e) => {\n input.value = sanitizeStr(input.value);\n\n if (input.value) {\n toggleMaskVisibility(input, input.value[0]);\n }\n\n setTimeout(() => {\n if (e?.inputType === 'deleteContentBackward') {\n focusElement(this.getPrevInput(input));\n }\n });\n debouncedHandleParseInput(input.value);\n });\n\n // we want backspace to focus on the previous digit\n input.onkeydown = ({ key }) => {\n // when user deletes a digit, we want to focus the previous digit\n if (key === 'Backspace') {\n // if value is empty then the input element does not fire `input` event\n // if this is the case, we focus the element here.\n // otherwise, the focusElement occurs as part of the `input` event listener\n if (!input.value) {\n setTimeout(() => focusElement(this.getPrevInput(input)), 0);\n } else {\n input.setSelectionRange(1, 1);\n }\n } else if (key.length === 1) {\n // we want only characters and not command keys\n input.value = ''; // we are clearing the previous value so we can override it with the new value\n }\n };\n\n forwardAttrs(this, input, { includeAttrs: forwardAttributes });\n input.shadowRoot.querySelector('input').setAttribute('aria-label', 'passcode digit');\n });\n\n this.handleFocusEventsDispatching(this.inputs);\n this.handleInputEventDispatching();\n }\n\n attributeChangedCallback(attrName, oldValue, newValue) {\n super.attributeChangedCallback?.(attrName, oldValue, newValue);\n\n // sync attributes to inputs\n if (oldValue !== newValue) {\n if (observedAttributes.includes(attrName)) {\n if (attrName === 'digits') {\n this.renderInputs();\n }\n if (attrName === 'loading') {\n this.handleLoadingState(newValue === 'true');\n }\n }\n }\n }\n\n get pattern() {\n return `^$|^\\\\d{${this.digits},}$`;\n }\n}\n\nexport default PasscodeInternal;\n","import {\n createStyleMixin,\n draggableMixin,\n createProxy,\n proxyInputMixin,\n componentNameValidationMixin,\n inputOverrideValidConstraintsMixin,\n} from '../../mixins';\nimport { componentName as descopeInternalComponentName } from './descope-passcode-internal/PasscodeInternal';\nimport { TextFieldClass } from '../descope-text-field/TextFieldClass';\nimport { LoaderRadialClass } from '../descope-loader-radial/LoaderRadialClass';\nimport { compose } from '../../helpers';\nimport { forwardAttrs, getComponentName } from '../../helpers/componentHelpers';\nimport {\n resetInputCursor,\n resetInputLabelPosition,\n resetInputFieldDefaultWidth,\n} from '../../helpers/themeHelpers/resetHelpers';\nimport { injectStyle } from '@descope-ui/common/components-helpers';\n\nexport const componentName = getComponentName('passcode');\n\nconst observedAttributes = ['digits'];\n\nconst customMixin = (superclass) =>\n class PasscodeMixinClass extends superclass {\n static get observedAttributes() {\n return observedAttributes.concat(superclass.observedAttributes || []);\n }\n\n get digits() {\n return Number.parseInt(this.getAttribute('digits'), 10) || 6;\n }\n\n init() {\n super.init?.();\n\n injectStyle(\n `\n .wrapper {\n display: flex;\n width: 100%;\n justify-content: space-between;\n direction: ltr;\n position: relative;\n }\n\n descope-text-field {\n direction: ltr;\n }\n\n .loader-container {\n display: none;\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n }\n `,\n this\n );\n\n const template = document.createElement('template');\n\n template.innerHTML = `\n <${descopeInternalComponentName}\n bordered=\"true\"\n name=\"code\"\n tabindex=\"-1\"\n slot=\"input\"\n role=\"textbox\"\n ><slot></slot></${descopeInternalComponentName}>\n `;\n\n this.baseElement.appendChild(template.content.cloneNode(true));\n\n this.inputElement = this.shadowRoot.querySelector(descopeInternalComponentName);\n\n forwardAttrs(this, this.inputElement, {\n includeAttrs: ['digits', 'size', 'loading', 'disabled'],\n });\n }\n\n attributeChangedCallback(attrName, oldValue, newValue) {\n super.attributeChangedCallback?.(attrName, oldValue, newValue);\n\n if (attrName === 'digits') {\n this.style['--passcode-digits-count'] = newValue;\n }\n }\n };\n\nconst {\n host,\n digitField,\n label,\n requiredIndicator,\n internalWrapper,\n focusedDigitField,\n errorMessage,\n} = {\n host: { selector: () => ':host' },\n focusedDigitField: { selector: () => `${TextFieldClass.componentName}[focused=\"true\"]` },\n digitField: { selector: () => TextFieldClass.componentName },\n label: { selector: '::part(label)' },\n requiredIndicator: { selector: '[required]::part(required-indicator)::after' },\n internalWrapper: { selector: 'descope-passcode-internal .wrapper' },\n errorMessage: { selector: '::part(error-message)' },\n};\n\nconst textVars = TextFieldClass.cssVarList;\nconst loaderVars = LoaderRadialClass.cssVarList;\n\nexport const PasscodeClass = compose(\n createStyleMixin({\n mappings: {\n fontSize: [{ ...digitField, property: textVars.fontSize }, host],\n hostWidth: { property: 'width' },\n hostDirection: { ...host, property: 'direction' },\n fontFamily: [host, { ...label }],\n labelTextColor: [\n { ...label, property: 'color' },\n { ...label, property: '-webkit-text-fill-color' },\n { ...requiredIndicator, property: 'color' },\n { ...requiredIndicator, property: '-webkit-text-fill-color' },\n ],\n labelRequiredIndicator: { ...requiredIndicator, property: 'content' },\n errorMessageTextColor: { ...errorMessage, property: 'color' },\n errorMessageIcon: { ...errorMessage, property: 'background-image' },\n errorMessageIconSize: { ...errorMessage, property: 'background-size' },\n errorMessageIconPadding: { ...errorMessage, property: 'padding-inline-start' },\n errorMessageIconRepeat: { ...errorMessage, property: 'background-repeat' },\n errorMessageIconPosition: { ...errorMessage, property: 'background-position' },\n errorMessageFontSize: { ...errorMessage, property: 'font-size' },\n digitValueTextColor: {\n selector: TextFieldClass.componentName,\n property: textVars.inputValueTextColor,\n },\n digitSize: [\n { ...digitField, property: 'height' },\n { ...digitField, property: 'width' },\n ],\n digitPadding: { ...digitField, property: textVars.inputHorizontalPadding },\n digitTextAlign: { ...digitField, property: textVars.inputTextAlign },\n digitCaretTextColor: { ...digitField, property: textVars.inputCaretTextColor },\n digitSpacing: { ...internalWrapper, property: 'gap' },\n digitOutlineColor: { ...digitField, property: textVars.inputOutlineColor },\n digitOutlineWidth: { ...digitField, property: textVars.inputOutlineWidth },\n\n focusedDigitFieldOutlineColor: { ...focusedDigitField, property: textVars.inputOutlineColor },\n overlayOpacity: { ...internalWrapper, property: 'opacity' },\n spinnerSize: { selector: LoaderRadialClass.componentName, property: loaderVars.spinnerSize },\n },\n }),\n draggableMixin,\n inputOverrideValidConstraintsMixin,\n proxyInputMixin({ proxyProps: ['value', 'selectionStart'] }),\n componentNameValidationMixin,\n customMixin\n)(\n createProxy({\n slots: [],\n wrappedEleName: 'vaadin-text-field',\n style: () => `\n\t\t\t:host {\n\t\t\t\tdisplay: inline-flex;\n\t\t\t\tmax-width: 100%;\n\t\t\t\tmin-width: calc(var(--passcode-digits-count) * 2em);\n\t\t\t}\n\t\t\t${resetInputFieldDefaultWidth()}\n\t\t\t:host::after {\n\t\t\t\tbackground-color: transparent;\n\t\t\t}\n\t\t\t:host::part(input-field)::after {\n\t\t\t\tbackground-color: transparent;\n\t\t\t}\n\n :host([loading=\"true\"]) descope-passcode-internal .loader-container {\n display: block;\n }\n\n\t\t\tdescope-passcode-internal {\n\t\t\t\t-webkit-mask-image: none;\n\t\t\t\tpadding: 0;\n\t\t\t\twidth: 100%;\n\t\t\t\theight: 100%;\n\t\t\t\tmin-height: initial;\n\t\t\t}\n\n\t\t\tdescope-passcode-internal .wrapper {\n\t\t\t\tbox-sizing: border-box;\n\t\t\t\tmin-height: initial;\n\t\t\t\theight: 100%;\n\t\t\t\tjustify-content: space-between;\n\t\t\t}\n\n\t\t\tdescope-passcode-internal descope-text-field {\n\t\t\t\tmin-width: 2em;\n\t\t\t\tmax-width: var(${textVars.inputHeight});\n\t\t\t}\n\n\t\t\tvaadin-text-field::part(input-field) {\n\t\t\t\tbackground-color: transparent;\n\t\t\t\tpadding: 0;\n\t\t\t\toverflow: hidden;\n\t\t\t\t-webkit-mask-image: none;\n\t\t\t}\n\n /* safari */\n\t\t\tvaadin-text-field::part(input-field)::after {\n opacity: 0;\n }\n\n\t\t\tvaadin-text-field {\n\t\t\t\tmargin: 0;\n\t\t\t\tpadding: 0;\n\t\t\t\twidth: 100%;\n\t\t\t}\n\n\t\t\tvaadin-text-field::before {\n\t\t\t\theight: 0;\n\t\t\t}\n\n\t\t\tvaadin-text-field[readonly] > input:placeholder-shown {\n\t\t\t\topacity: 1;\n\t\t\t}\n\n\t\t\tvaadin-text-field[readonly]::part(input-field)::after {\n\t\t\t\tborder: 0 solid;\n\t\t\t}\n\n\t\t\tvaadin-text-field::part(input-field) {\n\t\t\t\tbox-shadow: none;\n\t\t\t}\n\n ${resetInputLabelPosition('vaadin-text-field')}\n\t\t\t${resetInputCursor('vaadin-text-field')}\n \t`,\n excludeAttrsSync: ['tabindex', 'style'],\n componentName,\n })\n);\n\nexport default PasscodeClass;\n","import PasscodeInternal, { componentName } from './PasscodeInternal';\n\ncustomElements.define(componentName, PasscodeInternal);\n","import { componentName, PasscodeClass } from './PasscodeClass';\nimport '../descope-text-field';\nimport '../descope-loader-radial';\nimport './descope-passcode-internal';\n\ncustomElements.define(componentName, PasscodeClass);\n\nexport { PasscodeClass, componentName };\n","const passwordDraggableMixin = (superclass) =>\n class PasswordDraggableMixinClass extends superclass {\n get isReadOnly() {\n return this.hasAttribute('readonly') && this.getAttribute('readonly') !== 'false';\n }\n\n init() {\n // there is an issue in Chrome that input field with type password cannot be D&D\n // so in case the input is draggable & readonly, we are changing the input type to \"text\" before dragging\n // and return the original type when done\n super.init?.();\n\n const ele = this.querySelector('input');\n\n ele?.addEventListener('mousedown', (e) => {\n if (this.isDraggable && this.isReadOnly) {\n ele.setAttribute('inert', 'true');\n\n const inputEle = e.target;\n const prevType = inputEle.getAttribute('type');\n inputEle.setAttribute('type', 'text');\n setTimeout(() => {\n inputEle.focus();\n });\n\n const onComplete = (_) => {\n inputEle.setAttribute('type', prevType);\n ele.removeAttribute('inert');\n this.removeEventListener('mouseup', onComplete);\n this.removeEventListener('dragend', onComplete);\n };\n\n this.addEventListener('dragend', onComplete, { once: true });\n this.addEventListener('mouseup', onComplete, { once: true });\n }\n });\n }\n };\n\nexport default passwordDraggableMixin;\n","import {\n createStyleMixin,\n draggableMixin,\n createProxy,\n proxyInputMixin,\n componentNameValidationMixin,\n externalInputMixin,\n} from '../../mixins';\nimport { compose } from '../../helpers';\nimport { getComponentName } from '../../helpers/componentHelpers';\nimport passwordDraggableMixin from './passwordDraggableMixin';\nimport {\n resetInputLabelPosition,\n resetInputCursor,\n useHostExternalPadding,\n inputFloatingLabelStyle,\n} from '../../helpers/themeHelpers/resetHelpers';\n\nexport const componentName = getComponentName('password');\n\nconst customMixin = (superclass) =>\n class PasswordFieldMixinClass extends superclass {\n static get observedAttributes() {\n return ['manual-visibility-toggle'];\n }\n\n get manualToggleVisibility() {\n return this.getAttribute('manual-visibility-toggle') === 'true';\n }\n\n init() {\n super.init?.();\n this.handleCaretOnVisibilityChange();\n this.origSetPasswordVisible = this.baseElement._setPasswordVisible;\n this.origSetFocused = this.baseElement._setFocused;\n this.baseElement._setFocused = this.setFocus.bind(this);\n\n this.initExternalInput();\n }\n\n initExternalInput() {\n const externalInput = this.createExternalInput();\n if (externalInput) {\n this.handlePasswordVisibility(externalInput);\n }\n }\n\n get caretPosition() {\n return this.value?.length || 0;\n }\n\n handleCaretOnVisibilityChange() {\n const origTogglePasswordVisibility = this.baseElement._togglePasswordVisibility.bind(\n this.baseElement\n );\n this.baseElement._togglePasswordVisibility = () => {\n setTimeout(() => {\n origTogglePasswordVisibility();\n this.inputElement.setSelectionRange(this.caretPosition, this.caretPosition);\n return false;\n });\n };\n }\n\n // We use `manual-visibility-toggle` to to toggle the password's visibility\n // even if the input field is focused-out. However, on focusout - Vaadin resets\n // password visibility. Since we don't want to override Vaadin's native setFocus\n // function (which is part of their FocusMixin).\n // So, here we override the part of logic that runs within Vaadin's setFocus that reports\n // the password visibility state. This logic is part of our `manual-visibility-toggle` only.\n setFocus(focused) {\n if (this.manualToggleVisibility) {\n this.baseElement._setPasswordVisible = () => {};\n }\n this.origSetFocused.call(this.baseElement, focused);\n this.baseElement._setPasswordVisible = this.origSetPasswordVisible.bind(this.baseElement);\n }\n\n resetPasswordVisibilityToggle() {\n this.baseElement._setPasswordVisible = this.origSetPasswordVisible;\n this.baseElement._setFocused = this.origSetFocus;\n }\n\n attributeChangedCallback(attrName, oldValue, newValue) {\n super.attributeChangedCallback?.(attrName, oldValue, newValue);\n }\n\n // override vaadin's password visibility toggle.\n // we need this override in order to to resolve the external input `focus` race condition,\n // which is caused due to the focus sync between the two inputs.\n handlePasswordVisibility(externalInput) {\n // disable vaadin's `__boundRevealButtonMouseDown` mouse-down event lisetener\n const origBoundRevealButtonMouseDown = this.baseElement.__boundRevealButtonMouseDown;\n this.baseElement\n .querySelector('vaadin-password-field-button')\n .removeEventListener('mousedown', origBoundRevealButtonMouseDown);\n\n // disable vaadin's `_passwordVisibleChanged` observer\n this.baseElement._passwordVisibleChanged = () => {};\n\n // override vaadin's `_togglePasswordVisibility`\n this.baseElement._togglePasswordVisibility = () => {\n const currVisibility = externalInput.getAttribute('type');\n if (currVisibility === 'password') {\n this.showPasswordVisibility(externalInput);\n } else {\n this.hidePasswordVisibility(externalInput);\n }\n };\n }\n\n showPasswordVisibility(input) {\n // handle input element's type\n input.setAttribute('type', 'text');\n // handle vaadin's `password-visible` attribute\n this.setAttribute('password-visible', 'true');\n }\n\n hidePasswordVisibility(input) {\n // handle input element's type\n input.setAttribute('type', 'password');\n // handle vaadin's `password-visible` attribute\n this.setAttribute('password-visible', 'false');\n }\n };\n\nconst {\n host,\n inputField,\n inputElement,\n inputElementPlaceholder,\n revealButtonContainer,\n revealButtonIcon,\n label,\n requiredIndicator,\n errorMessage,\n helperText,\n} = {\n host: { selector: () => ':host' },\n inputField: { selector: '::part(input-field)' },\n inputElement: { selector: '> input' },\n inputElementPlaceholder: { selector: () => ':host input:placeholder-shown' },\n revealButtonContainer: { selector: '::part(reveal-button)' },\n revealButtonIcon: { selector: '::part(reveal-button)::before' },\n label: { selector: '::part(label)' },\n requiredIndicator: { selector: '[required]::part(required-indicator)::after' },\n helperText: { selector: '::part(helper-text)' },\n errorMessage: { selector: '::part(error-message)' },\n};\n\nexport const PasswordClass = compose(\n createStyleMixin({\n mappings: {\n hostWidth: { ...host, property: 'width' },\n hostMinWidth: { ...host, property: 'min-width' },\n hostDirection: { ...host, property: 'direction' },\n fontSize: [{}, host],\n fontFamily: [label, inputField, errorMessage, helperText],\n inputHeight: { ...inputField, property: 'height' },\n inputHorizontalPadding: [\n { ...inputElement, property: 'padding-left' },\n { ...inputElement, property: 'padding-right' },\n ],\n inputBackgroundColor: { ...inputField, property: 'background-color' },\n\n inputBorderStyle: { ...inputField, property: 'border-style' },\n inputBorderWidth: { ...inputField, property: 'border-width' },\n inputBorderColor: { ...inputField, property: 'border-color' },\n inputBorderRadius: { ...inputField, property: 'border-radius' },\n\n inputOutlineColor: { ...inputField, property: 'outline-color' },\n inputOutlineStyle: { ...inputField, property: 'outline-style' },\n inputOutlineOffset: { ...inputField, property: 'outline-offset' },\n inputOutlineWidth: { ...inputField, property: 'outline-width' },\n\n labelFontSize: { ...label, property: 'font-size' },\n labelFontWeight: { ...label, property: 'font-weight' },\n labelTextColor: [\n { ...label, property: 'color' },\n { ...label, property: '-webkit-text-fill-color' },\n { ...requiredIndicator, property: 'color' },\n { ...requiredIndicator, property: '-webkit-text-fill-color' },\n ],\n labelRequiredIndicator: { ...requiredIndicator, property: 'content' },\n errorMessageTextColor: { ...errorMessage, property: 'color' },\n errorMessageIcon: { ...errorMessage, property: 'background-image' },\n errorMessageIconSize: { ...errorMessage, property: 'background-size' },\n errorMessageIconPadding: { ...errorMessage, property: 'padding-inline-start' },\n errorMessageIconRepeat: { ...errorMessage, property: 'background-repeat' },\n errorMessageIconPosition: { ...errorMessage, property: 'background-position' },\n errorMessageFontSize: { ...errorMessage, property: 'font-size' },\n\n inputPlaceholderTextColor: [\n { ...inputElementPlaceholder, property: 'color' },\n { selector: () => ':host ::slotted(input:placeholder-shown)', property: 'color' },\n ],\n inputValueTextColor: [\n { ...inputElement, property: 'color' },\n { selector: () => ':host ::slotted(input)', property: 'color' },\n ],\n\n revealButtonOffset: [\n { ...revealButtonContainer, property: 'margin-right' },\n { ...revealButtonContainer, property: 'margin-left' },\n ],\n revealButtonSize: { ...revealButtonContainer, property: 'font-size' },\n revealButtonColor: { ...revealButtonIcon, property: 'color' },\n\n labelPosition: { ...label, property: 'position' },\n labelTopPosition: { ...label, property: 'top' },\n labelHorizontalPosition: [\n { ...label, property: 'left' },\n { ...label, property: 'right' },\n ],\n inputTransformY: { ...label, property: 'transform' },\n inputTransition: { ...label, property: 'transition' },\n marginInlineStart: { ...label, property: 'margin-inline-start' },\n placeholderOpacity: [\n { selector: '> input:placeholder-shown', property: 'opacity' },\n { ...inputElement, property: 'opacity' },\n ],\n inputVerticalAlignment: { ...inputField, property: 'align-items' },\n valueInputHeight: { ...inputElement, property: 'height' },\n },\n }),\n draggableMixin,\n externalInputMixin({\n inputType: 'password',\n inputName: 'password',\n includeAttrs: ['disabled', 'readonly', 'pattern', 'type', 'autocomplete'],\n noBlurDispatch: true,\n }),\n proxyInputMixin({ proxyProps: ['value', 'selectionStart'], useProxyTargets: true }),\n componentNameValidationMixin,\n passwordDraggableMixin,\n customMixin\n)(\n createProxy({\n slots: ['', 'suffix'],\n wrappedEleName: 'vaadin-password-field',\n style: () => `\n\t\t\t:host {\n\t\t\t\tdisplay: inline-block;\n\t\t\t\tmax-width: 100%;\n\t\t\t\tmin-width: 10em;\n box-sizing: border-box;\n position: relative;\n\t\t\t}\n\t\t\t${useHostExternalPadding(PasswordClass.cssVarList)}\n\t\t\t${resetInputCursor('vaadin-password-field')}\n ${resetInputLabelPosition('vaadin-password-field')}\n\n\t\t\tvaadin-password-field {\n\t\t\t\twidth: 100%;\n\t\t\t\tbox-sizing: border-box;\n\t\t\t\tpadding: 0;\n\t\t\t}\n\t\t\tvaadin-password-field > input {\n -webkit-mask-image: none;\n\t\t\t\tbox-sizing: border-box;\n opacity: 1;\n\t\t\t}\n\t\t\tvaadin-password-field::part(input-field) {\n\t\t\t\tbox-sizing: border-box;\n\t\t\t\tpadding: 0;\n\t\t\t}\n\t\t\tvaadin-password-field[focus-ring]::part(input-field) {\n\t\t\t\tbox-shadow: none;\n\t\t\t}\n :host ::slotted(input) {\n\t\t\t\tmin-height: 0;\n }\n :host([readonly]) ::slotted(input:placeholder-shown) {\n\t\t\t\topacity: 0;\n\t\t\t}\n\t\t\tvaadin-password-field::before {\n\t\t\t\theight: initial;\n\t\t\t}\n\t\t\tvaadin-password-field::part(input-field)::after {\n\t\t\t\topacity: 0;\n\t\t\t}\n\t\t\tvaadin-password-field-button {\n\t\t\t\tcursor: pointer;\n\t\t\t}\n\t\t\t:host([readonly]) vaadin-password-field-button {\n\t\t\t\tpointer-events: none;\n\t\t\t}\n\t\t\tvaadin-password-field-button[focus-ring] {\n\t\t\t\tbox-shadow: 0 0 0 2px var(${PasswordClass.cssVarList.inputOutlineColor});\n\t\t\t}\n\n ${inputFloatingLabelStyle()}\n\n ::part(reveal-button) {\n align-self: center;\n }\n\n vaadin-password-field[external-input=\"true\"] > input:not(:placeholder-shown) {\n opacity: 0;\n }\n\t\t`,\n excludeAttrsSync: ['tabindex', 'style'],\n componentName,\n })\n);\n","import '@vaadin/password-field';\nimport { componentName, PasswordClass } from './PasswordClass';\n\ncustomElements.define(componentName, PasswordClass);\n\nexport { PasswordClass, componentName };\n","import {\n createStyleMixin,\n draggableMixin,\n createProxy,\n proxyInputMixin,\n componentNameValidationMixin,\n} from '../../mixins';\nimport { compose } from '../../helpers';\nimport { getComponentName } from '../../helpers/componentHelpers';\nimport {\n resetInputContainer,\n resetInputCursor,\n resetInputLabelPosition,\n resetInputField,\n resetInputPlaceholder,\n useHostExternalPadding,\n} from '../../helpers/themeHelpers/resetHelpers';\n\nexport const componentName = getComponentName('text-area');\n\nconst {\n host,\n label,\n placeholder,\n inputField,\n textArea,\n requiredIndicator,\n helperText,\n errorMessage,\n} = {\n host: { selector: () => ':host' },\n label: { selector: '::part(label)' },\n placeholder: { selector: 'textarea:placeholder-shown' },\n inputField: { selector: '::part(input-field)' },\n textArea: { selector: '> textarea' },\n requiredIndicator: { selector: '[required]::part(required-indicator)::after' },\n helperText: { selector: '::part(helper-text)' },\n errorMessage: { selector: '::part(error-message)' },\n};\n\nexport const TextAreaClass = compose(\n createStyleMixin({\n mappings: {\n hostWidth: { ...host, property: 'width' },\n hostMinWidth: { ...host, property: 'min-width' },\n hostDirection: { ...host, property: 'direction' },\n fontSize: [host, textArea],\n fontFamily: [label, inputField, helperText, errorMessage],\n labelTextColor: [\n { ...label, property: 'color' },\n { ...label, property: '-webkit-text-fill-color' },\n { ...requiredIndicator, property: 'color' },\n ],\n labelRequiredIndicator: { ...requiredIndicator, property: 'content' },\n errorMessageTextColor: { ...errorMessage, property: 'color' },\n errorMessageIcon: { ...errorMessage, property: 'background-image' },\n errorMessageIconSize: { ...errorMessage, property: 'background-size' },\n errorMessageIconPadding: { ...errorMessage, property: 'padding-inline-start' },\n errorMessageIconRepeat: { ...errorMessage, property: 'background-repeat' },\n errorMessageIconPosition: { ...errorMessage, property: 'background-position' },\n errorMessageFontSize: { ...errorMessage, property: 'font-size' },\n inputBackgroundColor: { ...inputField, property: 'background-color' },\n inputValueTextColor: { ...textArea, property: 'color' },\n inputPlaceholderTextColor: { ...placeholder, property: 'color' },\n inputBorderWidth: { ...inputField, property: 'border-width' },\n inputBorderStyle: { ...inputField, property: 'border-style' },\n inputBorderColor: { ...inputField, property: 'border-color' },\n inputBorderRadius: { ...inputField, property: 'border-radius' },\n inputOutlineStyle: { ...inputField, property: 'outline-Style' },\n inputOutlineColor: { ...inputField, property: 'outline-color' },\n inputOutlineOffset: { ...inputField, property: 'outline-offset' },\n inputOutlineWidth: { ...inputField, property: 'outline-width' },\n inputResizeType: { ...textArea, property: 'resize' },\n inputMinHeight: { ...textArea, property: 'min-height' },\n inputTextAlign: { ...textArea, property: 'text-align' },\n },\n }),\n draggableMixin,\n proxyInputMixin({ proxyProps: ['value', 'selectionStart'] }),\n componentNameValidationMixin\n)(\n createProxy({\n slots: [],\n wrappedEleName: 'vaadin-text-area',\n style: () => `\n\t\t\t:host {\n\t\t\t\tdisplay: inline-block;\n\t\t\t\tmax-width: 100%;\n box-sizing: border-box;\n\t\t\t}\n\t\t\ttextarea {\n\t\t\t\theight: 100%;\n\t\t\t}\n ${resetInputLabelPosition('vaadin-text-area')}\n\t\t\t${useHostExternalPadding(TextAreaClass.cssVarList)}\n\t\t\t${resetInputContainer('vaadin-text-area')}\n\t\t\t${resetInputField('vaadin-text-area')}\n\t\t\t${resetInputPlaceholder('vaadin-text-area', 'textarea')}\n\t\t\t${resetInputCursor('vaadin-text-area')}\n\t\t`,\n excludeAttrsSync: ['tabindex', 'style'],\n componentName,\n })\n);\n","import '@vaadin/text-area';\nimport { componentName, TextAreaClass } from './TextAreaClass';\n\ncustomElements.define(componentName, TextAreaClass);\n\nexport { TextAreaClass, componentName };\n","export default [\n // United States should be the first option\n {\n name: 'United States',\n dialCode: '+1',\n code: 'US',\n },\n ...[\n {\n name: 'Afghanistan',\n dialCode: '+93',\n code: 'AF',\n },\n {\n name: 'Aland Islands',\n dialCode: '+358',\n code: 'AX',\n },\n {\n name: 'Albania',\n dialCode: '+355',\n code: 'AL',\n },\n {\n name: 'Algeria',\n dialCode: '+213',\n code: 'DZ',\n },\n {\n name: 'AmericanSamoa',\n dialCode: '+1684',\n code: 'AS',\n },\n {\n name: 'Andorra',\n dialCode: '+376',\n code: 'AD',\n },\n {\n name: 'Angola',\n dialCode: '+244',\n code: 'AO',\n },\n {\n name: 'Anguilla',\n dialCode: '+1264',\n code: 'AI',\n },\n {\n name: 'Antarctica',\n dialCode: '+672',\n code: 'AQ',\n },\n {\n name: 'Antigua and Barbuda',\n dialCode: '+1268',\n code: 'AG',\n },\n {\n name: 'Argentina',\n dialCode: '+54',\n code: 'AR',\n },\n {\n name: 'Armenia',\n dialCode: '+374',\n code: 'AM',\n },\n {\n name: 'Aruba',\n dialCode: '+297',\n code: 'AW',\n },\n {\n name: 'Australia',\n dialCode: '+61',\n code: 'AU',\n },\n {\n name: 'Austria',\n dialCode: '+43',\n code: 'AT',\n },\n {\n name: 'Azerbaijan',\n dialCode: '+994',\n code: 'AZ',\n },\n {\n name: 'Bahamas',\n dialCode: '+1242',\n code: 'BS',\n },\n {\n name: 'Bahrain',\n dialCode: '+973',\n code: 'BH',\n },\n {\n name: 'Bangladesh',\n dialCode: '+880',\n code: 'BD',\n },\n {\n name: 'Barbados',\n dialCode: '+1246',\n code: 'BB',\n },\n {\n name: 'Belarus',\n dialCode: '+375',\n code: 'BY',\n },\n {\n name: 'Belgium',\n dialCode: '+32',\n code: 'BE',\n },\n {\n name: 'Belize',\n dialCode: '+501',\n code: 'BZ',\n },\n {\n name: 'Benin',\n dialCode: '+229',\n code: 'BJ',\n },\n {\n name: 'Bermuda',\n dialCode: '+1441',\n code: 'BM',\n },\n {\n name: 'Bhutan',\n dialCode: '+975',\n code: 'BT',\n },\n {\n name: 'Bolivia, Plurinational State of',\n dialCode: '+591',\n code: 'BO',\n },\n {\n name: 'Bosnia and Herzegovina',\n dialCode: '+387',\n code: 'BA',\n },\n {\n name: 'Botswana',\n dialCode: '+267',\n code: 'BW',\n },\n {\n name: 'Brazil',\n dialCode: '+55',\n code: 'BR',\n },\n {\n name: 'British Indian Ocean Territory',\n dialCode: '+246',\n code: 'IO',\n },\n {\n name: 'Brunei Darussalam',\n dialCode: '+673',\n code: 'BN',\n },\n {\n name: 'Bulgaria',\n dialCode: '+359',\n code: 'BG',\n },\n {\n name: 'Burkina Faso',\n dialCode: '+226',\n code: 'BF',\n },\n {\n name: 'Burundi',\n dialCode: '+257',\n code: 'BI',\n },\n {\n name: 'Cambodia',\n dialCode: '+855',\n code: 'KH',\n },\n {\n name: 'Cameroon',\n dialCode: '+237',\n code: 'CM',\n },\n {\n name: 'Canada',\n dialCode: '+1',\n code: 'CA',\n },\n {\n name: 'Cape Verde',\n dialCode: '+238',\n code: 'CV',\n },\n {\n name: 'Cayman Islands',\n dialCode: '+345',\n code: 'KY',\n },\n {\n name: 'Central African Republic',\n dialCode: '+236',\n code: 'CF',\n },\n {\n name: 'Chad',\n dialCode: '+235',\n code: 'TD',\n },\n {\n name: 'Chile',\n dialCode: '+56',\n code: 'CL',\n },\n {\n name: 'China',\n dialCode: '+86',\n code: 'CN',\n },\n {\n name: 'Christmas Island',\n dialCode: '+61',\n code: 'CX',\n },\n {\n name: 'Cocos (Keeling) Islands',\n dialCode: '+61',\n code: 'CC',\n },\n {\n name: 'Colombia',\n dialCode: '+57',\n code: 'CO',\n },\n {\n name: 'Comoros',\n dialCode: '+269',\n code: 'KM',\n },\n {\n name: 'Congo',\n dialCode: '+242',\n code: 'CG',\n },\n {\n name: 'Congo, The Democratic Republic of the Congo',\n dialCode: '+243',\n code: 'CD',\n },\n {\n name: 'Cook Islands',\n dialCode: '+682',\n code: 'CK',\n },\n {\n name: 'Costa Rica',\n dialCode: '+506',\n code: 'CR',\n },\n {\n name: \"Cote d'Ivoire\",\n dialCode: '+225',\n code: 'CI',\n },\n {\n name: 'Croatia',\n dialCode: '+385',\n code: 'HR',\n },\n {\n name: 'Cuba',\n dialCode: '+53',\n code: 'CU',\n },\n {\n name: 'Cyprus',\n dialCode: '+357',\n code: 'CY',\n },\n {\n name: 'Czech Republic',\n dialCode: '+420',\n code: 'CZ',\n },\n {\n name: 'Denmark',\n dialCode: '+45',\n code: 'DK',\n },\n {\n name: 'Djibouti',\n dialCode: '+253',\n code: 'DJ',\n },\n {\n name: 'Dominica',\n dialCode: '+1767',\n code: 'DM',\n },\n {\n name: 'Dominican Republic',\n dialCode: '+1849',\n code: 'DO',\n },\n {\n name: 'Ecuador',\n dialCode: '+593',\n code: 'EC',\n },\n {\n name: 'Egypt',\n dialCode: '+20',\n code: 'EG',\n },\n {\n name: 'El Salvador',\n dialCode: '+503',\n code: 'SV',\n },\n {\n name: 'Equatorial Guinea',\n dialCode: '+240',\n code: 'GQ',\n },\n {\n name: 'Eritrea',\n dialCode: '+291',\n code: 'ER',\n },\n {\n name: 'Estonia',\n dialCode: '+372',\n code: 'EE',\n },\n {\n name: 'Ethiopia',\n dialCode: '+251',\n code: 'ET',\n },\n {\n name: 'Falkland Islands (Malvinas)',\n dialCode: '+500',\n code: 'FK',\n },\n {\n name: 'Faroe Islands',\n dialCode: '+298',\n code: 'FO',\n },\n {\n name: 'Fiji',\n dialCode: '+679',\n code: 'FJ',\n },\n {\n name: 'Finland',\n dialCode: '+358',\n code: 'FI',\n },\n {\n name: 'France',\n dialCode: '+33',\n code: 'FR',\n },\n {\n name: 'French Guiana',\n dialCode: '+594',\n code: 'GF',\n },\n {\n name: 'French Polynesia',\n dialCode: '+689',\n code: 'PF',\n },\n {\n name: 'Gabon',\n dialCode: '+241',\n code: 'GA',\n },\n {\n name: 'Gambia',\n dialCode: '+220',\n code: 'GM',\n },\n {\n name: 'Georgia',\n dialCode: '+995',\n code: 'GE',\n },\n {\n name: 'Germany',\n dialCode: '+49',\n code: 'DE',\n },\n {\n name: 'Ghana',\n dialCode: '+233',\n code: 'GH',\n },\n {\n name: 'Gibraltar',\n dialCode: '+350',\n code: 'GI',\n },\n {\n name: 'Greece',\n dialCode: '+30',\n code: 'GR',\n },\n {\n name: 'Greenland',\n dialCode: '+299',\n code: 'GL',\n },\n {\n name: 'Grenada',\n dialCode: '+1473',\n code: 'GD',\n },\n {\n name: 'Guadeloupe',\n dialCode: '+590',\n code: 'GP',\n },\n {\n name: 'Guam',\n dialCode: '+1671',\n code: 'GU',\n },\n {\n name: 'Guatemala',\n dialCode: '+502',\n code: 'GT',\n },\n {\n name: 'Guernsey',\n dialCode: '+44',\n code: 'GG',\n },\n {\n name: 'Guinea',\n dialCode: '+224',\n code: 'GN',\n },\n {\n name: 'Guinea-Bissau',\n dialCode: '+245',\n code: 'GW',\n },\n {\n name: 'Guyana',\n dialCode: '+595',\n code: 'GY',\n },\n {\n name: 'Haiti',\n dialCode: '+509',\n code: 'HT',\n },\n {\n name: 'Holy See (Vatican City State)',\n dialCode: '+379',\n code: 'VA',\n },\n {\n name: 'Honduras',\n dialCode: '+504',\n code: 'HN',\n },\n {\n name: 'Hong Kong',\n dialCode: '+852',\n code: 'HK',\n },\n {\n name: 'Hungary',\n dialCode: '+36',\n code: 'HU',\n },\n {\n name: 'Iceland',\n dialCode: '+354',\n code: 'IS',\n },\n {\n name: 'India',\n dialCode: '+91',\n code: 'IN',\n },\n {\n name: 'Indonesia',\n dialCode: '+62',\n code: 'ID',\n },\n {\n name: 'Iran, Islamic Republic of Persian Gulf',\n dialCode: '+98',\n code: 'IR',\n },\n {\n name: 'Iraq',\n dialCode: '+964',\n code: 'IQ',\n },\n {\n name: 'Ireland',\n dialCode: '+353',\n code: 'IE',\n },\n {\n name: 'Isle of Man',\n dialCode: '+44',\n code: 'IM',\n },\n {\n name: 'Israel',\n dialCode: '+972',\n code: 'IL',\n },\n {\n name: 'Italy',\n dialCode: '+39',\n code: 'IT',\n },\n {\n name: 'Jamaica',\n dialCode: '+1876',\n code: 'JM',\n },\n {\n name: 'Japan',\n dialCode: '+81',\n code: 'JP',\n },\n {\n name: 'Jersey',\n dialCode: '+44',\n code: 'JE',\n },\n {\n name: 'Jordan',\n dialCode: '+962',\n code: 'JO',\n },\n {\n name: 'Kazakhstan',\n dialCode: '+77',\n code: 'KZ',\n },\n {\n name: 'Kenya',\n dialCode: '+254',\n code: 'KE',\n },\n {\n name: 'Kiribati',\n dialCode: '+686',\n code: 'KI',\n },\n {\n name: \"Korea, Democratic People's Republic of Korea\",\n dialCode: '+850',\n code: 'KP',\n },\n {\n name: 'Korea, Republic of South Korea',\n dialCode: '+82',\n code: 'KR',\n },\n {\n name: 'Kuwait',\n dialCode: '+965',\n code: 'KW',\n },\n {\n name: 'Kyrgyzstan',\n dialCode: '+996',\n code: 'KG',\n },\n {\n name: 'Laos',\n dialCode: '+856',\n code: 'LA',\n },\n {\n name: 'Latvia',\n dialCode: '+371',\n code: 'LV',\n },\n {\n name: 'Lebanon',\n dialCode: '+961',\n code: 'LB',\n },\n {\n name: 'Lesotho',\n dialCode: '+266',\n code: 'LS',\n },\n {\n name: 'Liberia',\n dialCode: '+231',\n code: 'LR',\n },\n {\n name: 'Libyan Arab Jamahiriya',\n dialCode: '+218',\n code: 'LY',\n },\n {\n name: 'Liechtenstein',\n dialCode: '+423',\n code: 'LI',\n },\n {\n name: 'Lithuania',\n dialCode: '+370',\n code: 'LT',\n },\n {\n name: 'Luxembourg',\n dialCode: '+352',\n code: 'LU',\n },\n {\n name: 'Macao',\n dialCode: '+853',\n code: 'MO',\n },\n {\n name: 'Macedonia',\n dialCode: '+389',\n code: 'MK',\n },\n {\n name: 'Madagascar',\n dialCode: '+261',\n code: 'MG',\n },\n {\n name: 'Malawi',\n dialCode: '+265',\n code: 'MW',\n },\n {\n name: 'Malaysia',\n dialCode: '+60',\n code: 'MY',\n },\n {\n name: 'Maldives',\n dialCode: '+960',\n code: 'MV',\n },\n {\n name: 'Mali',\n dialCode: '+223',\n code: 'ML',\n },\n {\n name: 'Malta',\n dialCode: '+356',\n code: 'MT',\n },\n {\n name: 'Marshall Islands',\n dialCode: '+692',\n code: 'MH',\n },\n {\n name: 'Martinique',\n dialCode: '+596',\n code: 'MQ',\n },\n {\n name: 'Mauritania',\n dialCode: '+222',\n code: 'MR',\n },\n {\n name: 'Mauritius',\n dialCode: '+230',\n code: 'MU',\n },\n {\n name: 'Mayotte',\n dialCode: '+262',\n code: 'YT',\n },\n {\n name: 'Mexico',\n dialCode: '+52',\n code: 'MX',\n },\n {\n name: 'Micronesia, Federated States of Micronesia',\n dialCode: '+691',\n code: 'FM',\n },\n {\n name: 'Moldova',\n dialCode: '+373',\n code: 'MD',\n },\n {\n name: 'Monaco',\n dialCode: '+377',\n code: 'MC',\n },\n {\n name: 'Mongolia',\n dialCode: '+976',\n code: 'MN',\n },\n {\n name: 'Montenegro',\n dialCode: '+382',\n code: 'ME',\n },\n {\n name: 'Montserrat',\n dialCode: '+1664',\n code: 'MS',\n },\n {\n name: 'Morocco',\n dialCode: '+212',\n code: 'MA',\n },\n {\n name: 'Mozambique',\n dialCode: '+258',\n code: 'MZ',\n },\n {\n name: 'Myanmar',\n dialCode: '+95',\n code: 'MM',\n },\n {\n name: 'Namibia',\n dialCode: '+264',\n code: 'NA',\n },\n {\n name: 'Nauru',\n dialCode: '+674',\n code: 'NR',\n },\n {\n name: 'Nepal',\n dialCode: '+977',\n code: 'NP',\n },\n {\n name: 'Netherlands',\n dialCode: '+31',\n code: 'NL',\n },\n {\n name: 'Netherlands Antilles',\n dialCode: '+599',\n code: 'AN',\n },\n {\n name: 'New Caledonia',\n dialCode: '+687',\n code: 'NC',\n },\n {\n name: 'New Zealand',\n dialCode: '+64',\n code: 'NZ',\n },\n {\n name: 'Nicaragua',\n dialCode: '+505',\n code: 'NI',\n },\n {\n name: 'Niger',\n dialCode: '+227',\n code: 'NE',\n },\n {\n name: 'Nigeria',\n dialCode: '+234',\n code: 'NG',\n },\n {\n name: 'Niue',\n dialCode: '+683',\n code: 'NU',\n },\n {\n name: 'Norfolk Island',\n dialCode: '+672',\n code: 'NF',\n },\n {\n name: 'Northern Mariana Islands',\n dialCode: '+1670',\n code: 'MP',\n },\n {\n name: 'Norway',\n dialCode: '+47',\n code: 'NO',\n },\n {\n name: 'Oman',\n dialCode: '+968',\n code: 'OM',\n },\n {\n name: 'Pakistan',\n dialCode: '+92',\n code: 'PK',\n },\n {\n name: 'Palau',\n dialCode: '+680',\n code: 'PW',\n },\n {\n name: 'Palestinian Territory, Occupied',\n dialCode: '+970',\n code: 'PS',\n },\n {\n name: 'Panama',\n dialCode: '+507',\n code: 'PA',\n },\n {\n name: 'Papua New Guinea',\n dialCode: '+675',\n code: 'PG',\n },\n {\n name: 'Paraguay',\n dialCode: '+595',\n code: 'PY',\n },\n {\n name: 'Peru',\n dialCode: '+51',\n code: 'PE',\n },\n {\n name: 'Philippines',\n dialCode: '+63',\n code: 'PH',\n },\n {\n name: 'Pitcairn',\n dialCode: '+872',\n code: 'PN',\n },\n {\n name: 'Poland',\n dialCode: '+48',\n code: 'PL',\n },\n {\n name: 'Portugal',\n dialCode: '+351',\n code: 'PT',\n },\n {\n name: 'Qatar',\n dialCode: '+974',\n code: 'QA',\n },\n {\n name: 'Romania',\n dialCode: '+40',\n code: 'RO',\n },\n {\n name: 'Russia',\n dialCode: '+7',\n code: 'RU',\n },\n {\n name: 'Rwanda',\n dialCode: '+250',\n code: 'RW',\n },\n {\n name: 'Reunion',\n dialCode: '+262',\n code: 'RE',\n },\n {\n name: 'Saint Barthelemy',\n dialCode: '+590',\n code: 'BL',\n },\n {\n name: 'Saint Helena, Ascension and Tristan Da Cunha',\n dialCode: '+290',\n code: 'SH',\n },\n {\n name: 'Saint Kitts and Nevis',\n dialCode: '+1869',\n code: 'KN',\n },\n {\n name: 'Saint Lucia',\n dialCode: '+1758',\n code: 'LC',\n },\n {\n name: 'Saint Martin',\n dialCode: '+590',\n code: 'MF',\n },\n {\n name: 'Saint Pierre and Miquelon',\n dialCode: '+508',\n code: 'PM',\n },\n {\n name: 'Saint Vincent and the Grenadines',\n dialCode: '+1784',\n code: 'VC',\n },\n {\n name: 'Samoa',\n dialCode: '+685',\n code: 'WS',\n },\n {\n name: 'San Marino',\n dialCode: '+378',\n code: 'SM',\n },\n {\n name: 'Sao Tome and Principe',\n dialCode: '+239',\n code: 'ST',\n },\n {\n name: 'Saudi Arabia',\n dialCode: '+966',\n code: 'SA',\n },\n {\n name: 'Senegal',\n dialCode: '+221',\n code: 'SN',\n },\n {\n name: 'Serbia',\n dialCode: '+381',\n code: 'RS',\n },\n {\n name: 'Seychelles',\n dialCode: '+248',\n code: 'SC',\n },\n {\n name: 'Sierra Leone',\n dialCode: '+232',\n code: 'SL',\n },\n {\n name: 'Singapore',\n dialCode: '+65',\n code: 'SG',\n },\n {\n name: 'Slovakia',\n dialCode: '+421',\n code: 'SK',\n },\n {\n name: 'Slovenia',\n dialCode: '+386',\n code: 'SI',\n },\n {\n name: 'Solomon Islands',\n dialCode: '+677',\n code: 'SB',\n },\n {\n name: 'Somalia',\n dialCode: '+252',\n code: 'SO',\n },\n {\n name: 'South Africa',\n dialCode: '+27',\n code: 'ZA',\n },\n {\n name: 'South Sudan',\n dialCode: '+211',\n code: 'SS',\n },\n {\n name: 'South Georgia and the South Sandwich Islands',\n dialCode: '+500',\n code: 'GS',\n },\n {\n name: 'Spain',\n dialCode: '+34',\n code: 'ES',\n },\n {\n name: 'Sri Lanka',\n dialCode: '+94',\n code: 'LK',\n },\n {\n name: 'Sudan',\n dialCode: '+249',\n code: 'SD',\n },\n {\n name: 'Suriname',\n dialCode: '+597',\n code: 'SR',\n },\n {\n name: 'Svalbard and Jan Mayen',\n dialCode: '+47',\n code: 'SJ',\n },\n {\n name: 'Swaziland',\n dialCode: '+268',\n code: 'SZ',\n },\n {\n name: 'Sweden',\n dialCode: '+46',\n code: 'SE',\n },\n {\n name: 'Switzerland',\n dialCode: '+41',\n code: 'CH',\n },\n {\n name: 'Syrian Arab Republic',\n dialCode: '+963',\n code: 'SY',\n },\n {\n name: 'Taiwan',\n dialCode: '+886',\n code: 'TW',\n },\n {\n name: 'Tajikistan',\n dialCode: '+992',\n code: 'TJ',\n },\n {\n name: 'Tanzania, United Republic of Tanzania',\n dialCode: '+255',\n code: 'TZ',\n },\n {\n name: 'Thailand',\n dialCode: '+66',\n code: 'TH',\n },\n {\n name: 'Timor-Leste',\n dialCode: '+670',\n code: 'TL',\n },\n {\n name: 'Togo',\n dialCode: '+228',\n code: 'TG',\n },\n {\n name: 'Tokelau',\n dialCode: '+690',\n code: 'TK',\n },\n {\n name: 'Tonga',\n dialCode: '+676',\n code: 'TO',\n },\n {\n name: 'Trinidad and Tobago',\n dialCode: '+1868',\n code: 'TT',\n },\n {\n name: 'Tunisia',\n dialCode: '+216',\n code: 'TN',\n },\n {\n name: 'Turkey',\n dialCode: '+90',\n code: 'TR',\n },\n {\n name: 'Turkmenistan',\n dialCode: '+993',\n code: 'TM',\n },\n {\n name: 'Turks and Caicos Islands',\n dialCode: '+1649',\n code: 'TC',\n },\n {\n name: 'Tuvalu',\n dialCode: '+688',\n code: 'TV',\n },\n {\n name: 'Uganda',\n dialCode: '+256',\n code: 'UG',\n },\n {\n name: 'Ukraine',\n dialCode: '+380',\n code: 'UA',\n },\n {\n name: 'United Arab Emirates',\n dialCode: '+971',\n code: 'AE',\n },\n {\n name: 'United Kingdom',\n dialCode: '+44',\n code: 'GB',\n },\n {\n name: 'Uruguay',\n dialCode: '+598',\n code: 'UY',\n },\n {\n name: 'Uzbekistan',\n dialCode: '+998',\n code: 'UZ',\n },\n {\n name: 'Vanuatu',\n dialCode: '+678',\n code: 'VU',\n },\n {\n name: 'Venezuela, Bolivarian Republic of Venezuela',\n dialCode: '+58',\n code: 'VE',\n },\n {\n name: 'Vietnam',\n dialCode: '+84',\n code: 'VN',\n },\n {\n name: 'Virgin Islands, British',\n dialCode: '+1284',\n code: 'VG',\n },\n {\n name: 'Virgin Islands, U.S.',\n dialCode: '+1340',\n code: 'VI',\n },\n {\n name: 'Wallis and Futuna',\n dialCode: '+681',\n code: 'WF',\n },\n {\n name: 'Yemen',\n dialCode: '+967',\n code: 'YE',\n },\n {\n name: 'Zambia',\n dialCode: '+260',\n code: 'ZM',\n },\n {\n name: 'Zimbabwe',\n dialCode: '+263',\n code: 'ZW',\n },\n ].sort((a, b) => (a.name < b.name ? -1 : 1)),\n];\n","import { parsePhoneNumberFromString } from 'libphonenumber-js/min';\n\n// We use JSDelivr (proxy by static.descope.com) in order to fetch the images as image file from this library (svg-country-flags)\n// This reduces our bundle size, and we use it as a static remote resource.\nexport const getCountryFlag = (code) =>\n `https://static.descope.com/npm/svg-country-flags@1.2.10/svg/${code.toLowerCase()}.svg`;\n\nexport const comboBoxItem = ({ code, dialCode, name: country }) => `\n\t<div\n\t\tdata-id=\"${dialCode}\"\n\t\tdata-name=\"${code} ${dialCode} ${country}\"\n\t\tdata-country-code=\"${code}\"\n\t>\n\t\t<div>\n\t\t\t<span>\n\t\t\t\t<img src=\"${getCountryFlag(code)}\" width=\"20\"/>\n\t\t\t</span>\n\t\t\t<span>${country}</span>\n\t\t</div>\n\t\t<div>\n\t\t\t<span>${code}</span>\n\t\t\t<span>${dialCode}</span>\n\t\t</div>\n\t</div>\n`;\n\nexport const parsePhoneNumber = (val) => {\n const value = val || '';\n let countryCode = '';\n let phoneNumber = '';\n\n // Attempt to parse the value using libphonenumber-js\n const parsed = parsePhoneNumberFromString(value);\n\n if (parsed) {\n if (parsed.countryCallingCode) {\n countryCode = `+${parsed.countryCallingCode}`;\n }\n\n if (parsed.nationalNumber) {\n phoneNumber = parsed.nationalNumber;\n }\n } else {\n // Fallback: assume a dash separates country code and phone number\n const [country, phone] = value.split('-');\n countryCode = country || '';\n phoneNumber = phone || '';\n }\n\n return [countryCode, phoneNumber];\n};\n","import { createBaseInputClass } from '../../../../baseClasses/createBaseInputClass';\nimport { forwardAttrs, getComponentName } from '../../../../helpers/componentHelpers';\nimport CountryCodes from '../../CountryCodes';\nimport { comboBoxItem } from '../helpers';\nimport { AsYouType, parsePhoneNumberFromString } from 'libphonenumber-js/min';\n\nexport const componentName = getComponentName('phone-field-internal');\n\nconst commonAttrs = ['disabled', 'size', 'bordered', 'readonly'];\nconst countryAttrs = ['country-input-placeholder', 'default-code', 'restrict-countries'];\nconst phoneAttrs = ['phone-input-placeholder', 'maxlength', 'autocomplete', 'name'];\nconst labelTypeAttrs = ['label-type', 'country-input-label', 'label'];\nconst mapAttrs = {\n 'country-input-label': 'label',\n 'country-input-placeholder': 'placeholder',\n 'phone-input-placeholder': 'placeholder',\n};\n\nconst inputRelatedAttrs = [].concat(commonAttrs, countryAttrs, phoneAttrs, labelTypeAttrs);\n\nconst BaseInputClass = createBaseInputClass({ componentName, baseSelector: 'div' });\n\nclass PhoneFieldInternal extends BaseInputClass {\n static get observedAttributes() {\n return [].concat(BaseInputClass.observedAttributes || [], inputRelatedAttrs);\n }\n\n #ayt;\n\n constructor() {\n super();\n\n this.innerHTML = `\n <div class=\"wrapper\">\n <descope-combo-box\n item-label-path=\"data-name\"\n item-value-path=\"data-id\"\n >\n ${CountryCodes.map((item) => comboBoxItem(item)).join('')}\n </descope-combo-box>\n <div class=\"separator\"></div>\n <descope-text-field type=\"tel\"></descope-text-field>\n </div>\n `;\n\n this.comboBox = this.querySelector('descope-combo-box');\n this.textField = this.querySelector('descope-text-field');\n\n this.inputs = [this.comboBox, this.textField];\n\n forwardAttrs(this, this.comboBox, { includeAttrs: ['label-type'] });\n forwardAttrs(this, this.textField, { includeAttrs: ['label-type', 'required'] });\n\n // override combo box setter to display dialCode value in input\n this.comboBox.customValueTransformFn = (val) => {\n const [, dialCode] = val?.split?.(' ') || [];\n return dialCode;\n };\n }\n\n // exposed from main component\n get countryCodeInputData() {\n return this.comboBox.items;\n }\n\n // exposed from main component\n get countryCodeValue() {\n return this.comboBox.shadowRoot.querySelector('input').value;\n }\n\n // exposed from main component\n get phoneNumberInputEle() {\n return this.textField.shadowRoot.querySelector('input');\n }\n\n get allowAlphanumericInput() {\n return this.getAttribute('allow-alphanumeric-input') === 'true';\n }\n\n get defaultCode() {\n return this.getAttribute('default-code');\n }\n\n get selectionStart() {\n return this.textField.selectionStart;\n }\n\n get minLength() {\n return parseInt(this.getAttribute('minlength'), 10) || 0;\n }\n\n get selectedCountryCode() {\n return this.comboBox?.selectedItem?.getAttribute('data-country-code');\n }\n\n get restrictCountries() {\n const attr = this.getAttribute('restrict-countries');\n return attr?.split(',').filter(Boolean) || [];\n }\n\n get isFormatValue() {\n return this.getAttribute('format-value') === 'true';\n }\n\n // `strict validation` enforces value parsing with libphonenumber-js\n get isStrictValidation() {\n return this.getAttribute('strict-validation') === 'true';\n }\n\n get value() {\n if (!this.comboBox.value || !this.textField.value) {\n return '';\n }\n\n if (this.allowAlphanumericInput) {\n return `${this.comboBox.value}-${this.textField.value}`;\n }\n\n return `${this.comboBox.value}-${this.textField.value.replace(/\\D+/g, '')}`;\n }\n\n set value(val) {\n const nationalNumber = val.replace(\n new RegExp(`^\\\\+?${this.comboBox.value.replace('+', '')}-?`),\n ''\n );\n\n if (this.isFormatValue) {\n this.textField.value = this.#formatNationalNumber(nationalNumber);\n } else {\n this.textField.value = nationalNumber;\n }\n }\n\n init() {\n this.addEventListener('focus', (e) => {\n // we want to ignore focus events we are dispatching\n if (e.isTrusted) this.inputs[1].focus();\n });\n\n super.init?.();\n\n this.#initInputs();\n }\n\n getValidity() {\n const countryCode = this.comboBox.value;\n const nationalNumer = this.textField.value;\n\n const isEmpty = !countryCode || !nationalNumer;\n const isValidLength = nationalNumer && nationalNumer.length >= this.minLength;\n\n if (this.isRequired && isEmpty) {\n return { valueMissing: true };\n }\n\n if (this.value) {\n if (!isValidLength) {\n return { tooShort: true };\n }\n\n if (this.isStrictValidation && !this.#isValidParsedValue()) {\n return { patternMismatch: true };\n }\n }\n\n return {};\n }\n\n setSelectionRange(...args) {\n this.textField.setSelectionRange(...args);\n }\n\n attributeChangedCallback(attrName, oldValue, newValue) {\n super.attributeChangedCallback(attrName, oldValue, newValue);\n\n if (oldValue !== newValue) {\n if (attrName === 'default-code' && newValue) {\n this.#handleDefaultCountryCode(newValue);\n } else if (inputRelatedAttrs.includes(attrName)) {\n const attr = mapAttrs[attrName] || attrName;\n\n if (commonAttrs.includes(attrName)) {\n if (!newValue) {\n this.inputs.forEach((input) => input.removeAttribute(attr));\n } else {\n this.inputs.forEach((input) => input.setAttribute(attr, newValue));\n }\n } else if (countryAttrs.includes(attrName)) {\n this.comboBox.setAttribute(attr, newValue);\n } else if (phoneAttrs.includes(attrName)) {\n this.textField.setAttribute(attr, newValue);\n }\n }\n\n if (labelTypeAttrs.includes(attrName)) {\n this.#handleLabelTypeAttrs(attrName, newValue);\n }\n\n if (attrName === 'restrict-countries') {\n this.#updateComboBoxItems(this.restrictCountries);\n }\n }\n }\n\n #initInputs() {\n // Sanitize phone input value to filter everything but digits\n this.textField.addEventListener('input', (e) => {\n if (!this.allowAlphanumericInput) {\n const telDigitsRegExp = /^\\d$/;\n const sanitizedInput = e.target.value\n .split('')\n .filter((char) => telDigitsRegExp.test(char))\n .join('');\n e.target.value = sanitizedInput;\n }\n });\n\n this.handleFocusEventsDispatching(this.inputs);\n this.handleInputEventDispatching();\n }\n\n #formatNationalNumber(nationalNumber = '') {\n // re-initialize AsYouType if country code is outdated\n if (!this.#ayt || this.#ayt.country !== this.selectedCountryCode) {\n this.#ayt = new AsYouType(this.selectedCountryCode);\n }\n\n // reset previous AsYouType input\n this.#ayt.reset();\n\n const formattedVal = this.#ayt.input(nationalNumber);\n return formattedVal || nationalNumber;\n }\n\n #isValidParsedValue() {\n const parsed = parsePhoneNumberFromString(this.value);\n\n return (\n !!parsed && // Parsed successfully (not undefined)\n !!parsed.isValid?.() && // Parsed object is valid\n !!parsed.country && // Parsed object with a country code\n !!this.#isAllowedCountry(parsed.country) // Parsed with allowed country code\n );\n }\n\n #isAllowedCountry(countryCode) {\n if (!this.restrictCountries.length) {\n return true;\n }\n\n return this.restrictCountries.includes(countryCode);\n }\n\n // return country item by country code `data-country-code` (e.g. `US`)\n #getCountryByCodeId(countryCode) {\n return this.comboBox.items?.find((c) => c.getAttribute('data-country-code') === countryCode);\n }\n\n #updateComboBoxItems(restrictCountries) {\n const items = restrictCountries.length\n ? CountryCodes.filter((c) => restrictCountries.includes(c.code))\n : CountryCodes;\n\n this.querySelector('descope-combo-box').innerHTML = items\n .map((item) => comboBoxItem(item))\n .join('');\n }\n\n #handleDefaultCountryCode(countryCode) {\n if (!this.comboBox.value) {\n const countryCodeItem = this.#getCountryByCodeId(countryCode);\n // When replacing the input component (inserting internal component into text-field) -\n // Vaadin resets the input's value. We use setTimeout in order to make sure this happens\n // after the reset.\n if (countryCodeItem) {\n setTimeout(() => {\n this.comboBox.selectedItem = countryCodeItem;\n });\n }\n }\n }\n\n #handleLabelTypeAttrs(attrName, newValue) {\n // set or remove label attributes from inner text/combo components on `label-type` change\n const attr = mapAttrs[attrName] || attrName;\n\n if (attrName === 'label-type') {\n this.#handleLabelTypeChange(newValue);\n }\n // on inner components label attr change - set label attributes for text/combo components\n // only if label-type is `floating`\n else if (this.getAttribute('label-type') === 'floating') {\n if (attrName === 'country-input-label') {\n this.comboBox.setAttribute(attr, newValue);\n } else if (attrName === 'label') {\n this.textField.setAttribute(attr, newValue);\n }\n }\n }\n\n #handleLabelTypeChange(newValue) {\n if (newValue === 'floating') {\n // on change to `floating` label - set inner components `label` and `placeholder`\n this.comboBox.setAttribute('label', this.getAttribute('country-input-label') || '');\n this.comboBox.setAttribute(\n 'placeholder',\n this.getAttribute('country-input-placeholder') || ''\n );\n this.textField.setAttribute('label', this.getAttribute('label') || '');\n this.textField.setAttribute(\n 'placeholder',\n this.getAttribute('phone-input-placeholder') || ''\n );\n } else {\n // for other cases - reset inner components label-type and labels\n this.inputs.forEach((input) => input.removeAttribute('label'));\n }\n }\n}\n\nexport default PhoneFieldInternal;\n","import '@descope-ui/descope-combo-box';\nimport '../../../descope-text-field';\n\nimport PhoneFieldInternal, { componentName } from './PhoneFieldInternal';\n\ncustomElements.define(componentName, PhoneFieldInternal);\n","import { componentName as descopeInternalComponentName } from './descope-phone-field-internal/PhoneFieldInternal';\nimport { forwardAttrs, getComponentName } from '../../../helpers/componentHelpers';\nimport { compose } from '../../../helpers';\nimport {\n createProxy,\n createStyleMixin,\n draggableMixin,\n inputOverrideValidConstraintsMixin,\n proxyInputMixin,\n} from '../../../mixins';\nimport { TextFieldClass } from '../../descope-text-field/TextFieldClass';\nimport { ComboBoxClass } from '@descope-ui/descope-combo-box/class';\nimport CountryCodes from '../CountryCodes';\nimport {\n resetInputCursor,\n resetInputLabelPosition,\n resetInputFieldDefaultWidth,\n resetInputFieldInvalidBackgroundColor,\n useHostExternalPadding,\n} from '../../../helpers/themeHelpers/resetHelpers';\n\nconst textVars = TextFieldClass.cssVarList;\nconst comboVars = ComboBoxClass.cssVarList;\n\nexport const componentName = getComponentName('phone-field');\n\nconst customMixin = (superclass) =>\n class PhoneFieldMixinClass extends superclass {\n static get CountryCodes() {\n return CountryCodes;\n }\n\n init() {\n super.init?.();\n\n const template = document.createElement('template');\n\n template.innerHTML = `\n\t\t\t\t<${descopeInternalComponentName}\n\t\t\t\t\ttabindex=\"-1\"\n\t\t\t\t\tslot=\"input\"\n\t\t\t\t></${descopeInternalComponentName}>\n \t\t`;\n\n this.baseElement.appendChild(template.content.cloneNode(true));\n\n this.inputElement = this.shadowRoot.querySelector(descopeInternalComponentName);\n\n forwardAttrs(this.shadowRoot.host, this.inputElement, {\n includeAttrs: [\n 'size',\n 'bordered',\n 'minlength',\n 'maxlength',\n 'default-code',\n 'country-input-placeholder',\n 'phone-input-placeholder',\n 'disabled',\n 'restrict-countries',\n 'country-input-label',\n 'readonly',\n 'label',\n 'label-type',\n 'allow-alphanumeric-input',\n 'format-value',\n 'strict-validation',\n ],\n });\n }\n\n get countryCodeItems() {\n return this.inputElement?.countryCodeValue;\n }\n\n get phoneNumberInputEle() {\n return this.inputElement?.phoneNumberInputEle;\n }\n\n get countryCodeInputData() {\n return this.inputElement?.countryCodeInputData;\n }\n\n get countryCodes() {\n return Array.from(this.inputElement.countryCodeInputData).map((ele) =>\n ele.getAttribute('data-country-code')\n );\n }\n };\n\nconst {\n host,\n label,\n requiredIndicator,\n inputField,\n internalAfter,\n countryCodeInput,\n phoneInput,\n separator,\n errorMessage,\n helperText,\n} = {\n host: { selector: () => ':host' },\n label: { selector: '::part(label)' },\n requiredIndicator: { selector: '[required]::part(required-indicator)::after' },\n inputField: { selector: '::part(input-field)' },\n internalAfter: { selector: 'descope-phone-field-internal::after' },\n phoneInput: { selector: () => 'descope-text-field' },\n countryCodeInput: { selector: () => 'descope-combo-box' },\n separator: { selector: 'descope-phone-field-internal .separator' },\n helperText: { selector: '::part(helper-text)' },\n errorMessage: { selector: '::part(error-message)' },\n};\n\nexport const PhoneFieldClass = compose(\n createStyleMixin({\n mappings: {\n fontSize: [\n host,\n inputField,\n {\n selector: TextFieldClass.componentName,\n property: TextFieldClass.cssVarList.fontSize,\n },\n {\n selector: ComboBoxClass.componentName,\n property: ComboBoxClass.cssVarList.fontSize,\n },\n ],\n fontFamily: [\n label,\n errorMessage,\n helperText,\n {\n ...countryCodeInput,\n property: ComboBoxClass.cssVarList.overlay.fontFamily,\n },\n ],\n hostWidth: [\n { ...host, property: 'width' },\n { ...phoneInput, property: 'width' },\n { ...countryCodeInput, property: '--vaadin-combo-box-overlay-width' },\n ],\n hostDirection: { ...host, property: 'direction' },\n\n inputBorderStyle: [\n { ...internalAfter, property: 'border-style' },\n { ...separator, property: 'border-left-style' },\n ],\n inputBorderWidth: [\n { ...internalAfter, property: 'border-width' },\n { ...separator, property: 'border-left-width' },\n ],\n inputBorderColor: [\n { ...internalAfter, property: 'border-color' },\n { ...separator, property: 'border-left-color' },\n ],\n inputBorderRadius: [\n { ...inputField, property: 'border-radius' },\n { ...internalAfter, property: 'border-radius' },\n ],\n\n countryCodeInputWidth: { ...countryCodeInput, property: comboVars.hostWidth },\n countryCodeDropdownWidth: {\n ...countryCodeInput,\n property: '--vaadin-combo-box-overlay-width',\n },\n phoneInputWidth: { ...phoneInput, property: 'width' },\n\n horizontalPadding: [\n { ...phoneInput, property: 'padding-left' },\n { ...phoneInput, property: 'padding-right' },\n { ...countryCodeInput, property: 'padding-left' },\n { ...countryCodeInput, property: 'padding-right' },\n ],\n\n labelTextColor: [\n { ...label, property: 'color' },\n { ...label, property: '-webkit-text-fill-color' },\n { ...requiredIndicator, property: 'color' },\n ],\n labelRequiredIndicator: { ...requiredIndicator, property: 'content' },\n\n errorMessageTextColor: { ...errorMessage, property: 'color' },\n errorMessageIcon: { ...errorMessage, property: 'background-image' },\n errorMessageIconSize: { ...errorMessage, property: 'background-size' },\n errorMessageIconPadding: { ...errorMessage, property: 'padding-inline-start' },\n errorMessageIconRepeat: { ...errorMessage, property: 'background-repeat' },\n errorMessageIconPosition: { ...errorMessage, property: 'background-position' },\n errorMessageFontSize: { ...errorMessage, property: 'font-size' },\n\n inputValueTextColor: [\n { ...phoneInput, property: textVars.inputValueTextColor },\n { ...countryCodeInput, property: comboVars.inputValueTextColor },\n ],\n\n inputPlaceholderTextColor: { ...phoneInput, property: textVars.inputPlaceholderColor },\n\n overlayItemBackgroundColor: {\n selector: 'descope-combo-box',\n property: comboVars.overlayItemBackgroundColor,\n },\n\n inputOutlineStyle: { ...inputField, property: 'outline-style' },\n inputOutlineColor: { ...inputField, property: 'outline-color' },\n inputOutlineWidth: { ...inputField, property: 'outline-width' },\n inputOutlineOffset: { ...inputField, property: 'outline-offset' },\n\n valueInputHeight: [{ ...countryCodeInput, property: comboVars.valueInputHeight }],\n valueInputMarginBottom: [{ ...phoneInput, property: textVars.valueInputMarginBottom }],\n marginInlineStart: [\n { ...phoneInput, property: textVars.marginInlineStart },\n { ...countryCodeInput, property: comboVars.marginInlineStart },\n ],\n },\n }),\n draggableMixin,\n inputOverrideValidConstraintsMixin,\n proxyInputMixin({ proxyProps: ['value', 'selectionStart'] }),\n customMixin\n)(\n createProxy({\n slots: [],\n wrappedEleName: 'vaadin-text-field',\n style: () => `\n\t\t\t:host {\n\t\t\t\tdisplay: inline-flex;\n\t\t\t\tmax-width: 100%;\n\t\t\t\tmin-width: 15em;\n\t\t\t\tbox-sizing: border-box;\n\t\t\t}\n\t\t\t${useHostExternalPadding(PhoneFieldClass.cssVarList)}\n\t\t\t${resetInputCursor('vaadin-text-field')}\n\t\t\t${resetInputFieldInvalidBackgroundColor('vaadin-text-field')}\n\t\t\t${resetInputFieldDefaultWidth()}\n\n\t\t\tdiv {\n\t\t\t\tdisplay: inline-flex;\n\t\t\t}\n\t\t\tvaadin-text-field {\n\t\t\t\twidth: 100%;\n\t\t\t\theight: 100%;\n\t\t\t\tbox-sizing: border-box;\n\t\t\t\tpadding: 0;\n\t\t\t}\n\t\t\tvaadin-text-field[focus-ring]::part(input-field) {\n\t\t\t\tbox-shadow: none;\n\t\t\t}\n\t\t\tvaadin-text-field::before {\n\t\t\t\theight: 0;\n\t\t\t}\n\t\t\tvaadin-text-field::part(label) {\n margin-left: 0;\n margin-right: 0;\n }\n\t\t\tvaadin-text-field::part(input-field) {\n\t\t\t\tpadding: 0;\n\t\t\t\tbackground: transparent;\n\t\t\t\toverflow: hidden;\n\t\t\t}\n\t\t\tdescope-phone-field-internal {\n\t\t\t\t-webkit-mask-image: none;\n\t\t\t\tpadding: 0;\n\t\t\t\twidth: 100%;\n\t\t\t\theight: 100%;\n direction: ltr;\n position: relative;\n\t\t\t}\n descope-phone-field-internal::after {\n content: '';\n position: absolute;\n width: 100%;\n height: 100%;\n top: 0;\n left: 0;\n box-sizing: border-box;\n outline-offset: calc(var(${PhoneFieldClass.cssVarList.inputBorderWidth}) * -1);\n pointer-events: none;\n }\n\t\t\tdescope-phone-field-internal > div {\n\t\t\t\twidth: 100%;\n\t\t\t\theight: 100%;\n\t\t\t}\n\t\t\tdescope-phone-field-internal .separator {\n\t\t\t\tflex: 0;\n\t\t\t\tborder: none;\n\t\t\t}\n\n\t\t\tdescope-combo-box {\n\t\t\t\tflex-shrink: 0;\n min-width: 5.75em;\n\t\t\t\t${comboVars.inputOutlineWidth}: 0;\n\t\t\t\t${comboVars.inputOutlineOffset}: 0;\n\t\t\t\t${comboVars.inputBorderWidth}: 0;\n\t\t\t\t${comboVars.inputBorderRadius}: 0;\n\t\t\t}\n\t\t\tdescope-text-field {\n\t\t\t\tflex-grow: 1;\n\t\t\t\t${textVars.inputOutlineWidth}: 0;\n\t\t\t\t${textVars.inputOutlineOffset}: 0;\n\t\t\t\t${textVars.inputBorderWidth}: 0;\n\t\t\t\t${textVars.inputBorderRadius}: 0;\n }\n\n :host([label-type=\"floating\"]) vaadin-text-field::part(label) {\n display: none;\n }\n descope-text-field[label-type=\"floating\"]:not([focused])[readonly] > input:placeholder-shown {\n opacity: 0;\n }\n descope-text-field[label-type=\"floating\"]:not([focused])[disabled] > input:placeholder-shown {\n opacity: 0;\n }\n\n\t\t\tvaadin-text-field::part(input-field)::after {\n\t\t\t\tborder: none;\n\t\t\t}\n ${resetInputLabelPosition('vaadin-text-field')}\n\t\t`,\n excludeAttrsSync: ['tabindex', 'style'],\n componentName,\n })\n);\n\nexport default PhoneFieldClass;\n","import './descope-phone-field-internal';\nimport '@descope-ui/descope-combo-box';\nimport '../../descope-text-field';\n\nimport { componentName, PhoneFieldClass } from './PhoneFieldClass';\n\ncustomElements.define(componentName, PhoneFieldClass);\n\nexport { PhoneFieldClass, componentName };\n","import parsePhoneNumberFromString from 'libphonenumber-js/min';\nimport CountryCodes from './CountryCodes';\n\nexport const getCountryByCodeId = (countryCode) => {\n return CountryCodes.find((c) => c.code === countryCode)?.dialCode;\n};\n\nexport const matchingParenthesis = (val) => {\n const openParenMatches = val.match(/\\(/g);\n const closeParenMatches = val.match(/\\)/g);\n return openParenMatches?.length === closeParenMatches?.length;\n};\n","import { forwardAttrs } from '@descope-ui/common/components-helpers';\nimport { createBaseInputClass } from '../../../../baseClasses/createBaseInputClass';\nimport { getComponentName } from '../../../../helpers/componentHelpers';\nimport { getCountryByCodeId, matchingParenthesis } from '../../helpers';\nimport parsePhoneNumberFromString, { AsYouType } from 'libphonenumber-js/min';\n\nexport const componentName = getComponentName('phone-field-internal-input-box');\n\nconst observedAttributes = [\n 'disabled',\n 'size',\n 'readonly',\n 'phone-input-placeholder',\n 'name',\n 'maxlength',\n 'autocomplete',\n 'label-type',\n];\nconst mapAttrs = {\n 'phone-input-placeholder': 'placeholder',\n};\n\nconst BaseInputClass = createBaseInputClass({ componentName, baseSelector: 'div' });\n\nclass PhoneFieldInternal extends BaseInputClass {\n static get observedAttributes() {\n return [].concat(BaseInputClass.observedAttributes || [], observedAttributes);\n }\n\n #ayt;\n\n constructor() {\n super();\n\n this.innerHTML = `\n <div>\n <descope-text-field tabindex=\"1\" type=\"tel\" bordered=\"false\"></descope-text-field>\n </div>\n `;\n\n this.textField = this.querySelector('descope-text-field');\n }\n\n // notice: this function is exposed in parent component\n get phoneNumberInputEle() {\n return this.textField.shadowRoot.querySelector('input');\n }\n\n get defaultDialCode() {\n return getCountryByCodeId(this.getAttribute('default-code'));\n }\n\n get defaultCode() {\n return this.getAttribute('default-code');\n }\n\n get allowAlphanumericInput() {\n return this.getAttribute('allow-alphanumeric-input') === 'true';\n }\n\n get minLength() {\n return parseInt(this.getAttribute('minlength'), 10) || 0;\n }\n\n get maxLength() {\n return parseInt(this.getAttribute('maxlength'), 10) || 50;\n }\n\n get restrictCountries() {\n return this.getAttribute('restrict-countries')?.split(',').filter(Boolean) || [];\n }\n\n get isFormatValue() {\n return this.getAttribute('format-value') === 'true';\n }\n\n get isStrictValidation() {\n return this.getAttribute('strict-validation') === 'true';\n }\n\n get value() {\n if (!this.textField.value) return '';\n\n if (!this.isStrictValidation) {\n return this.#nonParsedValue();\n }\n\n const parsedVal = this.#parseWithCountryCode();\n\n if (parsedVal?.country && parsedVal?.countryCallingCode && parsedVal?.nationalNumber) {\n return `+${[parsedVal?.countryCallingCode, parsedVal?.nationalNumber].join('-')}`;\n }\n\n // if failed to parse or to find country code return text field value\n return this.textField.value;\n }\n\n set value(val) {\n this.textField.value = val;\n }\n\n init() {\n this.addEventListener('focus', (e) => {\n // We want to ignore focus events we are dispatching\n if (e.isTrusted) this.textField.focus();\n });\n\n super.init?.();\n\n this.textField.addEventListener('input', this.#onInput.bind(this));\n this.handleFocusEventsDispatching([this.textField]);\n\n forwardAttrs(this.textField, this, { includeAttrs: ['has-value'] });\n }\n\n getValidity() {\n const validPhonePattern = /^\\+?\\d{1,4}-?(?:\\d-?){1,15}$/;\n const stripValue = this.#sanitizeVal(this.textField.value || '');\n\n if (this.isRequired && !this.textField.value) {\n return { valueMissing: true };\n }\n\n if (this.textField.value) {\n if (stripValue.length < this.minLength) {\n return { tooShort: true };\n }\n\n if (\n // has `strict-validation` and not properly parsed\n (this.isStrictValidation && this.textField.value && !this.#isValidParsedValue()) ||\n // if no `strict-validation` then conform with naive pattern\n (!this.isStrictValidation && this.textField.value && !validPhonePattern.test(this.value))\n ) {\n return { patternMismatch: true };\n }\n }\n\n return {};\n }\n\n setSelectionRange(...args) {\n this.textField.setSelectionRange(...args);\n }\n\n attributeChangedCallback(attrName, oldValue, newValue) {\n super.attributeChangedCallback(attrName, oldValue, newValue);\n\n if (oldValue !== newValue && observedAttributes.includes(attrName)) {\n const attr = mapAttrs[attrName] || attrName;\n this.textField.setAttribute(attr, newValue);\n }\n }\n\n #onInput(e) {\n let sanitizedInput = this.#sanitizeInput(e.target.value);\n\n if (this.isFormatValue && this.#canFormat(sanitizedInput)) {\n sanitizedInput = this.#formatPhoneNumber(sanitizedInput);\n }\n\n e.target.value = sanitizedInput;\n }\n\n #nonParsedValue() {\n if (!this.defaultDialCode) {\n return this.textField.value;\n }\n\n const nationalNumber = this.#trimDuplicateCountryCode(this.textField.value);\n const sanitizedVal = this.#sanitizeVal(nationalNumber);\n\n return [this.defaultDialCode, sanitizedVal].join('-');\n }\n\n #parseWithCountryCode() {\n if (this.defaultDialCode) {\n return parsePhoneNumberFromString(\n [this.defaultDialCode, this.#sanitizeVal(this.textField.value)].filter(Boolean).join('')\n );\n }\n\n // if default-code or not parsed - try to extract country code from value\n return parsePhoneNumberFromString(this.textField.value);\n }\n\n #sanitizeVal(val) {\n return val.replace(/\\D/g, '');\n }\n\n #trimDuplicateCountryCode(val) {\n if (this.textField.value?.[0] === '+') {\n const dialCodePrefixPattern = new RegExp(`^\\\\${this.defaultDialCode}`);\n const trimmed = val.replace(dialCodePrefixPattern, '');\n return trimmed;\n }\n return val;\n }\n\n #isValidParsedValue() {\n const parsed = parsePhoneNumberFromString(this.value);\n return (\n !!parsed && // parsed successfully (not undefined)\n !!parsed.isValid?.() && // Parsed object is valid\n !!parsed.country && // Parsed object with a country code\n !!this.#isAllowedCountry(parsed.country) && // Parsed with allowed country code\n (this.defaultCode ? this.defaultCode === parsed.country : true) // In case default country code is set validate parsed country matches it\n );\n }\n\n #isAllowedCountry(countryCode) {\n if (!this.restrictCountries.length) {\n return true;\n }\n\n return this.restrictCountries.includes(countryCode);\n }\n\n #sanitizeInput(val) {\n val = val\n .replace(/^-+/, '') // dash as first char\n .replace(/(?!^)\\+/g, '') // multiple plus symbols\n .replace('--', '-') // consecutive dashes\n .replace('+-', '+'); // dash following plus symbol\n\n if (!this.allowAlphanumericInput) {\n const telDigitsRegExp = /^[+\\d-\\(\\)]+$/;\n val = val\n .split('')\n .filter((char) => telDigitsRegExp.test(char))\n .join('');\n }\n\n return val;\n }\n\n #formatPhoneNumber(phoneNumber = '') {\n // Get country code from `default-code or` from phone number\n const countryCode = this.defaultCode || this.#getCountryCodeFromValue(phoneNumber);\n\n // Skip formatting if no country code is available\n if (!countryCode) {\n return phoneNumber;\n }\n\n // Update AsYouType country code if needed\n if (!this.#ayt || this.#ayt.country !== countryCode) {\n this.#ayt = new AsYouType(countryCode);\n }\n\n // We need to reset AsYouType instance before setting new input\n this.#ayt.reset();\n\n // Set AsYouType input\n const formattedVal = this.#ayt.input(phoneNumber) || phoneNumber;\n\n return formattedVal;\n }\n\n #getCountryCodeFromValue(val) {\n const parsed = parsePhoneNumberFromString(val);\n return parsed?.country || '';\n }\n\n #canFormat(val) {\n if (!matchingParenthesis(val)) return false;\n return true;\n }\n}\n\nexport default PhoneFieldInternal;\n","import '../../../descope-text-field';\n\nimport PhoneFieldInternalInputBox, { componentName } from './PhoneFieldInternalInputBox';\n\ncustomElements.define(componentName, PhoneFieldInternalInputBox);\n","import { componentName as descopeInternalComponentName } from './descope-phone-input-box-internal/PhoneFieldInternalInputBox';\nimport { forwardAttrs, getComponentName } from '../../../helpers/componentHelpers';\nimport { compose } from '../../../helpers';\nimport {\n createProxy,\n createStyleMixin,\n draggableMixin,\n inputOverrideValidConstraintsMixin,\n proxyInputMixin,\n} from '../../../mixins';\nimport { TextFieldClass } from '../../descope-text-field/TextFieldClass';\nimport CountryCodes from '../CountryCodes';\nimport {\n resetInputLabelPosition,\n resetInputCursor,\n resetInputFieldDefaultWidth,\n resetInputFieldInvalidBackgroundColor,\n useHostExternalPadding,\n inputFloatingLabelStyle,\n} from '../../../helpers/themeHelpers/resetHelpers';\nimport { syncAttrs } from '@descope-ui/common/components-helpers';\n\nconst textVars = TextFieldClass.cssVarList;\n\nexport const componentName = getComponentName('phone-input-box-field');\n\nconst customMixin = (superclass) =>\n class PhoneFieldInputBoxMixinClass extends superclass {\n static get CountryCodes() {\n return CountryCodes;\n }\n\n init() {\n super.init?.();\n\n const template = document.createElement('template');\n\n template.innerHTML = `\n\t\t\t\t<${descopeInternalComponentName}\n\t\t\t\t\ttabindex=\"-1\"\n\t\t\t\t\tslot=\"input\"\n\t\t\t\t></${descopeInternalComponentName}>\n `;\n\n this.baseElement.appendChild(template.content.cloneNode(true));\n\n this.inputElement = this.shadowRoot.querySelector(descopeInternalComponentName);\n\n syncAttrs(this, this.inputElement, { includeAttrs: ['has-value'] });\n\n forwardAttrs(this.shadowRoot.host, this.inputElement, {\n includeAttrs: [\n 'size',\n 'minlength',\n 'maxlength',\n 'default-code',\n 'disabled',\n 'phone-input-placeholder',\n 'label',\n 'label-type',\n 'allow-alphanumeric-input',\n 'restrict-countries',\n 'format-value',\n 'strict-validation',\n 'data-errormessage-type-mismatch',\n ],\n });\n }\n\n get phoneNumberInputEle() {\n return this.inputElement?.phoneNumberInputEle;\n }\n };\n\nconst {\n host,\n label,\n inputElement,\n requiredIndicator,\n inputField,\n internalComponent,\n internalComponentAfter,\n phoneInput,\n errorMessage,\n helperText,\n} = {\n host: { selector: () => ':host' },\n label: { selector: '::part(label)' },\n placeholder: { selector: '> input:placeholder-shown' },\n inputElement: { selector: 'input' },\n requiredIndicator: { selector: '[required]::part(required-indicator)::after' },\n inputField: { selector: () => 'vaadin-text-field::part(input-field)' },\n internalComponent: {\n selector: 'descope-phone-field-internal-input-box',\n },\n internalComponentAfter: {\n selector: 'descope-phone-field-internal-input-box::after',\n },\n phoneInput: { selector: () => 'descope-text-field' },\n helperText: { selector: '::part(helper-text)' },\n errorMessage: { selector: '::part(error-message)' },\n};\n\nexport const PhoneFieldInputBoxClass = compose(\n createStyleMixin({\n mappings: {\n fontSize: [\n host,\n inputField,\n {\n selector: TextFieldClass.componentName,\n property: TextFieldClass.cssVarList.fontSize,\n },\n ],\n fontFamily: [label, errorMessage, helperText],\n hostWidth: { ...host, property: 'width' },\n hostMinWidth: { ...host, property: 'min-width' },\n hostDirection: { ...host, property: 'direction' },\n\n inputHorizontalPadding: [\n { ...phoneInput, property: 'padding-left' },\n { ...phoneInput, property: 'padding-right' },\n ],\n\n labelFontSize: { ...label, property: 'font-size' },\n labelFontWeight: { ...label, property: 'font-weight' },\n labelTextColor: [\n { ...label, property: 'color' },\n { ...label, property: '-webkit-text-fill-color' },\n { ...requiredIndicator, property: 'color' },\n ],\n labelRequiredIndicator: { ...requiredIndicator, property: 'content' },\n errorMessageTextColor: { ...errorMessage, property: 'color' },\n\n errorMessageIcon: { ...errorMessage, property: 'background-image' },\n errorMessageIconSize: { ...errorMessage, property: 'background-size' },\n errorMessageIconPadding: { ...errorMessage, property: 'padding-inline-start' },\n errorMessageIconRepeat: { ...errorMessage, property: 'background-repeat' },\n errorMessageIconPosition: { ...errorMessage, property: 'background-position' },\n errorMessageFontSize: { ...errorMessage, property: 'font-size' },\n\n inputValueTextColor: { ...phoneInput, property: textVars.inputValueTextColor },\n\n inputPlaceholderTextColor: { ...phoneInput, property: textVars.inputPlaceholderColor },\n\n inputBorderStyle: { ...internalComponentAfter, property: 'border-style' },\n inputBorderWidth: { ...internalComponentAfter, property: 'border-width' },\n inputBorderColor: { ...internalComponentAfter, property: 'border-color' },\n inputBorderRadius: [\n { ...internalComponent, property: 'border-radius' },\n { ...internalComponentAfter, property: 'border-radius' },\n ],\n\n inputOutlineStyle: { ...internalComponent, property: 'outline-style' },\n inputOutlineColor: { ...internalComponent, property: 'outline-color' },\n inputOutlineWidth: { ...internalComponent, property: 'outline-width' },\n inputOutlineOffset: { ...internalComponent, property: 'outline-offset' },\n\n labelPosition: { ...label, property: 'position' },\n labelTopPosition: { ...label, property: 'top' },\n labelHorizontalPosition: [\n { ...label, property: 'left' },\n { ...label, property: 'right' },\n ],\n inputTransformY: { ...label, property: 'transform' },\n inputTransition: { ...label, property: 'transition' },\n marginInlineStart: { ...label, property: 'margin-inline-start' },\n valueInputHeight: { ...inputElement, property: 'height' },\n valueInputMarginBottom: {\n selector: TextFieldClass.componentName,\n property: textVars.valueInputMarginBottom,\n },\n },\n }),\n draggableMixin,\n inputOverrideValidConstraintsMixin,\n proxyInputMixin({ proxyProps: ['value', 'selectionStart'] }),\n customMixin\n)(\n createProxy({\n slots: [],\n wrappedEleName: 'vaadin-text-field',\n style: () => `\n :host {\n display: inline-flex;\n max-width: 100%;\n box-sizing: border-box;\n }\n ${useHostExternalPadding(PhoneFieldInputBoxClass.cssVarList)}\n ${resetInputCursor('vaadin-text-field')}\n ${resetInputFieldInvalidBackgroundColor('vaadin-text-field')}\n ${resetInputFieldDefaultWidth()}\n\n vaadin-text-field {\n width: 100%;\n box-sizing: border-box;\n padding: 0;\n }\n vaadin-text-field[focus-ring]::part(input-field) {\n box-shadow: none;\n }\n vaadin-text-field::before {\n height: 0;\n }\n vaadin-text-field::part(input-field) {\n padding: 0;\n background: transparent;\n -webkit-mask-image: none;\n }\n descope-phone-field-internal-input-box {\n -webkit-mask-image: none;\n padding: 0;\n width: 100%;\n }\n descope-phone-field-internal-input-box > div {\n width: 100%;\n }\n descope-phone-field-internal-input-box descope-text-field {\n ${textVars.inputOutlineWidth}: 0;\n ${textVars.inputOutlineOffset}: 0;\n }\n descope-phone-field-internal-input-box::after {\n content: '';\n position: absolute;\n width: 100%;\n height: 100%;\n top: 0;\n left: 0;\n box-sizing: border-box;\n pointer-events: none;\n }\n descope-text-field {\n flex-grow: 1;\n width: 100%;\n direction: ltr;\n }\n vaadin-text-field[readonly] > input:placeholder-shown {\n opacity: 1;\n }\n vaadin-text-field::part(input-field)::after {\n border: none;\n }\n\n vaadin-text-field[label-type=\"floating\"]:not([focused])[readonly] input:placeholder-shown {\n opacity: 0;\n }\n vaadin-text-field[label-type=\"floating\"]:not([focused])[disabled] input:placeholder-shown {\n opacity: 0;\n }\n\n ${resetInputLabelPosition('vaadin-text-field')}\n ${inputFloatingLabelStyle()}\n\t\t`,\n excludeAttrsSync: ['tabindex', 'style'],\n componentName,\n })\n);\n\nexport default PhoneFieldInputBoxClass;\n","import './descope-phone-input-box-internal';\nimport '../../descope-text-field';\n\nimport { componentName, PhoneFieldInputBoxClass } from './PhoneFieldInputBoxClass';\n\ncustomElements.define(componentName, PhoneFieldInputBoxClass);\n\nexport { PhoneFieldInputBoxClass, componentName };\n","import { getComponentName } from '../../../helpers/componentHelpers';\n\nexport const componentName = getComponentName('new-password-internal');\n","export const interpolateString = (template, values) =>\n template.replace(/{{(\\w+)+}}/g, (match, key) => values?.[key] || match);\n","// eslint-disable-next-line max-classes-per-file\nimport { createStyleMixin, draggableMixin, componentNameValidationMixin } from '../../mixins';\nimport { createBaseClass } from '../../baseClasses/createBaseClass';\nimport { compose } from '../../helpers';\nimport { getComponentName } from '../../helpers/componentHelpers';\nimport { interpolateString } from './helpers';\nimport { injectStyle } from '@descope-ui/common/components-helpers';\n\nexport const componentName = getComponentName('policy-validation');\n\nconst overrideAttrs = [\n 'data-password-policy-value-minlength',\n 'data-password-policy-value-passwordstrength',\n 'data-password-policy-actual-passwordstrength',\n];\nconst dataAttrs = ['data', 'active-policies', 'overrides', ...overrideAttrs];\nconst policyAttrs = ['label', 'value', ...dataAttrs];\n\nclass RawPolicyValidation extends createBaseClass({ componentName, baseSelector: ':host > div' }) {\n #availablePolicies;\n\n #activePolicies = [];\n\n #overrides;\n\n static get observedAttributes() {\n return policyAttrs;\n }\n\n constructor() {\n super();\n\n this.attachShadow({ mode: 'open' }).innerHTML = `\n <div>\n <div class=\"label\"></div>\n <ul></ul>\n </div>\n\t\t`;\n\n injectStyle(\n `\n :host > div {\n width: 100%;\n display: flex;\n flex-direction: column;\n box-sizing: border-box;\n }\n .label {\n max-width: 100%;\n text-wrap: wrap;\n overflow-wrap: break-word;\n }\n .hide-label .label {\n display: none;\n }\n ul {\n display: flex;\n flex-direction: column;\n padding: 0;\n margin: 0;\n }\n ul, li {\n margin: 0;\n padding: 0;\n list-style: none;\n }\n li::before {\n display: inline-block;\n width: 1em;\n text-align: center;\n }\n `,\n this\n );\n\n this.panel = this.shadowRoot.querySelector(':host > div');\n this.label = this.shadowRoot.querySelector('.label');\n this.list = this.shadowRoot.querySelector('ul');\n }\n\n attributeChangedCallback(attrName, oldValue, newValue) {\n super.attributeChangedCallback?.(attrName, oldValue, newValue);\n if (oldValue !== newValue) {\n if (attrName === 'label') {\n this.updateLabel(newValue);\n }\n\n // we're don't know the order in which the attributes are forwarded, so we're trying to render every time\n // once `data` and `active-policies` are populated, the render will be executed.\n // once the `overrides` object is updated, we want to re-render the panel.\n if (dataAttrs.includes(attrName)) {\n if (attrName === 'data') {\n try {\n this.availablePolicies = JSON.parse(newValue);\n } catch {\n // eslint-disable-next-line no-console\n console.error('Failed to set available policies');\n }\n }\n if (attrName === 'active-policies') {\n this.#activePolicies = (newValue || '').split(',');\n }\n\n if (attrName === 'data-password-policy-value-minlength') {\n const ln = Number(newValue);\n if (!Number.isNaN(ln) && ln > 0) {\n this.#overrides = { ...this.#overrides, minlength: { value: `${ln}` } };\n }\n }\n\n if (attrName === 'data-password-policy-value-passwordstrength') {\n const passwordStrength = parseInt(newValue);\n if (!Number.isNaN(passwordStrength) && passwordStrength >= 0) {\n this.#overrides = {\n ...this.#overrides,\n passwordstrength: {\n ...this.#overrides?.passwordstrength,\n expected: passwordStrength,\n },\n };\n }\n }\n\n if (attrName === 'data-password-policy-actual-passwordstrength') {\n const ln = Number(newValue);\n if (!Number.isNaN(ln) && ln >= 0) {\n this.#overrides = {\n ...this.#overrides,\n passwordstrength: { ...this.#overrides?.passwordstrength, actual: ln },\n };\n }\n }\n }\n\n this.renderItems(this.#availablePolicies, this.#activePolicies, this.#overrides);\n }\n }\n\n get availablePolicies() {\n return this.#availablePolicies || [];\n }\n\n set availablePolicies(val) {\n this.#availablePolicies = val;\n }\n\n get value() {\n return this.getAttribute('value') || '';\n }\n\n getStrengthScore() {\n return this.value.length;\n }\n\n compareValues(comparison, expected, actual) {\n switch (comparison.toUpperCase()) {\n case 'GTE': // Greater than or equal to\n return actual >= expected;\n case 'GT': // Greater than\n return actual > expected;\n case 'LTE': // Less than or equal to\n return actual <= expected;\n case 'LT': // Less than\n return actual < expected;\n case 'EQ': // Equal to\n return actual === expected;\n case 'NEQ': // Not equal to\n return actual !== expected;\n default:\n throw new Error(`Invalid comparison type: ${comparison}`);\n }\n }\n\n validate() {\n let policies = this.#availablePolicies;\n\n if (this.#overrides) {\n policies = this.#availablePolicies.map((policy) => {\n const data = this.#overrides[policy.id];\n\n if (!data) return policy;\n\n const res = { ...policy, data };\n\n return res;\n });\n }\n\n return this.#activePolicies.reduce((results, id) => {\n const policy = policies.find((p) => p.id === id);\n\n if (!policy) {\n return results;\n }\n\n const { pattern, message, data, compare } = policy;\n\n if ((!pattern && !compare) || !message) {\n return results;\n }\n\n const validationResult = {\n message: interpolateString(message, data),\n id,\n };\n\n if (pattern) {\n const exp = new RegExp(interpolateString(pattern, data));\n validationResult.valid = exp.test(this.value);\n } else if (compare) {\n validationResult.valid = this.compareValues(\n compare,\n data?.expected ?? -1,\n data?.actual ?? -1\n );\n }\n\n results.push(validationResult);\n\n return results;\n }, []);\n }\n\n get isValid() {\n return !this.validate().some(({ valid }) => valid === false);\n }\n\n getValidationItemTemplate({ valid, message }) {\n const status = !this.value ? 'none' : valid;\n return `\n <li class=\"item\" data-valid=\"${status}\">\n <span class=\"message\">${message}</span>\n </li>\n `;\n }\n\n renderItems(availablePolicies, activePolicies) {\n if (!availablePolicies || !activePolicies.length) {\n return;\n }\n\n this.list.innerHTML = this.validate().map(this.getValidationItemTemplate.bind(this)).join('');\n }\n\n updateLabel(val) {\n if (!val) {\n this.classList.add('hide-label');\n this.label.textContent = '';\n } else {\n this.label.textContent = val;\n this.classList.remove('hide-label');\n }\n }\n}\n\nconst { host, item, symbolDefault, symbolSuccess, symbolError } = {\n host: { selector: () => ':host > div' },\n item: { selector: () => '.item' },\n symbolDefault: { selector: () => '.item[data-valid=\"none\"]::before' },\n symbolSuccess: { selector: () => '.item[data-valid=\"true\"]::before' },\n symbolError: { selector: () => '.item[data-valid=\"false\"]::before' },\n};\n\nexport const PolicyValidationClass = compose(\n createStyleMixin({ componentNameOverride: getComponentName('input-wrapper') }),\n createStyleMixin({\n mappings: {\n hostDirection: { selector: () => ':host', property: 'direction' },\n fontSize: {},\n fontFamily: {},\n padding: {},\n borderWidth: { ...host, property: 'border-width' },\n borderStyle: { ...host, property: 'border-style' },\n borderColor: { ...host, property: 'border-color' },\n borderRadius: { ...host, property: 'border-radius' },\n backgroundColor: { ...host, property: 'background-color' },\n textColor: { property: 'color' },\n labelMargin: { ...host, property: 'gap' },\n itemsSpacing: { ...item, property: 'line-height' },\n itemSymbolSuccessColor: { ...symbolSuccess, property: 'color' },\n itemSymbolErrorColor: { ...symbolError, property: 'color' },\n itemSymbolDefault: { ...symbolDefault, property: 'content' },\n itemSymbolSuccess: { ...symbolSuccess, property: 'content' },\n itemSymbolError: { ...symbolError, property: 'content' },\n },\n }),\n draggableMixin,\n componentNameValidationMixin\n)(RawPolicyValidation);\n","import { forwardAttrs, getComponentName } from '../../helpers/componentHelpers';\nimport { compose } from '../../helpers';\nimport { createStyleMixin, proxyInputMixin, draggableMixin, createProxy } from '../../mixins';\nimport { componentName as descopeInternalComponentName } from './descope-new-password-internal/componentName';\nimport { PasswordClass } from '../descope-password/PasswordClass';\nimport { useHostExternalPadding } from '../../helpers/themeHelpers/resetHelpers';\nimport { PolicyValidationClass } from '../descope-policy-validation/PolicyValidationClass';\n\nexport const componentName = getComponentName('new-password');\n\nconst policyPreviewVars = PolicyValidationClass.cssVarList;\n\nconst customMixin = (superclass) =>\n class NewPasswordMixinClass extends superclass {\n init() {\n super.init?.();\n\n const template = document.createElement('template');\n\n const externalInputAttr = this.getAttribute('external-input');\n\n template.innerHTML = `\n\t\t\t<${descopeInternalComponentName}\n\t\t\t\tname=\"new-password\"\n\t\t\t\ttabindex=\"-1\"\n\t\t\t\tslot=\"input\"\n external-input=\"${externalInputAttr}\"\n\t\t\t>\n </${descopeInternalComponentName}>\n\t\t\t`;\n\n this.baseElement.appendChild(template.content.cloneNode(true));\n\n this.inputElement = this.shadowRoot.querySelector(descopeInternalComponentName);\n\n if (this.getAttribute('external-input') === 'true') {\n this.initExternalInput();\n }\n\n forwardAttrs(this, this.inputElement, {\n includeAttrs: [\n 'password-label',\n 'password-placeholder',\n 'confirm-label',\n 'confirm-placeholder',\n 'full-width',\n 'size',\n 'bordered',\n 'label',\n 'has-confirm',\n 'invalid',\n 'readonly',\n 'disabled',\n 'draggable',\n 'has-validation',\n 'policy-label',\n 'active-policies',\n 'available-policies',\n 'data-password-policy-value-minlength',\n 'data-password-policy-value-passwordstrength',\n 'label-type',\n 'manual-visibility-toggle',\n ],\n });\n }\n\n createSlottedExternalInput(node, slotName) {\n const externalInput = node.querySelector('input');\n const slotEle = document.createElement('slot');\n\n const targetSlot = externalInput.getAttribute('slot');\n\n slotEle.setAttribute('name', slotName);\n slotEle.setAttribute('slot', targetSlot);\n\n node.appendChild(slotEle);\n\n // move external input\n externalInput.setAttribute('slot', slotName);\n externalInput.setAttribute('name', this.getAttribute('name'));\n externalInput.setAttribute('data-hidden-input', 'true');\n\n this.appendChild(externalInput);\n }\n\n initExternalInput() {\n // get descope input components\n this.passwordInput = this.inputElement.querySelector('[data-id=\"password\"]');\n this.confirmInput = this.inputElement.querySelector('[data-id=\"confirm\"]');\n\n // create slots for external password input\n this.createSlottedExternalInput(this.passwordInput, 'external-password-input');\n this.createSlottedExternalInput(this.confirmInput, 'external-confirm-input');\n }\n };\n\nconst {\n host,\n label,\n internalInputsWrapper,\n errorMessage,\n helperText,\n passwordInput,\n policyPreview,\n} = {\n host: { selector: () => ':host' },\n label: { selector: '::part(label)' },\n internalInputsWrapper: { selector: 'descope-new-password-internal .wrapper' },\n helperText: { selector: '::part(helper-text)' },\n errorMessage: { selector: '::part(error-message)' },\n passwordInput: { selector: 'descope-password' },\n policyPreview: { selector: 'descope-policy-validation' },\n};\n\nexport const NewPasswordClass = compose(\n createStyleMixin({\n mappings: {\n fontSize: [\n host,\n {},\n {\n selector: PasswordClass.componentName,\n property: PasswordClass.cssVarList.fontSize,\n },\n ],\n fontFamily: [label, errorMessage, helperText],\n labelFontSize: { ...label, property: 'font-size' },\n labelFontWeight: { ...label, property: 'font-weight' },\n labelTextColor: { ...label, property: 'color' },\n errorMessageTextColor: { ...errorMessage, property: 'color' },\n errorMessageIcon: { ...errorMessage, property: 'background-image' },\n errorMessageIconSize: { ...errorMessage, property: 'background-size' },\n errorMessageIconPadding: { ...errorMessage, property: 'padding-inline-start' },\n errorMessageIconRepeat: { ...errorMessage, property: 'background-repeat' },\n errorMessageIconPosition: { ...errorMessage, property: 'background-position' },\n errorMessageFontSize: { ...errorMessage, property: 'font-size' },\n hostWidth: { ...host, property: 'width' },\n hostMinWidth: { ...host, property: 'min-width' },\n hostDirection: [\n { ...host, property: 'direction' },\n { ...passwordInput, property: PasswordClass.cssVarList.hostDirection },\n ],\n inputsRequiredIndicator: { ...host, property: 'content' },\n spaceBetweenInputs: { ...internalInputsWrapper, property: 'gap' },\n policyPreviewBackgroundColor: {\n ...policyPreview,\n property: policyPreviewVars.backgroundColor,\n },\n policyPreviewPadding: { ...policyPreview, property: policyPreviewVars.padding },\n\n valueInputHeight: { ...passwordInput, property: PasswordClass.cssVarList.valueInputHeight },\n valueInputMarginBottom: {\n ...passwordInput,\n property: PasswordClass.cssVarList.valueInputMarginBottom,\n },\n },\n }),\n draggableMixin,\n proxyInputMixin({ proxyProps: ['value', 'selectionStart'] }),\n customMixin\n)(\n createProxy({\n slots: [],\n wrappedEleName: 'vaadin-text-field',\n style: () => `\n\t\t:host {\n\t\t\tdisplay: inline-block;\n\t\t\tmax-width: 100%;\n\t\t\tbox-sizing: border-box;\n\t\t}\n :host ::part(error-message) {\n direction: ltr;\n }\n\t\t${useHostExternalPadding(PasswordClass.cssVarList)}\n\t\tvaadin-text-field {\n\t\t\tpadding: 0;\n\t\t\twidth: 100%;\n\t\t\theight: 100%;\n\t\t}\n\t\tvaadin-text-field::part(input-field) {\n\t\t\tmin-height: 0;\n\t\t\tbackground: transparent;\n\t\t\tbox-shadow: none;\n\t\t\tpadding: 0;\n\t\t}\n\t\tvaadin-text-field::part(input-field)::after {\n\t\t\tbackground: transparent;\n\t\t\topacity: 0;\n\t\t}\n\t\tdescope-new-password-internal {\n\t\t\t-webkit-mask-image: none;\n\t\t\tmin-height: 0;\n\t\t\twidth: 100%;\n\t\t\tpadding: 0;\n\t\t}\n\t\tdescope-new-password-internal > .wrapper {\n -webkit-mask-image: none;\n\t\t\twidth: 100%;\n\t\t\theight: 100%;\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t}\n\t\tdescope-password {\n\t\t\tdisplay: block;\n\t\t\twidth: 100%;\n\t\t}\n\t\tdescope-new-password-internal vaadin-password-field::before {\n\t\t\theight: initial;\n\t\t}\n descope-policy-validation {\n margin-top: 8px;\n display: flex;\n }\n .hidden {\n display: none;\n }\n\t\t`,\n excludeAttrsSync: ['tabindex', 'style'],\n componentName,\n })\n);\n","import { componentName, PolicyValidationClass } from './PolicyValidationClass';\n\ncustomElements.define(componentName, PolicyValidationClass);\n\nexport { PolicyValidationClass, componentName };\n","import { injectStyle } from '@descope-ui/common/components-helpers';\nimport { createBaseInputClass } from '../../../baseClasses/createBaseInputClass';\nimport { forwardAttrs, observeAttributes } from '../../../helpers/componentHelpers';\nimport { NewPasswordClass } from '../NewPasswordClass';\nimport { componentName } from './componentName';\n\nconst passwordAttrPrefixRegex = /^password-/;\nconst confirmAttrPrefixRegex = /^confirm-/;\n\nconst removeAttrPrefix = (attr, prefix) => attr.replace(prefix, '');\n\nconst passwordInputAttrs = ['password-label', 'password-placeholder'];\nconst confirmInputAttrs = ['confirm-label', 'confirm-placeholder'];\nconst policyPanelAttrs = [\n 'has-validation',\n 'policy-label',\n 'available-policies',\n 'active-policies',\n 'data-password-policy-value-minlength',\n 'data-password-policy-value-passwordstrength',\n 'manual-visibility-toggle',\n];\nconst commonAttrs = [\n 'has-confirm',\n 'disabled',\n 'bordered',\n 'size',\n 'full-width',\n 'maxlength',\n 'invalid',\n 'readonly',\n 'draggable',\n 'autocomplete',\n 'label-type',\n 'manual-visibility-toggle',\n];\n\nconst inputRelatedAttrs = [].concat(\n commonAttrs,\n passwordInputAttrs,\n confirmInputAttrs,\n policyPanelAttrs\n);\n\nconst BaseInputClass = createBaseInputClass({ componentName, baseSelector: 'div' });\n\nclass NewPasswordInternal extends BaseInputClass {\n static get observedAttributes() {\n return [].concat(BaseInputClass.observedAttributes || [], inputRelatedAttrs);\n }\n\n constructor() {\n super();\n\n this.innerHTML = `\n\t\t\t<div class=\"wrapper\"></div>\n\t\t`;\n\n this.wrapperEle = this.querySelector('.wrapper');\n }\n\n get value() {\n return this.passwordInput?.value || '';\n }\n\n set value(val) {\n if (val === this.value) return;\n this.passwordInput.value = val;\n }\n\n get hasConfirm() {\n return this.getAttribute('has-confirm') === 'true';\n }\n\n onHasConfirmChange(hasConfirm) {\n this.confirmInput.classList.toggle('hidden', !hasConfirm);\n }\n\n onHasValidationChange(hasValidation) {\n this.policyPanel.classList.toggle('hidden', !hasValidation);\n }\n\n get hasValidation() {\n return this.getAttribute('has-validation') === 'true';\n }\n\n getValidity() {\n if (this.isRequired && !this.value) {\n return { valueMissing: true };\n }\n\n if (this.value && !this.policyPanel.isValid) {\n return { typeMismatch: true };\n }\n\n if (this.hasConfirm && this.confirmInput && this.value !== this.confirmInput.value) {\n return { patternMismatch: true };\n }\n\n const min = this.getAttribute('minlength');\n const minVal = parseInt(min, 10) || 0;\n const minValid = this.value.length >= minVal;\n if (!minValid) {\n return { tooShort: true };\n }\n\n return {};\n }\n\n init() {\n this.addEventListener('focus', (e) => {\n // we want to ignore focus events we are dispatching\n if (e.isTrusted) {\n this.passwordInput.focus();\n }\n });\n super.init?.();\n this.renderInputs(this.hasConfirm, this.hasValidation);\n }\n\n renderInputs() {\n const hasExternalInput = this.getAttribute('external-input') === 'true';\n const template = `\n <div class=\"password-input-container\">\n <descope-password\n autocomplete=\"new-password\"\n manual-visibility-toggle=\"true\"\n data-id=\"password\"\n external-input=\"${hasExternalInput}\"\n ></descope-password>\n <descope-policy-validation></descope-policy-validation>\n </div>\n <descope-password\n autocomplete=\"new-password\"\n manual-visibility-toggle=\"true\"\n external-input=\"${hasExternalInput}\"\n data-id=\"confirm\"\n ></descope-password>\n `;\n\n this.wrapperEle.innerHTML = template;\n\n this.passwordInput = this.querySelector('[data-id=\"password\"]');\n this.confirmInput = this.querySelector('[data-id=\"confirm\"]');\n this.policyPanel = this.querySelector('descope-policy-validation');\n this.passwordStrength = this.querySelector('descope-password-strength');\n\n this.inputs = [this.passwordInput, this.confirmInput];\n\n this.initInputs();\n\n // sync input value to policy validation panel\n this.passwordInput.addEventListener('input', (e) => {\n this.passwordStrength?.addEventListener(\n 'score-changed',\n ({ detail }) => {\n this.policyPanel.setAttribute('data-password-policy-actual-passwordstrength', detail);\n },\n { once: true }\n );\n this.passwordStrength?.setAttribute('value', e.target.value);\n this.policyPanel.setAttribute('value', e.target.value);\n });\n\n forwardAttrs(this, this.policyPanel, {\n includeAttrs: policyPanelAttrs,\n mapAttrs: {\n 'policy-label': 'label',\n 'available-policies': 'data',\n },\n });\n }\n\n // the inputs are not required but we still want it to have a required\n // indicator in case the root component is required\n handleIndicatorStyle() {\n this.inputs.forEach((input) => {\n injectStyle(\n `\n\t\t\t\t:host ::part(required-indicator)::after {\n\t\t\t\t\tcontent: var(${NewPasswordClass.cssVarList.inputsRequiredIndicator});\n width: 1em;\n text-align: center;\n\t\t\t\t}\n :host ::part(required-indicator) {\n display: inline-flex;\n }\n\t\t\t\t`,\n input\n );\n });\n }\n\n get isInvalid() {\n return this.hasAttribute('invalid') && this.getAttribute('invalid') !== 'false';\n }\n\n // for some reason, Vaadin is removing the invalid attribute on several events,\n // e.g. focus, input, etc..., so we need to make sure the inputs will stay invalid\n // if the root component is invalid\n handleInputsInvalidAttribute() {\n this.inputs.forEach((input) => {\n input &&\n observeAttributes(\n input,\n (changedAttributes) => {\n if (changedAttributes.includes('invalid')) {\n const inputInvalidValue = input.getAttribute('invalid');\n const rootInvalidValue = this.getAttribute('invalid');\n\n if (this.isInvalid && rootInvalidValue !== inputInvalidValue) {\n input.setAttribute('invalid', 'true');\n }\n }\n },\n {}\n );\n });\n }\n\n initInputs() {\n this.handleIndicatorStyle();\n this.handleInputsInvalidAttribute();\n this.handleFocusEventsDispatching(this.inputs);\n }\n\n async togglePasswordStrength() {\n if (this.activePolicies.includes('passwordstrength')) {\n if (!this.passwordStrength) {\n await import('@descope-ui/descope-password-strength');\n this.passwordStrength = document.createElement('descope-password-strength');\n this.passwordStrength.setAttribute('options', 'Very weak,Weak,Average,Strong,Very strong');\n this.passwordStrength.setAttribute('value', this.passwordInput.value || '');\n this.passwordStrength.setAttribute(\n 'st-host-direction',\n this.getAttribute('st-host-direction')\n );\n this.passwordStrength.setAttribute('full-width', 'true');\n this.querySelector('.password-input-container').insertBefore(\n this.passwordStrength,\n this.policyPanel\n );\n }\n } else {\n if (this.passwordStrength) {\n this.passwordStrength.remove();\n this.passwordStrength = null;\n }\n }\n }\n\n get activePolicies() {\n return (this.getAttribute('active-policies') || '').split(',');\n }\n\n // eslint-disable-next-line class-methods-use-this\n toggleBooleanAttribute(ele, name, value) {\n value === null ? ele?.removeAttribute(name) : ele?.setAttribute(name, value);\n }\n\n attributeChangedCallback(attrName, oldValue, newValue) {\n super.attributeChangedCallback?.(attrName, oldValue, newValue);\n\n if (oldValue !== newValue) {\n if (attrName === 'has-validation') {\n this.onHasValidationChange(newValue === 'true');\n } else if (attrName === 'has-confirm') {\n this.onHasConfirmChange(newValue === 'true');\n } else if (commonAttrs.includes(attrName)) {\n this.inputs.forEach((input) => this.toggleBooleanAttribute(input, attrName, newValue));\n } else if (passwordInputAttrs.includes(attrName)) {\n this.toggleBooleanAttribute(\n this.passwordInput,\n removeAttrPrefix(attrName, passwordAttrPrefixRegex),\n newValue\n );\n } else if (confirmInputAttrs.includes(attrName)) {\n this.toggleBooleanAttribute(\n this.confirmInput,\n removeAttrPrefix(attrName, confirmAttrPrefixRegex),\n newValue\n );\n }\n if (attrName === 'active-policies') {\n this.togglePasswordStrength();\n }\n }\n }\n}\n\nexport default NewPasswordInternal;\n","import NewPasswordInternal from './NewPasswordInternal';\nimport { componentName } from './componentName';\n\ncustomElements.define(componentName, NewPasswordInternal);\n","import { componentName, NewPasswordClass } from './NewPasswordClass';\nimport '../descope-text-field';\nimport '../descope-password';\nimport '../descope-policy-validation';\nimport './descope-new-password-internal';\n\ncustomElements.define(componentName, NewPasswordClass);\n\nexport { NewPasswordClass, componentName };\n","import { draggableMixin } from '../../mixins';\nimport { createBaseClass } from '../../baseClasses/createBaseClass';\nimport { compose } from '../../helpers';\nimport { getComponentName, observeChildren } from '../../helpers/componentHelpers';\nimport { injectStyle } from '@descope-ui/common/components-helpers';\n\nexport const componentName = getComponentName('recaptcha');\n\nconst observedAttributes = ['enabled', 'site-key', 'action', 'enterprise'];\n\nconst BaseClass = createBaseClass({\n componentName,\n baseSelector: ':host > div',\n});\nclass RawRecaptcha extends BaseClass {\n static get observedAttributes() {\n return observedAttributes.concat(BaseClass.observedAttributes || []);\n }\n\n attributeChangedCallback(attrName, oldValue, newValue) {\n super.attributeChangedCallback?.(attrName, oldValue, newValue);\n if (oldValue !== newValue) {\n if (attrName === 'enabled') {\n this.#toggleRecaptcha(newValue === 'true');\n }\n }\n }\n\n renderRecaptcha(enabled) {\n if (this.children.length) {\n this.updatePreview();\n return;\n }\n\n this.toggleRecaptchaEles(enabled);\n }\n\n toggleRecaptchaEles(enabled) {\n if (enabled) {\n this.recaptchaEle.style.display = '';\n this.mockRecaptchaEle.style.display = 'none';\n } else {\n this.recaptchaEle.style.display = 'none';\n this.mockRecaptchaEle.style.display = '';\n }\n }\n\n constructor() {\n super();\n\n this.attachShadow({ mode: 'open' }).innerHTML = `\n <div class=\"badge\">\n <span id=\"recaptcha\"></span>\n <img src=\"https://imgs.descope.com/connectors/templates/recaptcha/recaptcha-big.png\" alt=\"recaptcha\"/>\n </div>\n <slot></slot>\n\t`;\n\n injectStyle(\n `\n :host {\n display: inline-flex;\n }\n :host > div:not(.hidden) {\n display: flex;\n }\n :host #recaptcha .grecaptcha-badge {\n box-shadow: none !important;\n }\n :host #recaptcha .grecaptcha-logo {\n height: 100%;\n }\n :host #recaptcha {\n\t\t\t\twidth: 100%;\n height: 100%;\n\t\t\t}\n :host img {\n width: 256px;\n }\n :host([full-width=\"true\"]) {\n width: 100%;\n }\n .hidden {\n display: none;\n }\n `,\n this\n );\n\n this.recaptchaEle = this.baseElement.querySelector('#recaptcha');\n this.mockRecaptchaEle = this.baseElement.querySelector('img');\n this.badge = this.shadowRoot.querySelector('.badge');\n }\n\n init() {\n super.init?.();\n\n observeChildren(this, this.updatePreview.bind(this));\n }\n\n updatePreview() {\n if (this.children.length) {\n this.recaptchaEle.style.display = 'none';\n this.mockRecaptchaEle.style.display = 'none';\n this.badge.classList.add('hidden');\n } else {\n this.toggleRecaptchaEles(this.enabled);\n this.badge.classList.remove('hidden');\n }\n }\n\n get enterprise() {\n return this.getAttribute('enterprise') === 'true';\n }\n\n get siteKey() {\n return this.getAttribute('site-key');\n }\n\n get action() {\n return this.getAttribute('action') || 'load';\n }\n\n get enabled() {\n return this.getAttribute('enabled') === 'true';\n }\n\n get scriptURL() {\n const url = new URL('https://www.google.com/recaptcha/');\n url.pathname += `${this.enterprise ? 'enterprise' : 'api'}.js`;\n url.searchParams.append('onload', 'onRecaptchaLoadCallback');\n url.searchParams.append('render', 'explicit');\n return url.toString();\n }\n\n #toggleRecaptcha(enabled) {\n this.renderRecaptcha(enabled);\n if (enabled) {\n this.#createOnLoadScript();\n if (!document.getElementById('recaptcha-script')) {\n this.#loadRecaptchaScript();\n } else {\n window.onRecaptchaLoadCallback();\n }\n }\n }\n\n #loadRecaptchaScript() {\n const script = document.createElement('script');\n script.src = this.scriptURL;\n script.async = true;\n script.id = 'recaptcha-script';\n script.defer = true;\n document.body.appendChild(script);\n }\n\n get grecaptchaInstance() {\n return this.enterprise ? window.grecaptcha?.enterprise : window.grecaptcha;\n }\n\n #getNewToken(grecaptchaInstance, currentNode, recaptchaWidgetId) {\n if (!this.isConnected) {\n return;\n }\n\n grecaptchaInstance.ready(() => {\n // clone the node and append it to the body so that it can be used by the grepcaptcha script\n const cloneNode = currentNode\n .querySelector('textarea[name^=\"g-recaptcha-response\"]')\n ?.cloneNode();\n if (cloneNode) {\n cloneNode.style.display = 'none';\n document.body.appendChild(cloneNode);\n }\n\n // cleaning up the recaptcha element we added to the body\n const removeCloneNode = () => {\n cloneNode.remove();\n };\n\n if (!this.siteKey) {\n return;\n }\n // we should pass recaptchaWidgetId, but this does not allow us to run execute multiple times\n // also calling grecaptchaInstance.reset() does not work\n const exec = grecaptchaInstance?.execute(recaptchaWidgetId, { action: this.action });\n exec.then((token, e) => {\n if (e) {\n // eslint-disable-next-line no-console\n console.warn('could not execute recaptcha', e);\n } else {\n this.updateComponentsContext({\n risktoken: token,\n riskaction: this.action,\n });\n // if the component is still connected, we should try to get a new token before the token expires (2 minutes)\n if (this.isConnected) {\n setTimeout(() => {\n this.#getNewToken(grecaptchaInstance, currentNode, recaptchaWidgetId);\n }, 110000);\n }\n }\n removeCloneNode();\n });\n });\n }\n\n #createOnLoadScript() {\n window.onRecaptchaLoadCallback = () => {\n const currentNode = this.recaptchaEle;\n\n // if there are child nodes, it means that the recaptcha was already rendered\n if (currentNode.hasChildNodes()) {\n return;\n }\n\n const { grecaptchaInstance } = this;\n\n if (!grecaptchaInstance) {\n return;\n }\n\n setTimeout(() => {\n const recaptchaWidgetId = grecaptchaInstance.render(currentNode, {\n sitekey: this.siteKey,\n badge: 'inline',\n size: 'invisible',\n });\n this.#getNewToken(grecaptchaInstance, currentNode, recaptchaWidgetId);\n }, 0);\n };\n }\n}\n\nexport const RecaptchaClass = compose(draggableMixin)(RawRecaptcha);\n","import { componentName, RecaptchaClass } from './RecaptchaClass';\n\ncustomElements.define(componentName, RecaptchaClass);\n\nexport { RecaptchaClass, componentName };\n","export const getFileBase64 = (fileObj) => {\n return new Promise((resolve) => {\n const reader = new FileReader();\n reader.onload = (e) => resolve(e.target.result);\n reader.readAsDataURL(fileObj);\n });\n};\n\nexport const getFilename = (fileObj) => {\n return fileObj.name.replace(/^.*\\\\/, '');\n};\n","import { createStyleMixin, draggableMixin, componentNameValidationMixin } from '../../mixins';\nimport { compose } from '../../helpers';\nimport { getComponentName } from '../../helpers/componentHelpers';\nimport { createBaseInputClass } from '../../baseClasses/createBaseInputClass';\nimport { ButtonClass } from '@descope-ui/descope-button/class';\nimport { getFileBase64, getFilename } from './helpers';\nimport { injectStyle } from '@descope-ui/common/components-helpers';\n\nexport const componentName = getComponentName('upload-file');\n\nconst observedAttributes = [\n 'title',\n 'description',\n 'button-label',\n 'accept',\n 'readonly',\n 'button-mode',\n 'button-variant',\n 'required',\n 'size',\n 'icon',\n];\n\nconst BaseInputClass = createBaseInputClass({ componentName, baseSelector: ':host > div' });\n\nclass RawUploadFile extends BaseInputClass {\n static get observedAttributes() {\n return observedAttributes.concat(BaseInputClass.observedAttributes || []);\n }\n\n constructor() {\n super();\n\n this.attachShadow({ mode: 'open' }).innerHTML = `\n\t\t\t<div>\n <slot name=\"icon\"></slot>\n\t\t\t\t<div class=\"title\">\n\t\t\t\t\t<span class=\"title-text\"></span>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"description\"></div>\n\t\t\t\t<div class=\"button-wrapper\">\n\t\t\t\t\t<input type=\"file\" tabindex=\"-1\" aria-labelledby=\"button\"/>\n\t\t\t\t\t<descope-button id=\"button\"></descope-button>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`;\n\n injectStyle(\n `\n :host {\n\t\t\t\tdisplay: flex;\n\t\t\t}\n\t\t\t:host > div {\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\tjustify-content: center;\n\t\t\t\ttext-align: center;\n\t\t\t\tflex-direction: column;\n\t\t\t\twidth: 100%;\n\t\t\t}\n\t\t\t.button-wrapper {\n\t\t\t\tposition: relative;\n\t\t\t\twidth: fit-content;\n\t\t\t}\n\t\t\tinput {\n\t\t\t\tposition: absolute;\n\t\t\t\twidth: 100%;\n\t\t\t\theight: 100%;\n\t\t\t\topacity: 0;\n\t\t\t}\n `,\n this\n );\n\n this.wrapperEle = this.shadowRoot.querySelector('.wrapper');\n this.inputElement = this.shadowRoot.querySelector('input');\n\n this.button.onclick = () => this.inputElement.click();\n\n this.inputElement.onchange = async (e) => {\n const receivedFileList = e.target.files;\n\n if (!receivedFileList.length) {\n return;\n }\n\n this.value = await getFileBase64(receivedFileList[0]);\n\n this.updateDescription(getFilename(receivedFileList[0]));\n };\n\n this.oninvalid = () => {\n this.setAttribute('invalid', 'true');\n };\n }\n\n // this is a temp solution,\n // we should show the input error message like we have in all other inputs\n /*\n reportValidity() {\n this.defaultReportValidity();\n }\n */\n\n getValidity() {\n if (this.isRequired && !this.input.value) {\n return { valueMissing: true };\n }\n this.removeAttribute('invalid');\n return {};\n }\n\n initInputs() {\n const button = this.rootElement.querySelector('descope-button');\n button.onclick = () => this.inputElement.click();\n }\n\n attributeChangedCallback(attrName, oldValue, newValue) {\n super.attributeChangedCallback?.(attrName, oldValue, newValue);\n\n if (oldValue !== newValue) {\n if (attrName === 'title') {\n this.updateTitle(newValue);\n } else if (attrName === 'description') {\n this.updateDescription(newValue);\n } else if (attrName === 'button-label') {\n this.updateButtonLabel(newValue);\n } else if (attrName === 'button-mode') {\n this.updateButtonMode(newValue);\n } else if (attrName === 'button-variant') {\n this.updateButtonVariant(newValue);\n } else if (attrName === 'size') {\n this.updateButtonSize(newValue);\n } else if (attrName === 'accept') {\n this.updateInputAccept(newValue);\n } else if (attrName === 'readonly') {\n this.updateReadOnly(newValue);\n }\n }\n }\n\n get button() {\n return this.shadowRoot.querySelector('descope-button');\n }\n\n get input() {\n return this.shadowRoot.querySelector('input');\n }\n\n get title() {\n return this.shadowRoot.querySelector('.title-text');\n }\n\n get description() {\n return this.shadowRoot.querySelector('.description');\n }\n\n get icon() {\n return this.shadowRoot.querySelector('.icon');\n }\n\n updateTitle(val) {\n this.title.textContent = val;\n }\n\n updateDescription(val) {\n this.description.textContent = val;\n }\n\n updateButtonLabel(val) {\n this.button.textContent = val;\n }\n\n updateButtonSize(val) {\n this.button.setAttribute('size', val);\n }\n\n updateButtonMode(val) {\n this.button.setAttribute('mode', val);\n }\n\n updateButtonVariant(val) {\n this.button.setAttribute('variant', val);\n }\n\n updateInputAccept(val) {\n this.input.setAttribute('accept', val);\n }\n\n updateReadOnly(val) {\n if (val === 'true') {\n this.input.setAttribute('disabled', 'true');\n } else {\n this.input.removeAttribute('disabled');\n }\n }\n}\n\nconst buttonVars = ButtonClass.cssVarList;\nconst { host, wrapper, icon, title, description, requiredIndicator } = {\n host: { selector: () => ':host' },\n wrapper: { selector: () => ':host > div' },\n icon: { selector: () => '::slotted(*)' },\n title: { selector: () => '.title' },\n description: { selector: () => '.description' },\n requiredIndicator: { selector: () => '.title::after' },\n};\n\nexport const UploadFileClass = compose(\n createStyleMixin({ componentNameOverride: getComponentName('input-wrapper') }),\n createStyleMixin({\n mappings: {\n fontSize: {},\n fontFamily: {},\n borderColor: {},\n borderWidth: {},\n borderStyle: {},\n borderRadius: {},\n hostHeight: { ...host, property: 'height' },\n hostWidth: { ...host, property: 'width' },\n hostPadding: { property: 'padding' },\n hostDirection: [\n { ...host, property: 'direction' },\n { selector: () => ButtonClass.componentName, property: buttonVars.hostDirection },\n ],\n gap: { ...wrapper },\n lineHeight: { ...wrapper, property: 'line-height' },\n titleFontSize: { ...title, property: 'font-size' },\n titleFontWeight: { ...title, property: 'font-weight' },\n descriptionFontSize: { ...description, property: 'font-size' },\n labelTextColor: [\n { ...title, property: 'color' },\n { ...description, property: 'color' },\n ],\n iconSize: { ...icon, property: 'width' },\n requiredIndicator: { ...requiredIndicator, property: 'content' },\n },\n }),\n draggableMixin,\n componentNameValidationMixin\n)(RawUploadFile);\n","import { componentName, UploadFileClass } from './UploadFileClass';\nimport '@descope-ui/descope-button';\n\ncustomElements.define(componentName, UploadFileClass);\n\nexport { UploadFileClass, componentName };\n","import { injectStyle } from '@descope-ui/common/components-helpers';\nimport { createBaseInputClass } from '../../baseClasses/createBaseInputClass';\nimport { observeAttributes } from '../../helpers/componentHelpers';\nimport { createDispatchEvent } from '../../helpers/mixinsHelpers';\n\nexport const createBaseButtonSelectionGroupInternalClass = (componentName) => {\n class BaseButtonSelectionGroupInternalClass extends createBaseInputClass({\n componentName,\n baseSelector: 'slot',\n }) {\n constructor() {\n super();\n\n this.innerHTML = `\n <slot part=\"wrapper\"></slot>\n `;\n }\n\n dispatchChange = createDispatchEvent.bind(this, 'change');\n\n get items() {\n return this.querySelector('slot').assignedElements();\n }\n\n get isReadonly() {\n return this.getAttribute('readonly') === 'true';\n }\n\n get size() {\n return this.getAttribute('size') || 'md';\n }\n\n // eslint-disable-next-line getter-return, class-methods-use-this\n get value() {\n // eslint-disable-next-line no-console\n console.warn('get value', 'is not implemented');\n }\n\n // eslint-disable-next-line class-methods-use-this\n set value(value) {\n // eslint-disable-next-line no-console\n console.warn('set value', 'is not implemented');\n }\n\n onSizeChange() {\n this.items.forEach((item) => {\n item.setAttribute('size', this.size);\n });\n }\n\n onReadOnlyChange() {\n this.querySelector('slot').toggleAttribute('inert', this.isReadonly);\n }\n\n // eslint-disable-next-line class-methods-use-this\n getValidity() {\n // eslint-disable-next-line no-console\n console.warn('getValidity', 'is not implemented');\n }\n\n onObservedAttributeChange(attrs) {\n attrs.forEach((attr) => {\n switch (attr) {\n case 'size':\n this.onSizeChange();\n break;\n case 'readonly':\n this.onReadOnlyChange();\n break;\n default:\n break;\n }\n });\n }\n\n init() {\n // we are adding listeners before calling to super because it's stopping the events\n this.addEventListener('focus', (e) => {\n // we want to ignore focus events we are dispatching\n if (e.isTrusted) {\n this.items[0]?.focus();\n }\n });\n\n super.init?.();\n\n observeAttributes(this, this.onObservedAttributeChange.bind(this), {\n includeAttrs: ['size', 'readonly'],\n });\n }\n }\n\n return BaseButtonSelectionGroupInternalClass;\n};\n","import { getComponentName } from '../../../helpers/componentHelpers';\nimport { createBaseButtonSelectionGroupInternalClass } from '../createBaseButtonSelectionGroupInternalClass';\n\nexport const componentName = getComponentName('button-selection-group-internal');\n\nexport class ButtonSelectionGroupInternalClass extends createBaseButtonSelectionGroupInternalClass(\n componentName\n) {\n getSelectedNode() {\n return this.items.find((item) => item.hasAttribute('selected'));\n }\n\n get allowDeselect() {\n return this.getAttribute('allow-deselect') === 'true';\n }\n\n removeSelected() {\n this.getSelectedNode()?.removeAttribute('selected');\n }\n\n onClick(e) {\n if (e.target !== e.currentTarget) {\n if (e.target === this.getSelectedNode() && this.allowDeselect) {\n this.removeSelected();\n } else {\n this.setSelected(e.target);\n }\n this.dispatchChange();\n }\n }\n\n setSelected(node) {\n if (node !== this.getSelectedNode()) {\n this.removeSelected();\n node?.setAttribute('selected', 'true');\n }\n }\n\n get defaultValue() {\n return this.getAttribute('default-value');\n }\n\n setDefaultValue() {\n // we want to defer this action until all attributes are synched\n setTimeout(() => {\n if (this.defaultValue) {\n this.value = this.defaultValue;\n this.setCustomValidity();\n }\n });\n }\n\n get value() {\n return this.getSelectedNode()?.value || '';\n }\n\n set value(value) {\n const node = this.items.find((child) => child.value === value);\n this.setSelected(node);\n }\n\n getValidity() {\n if (this.isRequired && !this.value) {\n return { valueMissing: true };\n }\n\n return {};\n }\n\n init() {\n super.init();\n\n this.setDefaultValue();\n\n this.querySelector('slot').addEventListener('click', this.onClick.bind(this));\n }\n}\n","import { observeAttributes, observeChildren } from '../../helpers/componentHelpers';\nimport {\n resetInputLabelPosition,\n resetInputCursor,\n resetInputFieldDefaultWidth,\n} from '../../helpers/themeHelpers/resetHelpers';\n\nexport const buttonSelectionGroupBaseMixin = (superclass) =>\n class ButtonSelectionGroupMixinClass extends superclass {\n // eslint-disable-next-line class-methods-use-this\n #renderItem = ({ value, label }) =>\n `<descope-button-selection-group-item value=\"${value}\">${label}</descope-button-selection-group-item>`;\n\n #data;\n\n get renderItem() {\n return this.#renderItem;\n }\n\n set renderItem(renderFn) {\n this.#renderItem = renderFn;\n this.renderItems();\n }\n\n get size() {\n return this.inputElement?.size;\n }\n\n get data() {\n if (this.#data) return this.#data;\n\n const dataAttr = this.getAttribute('data');\n\n if (dataAttr) {\n try {\n const data = JSON.parse(dataAttr);\n if (this.isValidDataType(data)) {\n return data;\n }\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error('could not parse data string from attribute \"data\" - ', e.message);\n }\n }\n\n return [];\n }\n\n set data(data) {\n if (this.isValidDataType(data)) {\n this.#data = data;\n this.renderItems();\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n isValidDataType(data) {\n const isValid = Array.isArray(data);\n if (!isValid) {\n // eslint-disable-next-line no-console\n console.error('data must be an array, received:', data);\n }\n\n return isValid;\n }\n\n getItemsTemplate() {\n return this.data?.reduce?.((acc, item) => acc + (this.renderItem?.(item || {}) || ''), '');\n }\n\n renderItems() {\n const template = this.getItemsTemplate();\n if (template) this.innerHTML = template;\n }\n\n init() {\n super.init?.();\n\n this.renderItems();\n\n observeAttributes(this, this.renderItems.bind(this), { includeAttrs: ['data'] });\n\n // we want new items to get the size\n observeChildren(this, ({ addedNodes }) => {\n addedNodes.forEach((node) => {\n node.setAttribute('size', this.size);\n });\n });\n }\n };\n\nconst { host, label, requiredIndicator, internalWrapper, errorMessage } = {\n host: { selector: () => ':host' },\n label: { selector: '::part(label)' },\n requiredIndicator: { selector: '[required]::part(required-indicator)::after' },\n internalWrapper: { selector: () => ':host [part=\"internal-component\"] slot' },\n errorMessage: { selector: '::part(error-message)' },\n};\n\nexport const buttonSelectionGroupMappings = {\n hostWidth: { ...host, property: 'width' },\n hostDirection: { ...host, property: 'direction' },\n fontFamily: host,\n labelTextColor: [\n { ...label, property: 'color' },\n { ...requiredIndicator, property: 'color' },\n ],\n labelRequiredIndicator: { ...requiredIndicator, property: 'content' },\n errorMessageTextColor: { ...errorMessage, property: 'color' },\n errorMessageIcon: { ...errorMessage, property: 'background-image' },\n errorMessageIconSize: { ...errorMessage, property: 'background-size' },\n errorMessageIconPadding: { ...errorMessage, property: 'padding-inline-start' },\n errorMessageIconRepeat: { ...errorMessage, property: 'background-repeat' },\n errorMessageIconPosition: { ...errorMessage, property: 'background-position' },\n errorMessageFontSize: { ...errorMessage, property: 'font-size' },\n itemsSpacing: { ...internalWrapper, property: 'gap' },\n};\n\nexport const buttonSelectionGroupStyles = `\n\t\t\t:host {\n\t\t\t\tdisplay: inline-flex;\n\t\t\t\tmax-width: 100%;\n\t\t\t}\n\t\t\t${resetInputFieldDefaultWidth()}\n\t\t\t:host::after {\n\t\t\t\tbackground-color: transparent;\n\t\t\t}\n\t\t\t:host::part(input-field)::after {\n\t\t\t\tbackground-color: transparent;\n\t\t\t}\n\n [part=\"internal-component\"] {\n\t\t\t\t-webkit-mask-image: none;\n\t\t\t\tpadding: 0;\n\t\t\t\twidth: 100%;\n\t\t\t\theight: 100%;\n display: inline-block;\n\t\t\t\tmin-height: initial;\n\t\t\t}\n\n [part=\"internal-component\"] slot {\n box-sizing: border-box;\n width: 100%;\n display: flex;\n flex-wrap: wrap;\n\t\t\t}\n\n\t\t\tvaadin-text-field::part(input-field) {\n\t\t\t\tbackground-color: transparent;\n\t\t\t\tpadding: 0;\n\t\t\t\toverflow: hidden;\n\t\t\t\t-webkit-mask-image: none;\n\t\t\t}\n\n\t\t\tvaadin-text-field {\n\t\t\t\tmargin: 0;\n\t\t\t\tpadding: 0;\n\t\t\t\twidth: 100%\n\t\t\t}\n\n\t\t\tvaadin-text-field::before {\n\t\t\t\theight: 0;\n\t\t\t}\n\n\t\t\tvaadin-text-field[readonly] > input:placeholder-shown {\n\t\t\t\topacity: 1;\n\t\t\t}\n\n\t\t\tvaadin-text-field[readonly]::part(input-field)::after {\n\t\t\t\tborder: 0 solid;\n\t\t\t}\n\n\t\t\tvaadin-text-field::part(input-field) {\n\t\t\t\tbox-shadow: none;\n\t\t\t}\n\n ${resetInputLabelPosition('vaadin-text-field')}\n\t\t\t${resetInputCursor('vaadin-text-field')}\n `;\n","import {\n createStyleMixin,\n draggableMixin,\n createProxy,\n proxyInputMixin,\n componentNameValidationMixin,\n} from '../../../mixins';\nimport { componentName as descopeInternalComponentName } from '../descope-button-selection-group-internal/ButtonSelectionGroupInternalClass';\nimport { compose } from '../../../helpers';\nimport { forwardAttrs, getComponentName } from '../../../helpers/componentHelpers';\nimport {\n buttonSelectionGroupBaseMixin,\n buttonSelectionGroupMappings,\n buttonSelectionGroupStyles,\n} from '../baseButtonSelectionGroup';\n\nexport const componentName = getComponentName('button-selection-group');\n\nconst buttonSelectionGroupMixin = (superclass) =>\n class ButtonMultiSelectionGroupMixinClass extends superclass {\n init() {\n super.init?.();\n const template = document.createElement('template');\n\n template.innerHTML = `\n <${descopeInternalComponentName}\n \tname=\"button-selection-group\"\n \tslot=\"input\"\n tabindex=\"-1\"\n part=\"internal-component\"\n >\n <slot></slot>\n </${descopeInternalComponentName}>\n `;\n\n this.baseElement.appendChild(template.content.cloneNode(true));\n\n this.inputElement = this.shadowRoot.querySelector(descopeInternalComponentName);\n\n forwardAttrs(this, this.inputElement, {\n includeAttrs: ['size', 'default-value', 'allow-deselect'],\n });\n }\n };\n\nexport const ButtonSelectionGroupClass = compose(\n createStyleMixin({\n mappings: {\n ...buttonSelectionGroupMappings,\n },\n }),\n draggableMixin,\n proxyInputMixin({ proxyProps: ['value', 'selectionStart'] }),\n componentNameValidationMixin,\n buttonSelectionGroupBaseMixin,\n buttonSelectionGroupMixin\n)(\n createProxy({\n slots: [],\n wrappedEleName: 'vaadin-text-field',\n style: () => buttonSelectionGroupStyles,\n excludeAttrsSync: ['tabindex', 'style'],\n componentName,\n })\n);\n\nexport default ButtonSelectionGroupClass;\n","import {\n componentName,\n ButtonSelectionGroupInternalClass,\n} from './ButtonSelectionGroupInternalClass';\n\ncustomElements.define(componentName, ButtonSelectionGroupInternalClass);\n\nexport { ButtonSelectionGroupInternalClass };\n","import { createStyleMixin, draggableMixin, componentNameValidationMixin } from '../../../mixins';\nimport { createBaseClass } from '../../../baseClasses/createBaseClass';\nimport { compose } from '../../../helpers';\nimport { forwardAttrs, getComponentName } from '../../../helpers/componentHelpers';\nimport { ButtonClass } from '@descope-ui/descope-button/class';\nimport { injectStyle } from '@descope-ui/common/components-helpers';\n\nexport const componentName = getComponentName('button-selection-group-item');\n\nclass RawSelectItem extends createBaseClass({\n componentName,\n baseSelector: ':host > descope-button',\n}) {\n get size() {\n return this.getAttribute('size') || 'md';\n }\n\n get variant() {\n return this.getAttribute('variant') || 'contained';\n }\n\n get value() {\n return this.getAttribute('value') || '';\n }\n\n set value(value) {\n this.setAttribute('value', value);\n }\n\n constructor() {\n super();\n\n this.attachShadow({ mode: 'open' }).innerHTML = `\n <descope-button variant=\"${this.variant}\" size=\"${this.size}\" mode=\"primary\">\n <slot></slot>\n </descope-button>\n\t`;\n\n injectStyle(\n `\n descope-button {\n max-width: 100%;\n }\n\t\t\tdescope-button > slot {\n\t\t\t\twidth: 100%;\n\t\t\t\toverflow: hidden;\n text-overflow: ellipsis;\n display: inline-block;\n\t\t\t}\n\t\t\t:host {\n\t\t\t\tdisplay: inline-block;\n max-width: 100%\n\t\t\t}\n `,\n this\n );\n\n forwardAttrs(this, this.baseElement, { includeAttrs: ['size', 'variant'] });\n forwardAttrs(this.baseElement, this, { includeAttrs: ['focused', 'active'] });\n }\n\n handleFocus() {\n this.shadowRoot.querySelector('descope-button')?.focus();\n }\n\n focus() {\n this.handleFocus();\n }\n\n init() {\n super.init();\n this.addEventListener('focus', (e) => {\n // we want to ignore focus events we are dispatching\n if (e.isTrusted) {\n this.handleFocus();\n }\n });\n }\n}\n\nexport const ButtonSelectionGroupItemClass = compose(\n createStyleMixin({\n mappings: {\n hostDirection: {\n selector: () => ButtonClass.componentName,\n property: ButtonClass.cssVarList.hostDirection,\n },\n backgroundColor: {\n selector: () => ButtonClass.componentName,\n property: ButtonClass.cssVarList.backgroundColor,\n },\n labelTextColor: {\n selector: () => ButtonClass.componentName,\n property: ButtonClass.cssVarList.labelTextColor,\n },\n borderColor: {\n selector: () => ButtonClass.componentName,\n property: ButtonClass.cssVarList.borderColor,\n },\n borderWidth: {\n selector: () => ButtonClass.componentName,\n property: ButtonClass.cssVarList.borderWidth,\n },\n borderStyle: {\n selector: () => ButtonClass.componentName,\n property: ButtonClass.cssVarList.borderStyle,\n },\n borderRadius: {\n selector: () => ButtonClass.componentName,\n property: ButtonClass.cssVarList.borderRadius,\n },\n outlineColor: {\n selector: () => ButtonClass.componentName,\n property: ButtonClass.cssVarList.outlineColor,\n },\n },\n }),\n draggableMixin,\n componentNameValidationMixin\n)(RawSelectItem);\n","import { componentName, ButtonSelectionGroupItemClass } from './ButtonSelectionGroupItemClass';\nimport '@descope-ui/descope-button';\n\ncustomElements.define(componentName, ButtonSelectionGroupItemClass);\n\nexport { ButtonSelectionGroupItemClass };\n","import { componentName, ButtonSelectionGroupClass } from './ButtonSelectionGroupClass';\nimport '../descope-button-selection-group-internal';\nimport '../descope-button-selection-group-item';\n\ncustomElements.define(componentName, ButtonSelectionGroupClass);\n\nexport { ButtonSelectionGroupClass, componentName };\n","import { getComponentName } from '../../../helpers/componentHelpers';\nimport { createBaseButtonSelectionGroupInternalClass } from '../createBaseButtonSelectionGroupInternalClass';\n\nexport const componentName = getComponentName('button-multi-selection-group-internal');\n\nexport class ButtonMultiSelectionGroupInternalClass extends createBaseButtonSelectionGroupInternalClass(\n componentName\n) {\n #getSelectedNodes() {\n return this.items.filter((item) => item.hasAttribute('selected'));\n }\n\n onClick(e) {\n if (e.target !== e.currentTarget) {\n if (this.#getSelectedNodes().includes(e.target)) {\n e.target.removeAttribute('selected');\n } else {\n e.target.setAttribute('selected', 'true');\n }\n this.dispatchChange();\n }\n }\n\n get value() {\n return this.#getSelectedNodes().map((node) => node.value);\n }\n\n set value(values) {\n this.items.forEach((item) => {\n if (values.includes(item.value)) {\n item.setAttribute('selected', 'true');\n } else {\n item.removeAttribute('selected');\n }\n });\n }\n\n get minItemsSelection() {\n return parseInt(this.getAttribute('min-items-selection'), 10) || 0;\n }\n\n get maxItemsSelection() {\n return parseInt(this.getAttribute('max-items-selection'), 10) || 0;\n }\n\n // eslint-disable-next-line class-methods-use-this\n #isValidDataType(data) {\n const isValid = Array.isArray(data);\n if (!isValid) {\n // eslint-disable-next-line no-console\n console.error('default-values must be an array, received:', data);\n }\n\n return isValid;\n }\n\n get defaultValues() {\n const defaultValuesAttr = this.getAttribute('default-values');\n if (defaultValuesAttr) {\n try {\n const defaultValues = JSON.parse(defaultValuesAttr);\n if (this.#isValidDataType(defaultValues)) {\n return defaultValues;\n }\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error('could not parse data string from attribute \"default-values\" -', e.message);\n }\n }\n return [];\n }\n\n setDefaultValues() {\n // we want to defer this action until all attributes are synced\n setTimeout(() => {\n if (this.defaultValues) {\n this.value = this.defaultValues;\n this.setCustomValidity();\n }\n });\n }\n\n getValidity() {\n if (this.isRequired && !this.value.length) {\n return { valueMissing: true };\n }\n // If the field is not required, no minimum selection can be set\n if (this.isRequired && this.minItemsSelection && this.value.length < this.minItemsSelection) {\n return {\n rangeUnderflow: true,\n };\n }\n if (this.maxItemsSelection && this.value.length > this.maxItemsSelection) {\n return {\n rangeOverflow: true,\n };\n }\n return {};\n }\n\n init() {\n super.init();\n\n this.setDefaultValues();\n\n this.querySelector('slot').addEventListener('click', this.onClick.bind(this));\n }\n}\n","import {\n createStyleMixin,\n draggableMixin,\n createProxy,\n proxyInputMixin,\n componentNameValidationMixin,\n} from '../../../mixins';\nimport { componentName as descopeInternalComponentName } from '../descope-button-multi-selection-group-internal/ButtonMultiSelectionGroupInternalClass';\nimport { compose } from '../../../helpers';\nimport { forwardAttrs, getComponentName } from '../../../helpers/componentHelpers';\nimport {\n buttonSelectionGroupBaseMixin,\n buttonSelectionGroupMappings,\n buttonSelectionGroupStyles,\n} from '../baseButtonSelectionGroup';\n\nexport const componentName = getComponentName('button-multi-selection-group');\n\nconst buttonMultiSelectionGroupMixin = (superclass) =>\n class ButtonMultiSelectionGroupMixinClass extends superclass {\n init() {\n super.init?.();\n const template = document.createElement('template');\n\n template.innerHTML = `\n <${descopeInternalComponentName}\n \tname=\"button-selection-group\"\n \tslot=\"input\"\n tabindex=\"-1\"\n part=\"internal-component\"\n >\n <slot></slot>\n </${descopeInternalComponentName}>\n `;\n\n this.baseElement.appendChild(template.content.cloneNode(true));\n\n this.inputElement = this.shadowRoot.querySelector(descopeInternalComponentName);\n\n forwardAttrs(this, this.inputElement, {\n includeAttrs: ['size', 'default-values', 'min-items-selection', 'max-items-selection'],\n });\n }\n };\n\nexport const ButtonMultiSelectionGroupClass = compose(\n createStyleMixin({\n mappings: {\n ...buttonSelectionGroupMappings,\n },\n }),\n draggableMixin,\n proxyInputMixin({ proxyProps: ['value', 'selectionStart'] }),\n componentNameValidationMixin,\n buttonSelectionGroupBaseMixin,\n buttonMultiSelectionGroupMixin\n)(\n createProxy({\n slots: [],\n wrappedEleName: 'vaadin-text-field',\n style: () => buttonSelectionGroupStyles,\n excludeAttrsSync: ['tabindex', 'style'],\n componentName,\n })\n);\n\nexport default ButtonMultiSelectionGroupClass;\n","import {\n componentName,\n ButtonMultiSelectionGroupInternalClass,\n} from './ButtonMultiSelectionGroupInternalClass';\n\ncustomElements.define(componentName, ButtonMultiSelectionGroupInternalClass);\n\nexport { ButtonMultiSelectionGroupInternalClass };\n","import { componentName, ButtonMultiSelectionGroupClass } from './ButtonMultiSelectionGroupClass';\nimport '../descope-button-multi-selection-group-internal';\nimport '../descope-button-selection-group-item';\n\ncustomElements.define(componentName, ButtonMultiSelectionGroupClass);\n\nexport { ButtonMultiSelectionGroupClass, componentName };\n","/* eslint-disable no-param-reassign */\nimport { GridSortColumn } from '@vaadin/grid/vaadin-grid-sort-column';\n\nexport class GridTextColumnClass extends GridSortColumn {\n get sortable() {\n return this.getAttribute('sortable') === 'true';\n }\n\n _defaultRenderer(cell, _col, model) {\n const data = model.item[this.path] || '';\n const content = Array.isArray(data) ? data.join(', ') : data;\n\n this.__setTextContent(cell, content);\n cell.title = content;\n }\n\n _defaultHeaderRenderer(root, _column) {\n if (this.sortable) {\n super._defaultHeaderRenderer(root, _column);\n\n return;\n }\n\n this.__setTextContent(root, this.__getHeader(this.header, this.path));\n }\n}\n","import { getComponentName } from '../../../helpers/componentHelpers';\nimport { GridTextColumnClass } from './GridTextColumnClass';\n\nexport const componentName = getComponentName('grid-text-column');\n\ncustomElements.define(componentName, GridTextColumnClass);\n","/* eslint-disable no-param-reassign */\nimport { getComponentName } from '../../../helpers/componentHelpers';\nimport { GridCustomColumnClass } from './GridCustomColumnClass';\n\nexport const componentName = getComponentName('grid-custom-column');\n\ncustomElements.define(componentName, GridCustomColumnClass);\n","/* eslint-disable no-param-reassign */\nimport { GridTextColumnClass } from '../descope-grid-text-column/GridTextColumnClass';\n\nexport class GridCustomColumnClass extends GridTextColumnClass {\n _defaultRenderer(cell, _col, model) {\n const content = model.item[this.path] || '';\n\n // we get a list of elements that can be used to render the content\n // each element can have a \"pattern\" attribute which contains regex expression\n // we are going over the elements, and when finding an element which is pattern matches the data,\n // we are cloning this element, and injecting the data as its child\n const contentEle = Array.from(this.children).find((child) => {\n const pattern = child.getAttribute('data-pattern');\n if (!pattern) return true;\n\n const regEx = new RegExp(pattern);\n return regEx.test(content);\n });\n\n if (!contentEle) {\n this.__setTextContent(cell, model.item[this.path] || '');\n\n return;\n }\n\n const newEle = contentEle.cloneNode(true);\n newEle.textContent = content || '';\n cell.innerHTML = '';\n cell.append(newEle);\n }\n}\n","import { GridSelectionColumn } from '@vaadin/grid/vaadin-grid-selection-column';\n\nconst createCheckboxEle = () => {\n const checkbox = document.createElement('descope-checkbox');\n\n checkbox.setAttribute('bordered', 'true');\n checkbox.setAttribute('size', 'xs');\n\n return checkbox;\n};\n\nconst getIsAllItemsSelected = (grid) =>\n !!grid.items?.length && grid.selectedItems.length === grid.items.length;\n\nexport class GridSelectionColumnClass extends GridSelectionColumn {\n // eslint-disable-next-line class-methods-use-this\n _onHeaderRendererOrBindingChanged() {}\n\n // eslint-disable-next-line class-methods-use-this\n _headerRenderer(cell) {\n const grid = cell.parentNode;\n\n let checkbox = cell.querySelector('descope-checkbox');\n if (!checkbox) {\n checkbox = createCheckboxEle();\n\n checkbox.addEventListener('input', () => {\n const isAllItemsSelected = getIsAllItemsSelected(grid);\n if (isAllItemsSelected) {\n grid.selectedItems = [];\n } else {\n grid.selectedItems = grid.items;\n }\n });\n\n cell.appendChild(checkbox);\n }\n\n checkbox.setAttribute('checked', getIsAllItemsSelected(grid));\n }\n\n // eslint-disable-next-line class-methods-use-this\n _defaultRenderer(cell, col, model) {\n const grid = cell.parentNode;\n\n let checkbox = cell.querySelector('descope-checkbox');\n if (!checkbox) {\n checkbox = createCheckboxEle();\n cell.appendChild(checkbox);\n }\n\n checkbox.onchange = () => {\n checkbox.checked ? grid.selectItem(model.item) : grid.deselectItem(model.item);\n };\n\n checkbox.setAttribute('checked', model.selected);\n }\n}\n","import '../../boolean-fields/descope-checkbox';\nimport { getComponentName } from '../../../helpers/componentHelpers';\nimport { GridSelectionColumnClass } from './GridSelectionColumnClass';\n\nexport const componentName = getComponentName('grid-selection-column');\n\ncustomElements.define(componentName, GridSelectionColumnClass);\n","/* eslint-disable no-param-reassign */\nimport { GridSortColumn } from '@vaadin/grid/vaadin-grid-sort-column';\n\nexport class GridItemDetailsColumnClass extends GridSortColumn {\n get sortable() {\n return this.getAttribute('sortable') === 'true';\n }\n\n // eslint-disable-next-line class-methods-use-this\n _defaultRenderer(cell, _col, model) {\n const grid = _col._gridValue;\n const itemIdx = grid.detailsOpenedItems?.indexOf(model.item) ?? -1;\n const isOpened = itemIdx !== -1;\n\n const toggleIcon = document.createElement('vaadin-icon');\n toggleIcon.icon = isOpened ? 'vaadin:angle-up' : 'vaadin:angle-down';\n toggleIcon.classList.add('toggle-details-button', isOpened ? 'opened' : 'closed');\n cell.innerHTML = '';\n cell.append(toggleIcon);\n\n toggleIcon.onclick = () => {\n grid.detailsOpenedItems = isOpened\n ? grid.detailsOpenedItems.toSpliced(itemIdx, 1)\n : [...grid.detailsOpenedItems, model.item];\n };\n }\n\n _defaultHeaderRenderer(root, _column) {\n if (this.sortable) {\n super._defaultHeaderRenderer(root, _column);\n\n return;\n }\n\n this.__setTextContent(root, this.__getHeader(this.header, this.path));\n }\n}\n","import { getComponentName } from '../../../helpers/componentHelpers';\nimport { GridItemDetailsColumnClass } from './GridItemDetailsColumnClass';\nimport '@vaadin/icon';\nimport '@vaadin/icons';\n\nexport const componentName = getComponentName('grid-item-details-column');\n\ncustomElements.define(componentName, GridItemDetailsColumnClass);\n","export const decode = (input) => {\n const txt = document.createElement('textarea');\n txt.innerHTML = input;\n return txt.value;\n};\n\nexport const tpl = (input, inline) => {\n return inline ? input : `<pre>${input}</pre>`;\n};\n","import hljs from 'highlight.js';\nimport { createStyleMixin, draggableMixin, componentNameValidationMixin } from '../../mixins';\nimport { compose } from '../../helpers';\nimport { getComponentName, observeChildren } from '../../helpers/componentHelpers';\nimport { createBaseClass } from '../../baseClasses/createBaseClass';\nimport { decode, tpl } from './helpers';\nimport { injectStyle } from '@descope-ui/common/components-helpers';\n\nexport const componentName = getComponentName('code-snippet');\n\nclass CodeSnippet extends createBaseClass({ componentName, baseSelector: ':host > code' }) {\n static get observedAttributes() {\n return ['lang', 'inline'];\n }\n\n constructor() {\n super();\n\n this.attachShadow({ mode: 'open' }).innerHTML = `\n <code class=\"hljs\"></code>\n `;\n\n injectStyle(\n `\n :host {\n display: inline-block;\n width: 100%;\n }\n code {\n display: block;\n width: 100%;\n min-height: 1em;\n overflow-x: scroll;\n overflow-y: scroll;\n }\n pre {\n margin: 0;\n }\n `,\n this\n );\n }\n\n init() {\n super.init?.();\n\n this.lang = this.getAttribute('lang');\n this.isInline = this.getAttribute('inline') === 'true';\n\n observeChildren(this, this.#renderSnippet.bind(this));\n }\n\n get contentNode() {\n return this.shadowRoot.querySelector(this.baseSelector);\n }\n\n attributeChangedCallback(attrName, oldValue, newValue) {\n super.attributeChangedCallback?.(attrName, oldValue, newValue);\n\n if (oldValue !== newValue) {\n if (attrName === 'inline') {\n this.isInline = newValue;\n }\n\n if (attrName === 'lang') {\n this.lang = newValue;\n }\n\n this.#renderSnippet();\n }\n }\n\n #renderSnippet() {\n const sanitized = decode(this.textContent);\n const language = this.lang;\n\n if (!language) {\n this.contentNode.textContent = sanitized;\n return;\n }\n\n const { value: highlighted } = hljs.highlight(sanitized, { language });\n\n this.contentNode.innerHTML = tpl(highlighted, this.isInline);\n }\n}\n\nconst {\n root,\n docTag,\n keyword,\n metaKeyword,\n templateTag,\n templateVariable,\n type,\n variableLanguage,\n title,\n titleClass,\n titleClassInherited,\n titleFunction,\n attr,\n attribute,\n literal,\n meta,\n number,\n operator,\n variable,\n selectorAttr,\n selectorClass,\n selectorId,\n regexp,\n string,\n metaString,\n builtIn,\n symbol,\n comment,\n code,\n formula,\n name,\n quote,\n selectorTag,\n selectorPseudo,\n subst,\n section,\n bullet,\n emphasis,\n strong,\n addition,\n deletion,\n charEscape,\n link,\n params,\n property,\n punctuation,\n tag,\n} = {\n root: { selector: () => '.hljs' },\n docTag: { selector: () => '.hljs-doctag' },\n keyword: { selector: () => '.hljs-keyword' },\n metaKeyword: { selector: () => '.hljs-meta .hljs-keyword' },\n templateTag: { selector: () => '.hljs-template-tag' },\n templateVariable: { selector: () => '.hljs-template-variable' },\n type: { selector: () => '.hljs-type' },\n variableLanguage: { selector: () => '.hljs-variable.language' },\n title: { selector: () => '.hljs-title' },\n titleClass: { selector: () => '.hljs-title.class_' },\n titleClassInherited: { selector: () => '.hljs-title.class_.inherited__' },\n titleFunction: { selector: () => '.hljs-title.function_' },\n attr: { selector: () => '.hljs-attr' },\n attribute: { selector: () => '.hljs-attribute' },\n literal: { selector: () => '.hljs-literal' },\n meta: { selector: () => '.hljs-meta' },\n number: { selector: () => '.hljs-number' },\n operator: { selector: () => '.hljs-operator' },\n variable: { selector: () => '.hljs-variable' },\n selectorAttr: { selector: () => '.hljs-selector-attr' },\n selectorClass: { selector: () => '.hljs-selector-class' },\n selectorId: { selector: () => '.hljs-selector-id' },\n regexp: { selector: () => '.hljs-regexp' },\n string: { selector: () => '.hljs-string' },\n metaString: { selector: () => '.hljs-meta .hljs-string' },\n builtIn: { selector: () => '.hljs-built_in' },\n symbol: { selector: () => '.hljs-symbol' },\n comment: { selector: () => '.hljs-comment' },\n code: { selector: () => '.hljs-code' },\n formula: { selector: () => '.hljs-formula' },\n name: { selector: () => '.hljs-name' },\n quote: { selector: () => '.hljs-quote' },\n selectorTag: { selector: () => '.hljs-selector-tag' },\n selectorPseudo: { selector: () => '.hljs-selector-pseudo' },\n subst: { selector: () => '.hljs-subst' },\n section: { selector: () => '.hljs-section' },\n bullet: { selector: () => '.hljs-bullet' },\n emphasis: { selector: () => '.hljs-emphasis' },\n strong: { selector: () => '.hljs-strong' },\n addition: { selector: () => '.hljs-addition' },\n deletion: { selector: () => '.hljs-deletion' },\n charEscape: { selector: () => '.hljs-char.escape' },\n link: { selector: () => '.hljs-link' },\n params: { selector: () => '.hljs-params' },\n property: { selector: () => '.hljs-property' },\n punctuation: { selector: () => '.hljs-punctuation' },\n tag: { selector: () => '.hljs-tag' },\n};\n\nexport const CodeSnippetClass = compose(\n createStyleMixin({\n mappings: {\n rootBgColor: { ...root, property: 'background-color' },\n rootTextColor: { ...root, property: 'color' },\n docTagTextColor: { ...docTag, property: 'color' },\n keywordTextColor: { ...keyword, property: 'color' },\n metaKeywordTextColor: { ...metaKeyword, property: 'color' },\n templateTagTextColor: { ...templateTag, property: 'color' },\n templateVariableTextColor: { ...templateVariable, property: 'color' },\n typeTextColor: { ...type, property: 'color' },\n variableLanguageTextColor: { ...variableLanguage, property: 'color' },\n titleTextColor: { ...title, property: 'color' },\n titleClassTextColor: { ...titleClass, property: 'color' },\n titleClassInheritedTextColor: { ...titleClassInherited, property: 'color' },\n titleFunctionTextColor: { ...titleFunction, property: 'color' },\n attrTextColor: { ...attr, property: 'color' },\n attributeTextColor: { ...attribute, property: 'color' },\n literalTextColor: { ...literal, property: 'color' },\n metaTextColor: { ...meta, property: 'color' },\n numberTextColor: { ...number, property: 'color' },\n operatorTextColor: { ...operator, property: 'color' },\n variableTextColor: { ...variable, property: 'color' },\n selectorAttrTextColor: { ...selectorAttr, property: 'color' },\n selectorClassTextColor: { ...selectorClass, property: 'color' },\n selectorIdTextColor: { ...selectorId, property: 'color' },\n regexpTextColor: { ...regexp, property: 'color' },\n stringTextColor: { ...string, property: 'color' },\n metaStringTextColor: { ...metaString, property: 'color' },\n builtInTextColor: { ...builtIn, property: 'color' },\n symbolTextColor: { ...symbol, property: 'color' },\n commentTextColor: { ...comment, property: 'color' },\n codeTextColor: { ...code, property: 'color' },\n formulaTextColor: { ...formula, property: 'color' },\n nameTextColor: { ...name, property: 'color' },\n quoteTextColor: { ...quote, property: 'color' },\n selectorTagTextColor: { ...selectorTag, property: 'color' },\n selectorPseudoTextColor: { ...selectorPseudo, property: 'color' },\n substTextColor: { ...subst, property: 'color' },\n sectionTextColor: { ...section, property: 'color' },\n bulletTextColor: { ...bullet, property: 'color' },\n emphasisTextColor: { ...emphasis, property: 'color' },\n strongTextColor: { ...strong, property: 'color' },\n additionTextColor: { ...addition, property: 'color' },\n additionBgColor: { ...addition, property: 'background-color' },\n deletionTextColor: { ...deletion, property: 'color' },\n deletionBgColor: { ...deletion, property: 'background-color' },\n charEscapeTextColor: { ...charEscape, property: 'color' },\n linkTextColor: { ...link, property: 'color' },\n paramsTextColor: { ...params, property: 'color' },\n propertyTextColor: { ...property, property: 'color' },\n punctuationTextColor: { ...punctuation, property: 'color' },\n tagTextColor: { ...tag, property: 'color' },\n },\n }),\n draggableMixin,\n componentNameValidationMixin\n)(CodeSnippet);\n","import { componentName, CodeSnippetClass } from './CodeSnippetClass';\n\ncustomElements.define(componentName, CodeSnippetClass);\n\nexport { CodeSnippetClass, componentName };\n","import { toTitle } from '../../helpers';\n\nexport const isValidDataType = (data) => {\n const isValid = Array.isArray(data);\n if (!isValid) {\n // eslint-disable-next-line no-console\n console.error('data must be an array, received:', data);\n }\n\n return isValid;\n};\n\nexport const isPlainObject = (value) => value?.constructor === Object;\n\nconst isXml = (str) => /^\\s*<[\\s\\S]*>/.test(str);\n\nconst escapeXML = (s) => {\n const dom = document.createElement('div');\n dom.textContent = s;\n return dom.innerHTML;\n};\n\nexport const getValueType = (value) => {\n if (isPlainObject(value)) return 'object';\n if (Array.isArray(value)) return 'array';\n if (isXml(value)) return 'xml';\n\n return 'text';\n};\n\nexport const renderCodeSnippet = (value, lang) =>\n `<descope-code-snippet lang=\"${lang}\" class=\"row-details__value code\">${escapeXML(value)}</descope-code-snippet>`;\n\nexport const renderText = (text) =>\n `<div class=\"row-details__value text\" title=\"${text}\">${escapeXML(text)}</div>`;\nconst renderJson = (value) => renderCodeSnippet(JSON.stringify(value, null, 2), 'json');\nconst renderXml = (value) => renderCodeSnippet(value, 'xml');\n\nconst defaultRowDetailsValueRenderer = (value) => {\n const valueType = getValueType(value);\n\n if (valueType === 'object') {\n return renderJson(value);\n }\n\n if (valueType === 'xml') {\n return renderXml(value);\n }\n\n if (valueType === 'array') {\n if (value.some((v) => getValueType(v) === 'object')) {\n return renderJson(value);\n }\n return renderText(value.join(',\\n'));\n }\n\n return renderText(value);\n};\n\nexport const defaultRowDetailsRenderer = (item, itemLabelsMapping) => {\n return `\n <div class=\"row-details\">\n ${Object.entries(item)\n .map(\n ([key, value]) =>\n `<div class=\"row-details__item\" >\n <div class=\"row-details__label\">${itemLabelsMapping[key] || toTitle(key)}</div>\n ${defaultRowDetailsValueRenderer(value)}\n </div>`\n )\n .join('\\n')}\n</div>\n `;\n};\n","import { compose } from '../../helpers';\nimport { getComponentName } from '../../helpers/componentHelpers';\nimport {\n componentNameValidationMixin,\n createProxy,\n createStyleMixin,\n draggableMixin,\n} from '../../mixins';\n\nimport { defaultRowDetailsRenderer, isValidDataType } from './helpers';\n\nexport const componentName = getComponentName('grid');\n\nconst GridMixin = (superclass) =>\n class GridMixinClass extends superclass {\n #columns;\n\n init() {\n super.init?.();\n this.handleColumns();\n this.forwardSelectedItemsChange();\n\n // disable the grid sort\n this.baseElement._mapSorters = () => {};\n\n // there is an issue in vaadin that on some cases when trying to render the details panel, the row is null and this fn throwing\n // so we override it to prevent the error\n const origUpdateDetailsCellHeight = this.baseElement._updateDetailsCellHeight;\n this.baseElement._updateDetailsCellHeight = (row) => {\n if (!row) return;\n origUpdateDetailsCellHeight.call(this.baseElement, row);\n };\n\n this.baseElement.rowDetailsRenderer = this.#rowDetailsRenderer.bind(this);\n }\n\n // this renders the details panel content\n // in order to open it, the descope-grid-item-details-column should be used\n #rowDetailsRenderer = async (cell, _col, model) => {\n // prevent details panel from being scrolled into view when clicked\n cell.addEventListener('mousedown', (e) => e.stopImmediatePropagation(), true);\n\n const template = this.getRowDetailsTemplate(model.item);\n\n // eslint-disable-next-line no-param-reassign\n cell.innerHTML = '';\n cell.append(template.content.cloneNode(true));\n };\n\n getRowDetailsTemplate(item) {\n const itemLabelsMapping = this.#columns.reduce(\n (acc, { path, header }) => (!path || !header ? acc : { ...acc, [path]: header }),\n {}\n );\n const template =\n this.rowDetailsRenderer?.(item, itemLabelsMapping) ??\n defaultRowDetailsRenderer(item, itemLabelsMapping);\n\n switch (true) {\n case template instanceof HTMLTemplateElement:\n return template;\n case typeof template === 'string':\n return Object.assign(document.createElement('template'), { innerHTML: template });\n default:\n throw new Error('rowDetailsRenderer should return a string or a template');\n }\n }\n\n forwardSelectedItemsChange() {\n this.baseElement.addEventListener('selected-items-changed', (e) => {\n this.dispatchEvent(\n new CustomEvent('selected-items-changed', {\n bubbles: true,\n composed: true,\n detail: e.detail,\n })\n );\n });\n }\n\n attributeChangedCallback(attrName, oldValue, newValue) {\n super.attributeChangedCallback?.(attrName, oldValue, newValue);\n\n if (attrName === 'columns') {\n this.setColumnsDataFromAttr();\n }\n }\n\n handleColumns() {\n if (this.columnsAttr) {\n this.setColumnsDataFromAttr();\n } else if (this.children.length) {\n this.setColumnsFromChildren();\n }\n }\n\n setColumnsFromChildren() {\n this.#columns = Array.from(this.children).map((child) => {\n return {\n path: child.getAttribute('path'),\n header: child.getAttribute('header'),\n type: child.localName.match('^descope-grid-(\\\\w+)-column$')?.[1] || 'text',\n\n attrs: ['frozen', 'resizable', 'auto-width', 'status'].reduce((acc, attrName) => {\n const attrVal = child.getAttribute(attrName);\n\n if (attrVal) {\n acc[attrName] = attrVal;\n }\n\n return acc;\n }, {}),\n };\n });\n }\n\n get columnsAttr() {\n return this.getAttribute('columns');\n }\n\n setColumnsDataFromAttr() {\n try {\n const data = JSON.parse(this.columnsAttr);\n if (isValidDataType(data)) {\n this.columns = data;\n }\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error('could not parse data string from attribute \"columns\" -', e.message);\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n #renderColumn = ({ path, header, type, attrs }) => {\n const colAttrs = Object.entries(attrs)\n .map(([key, value]) => `${key}=\"${value}\"`)\n .join(' ');\n\n const tagName = `descope-grid-${type}-column`;\n\n return `<${tagName} header=\"${header}\" path=\"${path}\" ${colAttrs}></${tagName}>`;\n };\n\n get renderColumn() {\n return this.#renderColumn;\n }\n\n set renderColumn(renderFn) {\n this.#renderColumn = renderFn;\n this.renderColumns();\n }\n\n getColumnsTemplate() {\n return this.#columns?.reduce?.(\n (acc, item) => acc + (this.renderColumn?.(item || {}) || ''),\n ''\n );\n }\n\n // there is an issue in vaadin-grid, when rowDetailsRenderer is set, it renders an empty details panel\n reassignRowDetailsRenderer() {\n this.baseElement.rowDetailsRenderer = null;\n setTimeout(() => {\n this.baseElement.rowDetailsRenderer = this.#rowDetailsRenderer.bind(this);\n }, 0);\n }\n\n renderColumns() {\n const template = this.getColumnsTemplate();\n if (template) {\n this.reassignRowDetailsRenderer();\n this.innerHTML = template;\n }\n }\n\n get grid() {\n return this.shadowRoot.querySelector('vaadin-grid');\n }\n\n get data() {\n return this.grid.items;\n }\n\n set data(data) {\n if (isValidDataType(data) && this.grid.items !== data) {\n this.grid.items = data;\n\n if (this.grid.selectedItems) {\n const itemsIds = new Set(\n this.grid.items.map((item) => item[this.uniqueColumnId] ?? item)\n );\n\n const newSelectedItems = this.grid.selectedItems.filter((selectedItem) =>\n itemsIds.has(selectedItem[this.uniqueColumnId] ?? selectedItem)\n );\n\n // we want to update the selected items only if there is a reason,\n // to prevent redundant notifications\n if (this.grid.selectedItems.length !== newSelectedItems.length) {\n this.grid.selectedItems = newSelectedItems;\n }\n }\n }\n }\n\n get columns() {\n return this.#columns;\n }\n\n set columns(data) {\n this.#columns = data;\n this.renderColumns();\n }\n\n get paths() {\n return this.columns.map((col) => col.path);\n }\n\n get uniqueColumnId() {\n return this.getAttribute('unique-column-id');\n }\n };\n\nconst {\n host,\n headerRow,\n headerRowCell,\n contentRow,\n firstRow,\n sortIndicators,\n activeSortIndicator,\n selectedRow,\n rowSeparator,\n resizeHandle,\n toggleDetailsPanelButton,\n toggleDetailsPanelButtonOpened,\n toggleDetailsPanelButtonClosed,\n detailsPanel,\n detailsPanelLabels,\n selectedRowCell,\n detailsPanelContent,\n} = {\n host: { selector: () => 'vaadin-grid' },\n headerRow: { selector: () => '::part(header-cell)' },\n headerRowCell: { selector: () => 'vaadin-grid::part(header-cell)' },\n contentRow: { selector: () => '::part(cell)' },\n firstRow: { selector: () => '::part(first-header-row-cell)' },\n selectedRow: { selector: () => '::part(selected-row)' },\n selectedRowCell: { selector: () => '::part(selected-row-cell)' },\n sortIndicators: { selector: () => 'vaadin-grid-sorter::part(indicators)' },\n activeSortIndicator: { selector: () => 'vaadin-grid-sorter[direction]' },\n rowSeparator: { selector: () => 'vaadin-grid::part(body-cell)' },\n resizeHandle: { selector: () => '::part(resize-handle)' },\n toggleDetailsPanelButton: { selector: () => 'vaadin-grid vaadin-icon.toggle-details-button' },\n toggleDetailsPanelButtonOpened: {\n selector: () => 'vaadin-grid vaadin-icon.toggle-details-button.opened',\n },\n toggleDetailsPanelButtonClosed: {\n selector: () => 'vaadin-grid vaadin-icon.toggle-details-button.closed',\n },\n detailsPanel: { selector: () => 'vaadin-grid::part(details-cell)' },\n detailsPanelLabels: { selector: () => 'vaadin-grid .row-details__label' },\n detailsPanelContent: { selector: () => 'vaadin-grid .row-details' },\n};\n\nexport const GridClass = compose(\n createStyleMixin({ componentNameOverride: getComponentName('input-wrapper') }),\n createStyleMixin({\n mappings: {\n hostWidth: { selector: () => ':host', property: 'width' },\n hostHeight: { selector: () => ':host', property: 'height' },\n hostMinHeight: { selector: () => ':host', property: 'min-height' },\n fontFamily: [{ ...headerRow }, { ...contentRow }],\n fontSize: [{ ...headerRow }, { ...contentRow }],\n fontWeight: { ...contentRow },\n valueTextColor: { ...contentRow, property: 'color' },\n backgroundColor: [\n { ...host, property: 'background-color' },\n { ...contentRow, property: 'background-color' },\n ],\n sortIndicatorsColor: { ...sortIndicators, property: 'color' },\n activeSortIndicator: { ...activeSortIndicator, property: 'color' },\n borderColor: { ...host, property: 'border-color' },\n borderWidth: { ...host, property: 'border-width' },\n borderStyle: { ...host, property: 'border-style' },\n borderRadius: { ...host, property: 'border-radius' },\n selectedBackgroundColor: [\n { ...selectedRow, property: 'background-color' },\n { ...selectedRowCell, property: 'background-color' },\n ],\n headerRowTextColor: { ...headerRowCell, property: 'color' },\n separatorColor: [\n { ...firstRow, property: 'border-bottom-color' },\n { ...rowSeparator, property: 'border-top-color' },\n ],\n resizeHandleColor: { ...resizeHandle, property: 'background-color' },\n hostDirection: { ...host, property: 'direction', fallback: 'ltr' },\n toggleDetailsPanelButtonSize: [\n { ...toggleDetailsPanelButton, property: 'width' },\n { ...toggleDetailsPanelButton, property: 'height' },\n ],\n toggleDetailsPanelButtonOpenedColor: { ...toggleDetailsPanelButtonOpened, property: 'color' },\n toggleDetailsPanelButtonClosedColor: { ...toggleDetailsPanelButtonClosed, property: 'color' },\n toggleDetailsPanelButtonCursor: { ...toggleDetailsPanelButton, property: 'cursor' },\n detailsPanelBackgroundColor: { ...detailsPanel, property: 'background-color' },\n detailsPanelBorderTopColor: { ...detailsPanel, property: 'border-top-color' },\n detailsPanelLabelsColor: { ...detailsPanelLabels, property: 'color' },\n detailsPanelLabelsFontSize: { ...detailsPanelLabels, property: 'font-size' },\n detailsPanelItemsGap: { ...detailsPanelContent, property: 'grid-gap' },\n detailsPanelPadding: { ...detailsPanelContent, property: 'padding' },\n },\n }),\n draggableMixin,\n componentNameValidationMixin,\n GridMixin\n)(\n createProxy({\n delegatesFocus: false,\n slots: [''],\n wrappedEleName: 'vaadin-grid',\n style: () => `\n /*css*/\n vaadin-grid {\n overflow: hidden;\n height: 100%;\n min-height: 300px;\n }\n vaadin-grid-cell-content {\n display: flex;\n }\n vaadin-grid::part(selected-row-cell) {\n background-image: none;\n box-shadow: none;\n background-color: inherit;\n }\n vaadin-grid::part(details-cell) {\n border-top-style: dashed;\n border-top-width: 1px;\n }\n vaadin-grid .row-details {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(max(200px, calc(100%/4 - var(${GridClass.cssVarList.detailsPanelItemsGap}))), 1fr));\n width: 100%;\n }\n vaadin-grid .row-details__item:has(.row-details__value.code) {\n grid-column: 1 / -1;\n order: 2;\n }\n vaadin-grid .row-details__value.text {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: pre;\n }\n vaadin-grid .row-details__value.code {\n margin-top: 5px;\n max-height: 120px;\n overflow: scroll;\n font-size: 0.85em;\n }\n vaadin-grid vaadin-icon.toggle-details-button {\n margin: auto;\n }\n /*!css*/\n\t\t`,\n excludeAttrsSync: ['columns', 'tabindex', 'style'],\n componentName,\n })\n);\n","import '@vaadin/grid';\nimport './descope-grid-text-column';\nimport './descope-grid-custom-column';\nimport './descope-grid-selection-column';\nimport './descope-grid-item-details-column';\nimport '../descope-code-snippet'; // this is needed for the details panel\n\nimport { componentName, GridClass } from './GridClass';\n\ncustomElements.define(componentName, GridClass);\n\nexport { GridClass, componentName };\n","import { compose, compareArraysUnordered } from '../../helpers';\nimport {\n forwardAttrs,\n getComponentName,\n observeAttributes,\n observeChildren,\n} from '../../helpers/componentHelpers';\nimport {\n resetInputLabelPosition,\n resetInputCursor,\n resetInputPlaceholder,\n resetInputReadonlyStyle,\n useHostExternalPadding,\n inputFloatingLabelStyle,\n} from '../../helpers/themeHelpers/resetHelpers';\nimport {\n createStyleMixin,\n draggableMixin,\n createProxy,\n componentNameValidationMixin,\n portalMixin,\n proxyInputMixin,\n changeMixin,\n} from '../../mixins';\n\nexport const componentName = getComponentName('multi-select-combo-box');\n\nconst multiSelectComboBoxMixin = (superclass) =>\n class MultiSelectComboBoxMixinClass extends superclass {\n static get observedAttributes() {\n return ['readonly'];\n }\n\n // eslint-disable-next-line class-methods-use-this\n #renderItem = ({ displayName, value, label }) => {\n const ele = document.createElement('span');\n ele.setAttribute('data-name', label);\n ele.setAttribute('data-id', value);\n ele.textContent = displayName || label;\n\n return ele.outerHTML;\n };\n\n #data;\n\n #value = [];\n\n get defaultValues() {\n const defaultValuesAttr = this.getAttribute('default-values');\n if (defaultValuesAttr) {\n try {\n const defaultValues = JSON.parse(defaultValuesAttr);\n if (this.isValidDataType(defaultValues)) {\n return defaultValues;\n }\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error('could not parse data string from attribute \"default-values\" -', e.message);\n }\n }\n return [];\n }\n\n get renderItem() {\n return this.#renderItem;\n }\n\n set renderItem(renderFn) {\n this.#renderItem = renderFn;\n this.renderItems();\n }\n\n get data() {\n if (this.#data) return this.#data;\n\n const dataAttr = this.getAttribute('data');\n\n if (dataAttr) {\n try {\n const data = JSON.parse(dataAttr);\n if (this.isValidDataType(data)) {\n return data;\n }\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error('could not parse data string from attribute \"data\" -', e.message);\n }\n }\n\n return [];\n }\n\n set data(data) {\n if (this.isValidDataType(data)) {\n this.#data = data;\n this.renderItems();\n }\n }\n\n get allowCustomValues() {\n return this.getAttribute('allow-custom-value') === 'true';\n }\n\n get minItemsSelection() {\n return parseInt(this.getAttribute('min-items-selection'), 10) || 0;\n }\n\n get maxItemsSelection() {\n return parseInt(this.getAttribute('max-items-selection'), 10) || 0;\n }\n\n // eslint-disable-next-line class-methods-use-this\n isValidDataType(data) {\n const isValid = Array.isArray(data);\n if (!isValid) {\n // eslint-disable-next-line no-console\n console.error('data and default-values must be an array, received:', data);\n }\n\n return isValid;\n }\n\n getItemsTemplate() {\n return this.data?.reduce?.((acc, item) => acc + (this.renderItem?.(item || {}) || ''), '');\n }\n\n renderItems() {\n const template = this.getItemsTemplate();\n if (template) this.innerHTML = template;\n }\n\n updateSelectedItems() {\n // This is a list of all the selected items, including ones that may have been removed from the DOM\n const currentSelected =\n this.baseElement.selectedItems?.map((item) => item.getAttribute('data-id')) || [];\n\n // if there are selected items, we want to trigger a potential update to the value if some child elements were removed\n if (currentSelected.length > 0) {\n // setting the value checks that the selected items are still in the DOM and will not set the value if they are not\n this.value = currentSelected;\n }\n\n // otherwise, if default value is specified, set default value as selected item\n if (this.value.length === 0) {\n this.setDefaultValues();\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n customValueTransformFn(val) {\n return val;\n }\n\n // We want to override Vaadin's Combo Box value setter. This is needed since Vaadin couples between the\n // field that it searches the value, and the finaly display value of the input.\n // We provide a custom transform function to override that behavior.\n setComboBoxDescriptor() {\n const valueDescriptor = Object.getOwnPropertyDescriptor(\n this.inputElement.constructor.prototype,\n 'value'\n );\n\n const comboBox = this;\n\n Object.defineProperties(this.inputElement, {\n value: {\n ...valueDescriptor,\n set(val) {\n const transformedValue = comboBox.customValueTransformFn(val) || '';\n\n if (transformedValue === this.value) {\n return;\n }\n\n valueDescriptor.set.call(this, transformedValue);\n },\n },\n });\n }\n\n // To prevent duplicate items for the multi select options, we dedup them based on the \"data-id\" attribute\n // eslint-disable-next-line class-methods-use-this\n #dedupItems(items) {\n return Array.from(\n new Map(items.map((item) => [item.getAttribute('data-id'), item])).values()\n );\n }\n\n // vaadin api is to set props on their combo box node,\n // in order to avoid it, we are passing the children of this component\n // to the items & renderer props, so it will be used as the combo box items\n #onChildrenChange() {\n const items = Array.from(this.children);\n const dedupItems = this.#dedupItems(items);\n\n // we want the data-name attribute to be accessible as an object attribute\n if (items.length) {\n this.removeAttribute('has-no-options');\n\n dedupItems.forEach((node) => {\n Object.defineProperty(node, 'data-name', {\n value: node.getAttribute('data-name'),\n configurable: true,\n writable: true,\n });\n Object.defineProperty(node, 'data-id', {\n value: node.getAttribute('data-id'),\n configurable: true,\n writable: true,\n });\n });\n\n this.baseElement.items = dedupItems;\n\n setTimeout(() => {\n // set timeout to ensure this runs after customValueTransformFn had the chance to be overriden\n this.updateSelectedItems();\n }, 0);\n } else {\n this.baseElement.items = [];\n this.setAttribute('has-no-options', '');\n }\n\n // use vaadin combobox custom renderer to render options as HTML\n // and not via default renderer, which renders only the data-name's value\n // in its own HTML template\n this.baseElement.renderer = (root, combo, model) => {\n // eslint-disable-next-line no-param-reassign\n root.innerHTML = model.item.outerHTML;\n };\n }\n\n // the default vaadin behavior is to attach the overlay to the body when opened\n // we do not want that because it's difficult to style the overlay in this way\n // so we override it to open inside the shadow DOM\n #overrideOverlaySettings() {\n const overlay = this.baseElement.shadowRoot\n .querySelector('vaadin-multi-select-combo-box-internal')\n .shadowRoot.querySelector('vaadin-multi-select-combo-box-overlay');\n overlay._attachOverlay = () => {\n overlay.bringToFront();\n };\n overlay._detachOverlay = () => {};\n overlay._enterModalState = () => {};\n }\n\n #handleCustomValues() {\n if (this.allowCustomValues) {\n this.baseElement.addEventListener('custom-value-set', (e) => {\n const newItemHtml = this.#renderItem({\n label: e.detail,\n displayName: e.detail,\n value: e.detail,\n });\n this.innerHTML += newItemHtml;\n // The internal filter needs to be removed, otherwise there's a bug where a new custom item\n // added can't be removed from the dropdown because of how the vaadin component is implemented\n this.baseElement._lastFilter = '';\n // The value needs to be set with a timeout because it needs to execute after\n // the custom value is added to items by the children change observer\n setTimeout(() => {\n this.value = [...this.value, e.detail];\n }, 0);\n });\n }\n }\n\n setGetValidity() {\n // eslint-disable-next-line func-names\n this.getValidity = function () {\n if (this.pattern) {\n const patternRegex = new RegExp(this.pattern);\n if (this.value.some((val) => !patternRegex.test(val)))\n return {\n patternMismatch: true,\n };\n }\n\n if (this.isRequired && !this.value.length) {\n return {\n valueMissing: true,\n };\n }\n // If the field is not required, no minimum selection can be set\n if (\n this.isRequired &&\n this.minItemsSelection &&\n this.value.length < this.minItemsSelection\n ) {\n return {\n rangeUnderflow: true,\n };\n }\n if (this.maxItemsSelection && this.value.length > this.maxItemsSelection) {\n return {\n rangeOverflow: true,\n };\n }\n return {};\n };\n\n // This is required to override the default validity check of the vaadin component\n // which is triggered when the component is checked for validity after blur\n // Without this, our minItemsSelection and maxItemsSelection constraints will not be checked\n const that = this;\n // eslint-disable-next-line func-names\n this.baseElement.checkValidity = () => {\n return that.validity.valid;\n };\n }\n\n init() {\n super.init?.();\n\n this.setGetValidity();\n\n this.#handleCustomValues();\n\n this.renderItems();\n\n observeAttributes(this, this.renderItems.bind(this), { includeAttrs: ['data'] });\n\n observeChildren(this, this.#onChildrenChange.bind(this));\n\n // Note: we need to forward the `placeholder` because the vaadin component observes it and\n // tries to override it, causing us to lose the user set placeholder.\n forwardAttrs(this, this.baseElement, { includeAttrs: ['placeholder'] });\n\n // This is a workaround for a problem we have in Console App, where in ScreenBuilder - the inputElement is not ready when trying to\n // set the component's descriptor and override the overlay settings.\n // THIS IS A PROBLEM WITH THE CONSOLE APP THAT NEEDS TO BE RESOLVED. Until then, we use this workaround.\n setTimeout(() => {\n this.setComboBoxDescriptor();\n this.#overrideOverlaySettings();\n });\n\n this.setDefaultValues();\n\n this.baseElement.addEventListener('selected-items-changed', () => {\n this.#updateInternalValue();\n this.dispatchEvent(new CustomEvent('input', { bubbles: true }));\n });\n }\n\n setDefaultValues() {\n const initialDefaultValues = this.defaultValues;\n if (initialDefaultValues.length > 0) {\n this.value = this.defaultValues;\n }\n }\n\n #updateInternalValue() {\n // This is done here because we don't want to return a different copy of the same array\n // every time get value is called if a new value wasn't set\n this.#value =\n this.baseElement.selectedItems?.map((elem) => elem.getAttribute('data-id')) || [];\n }\n\n // Updating the value will update the selectedItems, which will trigger an event 'selected-items-changed'\n // which we listen to in the init function to update the internal value\n set value(vals) {\n if (vals && vals.length > 0) {\n // Filters the children of the component to find the ones that match the values,\n // since it's possible that some values that are trying to set are not in the children\n const selectedChildren = this.baseElement.items?.filter((item) =>\n vals.includes(item['data-id'])\n );\n\n // If the component allows custom values, we need to add the values that are not present in the children\n if (this.allowCustomValues) {\n const existingValues =\n selectedChildren?.map((child) => child.getAttribute('data-id')) || [];\n const missingValues = vals.filter((val) => !existingValues.includes(val));\n\n if (missingValues.length) {\n const newItemsHtml = missingValues.reduce((acc, val) => {\n const newItemHtml = this.#renderItem({\n label: val,\n displayName: val,\n value: val,\n });\n return acc + newItemHtml;\n }, '');\n this.innerHTML += newItemsHtml;\n\n // The value needs to be set with a timeout because it needs to execute after\n // the custom values are added to the items by the children change observer\n setTimeout(() => {\n this.value = vals;\n }, 0);\n return;\n }\n }\n\n const newSelectedValues =\n selectedChildren?.map((child) => child.getAttribute('data-id')) || [];\n if (!compareArraysUnordered(this.#value, newSelectedValues)) {\n this.baseElement.selectedItems = selectedChildren;\n }\n } else {\n this.baseElement.selectedItems = [];\n }\n }\n\n get value() {\n return this.#value;\n }\n\n attributeChangedCallback(attrName, oldValue, newValue) {\n super.attributeChangedCallback?.(attrName, oldValue, newValue);\n\n if (attrName === 'readonly') {\n this.onReadOnlyChange(newValue !== null && newValue === 'true');\n }\n }\n\n onReadOnlyChange(val) {\n if (val) {\n this.baseElement?.shadowRoot\n ?.querySelector('vaadin-multi-select-combo-box-internal')\n ?.setAttribute('inert', val);\n } else {\n this.baseElement?.shadowRoot\n ?.querySelector('vaadin-multi-select-combo-box-internal')\n ?.removeAttribute('inert');\n }\n }\n };\n\nconst {\n host,\n inputField,\n inputElement,\n placeholder,\n toggle,\n clearButton,\n label,\n requiredIndicator,\n helperText,\n errorMessage,\n chip,\n chipLabel,\n overflowChipFirstBorder,\n overflowChipSecondBorder,\n} = {\n host: { selector: () => ':host' },\n inputField: { selector: '::part(input-field)' },\n inputElement: { selector: 'input' },\n placeholder: { selector: '> input:placeholder-shown' },\n toggle: { selector: '::part(toggle-button)' },\n clearButton: { selector: '::part(clear-button)' },\n label: { selector: '::part(label)' },\n requiredIndicator: { selector: '[required]::part(required-indicator)::after' },\n helperText: { selector: '::part(helper-text)' },\n errorMessage: { selector: '::part(error-message)' },\n chip: { selector: 'vaadin-multi-select-combo-box-chip' },\n chipLabel: { selector: 'vaadin-multi-select-combo-box-chip::part(label)' },\n overflowChipFirstBorder: {\n selector: \"vaadin-multi-select-combo-box-chip[slot='overflow']::before\",\n },\n overflowChipSecondBorder: {\n selector: \"vaadin-multi-select-combo-box-chip[slot='overflow']::after\",\n },\n};\n\nexport const MultiSelectComboBoxClass = compose(\n createStyleMixin({\n mappings: {\n hostWidth: { ...host, property: 'width' },\n hostDirection: { ...host, property: 'direction' },\n // we apply font-size also on the host so we can set its width with em\n fontSize: [{}, host],\n chipFontSize: { ...chipLabel, property: 'font-size' },\n fontFamily: [label, placeholder, inputField, helperText, errorMessage, chipLabel],\n labelFontSize: { ...label, property: 'font-size' },\n labelFontWeight: { ...label, property: 'font-weight' },\n labelTextColor: [\n { ...label, property: 'color' },\n { ...requiredIndicator, property: 'color' },\n ],\n errorMessageTextColor: { ...errorMessage, property: 'color' },\n errorMessageIcon: { ...errorMessage, property: 'background-image' },\n errorMessageIconSize: { ...errorMessage, property: 'background-size' },\n errorMessageIconPadding: { ...errorMessage, property: 'padding-inline-start' },\n errorMessageIconRepeat: { ...errorMessage, property: 'background-repeat' },\n errorMessageIconPosition: { ...errorMessage, property: 'background-position' },\n errorMessageFontSize: { ...errorMessage, property: 'font-size' },\n inputHeight: { ...inputField, property: 'min-height' },\n inputBackgroundColor: { ...inputField, property: 'background-color' },\n inputBorderColor: { ...inputField, property: 'border-color' },\n inputBorderWidth: { ...inputField, property: 'border-width' },\n inputBorderStyle: { ...inputField, property: 'border-style' },\n inputBorderRadius: { ...inputField, property: 'border-radius' },\n labelRequiredIndicator: { ...requiredIndicator, property: 'content' },\n inputValueTextColor: { ...inputField, property: 'color' },\n inputPlaceholderTextColor: { ...placeholder, property: 'color' },\n inputDropdownButtonCursor: [\n { ...toggle, property: 'cursor' },\n { ...clearButton, property: 'cursor' },\n ],\n inputDropdownButtonColor: [\n { ...toggle, property: 'color' },\n { ...clearButton, property: 'color' },\n ],\n inputDropdownButtonSize: [\n { ...toggle, property: 'font-size' },\n { ...clearButton, property: 'font-size' },\n ],\n inputDropdownButtonOffset: [\n { ...toggle, property: 'margin-right' },\n { ...toggle, property: 'margin-left' },\n ],\n inputOutlineColor: { ...inputField, property: 'outline-color' },\n inputOutlineWidth: { ...inputField, property: 'outline-width' },\n inputOutlineStyle: { ...inputField, property: 'outline-style' },\n inputOutlineOffset: { ...inputField, property: 'outline-offset' },\n inputHorizontalPadding: [\n { ...inputElement, property: 'padding-left' },\n { ...inputElement, property: 'padding-right' },\n { ...inputField, property: 'padding-inline-start' },\n ],\n inputVerticalPadding: [\n { ...inputField, property: 'padding-top' },\n { ...inputField, property: 'padding-bottom' },\n ],\n chipTextColor: { ...chipLabel, property: 'color' },\n chipBackgroundColor: [\n { ...chip, property: 'background-color' },\n { ...overflowChipFirstBorder, property: 'border-color' },\n { ...overflowChipSecondBorder, property: 'border-color' },\n ],\n\n labelPosition: { ...label, property: 'position' },\n labelTopPosition: { ...label, property: 'top' },\n labelLeftPosition: { ...label, property: 'left' },\n labelHorizontalPosition: [\n { ...label, property: 'left' },\n { ...label, property: 'right' },\n ],\n inputTransformY: { ...label, property: 'transform' },\n inputTransition: { ...label, property: 'transition' },\n marginInlineStart: { ...label, property: 'margin-inline-start' },\n placeholderOpacity: { ...placeholder, property: 'opacity' },\n inputVerticalAlignment: { ...inputField, property: 'align-items' },\n\n // we need to use the variables from the portal mixin\n // so we need to use an arrow function on the selector\n // for that to work, because ComboBox is not available\n // at this time.\n overlayBackground: {\n property: () => MultiSelectComboBoxClass.cssVarList.overlay.backgroundColor,\n },\n overlayTextColor: {\n property: () => MultiSelectComboBoxClass.cssVarList.overlay.textColor,\n },\n overlayBorder: { property: () => MultiSelectComboBoxClass.cssVarList.overlay.border },\n overlayFontSize: { property: () => MultiSelectComboBoxClass.cssVarList.overlay.fontSize },\n overlayFontFamily: { property: () => MultiSelectComboBoxClass.cssVarList.overlay.fontFamily },\n overlayCursor: { property: () => MultiSelectComboBoxClass.cssVarList.overlay.cursor },\n overlayItemBoxShadow: {\n property: () => MultiSelectComboBoxClass.cssVarList.overlay.itemBoxShadow,\n },\n overlayItemPaddingInlineStart: {\n property: () => MultiSelectComboBoxClass.cssVarList.overlay.itemPaddingInlineStart,\n },\n overlayItemPaddingInlineEnd: {\n property: () => MultiSelectComboBoxClass.cssVarList.overlay.itemPaddingInlineEnd,\n },\n },\n }),\n draggableMixin,\n portalMixin({\n name: 'overlay',\n selector: 'vaadin-multi-select-combo-box-internal',\n mappings: {\n backgroundColor: { selector: 'vaadin-multi-select-combo-box-scroller' },\n minHeight: { selector: 'vaadin-multi-select-combo-box-overlay' },\n margin: { selector: 'vaadin-multi-select-combo-box-overlay' },\n cursor: { selector: 'vaadin-multi-select-combo-box-item' },\n fontFamily: { selector: 'vaadin-multi-select-combo-box-item' },\n textColor: { selector: 'vaadin-multi-select-combo-box-item', property: 'color' },\n fontSize: { selector: 'vaadin-multi-select-combo-box-item' },\n itemBoxShadow: { selector: 'vaadin-multi-select-combo-box-item', property: 'box-shadow' },\n itemPaddingInlineStart: {\n selector: 'vaadin-multi-select-combo-box-item',\n property: 'padding-inline-start',\n },\n itemPaddingInlineEnd: {\n selector: 'vaadin-multi-select-combo-box-item',\n property: 'padding-inline-end',\n },\n },\n forward: {\n include: false,\n attributes: ['size'],\n },\n }),\n proxyInputMixin({ proxyProps: ['selectionStart'], inputEvent: 'selected-items-changed' }),\n changeMixin,\n componentNameValidationMixin,\n multiSelectComboBoxMixin\n)(\n createProxy({\n slots: ['', 'prefix'],\n wrappedEleName: 'vaadin-multi-select-combo-box',\n style: () => `\n\t\t:host {\n\t\t\tdisplay: inline-flex;\n\t\t\tbox-sizing: border-box;\n\t\t\t-webkit-mask-image: none;\n\t\t}\n\t\t${useHostExternalPadding(MultiSelectComboBoxClass.cssVarList)}\n\t\t${resetInputReadonlyStyle('vaadin-multi-select-combo-box')}\n\t\t${resetInputPlaceholder('vaadin-multi-select-combo-box')}\n\t\t${resetInputCursor('vaadin-multi-select-combo-box')}\n\n\t\tvaadin-multi-select-combo-box {\n\t\t\tpadding: 0;\n\t\t\twidth: 100%;\n\t\t}\n\t\tvaadin-multi-select-combo-box::before {\n\t\t\theight: initial;\n\t\t}\n\t\tvaadin-multi-select-combo-box [slot=\"input\"] {\n\t\t\t-webkit-mask-image: none;\n\t\t\tmin-height: 0;\n align-self: center;\n\t\t\tbox-sizing: border-box;\n\t\t}\n\t\tvaadin-multi-select-combo-box[readonly] [slot=\"input\"] {\n flex-grow: 1;\n flex-basis: 4em;\n\t\t}\n\n\t\t::part(input-field) {\n padding: 0;\n\t\t\tbox-shadow: none;\n\t\t}\n ${resetInputLabelPosition('vaadin-multi-select-combo-box')}\n :host([has-label]) vaadin-multi-select-combo-box-chip::part(label) {\n display: block;\n }\n\n vaadin-multi-select-combo-box vaadin-multi-select-combo-box-chip[slot='overflow']::before,\n vaadin-multi-select-combo-box vaadin-multi-select-combo-box-chip[slot='overflow']::after {\n left: -4px;\n right: -4px;\n border-left-width: 0;\n border-inline-start-style: solid;\n border-inline-start-width: 2px;\n }\n vaadin-multi-select-combo-box vaadin-multi-select-combo-box-chip[slot='overflow']::after {\n left: -8px;\n right: -8px;\n }\n\n :host([has-no-options][allow-custom-value='true']) ::part(toggle-button) {\n display: none;\n }\n\n ${inputFloatingLabelStyle()}\n\n vaadin-multi-select-combo-box::part(toggle-button),\n vaadin-multi-select-combo-box::part(clear-button) {\n align-self: center;\n }\n\n vaadin-multi-select-combo-box[label-type=\"floating\"]:not([focused])[readonly] > input:placeholder-shown {\n opacity: 0;\n }\n vaadin-multi-select-combo-box[label-type=\"floating\"]:not([focused])[disabled] > input:placeholder-shown {\n opacity: 0;\n }\n\n\t\t`,\n // Note: we exclude `size` to avoid overriding Vaadin's ComboBox property\n // with the same name. Including it will cause Vaadin to calculate NaN size,\n // and reset items to an empty array, and opening the list box with no items\n // to display.\n // Note: we exclude `placeholder` because the vaadin component observes it and\n // tries to override it, causing us to lose the user set placeholder.\n excludeAttrsSync: ['tabindex', 'size', 'data', 'placeholder', 'style'],\n componentName,\n includeForwardProps: ['items', 'renderer', 'selectedItems'],\n })\n);\n","import '@vaadin/multi-select-combo-box';\nimport { componentName, MultiSelectComboBoxClass } from './MultiSelectComboBoxClass';\n\ncustomElements.define(componentName, MultiSelectComboBoxClass);\n\nexport { MultiSelectComboBoxClass, componentName };\n","import { injectStyle } from '@descope-ui/common/components-helpers';\nimport { compose } from '../../helpers';\nimport { forwardAttrs, getComponentName } from '../../helpers/componentHelpers';\nimport {\n createStyleMixin,\n draggableMixin,\n createProxy,\n componentNameValidationMixin,\n portalMixin,\n} from '../../mixins';\n\nexport const componentName = getComponentName('modal');\n\nconst observedAttrs = ['opened'];\n\nconst customMixin = (superclass) =>\n class ModalMixinClass extends superclass {\n static get observedAttributes() {\n return [].concat(superclass.observedAttributes || [], observedAttrs);\n }\n\n get opened() {\n return this.getAttribute('opened') === 'true';\n }\n\n handleOpened() {\n if (this.opened) {\n this.style.display = '';\n } else {\n this.style.display = 'none';\n }\n }\n\n attributeChangedCallback(name, oldValue, newValue) {\n super.attributeChangedCallback?.(name, oldValue, newValue);\n\n if (name === 'opened') {\n this.handleOpened();\n }\n }\n\n init() {\n super.init?.();\n this.style.display = 'none';\n\n // vaadin-dialog might not be loaded in time\n // in order to make sure it's loaded before this block is running\n // we are wrapping it with setTimeout\n setTimeout(() => {\n // we want to sync descope-modal content through vaadin-dialog into the overlay\n // so we are adding a slot to the overlay, which allows us to forward the content from\n // vaadin-dialog to vaadin-dialog-overlay\n this.baseElement.shadowRoot\n .querySelector('vaadin-dialog-overlay')\n .appendChild(document.createElement('slot'));\n\n this.#overrideOverlaySettings();\n forwardAttrs(this, this.baseElement, { includeAttrs: ['opened'] });\n\n // we need to always open the modal in `opened=false`\n // to prevent it from rendering outside the dialog\n // first, we have to run `overrideOverlaySettings` to setup\n // the component.\n this.handleOpened();\n });\n }\n\n // the default vaadin behavior is to attach the overlay to the body when opened\n // we do not want that because it's difficult to style the overlay in this way\n // so we override it to open inside the shadow DOM\n #overrideOverlaySettings() {\n const overlay = this.baseElement.shadowRoot.querySelector('vaadin-dialog-overlay');\n\n overlay._attachOverlay = () => {\n overlay.bringToFront();\n injectStyle(\n `\n :host {\n display: flex!important;\n }\n `,\n this.baseElement\n );\n };\n overlay._detachOverlay = () => {\n this.baseElement.style.display = 'none';\n };\n overlay._enterModalState = () => {};\n\n overlay.close = () => false;\n }\n };\n\nexport const ModalClass = compose(\n createStyleMixin({\n mappings: {\n overlayBackdropColor: { property: () => ModalClass.cssVarList.overlay.backdropColor },\n overlayBackgroundColor: { property: () => ModalClass.cssVarList.overlay.backgroundColor },\n overlayShadow: { property: () => ModalClass.cssVarList.overlay.shadow },\n overlayWidth: { property: () => ModalClass.cssVarList.overlay.width },\n overlayBorderWidth: { property: () => ModalClass.cssVarList.overlay.borderWidth },\n overlayBorderStyle: { property: () => ModalClass.cssVarList.overlay.borderStyle },\n overlayBorderColor: { property: () => ModalClass.cssVarList.overlay.borderColor },\n overlayBorderRadius: { property: () => ModalClass.cssVarList.overlay.borderRadius },\n },\n }),\n portalMixin({\n name: 'overlay',\n selector: '',\n mappings: {\n hostDisplay: {\n selector: () => ':host(.descope-modal)',\n property: 'display',\n important: true,\n },\n backgroundColor: [\n { selector: () => '::part(content)', property: 'background-color' },\n { selector: () => '::part(overlay)', property: 'background-color' },\n ],\n backdropColor: {\n selector: () => '::part(backdrop)',\n property: 'background-color',\n },\n borderStyle: {\n selector: () => '::part(content)',\n property: 'border-style',\n },\n borderWidth: {\n selector: () => '::part(content)',\n property: 'border-width',\n },\n borderColor: {\n selector: () => '::part(content)',\n property: 'border-color',\n },\n borderRadius: {\n selector: () => '::part(content)',\n property: 'border-radius ',\n },\n width: { selector: () => '::part(overlay)', property: 'width' },\n shadow: { selector: () => '::part(overlay)', property: 'box-shadow' },\n },\n forward: {\n include: false,\n attributes: ['opened', 'style'],\n },\n }),\n draggableMixin,\n componentNameValidationMixin,\n customMixin\n)(\n createProxy({\n slots: [''],\n wrappedEleName: 'vaadin-dialog',\n style: () => `\n vaaadin-dialog {\n display: flex!important;\n }\n `,\n excludeAttrsSync: ['tabindex', 'opened', 'style'],\n componentName,\n })\n);\n","import '@vaadin/dialog';\nimport { componentName, ModalClass } from './ModalClass';\n\ncustomElements.define(componentName, ModalClass);\n\nexport { ModalClass, componentName };\n","import '@vaadin/notification';\nimport { getComponentName } from '../../helpers/componentHelpers';\n\nconst vaadinContainerClass = window.customElements.get('vaadin-notification-container');\n\nif (!vaadinContainerClass) {\n throw new Error('could not get vaadin-notification-container class');\n}\n\nclass NotificationContainerClass extends vaadinContainerClass {}\ncustomElements.define(getComponentName('notification-container'), NotificationContainerClass);\n\nexport { NotificationContainerClass };\n","import { compose } from '../../../helpers';\nimport { getComponentName } from '../../../helpers/componentHelpers';\nimport { createStyleMixin, createProxy } from '../../../mixins';\n\nexport const componentName = getComponentName('notification-card');\n\nconst notificationCardMixin = (superclass) =>\n class NotificationCardMixinClass extends superclass {\n close() {\n // if animation is not applied to the element, the node will not be removed\n // from the DOM. We should avoid that. So, if in any case we allow\n // customizing the animation - we should check if animation is applied\n // and if it's not applied - remove the element from the DOM and dispatch\n // `card-closed` event.\n this.baseElement.addEventListener('animationend', () => {\n this.remove();\n this.dispatchEvent(new Event('card-closed'));\n });\n\n this.setAttribute('opened', 'false');\n }\n\n constructor() {\n super();\n\n this.baseElement.innerHTML = `\n <div part=\"root\">\n <div part=\"content\">\n <slot></slot>\n </div>\n <div part=\"close\">\n <slot name=\"close\"></slot>\n </div>\n </div>\n `;\n\n this.closeEle = this.shadowRoot.querySelector('[part=\"close\"]');\n }\n\n init() {\n super.init?.();\n\n this.closeEle.onclick = () => {\n this.close();\n };\n }\n };\n\nconst selectors = {\n content: () => 'vaadin-notification-card::part(content)',\n overlay: () => 'vaadin-notification-card::part(overlay)',\n};\n\nexport const NotificationCardClass = compose(\n createStyleMixin({\n mappings: {\n hostMinWidth: { selector: selectors.content, property: 'min-width' },\n fontFamily: {},\n fontSize: {},\n backgroundColor: { selector: selectors.content },\n textColor: { property: 'color' },\n boxShadow: {},\n borderWidth: { selector: selectors.content, property: 'border-width' },\n borderColor: { selector: selectors.content, property: 'border-color' },\n borderStyle: { selector: selectors.content, property: 'border-style' },\n borderRadius: [\n { selector: selectors.content, property: 'border-radius' },\n { selector: selectors.overlay, property: 'border-radius' },\n ],\n verticalPadding: [\n { selector: selectors.content, property: 'padding-top' },\n { selector: selectors.content, property: 'padding-bottom' },\n ],\n horizontalPadding: [\n { selector: selectors.content, property: 'padding-right' },\n { selector: selectors.content, property: 'padding-left' },\n ],\n },\n }),\n notificationCardMixin\n)(\n createProxy({\n slots: [],\n wrappedEleName: 'vaadin-notification-card',\n style: () => `\n vaadin-notification-card {\n box-shadow: none;\n }\n ::part(overlay) {\n box-shadow: none;\n background: none;\n }\n\n [part=\"close\"] {\n cursor: pointer;\n display: flex;\n }\n\n [part=\"content\"] {\n display: flex;\n align-items: center;\n flex-grow: 1;\n }\n\n [part=\"root\"] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n }\n `,\n excludeAttrsSync: ['tabindex', 'style'],\n componentName,\n })\n);\n","import '@vaadin/notification';\nimport { componentName, NotificationCardClass } from './NotificationCardClass';\n\ncustomElements.define(componentName, NotificationCardClass);\n\nexport { NotificationCardClass };\n","import { compose } from '../../helpers';\nimport { forwardAttrs, getComponentName, syncAttrs } from '../../helpers/componentHelpers';\nimport {\n draggableMixin,\n createProxy,\n componentNameValidationMixin,\n hoverableMixin,\n} from '../../mixins';\n\nexport const componentName = getComponentName('notification');\n\nconst NotificationMixin = (superclass) =>\n class NotificationMixinClass extends superclass {\n #card;\n\n constructor() {\n super();\n\n const that = this;\n\n Object.defineProperty(this.baseElement, '_container', {\n get() {\n if (!NotificationMixinClass._container) {\n NotificationMixinClass._container = document.createElement(\n 'descope-notification-container'\n );\n\n // we are overriding the container position to be absolute because we want to keep in inside the flow/widget boundaries\n NotificationMixinClass._container.style.position = 'absolute';\n\n // we're adding the container to body to avoid Vaadin's container's `openChanged`\n // from breaking when trying to remove it directly from the body.\n document.body.appendChild(NotificationMixinClass._container);\n }\n\n if (!NotificationMixinClass._container.isConnected) {\n // Then, we're adding the container to the parentNode, which is the desired location\n // for us on the DOM\n setTimeout(() => that.parentNode.appendChild(NotificationMixinClass._container));\n }\n\n return NotificationMixinClass._container;\n },\n });\n\n Object.defineProperty(this.baseElement, '_card', {\n get() {\n return that.#card;\n },\n });\n\n // we want to replace the card with vaadin's remove notification so it will not throw\n this.baseElement._removeNotificationCard = this.close.bind(this);\n }\n\n close() {\n this.#card.close();\n }\n\n init() {\n super.init?.();\n\n this.createCard();\n\n forwardAttrs(this, this.#card);\n syncAttrs(this.#card, this, { includeAttrs: ['opened'] });\n\n this.baseElement.renderer = (cardRoot) => {\n Array.from(this.childNodes).forEach((child) => cardRoot.appendChild(child));\n };\n }\n\n // eslint-disable-next-line class-methods-use-this\n get isContainerEmpty() {\n return !NotificationMixinClass._container.children.length;\n }\n\n // eslint-disable-next-line class-methods-use-this\n removeContainer() {\n NotificationMixinClass._container.remove();\n }\n\n removeNotification() {\n // remove descope-notification from the DOM\n this.remove();\n // if needed, remove descope-notification-container\n if (this.isContainerEmpty) this.removeContainer();\n }\n\n createCard() {\n this.#card = document.createElement('descope-notification-card');\n this.#card.addEventListener('card-closed', this.removeNotification.bind(this));\n }\n };\n\nexport const NotificationClass = compose(\n draggableMixin,\n componentNameValidationMixin,\n hoverableMixin,\n NotificationMixin\n)(\n createProxy({\n wrappedEleName: 'vaadin-notification',\n excludeAttrsSync: ['tabindex', 'style'],\n componentName,\n })\n);\n","import '@vaadin/notification';\nimport './descope-notification-container';\nimport './descope-notification-card';\nimport { componentName, NotificationClass } from './NotificationClass';\n\ncustomElements.define(componentName, NotificationClass);\n\nexport { NotificationClass, componentName };\n","import { createBaseInputClass } from '../../../../baseClasses/createBaseInputClass';\nimport {\n getComponentName,\n forwardAttrs,\n observeChildren,\n} from '../../../../helpers/componentHelpers';\n\nexport const componentName = getComponentName('mappings-field-internal');\n\nconst BaseInputClass = createBaseInputClass({ componentName, baseSelector: 'div' });\n\nclass MappingsFieldInternal extends BaseInputClass {\n #errorItem;\n\n static get observedAttributes() {\n return [].concat(BaseInputClass.observedAttributes || [], [\n 'label-value',\n 'label-attr',\n 'button-label',\n 'invalid',\n 'readonly',\n 'disabled',\n 'st-error-message-icon',\n 'st-error-message-icon-size',\n 'st-error-message-icon-padding',\n ]);\n }\n\n // eslint-disable-next-line class-methods-use-this\n isValidDataType(data) {\n try {\n return data.every(\n (obj) =>\n typeof obj === 'object' &&\n !Array.isArray(obj) &&\n Object.getOwnPropertyNames(obj).length === 1 &&\n typeof obj[Object.keys(obj)[0]] === 'string' &&\n obj[Object.keys(obj)[0]].trim() !== ''\n );\n } catch (e) {\n return false;\n }\n }\n\n get labelValue() {\n return this.getAttribute('label-value') || 'Value';\n }\n\n get labelAttr() {\n return this.getAttribute('label-attr') || 'Attribute';\n }\n\n get buttonLabel() {\n return this.getAttribute('button-label') || 'Add mapping';\n }\n\n get options() {\n return this.getAttribute('options') || [];\n }\n\n addNewMappingItem(focusNewItem) {\n const newMappingItem = document.createElement('descope-mapping-item');\n newMappingItem.setAttribute('bordered', 'true');\n this.mappingsContainerEle.appendChild(newMappingItem);\n forwardAttrs(this, newMappingItem, {\n includeAttrs: [\n 'size',\n 'full-width',\n 'separator',\n 'options',\n 'disabled',\n 'st-error-message-icon',\n 'st-error-message-icon-size',\n 'st-error-message-icon-padding',\n ],\n });\n // This needs to be done with the timeout, otherwise the validation is performed\n // before the new item is added and thus returns a wrong result\n setTimeout(() => {\n this.setCustomValidity('');\n newMappingItem.addEventListener('mapping-item-removed', () => {\n // If the removed item was the one that was invalid, we need to reset the invalid indication for the internal\n if (newMappingItem === this.#errorItem) {\n this.resetInvalidIndication();\n this.#errorItem = undefined;\n }\n newMappingItem.remove();\n this.setCustomValidity('');\n });\n this.dispatchEvent(new CustomEvent('mapping-item-added', { bubbles: true, composed: true }));\n if (focusNewItem) {\n newMappingItem.focus();\n }\n }, 0);\n return newMappingItem;\n }\n\n get items() {\n return Array.from(this.mappingsContainerEle.querySelectorAll('descope-mapping-item'));\n }\n\n get value() {\n return this.items.reduce((acc, item) => {\n if (!item.value) {\n return acc;\n }\n\n return [...acc, item.value];\n }, []);\n }\n\n set value(mappings) {\n if (!this.isValidDataType(mappings)) {\n // eslint-disable-next-line no-console\n console.error(\n 'received invalid value to set - should be an array of objects with one key-value pair'\n );\n return;\n }\n\n const currentItems = this.items;\n\n // Remove extra mapping items we don't need\n if (currentItems.length > mappings.length) {\n for (let i = mappings.length; i < currentItems.length; i++) {\n this.mappingsContainerEle.removeChild(currentItems[i]);\n }\n }\n\n // Add or update items\n mappings.forEach((mapping, index) => {\n const mappingItem = currentItems[index];\n if (mappingItem) {\n // Set existing item value\n mappingItem.value = mapping;\n } else {\n // Add new item\n const newMappingItem = this.addNewMappingItem(false);\n // Setting the new item value needs to be done with the timeout,\n // otherwise the value is not set correctly\n setTimeout(() => {\n newMappingItem.value = mapping;\n }, 0);\n }\n });\n }\n\n constructor() {\n super();\n\n this.innerHTML = `\n <div class=\"labels-container\" part=\"labels\"></div>\n <div class=\"mappings-container\"></div>\n <div class=\"button-container\"></div>\n `;\n\n this.labelsEle = this.querySelector('.labels-container');\n this.mappingsContainerEle = this.querySelector('.mappings-container');\n this.buttonContainer = this.querySelector('.button-container');\n }\n\n initLabels() {\n this.labelsEle.innerHTML = `\n <descope-text variant=\"body2\" part=\"value-label\">${this.labelValue}</descope-text>\n <descope-text variant=\"body2\" part=\"attr-label\">${this.labelAttr}</descope-text>\n `;\n }\n\n initAddButton() {\n this.buttonContainer.innerHTML = `\n <descope-button variant=\"link\" mode=\"primary\" disabled=\"${this.isDisabled}\">\n <vaadin-icon icon=\"vaadin:plus\"></vaadin-icon>\n ${this.buttonLabel}\n </descope-button>\n `;\n const button = this.querySelector('descope-button');\n button.onclick = () => {\n this.addNewMappingItem(true);\n };\n forwardAttrs(this, button, {\n includeAttrs: ['disabled'],\n });\n }\n\n #onMappingsContainerChildrenChange() {\n this.labelsEle.style.display = this.items.length ? 'grid' : 'none';\n }\n\n init() {\n // This event listener needs to be placed before the super.init() call\n this.addEventListener('focus', (e) => {\n // we want to ignore focus events we are dispatching\n if (e.isTrusted) {\n const focusedElement =\n this.#errorItem || this.items[0] || this.querySelector('descope-button');\n focusedElement.focus();\n }\n });\n\n super.init?.();\n this.initLabels();\n this.initAddButton();\n\n // This event listener is responsible for removing the invalid attribute\n // from the internal once the invalid item turns valid\n this.addEventListener('input', () => {\n const isErrorItemMounted = this.mappingsContainerEle.contains(this.#errorItem);\n if (isErrorItemMounted && this.#errorItem?.checkValidity()) {\n // Item has changed, it was invalid before and now it's valid\n this.resetInvalidIndication();\n this.#errorItem.removeAttribute('invalid');\n this.#errorItem = undefined;\n }\n });\n\n observeChildren(this.mappingsContainerEle, this.#onMappingsContainerChildrenChange.bind(this));\n }\n\n resetInvalidIndication() {\n this.removeAttribute('invalid');\n }\n\n getValidity() {\n const errorItem = this.items.find((item) => !item.checkValidity());\n if (errorItem) {\n return errorItem.validity;\n }\n\n return {};\n }\n\n #handleInvalidMappings(isInvalid) {\n if (isInvalid) {\n this.#errorItem = this.items.find((item) => !item.checkValidity());\n this.#errorItem?.reportValidity();\n this.#errorItem?.setAttribute('invalid', 'true');\n }\n }\n\n attributeChangedCallback(attrName, oldValue, newValue) {\n super.attributeChangedCallback?.(attrName, oldValue, newValue);\n if (attrName === 'label-value' || attrName === 'label-attr') {\n this.initLabels();\n }\n if (attrName === 'button-label') {\n this.initAddButton();\n }\n if (attrName === 'invalid') {\n this.#handleInvalidMappings(newValue === 'true');\n }\n if (attrName === 'readonly') {\n this.toggleAttribute('inert', newValue === 'true');\n }\n }\n}\n\nexport default MappingsFieldInternal;\n","import {\n createStyleMixin,\n draggableMixin,\n createProxy,\n proxyInputMixin,\n componentNameValidationMixin,\n} from '../../../mixins';\nimport { TextClass } from '@descope-ui/descope-text/class';\nimport { compose } from '../../../helpers';\nimport { forwardAttrs, getComponentName, syncAttrs } from '../../../helpers/componentHelpers';\nimport { componentName as descopeInternalComponentName } from './descope-mappings-field-internal/MappingsFieldInternal';\n\nexport const componentName = getComponentName('mappings-field');\n\nconst customMixin = (superclass) =>\n class MappingsFieldMixinClass extends superclass {\n get defaultValues() {\n const defaultValuesAttr = this.getAttribute('default-values');\n if (defaultValuesAttr) {\n try {\n return JSON.parse(defaultValuesAttr);\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error('could not parse data string from attribute \"default-values\" -', e.message);\n }\n }\n return [];\n }\n\n setDefaultValues() {\n const initialDefaultValues = this.defaultValues;\n if (Object.keys(initialDefaultValues).length > 0) {\n this.inputElement.value = initialDefaultValues;\n }\n }\n\n init() {\n super.init?.();\n const template = document.createElement('template');\n\n template.innerHTML = `\n <${descopeInternalComponentName}\n tabindex=\"-1\"\n ></${descopeInternalComponentName}>\n `;\n\n this.baseElement.appendChild(template.content.cloneNode(true));\n\n this.inputElement = this.shadowRoot.querySelector(descopeInternalComponentName);\n\n forwardAttrs(this, this.inputElement, {\n includeAttrs: [\n 'size',\n 'full-width',\n 'label-value',\n 'label-attr',\n 'button-label',\n 'separator',\n 'options',\n 'default-values',\n 'invalid',\n 'readonly',\n 'disabled',\n 'st-error-message-icon',\n 'st-error-message-icon-size',\n 'st-error-message-icon-padding',\n ],\n });\n\n // This is required since when we remove the invalid attribute from the internal mappings field,\n // we want to reflect the change in the parent component\n syncAttrs(this, this.inputElement, { includeAttrs: ['invalid'] });\n\n this.setDefaultValues();\n }\n };\n\nconst {\n host,\n helperText,\n errorMessage,\n mappingItem,\n labels,\n labelsText,\n valueLabel,\n attrLabel,\n separator,\n labelsContainer,\n} = {\n host: { selector: () => ':host' },\n helperText: { selector: '::part(helper-text)' },\n errorMessage: { selector: '::part(error-message)' },\n mappingItem: { selector: 'descope-mapping-item::part(wrapper)' },\n labels: { selector: 'descope-mappings-field-internal [part=\"labels\"] descope-text' },\n labelsText: {\n selector: 'descope-mappings-field-internal [part=\"labels\"] descope-text::part(text-wrapper)',\n },\n valueLabel: { selector: 'descope-mappings-field-internal [part=\"labels\"] [part=\"value-label\"]' },\n attrLabel: { selector: 'descope-mappings-field-internal [part=\"labels\"] [part=\"attr-label\"]' },\n separator: { selector: 'descope-mapping-item::part(separator)' },\n labelsContainer: { selector: 'descope-mappings-field-internal [part=\"labels\"]' },\n};\n\nexport const MappingsFieldClass = compose(\n createStyleMixin({\n mappings: {\n hostWidth: { ...host, property: 'width' },\n hostDirection: { ...host, property: 'direction' },\n // we apply font-size also on the host so we can set its width with em\n fontSize: [{}, host, { ...separator, property: 'margin-top' }],\n fontFamily: [helperText, errorMessage, labels],\n separatorFontSize: { ...separator, property: 'font-size' },\n labelsFontSize: { ...labelsText, property: 'font-size' },\n labelsLineHeight: [\n { ...labelsText, property: 'line-height' },\n { ...labels, property: 'line-height' },\n ],\n labelTextColor: [\n { ...labels, property: TextClass.cssVarList.textColor },\n { ...separator, property: 'color' },\n ],\n itemMarginBottom: { ...mappingItem, property: 'margin-bottom' },\n valueLabelMinWidth: { ...valueLabel, property: 'min-width' },\n attrLabelMinWidth: { ...attrLabel, property: 'min-width' },\n labelsMarginBottom: { ...labelsContainer, property: 'margin-bottom' },\n separatorWidth: {},\n removeButtonWidth: {},\n },\n }),\n draggableMixin,\n proxyInputMixin({\n proxyProps: ['value', 'selectionStart'],\n inputEvent: 'input',\n proxyParentValidation: true,\n }),\n componentNameValidationMixin,\n customMixin\n)(\n createProxy({\n slots: [],\n wrappedEleName: 'vaadin-custom-field',\n style: () => `\n :host {\n display: inline-flex;\n max-width: 100%;\n direction: ltr;\n }\n vaadin-custom-field {\n line-height: unset;\n width: 100%;\n }\n\n descope-mappings-field-internal [part=\"labels\"] {\n display: none;\n grid-template-columns: 1fr var(${MappingsFieldClass.cssVarList.separatorWidth}) 1fr var(${MappingsFieldClass.cssVarList.removeButtonWidth});\n }\n\n descope-mappings-field-internal [part=\"labels\"] [part=\"value-label\"],\n descope-mappings-field-internal [part=\"labels\"] [part=\"attr-label\"] {\n ${TextClass.cssVarList.fontWeight}: 500;\n }\n\n descope-mappings-field-internal [part=\"labels\"] [part=\"value-label\"] {\n grid-column: 1 / span 1;\n }\n\n descope-mappings-field-internal [part=\"labels\"] [part=\"attr-label\"] {\n grid-column: 3 / span 1;\n }\n\n descope-mapping-item::part(wrapper) {\n display: grid;\n grid-template-columns: 1fr var(${MappingsFieldClass.cssVarList.separatorWidth}) 1fr var(${MappingsFieldClass.cssVarList.removeButtonWidth});\n }\n `,\n excludeAttrsSync: [\n 'tabindex',\n 'label-value',\n 'label-attr',\n 'button-label',\n 'options',\n 'error-message',\n 'style',\n ],\n componentName,\n })\n);\n\nexport default MappingsFieldClass;\n","import MappingsFieldInternal, { componentName } from './MappingsFieldInternal';\n\ncustomElements.define(componentName, MappingsFieldInternal);\n","import { injectStyle } from '@descope-ui/common/components-helpers';\nimport { createBaseInputClass } from '../../../../baseClasses/createBaseInputClass';\nimport { forwardAttrs, getComponentName } from '../../../../helpers/componentHelpers';\n\nexport const componentName = getComponentName('mapping-item');\n\nconst inputAttrs = [\n 'size',\n 'bordered',\n 'readonly',\n 'full-width',\n 'disabled',\n 'st-error-message-icon',\n 'st-error-message-icon-size',\n 'st-error-message-icon-padding',\n];\n\nconst BaseInputClass = createBaseInputClass({ componentName, baseSelector: 'div' });\n\nclass MappingItem extends BaseInputClass {\n static get observedAttributes() {\n return [].concat(BaseInputClass.observedAttributes || [], inputAttrs, [\n 'separator',\n 'options',\n 'invalid',\n 'disabled',\n ]);\n }\n\n get separator() {\n return this.getAttribute('separator') || 'map to';\n }\n\n get value() {\n const attributeValue = this.attributeInput.value;\n const inputValue = this.valueInput.value;\n if (attributeValue && inputValue) {\n return { [attributeValue]: inputValue };\n }\n return null;\n }\n\n set value(mapping) {\n if (Object.entries(mapping).length !== 1) {\n // eslint-disable-next-line no-console\n console.error(\n 'descope-mapping item expected expects only one key-value pair in the value but received: ',\n mapping\n );\n return;\n }\n const [attribute, value] = Object.entries(mapping)[0];\n this.valueInput.value = value;\n this.attributeInput.value = attribute;\n // The event needs to be dispatched to trigger the validation if setting the value externally\n this.dispatchEvent(new InputEvent('input', { bubbles: true, composed: true }));\n }\n\n constructor() {\n super();\n\n this.attachShadow({ mode: 'open' }).innerHTML = `\n <div class=\"wrapper\" part=\"wrapper\">\n <descope-text-field required=\"true\"></descope-text-field>\n <div class=\"separator\" part=\"separator\">${this.separator}</div>\n <descope-combo-box\n item-label-path=\"data-name\"\n item-value-path=\"data-id\"\n required=\"true\"\n >\n </descope-combo-box>\n <descope-button variant=\"link\" mode=\"primary\">\n <vaadin-icon icon=\"vaadin:minus\"></vaadin-icon>\n </descope-button>\n </div>\n\t`;\n\n injectStyle(\n `\n .wrapper {\n display: flex;\n }\n .separator {\n text-align: center;\n flex-shrink: 0;\n }\n `,\n this\n );\n\n this.valueInput = this.shadowRoot.querySelector('descope-text-field');\n this.attributeInput = this.shadowRoot.querySelector('descope-combo-box');\n this.inputs = [this.valueInput, this.attributeInput];\n this.removeButton = this.shadowRoot.querySelector('descope-button');\n\n forwardAttrs(this, this.valueInput, {\n includeAttrs: inputAttrs,\n });\n forwardAttrs(this, this.attributeInput, {\n includeAttrs: [...inputAttrs, 'options'],\n mapAttrs: { options: 'data' },\n });\n forwardAttrs(this, this.removeButton, {\n includeAttrs: ['disabled'],\n });\n }\n\n initRemoveButton() {\n this.removeButton.addEventListener('click', () =>\n this.dispatchEvent(new CustomEvent('mapping-item-removed', { bubbles: true, composed: true }))\n );\n }\n\n init() {\n super.init?.();\n this.initRemoveButton();\n }\n\n getValidity() {\n const attributeValue = this.attributeInput.value;\n const inputValue = this.valueInput.value;\n if (!attributeValue || !inputValue) {\n return { badInput: true };\n }\n return {};\n }\n\n reportValidity() {\n this.inputs.forEach((input) => input.reportValidity());\n }\n\n focus() {\n const focusedElement =\n this.checkValidity() || !this.valueInput.checkValidity()\n ? this.valueInput\n : this.attributeInput;\n focusedElement.focus();\n }\n\n handleSeparatorChange() {\n this.shadowRoot.querySelector('.separator').textContent = this.separator;\n }\n\n #handleInvalidMapping(invalid) {\n if (invalid === 'true') {\n const inputValue = this.valueInput.value;\n if (!inputValue) {\n this.valueInput.setAttribute('invalid', 'true');\n this.valueInput.setAttribute('error-message', this.defaultErrorMsgValueMissing);\n }\n\n const attributeValue = this.attributeInput.value;\n if (!attributeValue) {\n this.attributeInput.setAttribute('invalid', 'true');\n this.attributeInput.setAttribute('error-message', this.defaultErrorMsgValueMissing);\n }\n }\n }\n\n attributeChangedCallback(attrName, oldValue, newValue) {\n super.attributeChangedCallback?.(attrName, oldValue, newValue);\n\n if (attrName === 'separator') {\n this.handleSeparatorChange();\n }\n\n if (attrName === 'invalid') {\n this.#handleInvalidMapping(newValue);\n }\n }\n}\n\nexport default MappingItem;\n","import MappingItem, { componentName } from './MappingItem';\n\ncustomElements.define(componentName, MappingItem);\n","import '@vaadin/custom-field';\nimport '@vaadin/icon';\nimport '@vaadin/icons';\nimport { componentName, MappingsFieldClass } from './MappingsFieldClass';\nimport '@descope-ui/descope-text';\nimport '@descope-ui/descope-button';\nimport '../../descope-text-field';\nimport '@descope-ui/descope-combo-box';\nimport './descope-mappings-field-internal';\nimport './descope-mapping-item';\n\ncustomElements.define(componentName, MappingsFieldClass);\n\nexport { MappingsFieldClass, componentName };\n","import {\n componentNameValidationMixin,\n createStyleMixin,\n draggableMixin,\n} from '@descope-ui/common/components-mixins';\nimport { createBaseClass } from '@descope-ui/common/base-classes';\nimport { getComponentName } from '@descope-ui/common/components-helpers';\nimport { compose } from '@descope-ui/common/utils';\nimport { injectStyle } from '@descope-ui/common/components-helpers';\n\nexport const componentName = getComponentName('badge');\n\nclass RawBadge extends createBaseClass({\n componentName,\n baseSelector: ':host > div',\n}) {\n constructor() {\n super();\n\n this.attachShadow({ mode: 'open' }).innerHTML = `\n\t\t<div>\n <slot></slot>\n\t\t</div>\n\t\t`;\n\n injectStyle(\n `\n :host {\n display: inline-flex;\n }\n :host > div {\n width: 100%;\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n }\n `,\n this,\n );\n }\n}\n\nexport const BadgeClass = compose(\n createStyleMixin({\n mappings: {\n hostWidth: [{ selector: () => ':host', property: 'width' }],\n hostDirection: { property: 'direction' },\n\n fontFamily: {},\n fontSize: {},\n fontWeight: {},\n textTransform: {},\n verticalPadding: [\n { property: 'padding-top' },\n { property: 'padding-bottom' },\n ],\n horizontalPadding: [\n { property: 'padding-left' },\n { property: 'padding-right' },\n ],\n\n borderWidth: {},\n borderStyle: {},\n borderColor: {},\n borderRadius: {},\n\n backgroundColor: {},\n\n textColor: { property: 'color' },\n textAlign: {},\n },\n }),\n draggableMixin,\n componentNameValidationMixin,\n)(RawBadge);\n","import { createStyleMixin, draggableMixin, componentNameValidationMixin } from '../../mixins';\nimport { createBaseClass } from '../../baseClasses/createBaseClass';\nimport { compose } from '../../helpers';\nimport { getComponentName } from '../../helpers/componentHelpers';\nimport { TextClass } from '@descope-ui/descope-text/class';\nimport { ButtonClass } from '@descope-ui/descope-button/class';\nimport { BadgeClass } from '@descope-ui/descope-badge/class';\nimport { injectStyle } from '@descope-ui/common/components-helpers';\nimport deleteIcon from './delete.svg';\nimport editIcon from './edit.svg';\n\nexport const componentName = getComponentName('user-attribute');\nclass RawUserAttribute extends createBaseClass({\n componentName,\n baseSelector: ':host > .root',\n}) {\n constructor() {\n super();\n\n this.attachShadow({ mode: 'open' }).innerHTML = `\n <div class=\"root\">\n <descope-text st-text-align=\"auto\" data-id=\"label-text\" variant=\"body1\" mode=\"secondary\" class=\"label\"></descope-text>\n <div class=\"content-wrapper\">\n <descope-text st-text-align=\"auto\" data-id=\"value-text\" variant=\"body1\" mode=\"primary\" class=\"value\"></descope-text>\n <div class=\"btn-wrapper\">\n <descope-badge mode=\"default\" bordered=\"true\" size=\"xs\"></descope-badge>\n <descope-button size=\"xs\" data-id=\"edit-btn\" square=\"true\" variant=\"link\" mode=\"primary\">\n <slot name=\"edit-icon\"></slot>\n </descope-button>\n <descope-button size=\"xs\" data-id=\"delete-btn\" square=\"true\" variant=\"link\" mode=\"primary\">\n <slot name=\"delete-icon\"></slot>\n </descope-button>\n </div>\n </div>\n </div>\n\t\t`;\n\n injectStyle(\n `\n :host {\n\t\t\t\t\tdisplay: inline-flex;\n container-type: inline-size;\n\t\t\t\t}\n\n .root {\n display: flex;\n width: 100%;\n height: 100%;\n align-items: center;\n }\n \n ::slotted(*) {\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n @container (max-width: 529px) {\n .root {\n flex-wrap: wrap;\n }\n }\n\n .btn-wrapper {\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-grow: 0;\n }\n\n .content-wrapper {\n display: flex;\n flex-grow: 1;\n align-items: center;\n }\n\n descope-text::part(text-wrapper) {\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n width: initial;\n }\n\n descope-text {\n display: inline-flex;\n max-width: 100%;\n min-width: 0;\n }\n\n .label {\n flex-grow: 1;\n width: 100%;\n }\n\n .value {\n flex-grow: 1;\n }\n\n descope-badge {\n margin-inline-end: 10px;\n }\n\n .hidden {\n visibility: hidden;\n }\n\n descope-text[data-id=\"label-text\"].required:after {\n content: '*';\n color: var(${TextClass.cssVarList.textColor});\n }\n\n :host([readonly=\"true\"]) descope-button {\n visibility: hidden;\n }\n `,\n this\n );\n\n this.deleteButton = this.shadowRoot.querySelector('descope-button[data-id=\"delete-btn\"]');\n this.editButton = this.shadowRoot.querySelector('descope-button[data-id=\"edit-btn\"]');\n this.badge = this.shadowRoot.querySelector('descope-badge');\n this.labelText = this.shadowRoot.querySelector('descope-text[data-id=\"label-text\"]');\n this.valueText = this.shadowRoot.querySelector('descope-text[data-id=\"value-text\"]');\n }\n\n onLabelChange() {\n this.labelText.innerText = this.label;\n this.labelText.setAttribute('title', this.label);\n }\n\n onValueOrPlaceholderChange() {\n const text = this.value || this.placeholder;\n const mode = this.value ? 'primary' : 'secondary';\n\n this.valueText.innerText = text;\n this.valueText.setAttribute('title', text);\n this.valueText.setAttribute('mode', mode);\n }\n\n onBadgeLabelChange() {\n if (!this.badgeLabel) {\n this.badge.style.display = 'none';\n } else {\n this.badge.innerText = this.badgeLabel;\n this.badge.style.display = '';\n }\n }\n\n onBadgeTooltipTextChange() {\n this.badge.setAttribute('title', this.badgeTooltipText || this.badgeLabel);\n }\n\n onIsRequiredChange() {\n this.labelText.classList.toggle('required', this.isRequired);\n }\n\n get label() {\n return this.getAttribute('label') || '';\n }\n\n get value() {\n return this.getAttribute('value') || '';\n }\n\n get placeholder() {\n return this.getAttribute('placeholder') || '';\n }\n\n get isRequired() {\n return this.getAttribute('required') === 'true';\n }\n\n get badgeLabel() {\n return this.getAttribute('badge-label') || '';\n }\n\n get badgeTooltipText() {\n return this.getAttribute('badge-tooltip-text') || '';\n }\n\n init() {\n this.onLabelChange();\n this.onValueOrPlaceholderChange();\n this.onIsRequiredChange();\n this.onBadgeLabelChange();\n this.onBadgeTooltipTextChange();\n this.handleDeleteButtonVisibility();\n\n this.deleteButton.addEventListener('click', () =>\n this.dispatchEvent(new CustomEvent('delete-clicked', { bubbles: true, composed: true }))\n );\n\n this.editButton.addEventListener('click', () =>\n this.dispatchEvent(new CustomEvent('edit-clicked', { bubbles: true, composed: true }))\n );\n\n this.setDefaultChildren();\n }\n\n #addIcon(src, slotName) {\n const icon = document.createElement('descope-icon');\n icon.setAttribute('src', src);\n icon.setAttribute('src-dark', src);\n icon.setAttribute('slot', slotName);\n this.appendChild(icon);\n }\n\n setDefaultChildren() {\n if (this.children.length) return;\n this.#addIcon(deleteIcon, 'delete-icon');\n this.#addIcon(editIcon, 'edit-icon');\n }\n\n static get observedAttributes() {\n return [\n 'label',\n 'value',\n 'placeholder',\n 'required',\n 'badge-label',\n 'badge-tooltip-text',\n ].concat(super.observedAttributes);\n }\n\n handleDeleteButtonVisibility() {\n this.deleteButton.classList.toggle('hidden', this.isRequired || !this.value);\n }\n\n attributeChangedCallback(name, oldValue, newValue) {\n super.attributeChangedCallback?.(name, oldValue, newValue);\n\n if (oldValue === newValue) {\n return;\n }\n\n if (name === 'label') {\n this.onLabelChange();\n } else if (name === 'value' || name === 'placeholder') {\n this.onValueOrPlaceholderChange();\n } else if (name === 'required') {\n this.onIsRequiredChange();\n } else if (name === 'badge-label') {\n this.onBadgeLabelChange();\n } else if (name === 'badge-tooltip-text') {\n this.onBadgeTooltipTextChange();\n }\n\n if (name === 'value' || name === 'required') {\n this.handleDeleteButtonVisibility();\n }\n }\n}\n\nconst { host, textFields, buttons, badge, labelText, contentWrapper } = {\n host: { selector: () => ':host' },\n textFields: { selector: 'descope-text' },\n labelText: { selector: 'descope-text[data-id=\"label-text\"]' },\n buttons: { selector: 'descope-button' },\n badge: { selector: 'descope-badge' },\n contentWrapper: { selector: ' .content-wrapper' },\n};\n\nexport const UserAttributeClass = compose(\n createStyleMixin({\n mappings: {\n hostWidth: { ...host, property: 'width' },\n hostMinWidth: { ...host, property: 'min-width' },\n hostMaxWidth: { ...host, property: 'max-width' },\n hostDirection: [\n { ...host, property: 'direction' },\n { ...textFields, property: TextClass.cssVarList.hostDirection },\n { ...buttons, property: ButtonClass.cssVarList.hostDirection },\n { ...badge, property: BadgeClass.cssVarList.hostDirection },\n ],\n labelMinWidth: { ...labelText, property: 'min-width' },\n contentMinWidth: { ...contentWrapper, property: 'min-width' },\n badgeMaxWidth: { ...badge, property: 'max-width' },\n itemsGap: [{ property: 'gap' }, { ...contentWrapper, property: 'gap' }],\n },\n }),\n draggableMixin,\n componentNameValidationMixin\n)(RawUserAttribute);\n","export default \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTgiIHZpZXdCb3g9IjAgMCAxNCAxOCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8cGF0aCBkPSJNMSAxNkMxIDE3LjEgMS45IDE4IDMgMThIMTFDMTIuMSAxOCAxMyAxNy4xIDEzIDE2VjRIMVYxNlpNMyA2SDExVjE2SDNWNlpNMTAuNSAxTDkuNSAwSDQuNUwzLjUgMUgwVjNIMTRWMUgxMC41WiIgZmlsbD0iY3VycmVudGNvbG9yIi8+Cjwvc3ZnPg==\"","export default \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTgiIGhlaWdodD0iMTgiIHZpZXdCb3g9IjAgMCAxNSAxNSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8cGF0aCBkPSJNMTAuMDAwMiAwLjk5MjE0OUMxMC4wMDAyIDEuMDE2MTUgMTAuMDAwMiAxLjAxNjE1IDEwLjAwMDIgMS4wMTYxNUw4LjIyNDE5IDMuMDA4MTVIMi45OTIxOUMyLjQ2NDE5IDMuMDA4MTUgMi4wMDgxOSAzLjQ0MDE1IDIuMDA4MTkgMy45OTIxNVYxMi4wMDgyQzIuMDA4MTkgMTIuNTM2MiAyLjQ0MDE5IDEyLjk5MjIgMi45OTIxOSAxMi45OTIySDUuNTM2MTlDNS44NDgxOSAxMy4wNDAyIDYuMTYwMTkgMTMuMDQwMiA2LjQ3MjE5IDEyLjk5MjJIMTEuMDA4MkMxMS41MzYyIDEyLjk5MjIgMTEuOTkyMiAxMi41NjAyIDExLjk5MjIgMTIuMDA4MlY3Ljc4NDE2TDEzLjkzNjIgNS42MjQxNUwxNC4wMDgyIDUuNjcyMTVWMTEuOTg0MkMxNC4wMDgyIDEzLjY2NDIgMTIuNjY0MiAxNS4wMDgyIDExLjAwODIgMTUuMDA4MkgzLjAxNjE5QzEuMzM2MTkgMTUuMDA4MiAtMC4wMDc4MTI1IDEzLjY2NDIgLTAuMDA3ODEyNSAxMS45ODQyVjMuOTkyMTVDLTAuMDA3ODEyNSAyLjMzNjE1IDEuMzM2MTkgMC45OTIxNDkgMy4wMTYxOSAwLjk5MjE0OUgxMC4wMDAyWk0xMS4yNzIyIDIuNjI0MTVMMTIuNjE2MiA0LjExMjE1TDcuNzIwMTkgOS42ODAxNkM3LjUwNDE5IDkuOTIwMTYgNi44MzIxOSAxMC4yMzIyIDUuNjgwMTkgMTAuNjE2MkM1LjY1NjE5IDEwLjY0MDIgNS42MDgxOSAxMC42NDAyIDUuNTYwMTkgMTAuNjE2MkM1LjQ2NDE5IDEwLjU5MjIgNS4zOTIxOSAxMC40NzIyIDUuNDQwMTkgMTAuMzc2MkM1Ljc1MjE5IDkuMjQ4MTYgNi4wNDAxOSA4LjU1MjE2IDYuMjU2MTkgOC4zMTIxNkwxMS4yNzIyIDIuNjI0MTVaTTExLjkyMDIgMS44NTYxNUwxMy4yODgyIDAuMzIwMTQ5QzEzLjY0ODIgLTAuMDg3ODUxNiAxNC4yNzIyIC0wLjExMTg1MiAxNC42ODAyIDAuMjcyMTQ5QzE1LjA4ODIgMC42MzIxNDkgMTUuMTEyMiAxLjI4MDE1IDE0Ljc1MjIgMS42ODgxNUwxMy4yNjQyIDMuMzY4MTVMMTEuOTIwMiAxLjg1NjE1WiIgZmlsbD0iY3VycmVudGNvbG9yIi8+Cjwvc3ZnPgo=\"","import { componentName, BadgeClass } from './BadgeClass';\n\ncustomElements.define(componentName, BadgeClass);\n\nexport { BadgeClass, componentName };\n","import { componentName, ImageClass } from './ImageClass';\n\ncustomElements.define(componentName, ImageClass);\n\nexport { ImageClass, componentName };\n","import '@descope-ui/descope-image';\n\nimport { componentName, IconClass } from './IconClass';\n\ncustomElements.define(componentName, IconClass);\n\nexport { IconClass, componentName };\n","import { componentName, UserAttributeClass } from './UserAttributeClass';\nimport '@descope-ui/descope-text';\nimport '@descope-ui/descope-button';\nimport '@descope-ui/descope-badge';\nimport '@descope-ui/descope-icon';\n\ncustomElements.define(componentName, UserAttributeClass);\n\nexport { UserAttributeClass, componentName };\n","import { createStyleMixin, draggableMixin, componentNameValidationMixin } from '../../mixins';\nimport { createBaseClass } from '../../baseClasses/createBaseClass';\nimport { compose } from '../../helpers';\nimport { getComponentName } from '../../helpers/componentHelpers';\nimport greenVIcon from './green-v.svg';\nimport { TextClass } from '@descope-ui/descope-text/class';\nimport { ButtonClass } from '@descope-ui/descope-button/class';\nimport { IconClass } from '@descope-ui/descope-icon/class';\nimport { BadgeClass } from '@descope-ui/descope-badge/class';\nimport { injectStyle } from '@descope-ui/common/components-helpers';\n\nexport const componentName = getComponentName('user-auth-method');\nclass RawUserAuthMethod extends createBaseClass({\n componentName,\n baseSelector: ':host > .root',\n}) {\n constructor() {\n super();\n\n this.attachShadow({ mode: 'open' }).innerHTML = `\n <div class=\"root\">\n <div class=\"text-wrapper\">\n <slot name=\"method-icon\"></slot>\n <descope-text st-text-align=\"auto\" data-id=\"label-text\" variant=\"body1\" mode=\"primary\"></descope-text>\n </div>\n\n <div class=\"btn-wrapper\">\n <descope-button class=\"btn unfulfilled hidden\" size=\"sm\" variant=\"link\" mode=\"primary\">\n <slot name=\"button-icon\"></slot>\n </descope-button>\n <descope-button class=\"btn fulfilled hidden\" size=\"sm\" variant=\"link\" mode=\"primary\">\n <slot name=\"fulfilled-button-icon\"></slot>\n </descope-button>\n <div class=\"status-indicator hidden\">\n <vaadin-icon src=${greenVIcon}></vaadin-icon>\n </div>\n <descope-button class=\"hidden-btn\" size=\"sm\" variant=\"link\" mode=\"primary\"></descope-button>\n </div>\n </div>\n\t\t`;\n\n injectStyle(\n `\n :host {\n\t\t\t\t\tdisplay: inline-flex;\n\t\t\t\t}\n\n vaadin-icon {\n color: currentcolor;\n }\n\n .root {\n display: flex;\n width: 100%;\n height: 100%;\n align-items: center;\n }\n\n .btn-wrapper {\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-grow: 0;\n }\n\n .text-wrapper {\n display: flex;\n align-items: center;\n flex-grow: 1;\n min-width: 0;\n }\n\n descope-text::part(text-wrapper) {\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n width: initial;\n }\n\n descope-text {\n display: inline-flex;\n min-width: 0;\n }\n\n .status-indicator {\n width: 1em;\n height: 1em;\n display: flex;\n align-items: center;\n padding-inline-end: 1em;\n }\n\n .hidden {\n display: none;\n }\n\n .hidden-btn {\n width: 0;\n overflow: hidden;\n opacity: 0;\n pointer-events: none;\n }\n\n slot[name=\"method-icon\"]:not(:empty) {\n display: inline-flex;\n align-items: center;\n }\n `,\n this\n );\n\n this.unfulfilledButton = this.shadowRoot.querySelector('.btn.unfulfilled');\n this.fulfilledButton = this.shadowRoot.querySelector('.btn.fulfilled');\n this.statusIndicator = this.shadowRoot.querySelector('.status-indicator');\n this.labelText = this.shadowRoot.querySelector('descope-text[data-id=\"label-text\"]');\n }\n\n onLabelChange() {\n this.labelText.innerText = this.label;\n this.labelText.setAttribute('title', this.label);\n }\n\n updateButtonLabel(btnRef, label) {\n let textSpanEle = btnRef.querySelector('span');\n\n if (label) {\n if (!textSpanEle) {\n textSpanEle = document.createElement('span');\n btnRef.appendChild(textSpanEle);\n }\n textSpanEle.innerText = label;\n } else if (textSpanEle) {\n btnRef.removeChild(textSpanEle);\n }\n }\n\n onFulfilledChange() {\n if (this.isFulfilled) {\n this.unfulfilledButton.classList.add('hidden');\n this.handleFulfilled();\n } else {\n this.fulfilledButton.classList.add('hidden');\n this.handleUnfulfilled();\n }\n }\n\n handleFulfilled() {\n this.fulfilledButton.classList.toggle('hidden', !this.isFulfilledEditable);\n this.statusIndicator.classList.toggle('hidden', this.isFulfilledEditable);\n }\n\n handleUnfulfilled() {\n this.unfulfilledButton.classList.toggle('hidden', !this.isUnfulfilledEditable);\n this.statusIndicator.classList.toggle('hidden', this.isUnfulfilledEditable);\n }\n\n get label() {\n return this.getAttribute('label') || '';\n }\n\n get unfulfilledButtonLabel() {\n return this.getAttribute('button-label') || '';\n }\n\n get fulfilledButtonLabel() {\n return this.getAttribute('fulfilled-button-label') || '';\n }\n\n get isFulfilled() {\n return this.getAttribute('fulfilled') === 'true';\n }\n\n get isFulfilledEditable() {\n return this.getAttribute('fulfilled-editable') === 'true';\n }\n\n get isUnfulfilledEditable() {\n // this is to keep backward compatibility with previous versions\n return this.getAttribute('unfulfilled-editable') !== 'false';\n }\n\n init() {\n this.onLabelChange();\n this.updateButtonLabel(this.fulfilledButton, this.fulfilledButtonLabel);\n this.updateButtonLabel(this.unfulfilledButton, this.unfulfilledButtonLabel);\n this.onFulfilledChange();\n\n this.unfulfilledButton.addEventListener('click', () =>\n this.dispatchEvent(new CustomEvent('button-clicked', { bubbles: true, composed: true }))\n );\n\n this.fulfilledButton.addEventListener('click', () => {\n this.dispatchEvent(\n new CustomEvent('fulfilled-button-clicked', { bubbles: true, composed: true })\n );\n });\n }\n\n static get observedAttributes() {\n return [\n 'label',\n 'fulfilled',\n 'button-label',\n 'fulfilled-button-label',\n 'fulfilled-editable',\n 'unfulfilled-editable',\n ].concat(super.observedAttributes);\n }\n\n attributeChangedCallback(name, oldValue, newValue) {\n super.attributeChangedCallback?.(name, oldValue, newValue);\n if (oldValue === newValue) {\n return;\n }\n\n if (name === 'label') {\n this.onLabelChange();\n } else if (name === 'fulfilled') {\n this.onFulfilledChange();\n } else if (name === 'button-label') {\n this.updateButtonLabel(this.unfulfilledButton, this.unfulfilledButtonLabel);\n } else if (name === 'fulfilled-button-label') {\n this.updateButtonLabel(this.fulfilledButton, this.fulfilledButtonLabel);\n } else if (name === 'fulfilled-editable' && this.isFulfilled) {\n this.handleFulfilled();\n } else if (name === 'unfulfilled-editable' && !this.isFulfilled) {\n this.handleUnfulfilled();\n }\n }\n}\n\nconst { host, textField, buttons, badge, textWrapper, methodIconSlot } = {\n host: { selector: () => ':host' },\n textField: { selector: 'descope-text' },\n buttons: { selector: 'descope-button' },\n badge: { selector: 'descope-badge' },\n textWrapper: { selector: ' .text-wrapper' },\n methodIconSlot: { selector: 'slot[name=\"method-icon\"]:not(:empty)' },\n};\n\nexport const UserAuthMethodClass = compose(\n createStyleMixin({\n mappings: {\n hostWidth: { ...host, property: 'width' },\n hostMinWidth: { ...host, property: 'min-width' },\n hostMaxWidth: { ...host, property: 'max-width' },\n hostDirection: [\n { ...host, property: 'direction' },\n { ...textField, property: TextClass.cssVarList.hostDirection },\n { ...buttons, property: ButtonClass.cssVarList.hostDirection },\n { ...badge, property: BadgeClass.cssVarList.hostDirection },\n ],\n itemsGap: [{ property: 'gap' }, { ...textWrapper, property: 'gap' }],\n iconSize: [\n { ...methodIconSlot, property: 'width' },\n { ...methodIconSlot, property: 'height' },\n ],\n iconColor: [{ selector: () => '::slotted(*)', property: IconClass.cssVarList.fill }],\n },\n }),\n draggableMixin,\n componentNameValidationMixin\n)(RawUserAuthMethod);\n","import { componentName, UserAuthMethodClass } from './UserAuthMethodClass';\nimport '@descope-ui/descope-text';\nimport '@descope-ui/descope-button';\nimport '@descope-ui/descope-badge';\nimport '@vaadin/icon';\n\ncustomElements.define(componentName, UserAuthMethodClass);\n\nexport { UserAuthMethodClass, componentName };\n","import { createBaseInputClass } from '../../../../baseClasses/createBaseInputClass';\nimport {\n getComponentName,\n forwardAttrs,\n observeAttributes,\n} from '../../../../helpers/componentHelpers';\n\nexport const componentName = getComponentName('saml-group-mappings-internal');\n\nconst BaseInputClass = createBaseInputClass({ componentName, baseSelector: '' });\n\nclass SamlGroupMappingsInternal extends BaseInputClass {\n static get observedAttributes() {\n return ['invalid'].concat(BaseInputClass.observedAttributes || []);\n }\n\n constructor() {\n super();\n\n this.innerHTML = `\n <descope-text-field variant=\"body2\" bordered=\"true\"></descope-text-field>\n <descope-mappings-field></descope-mappings-field>\n `;\n\n this.groupInputElement = this.querySelector('descope-text-field');\n this.mappingsElement = this.querySelector('descope-mappings-field');\n }\n\n resetInvalidIndication() {\n this.removeAttribute('invalid');\n }\n\n handleMappingsInvalidChange(changedAttributes) {\n if (changedAttributes.includes('invalid')) {\n if (!this.mappingsElement.hasAttribute('invalid')) {\n this.resetInvalidIndication();\n }\n }\n }\n\n initFocusHandler() {\n // This event listener needs to be placed before the super.init() call\n this.addEventListener('focus', (e) => {\n // we want to ignore focus events we are dispatching\n if (e.isTrusted) {\n const focusedElement = this.mappingsElement.checkValidity()\n ? this.groupInputElement\n : this.mappingsElement;\n focusedElement.focus();\n }\n });\n }\n\n init() {\n // This needs to be placed before the super.init() call to work\n this.initFocusHandler();\n\n super.init?.();\n\n forwardAttrs(this, this.groupInputElement, {\n mapAttrs: { 'label-group': 'label' },\n includeAttrs: ['size', 'label-group', 'readonly', 'disabled'],\n });\n\n forwardAttrs(this, this.mappingsElement, {\n includeAttrs: [\n 'size',\n 'full-width',\n 'label-value',\n 'label-attr',\n 'button-label',\n 'separator',\n 'options',\n 'readonly',\n 'disabled',\n 'data-errormessage-pattern-mismatch',\n ],\n });\n\n // Observing the invalid attribute of the mappings field to reset the invalid state for this component.\n // When an invalid item turns valid, the mappings field will remove the invalid attribute, and at this component\n // level, we need to remove the invalid attribute as well to be able to mark the component as invalid the next time\n observeAttributes(this.mappingsElement, this.handleMappingsInvalidChange.bind(this), {\n includeAttrs: ['invalid'],\n });\n }\n\n get value() {\n return {\n group: this.groupInputElement.value,\n mappings: this.mappingsElement.value,\n };\n }\n\n set value(value) {\n if (value?.group && typeof value.group === 'string') {\n this.groupInputElement.value = value.group;\n }\n if (Array.isArray(value?.mappings)) {\n this.mappingsElement.value = value.mappings;\n }\n }\n\n getValidity() {\n if (!this.groupInputElement.checkValidity()) {\n return this.groupInputElement.validity;\n }\n if (!this.mappingsElement.checkValidity()) {\n return this.mappingsElement.validity;\n }\n\n return {};\n }\n\n #handleInvalidState(isInvalid) {\n if (isInvalid) {\n if (!this.groupInputElement.checkValidity()) {\n this.groupInputElement.setAttribute('invalid', 'true');\n return;\n }\n\n if (!this.mappingsElement.checkValidity()) {\n this.mappingsElement.setAttribute('invalid', 'true');\n }\n }\n }\n\n attributeChangedCallback(attrName, oldValue, newValue) {\n super.attributeChangedCallback?.(attrName, oldValue, newValue);\n if (attrName === 'invalid') {\n this.#handleInvalidState(newValue === 'true');\n }\n }\n}\n\nexport default SamlGroupMappingsInternal;\n","import {\n createStyleMixin,\n draggableMixin,\n createProxy,\n proxyInputMixin,\n componentNameValidationMixin,\n} from '../../../mixins';\nimport { compose } from '../../../helpers';\nimport { forwardAttrs, getComponentName, syncAttrs } from '../../../helpers/componentHelpers';\nimport { componentName as descopeInternalComponentName } from './descope-saml-group-mappings-internal/SamlGroupMappingsInternal';\n\nexport const componentName = getComponentName('saml-group-mappings');\n\nconst customMixin = (superclass) =>\n class SamlGroupMappingsMixinClass extends superclass {\n init() {\n super.init?.();\n\n const template = document.createElement('template');\n\n template.innerHTML = `\n <${descopeInternalComponentName}\n tabindex=\"-1\"\n ></${descopeInternalComponentName}>\n `;\n\n this.baseElement.appendChild(template.content.cloneNode(true));\n\n this.inputElement = this.shadowRoot.querySelector(descopeInternalComponentName);\n\n forwardAttrs(this, this.inputElement, {\n includeAttrs: [\n 'size',\n 'full-width',\n 'label-group',\n 'label-value',\n 'label-attr',\n 'button-label',\n 'separator',\n 'options',\n 'readonly',\n 'disabled',\n ],\n });\n\n syncAttrs(this, this.inputElement, { includeAttrs: ['invalid'] });\n }\n };\n\nconst { host, groupInput, errorMessage } = {\n host: { selector: () => ':host' },\n groupInput: { selector: 'descope-text-field' },\n errorMessage: { selector: '::part(error-message)' },\n};\n\nexport const SamlGroupMappingsClass = compose(\n createStyleMixin({\n mappings: {\n hostWidth: { ...host, property: 'width' },\n hostDirection: { ...host, property: 'direction' },\n groupNameInputMarginBottom: { ...groupInput, property: 'margin-bottom' },\n errorMessageIcon: { ...errorMessage, property: 'background-image' },\n errorMessageIconSize: { ...errorMessage, property: 'background-size' },\n errorMessageIconPadding: { ...errorMessage, property: 'padding-inline-start' },\n errorMessageIconRepeat: { ...errorMessage, property: 'background-repeat' },\n errorMessageIconPosition: { ...errorMessage, property: 'background-position' },\n errorMessageFontSize: { ...errorMessage, property: 'font-size' },\n },\n }),\n draggableMixin,\n proxyInputMixin({\n proxyProps: ['value', 'selectionStart'],\n inputEvent: 'input',\n triggerValidationEvents: ['mapping-item-added', 'mapping-item-removed'],\n proxyParentValidation: true,\n }),\n componentNameValidationMixin,\n customMixin\n)(\n createProxy({\n slots: [],\n wrappedEleName: 'vaadin-custom-field',\n style: () => `\n :host {\n display: inline-flex;\n max-width: 100%;\n direction: ltr;\n }\n\n vaadin-custom-field {\n line-height: unset;\n width: 100%;\n }\n\n descope-text-field {\n width: auto;\n }\n\n descope-mappings-field {\n display: block;\n }\n `,\n excludeAttrsSync: [\n 'tabindex',\n 'label-group',\n 'label-value',\n 'label-attr',\n 'button-label',\n 'separator',\n 'options',\n 'error-message',\n 'style',\n ],\n componentName,\n })\n);\n\nexport default SamlGroupMappingsClass;\n","import SamlGroupMappingsInternal, { componentName } from './SamlGroupMappingsInternal';\n\ncustomElements.define(componentName, SamlGroupMappingsInternal);\n","import '@vaadin/custom-field';\n\nimport { componentName, SamlGroupMappingsClass } from './SamlGroupMappingsClass';\nimport '../../descope-text-field';\nimport '../descope-mappings-field';\nimport './descope-saml-group-mappings-internal';\n\ncustomElements.define(componentName, SamlGroupMappingsClass);\n\nexport { SamlGroupMappingsClass, componentName };\n","import { compose } from '../../helpers';\nimport { getComponentName, observeChildren } from '../../helpers/componentHelpers';\nimport {\n componentNameValidationMixin,\n createProxy,\n createStyleMixin,\n proxyInputMixin,\n} from '../../mixins';\n\nexport const componentName = getComponentName('radio-button');\n\nconst customMixin = (superclass) =>\n class CustomMixin extends superclass {\n constructor() {\n super();\n\n this.baseElement.checkValidity = () => {};\n }\n\n init() {\n // we are forwarding vaadin checked-changed event\n this.baseElement.addEventListener('checked-changed', (e) => {\n this.dispatchEvent(\n new CustomEvent(\n 'checked-changed',\n { detail: e.detail },\n { bubbles: true, composed: true }\n )\n );\n });\n\n super.init?.();\n\n observeChildren(this, this.renderLabel.bind(this));\n }\n\n renderLabel() {\n this.baseElement.setAttribute('label', this.textContent);\n }\n\n get value() {\n return this.getAttribute('value');\n }\n };\n\nexport const RadioButtonClass = compose(\n createStyleMixin({\n mappings: {\n cursor: [{}, { selector: 'label' }],\n fontSize: [{ selector: 'label' }, {}],\n labelTextColor: { selector: 'label', property: 'color' },\n fontFamily: { selector: 'label' },\n radioSize: [\n { selector: '::part(radio)', property: 'height' },\n { selector: '::part(radio)', property: 'width' },\n ],\n radioBackgroundColor: { selector: '::part(radio)', property: 'background-color' },\n radioMargin: { selector: '::part(radio)', property: 'margin' },\n radioCheckedSize: { selector: '::part(radio)::after', property: 'border-width' },\n radioCheckedColor: { selector: '::part(radio)::after', property: 'border-color' },\n radioBorderColor: { selector: '::part(radio)', property: 'border-color', fallback: 'none' },\n radioBorderWidth: { selector: '::part(radio)', property: 'border-width', fallback: 0 },\n radioBorderStyle: { selector: '::part(radio)', property: 'border-style', fallback: 'solid' },\n },\n }),\n proxyInputMixin({ proxyProps: ['setSelectionRange'] }),\n componentNameValidationMixin,\n customMixin\n)(\n createProxy({\n slots: [''],\n wrappedEleName: 'vaadin-radio-button',\n excludeAttrsSync: ['tabindex', 'data', 'style'],\n includeForwardProps: ['checked', 'name', 'disabled'],\n componentName,\n })\n);\n","import { compose } from '../../helpers';\nimport {\n forwardAttrs,\n getComponentName,\n observeAttributes,\n observeChildren,\n} from '../../helpers/componentHelpers';\nimport { resetInputLabelPosition } from '../../helpers/themeHelpers/resetHelpers';\nimport {\n componentNameValidationMixin,\n createProxy,\n createStyleMixin,\n draggableMixin,\n proxyInputMixin,\n} from '../../mixins';\nimport textFieldMappings from '../descope-text-field/textFieldMappings';\nimport { componentName as childNodeName, RadioButtonClass } from './RadioButtonClass';\n\nexport const componentName = getComponentName('radio-group');\n\nconst RadioGroupMixin = (superclass) =>\n class RadioGroupMixinClass extends superclass {\n // eslint-disable-next-line class-methods-use-this\n #renderItem = ({ value, label }) =>\n `<descope-radio-button value=\"${value}\">${label}</descope-radio-button>`;\n\n #data;\n\n constructor() {\n super();\n\n // we are overriding vaadin children getter so it will run on our custom elements\n Object.defineProperty(this.baseElement, 'children', {\n get: () => this.querySelectorAll(childNodeName),\n });\n\n // we are overriding vaadin __filterRadioButtons so it will run on our custom elements\n this.baseElement.__filterRadioButtons = (nodes) => {\n return nodes.filter((node) => node.localName === childNodeName);\n };\n\n // vaadin radio group missing some input properties\n this.baseElement.setCustomValidity = () => {};\n }\n\n get items() {\n return this.shadowRoot.querySelector('slot').assignedElements();\n }\n\n get size() {\n return this.getAttribute('size');\n }\n\n get data() {\n if (this.#data) return this.#data;\n\n const dataAttr = this.getAttribute('data');\n\n if (dataAttr) {\n try {\n const data = JSON.parse(dataAttr);\n if (this.isValidDataType(data)) {\n return data;\n }\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error('could not parse data string from attribute \"data\" - ', e.message);\n }\n }\n\n return [];\n }\n\n set data(data) {\n if (this.isValidDataType(data)) {\n this.#data = data;\n this.renderItems();\n }\n }\n\n get defaultValue() {\n return this.getAttribute('default-value');\n }\n\n // eslint-disable-next-line class-methods-use-this\n isValidDataType(data) {\n const isValid = Array.isArray(data);\n if (!isValid) {\n // eslint-disable-next-line no-console\n console.error('data must be an array, received:', data);\n }\n\n return isValid;\n }\n\n getItemsTemplate() {\n return this.data?.reduce?.((acc, item) => acc + (this.#renderItem?.(item || {}) || ''), '');\n }\n\n renderItems() {\n const template = this.getItemsTemplate();\n if (template) this.innerHTML = template;\n }\n\n init() {\n super.init?.();\n\n this.inputElement = this.baseElement;\n\n this.renderItems();\n\n observeAttributes(this, this.renderItems.bind(this), { includeAttrs: ['data'] });\n\n Object.defineProperty(this.baseElement, 'validity', {\n get: () => {\n return { valueMissing: !this.baseElement.checkValidity() };\n },\n });\n\n forwardAttrs(this, this.baseElement, {\n includeAttrs: ['layout'],\n mapAttrs: { layout: 'theme' },\n });\n\n setTimeout(() => {\n if (this.defaultValue) {\n this.value = this.defaultValue;\n }\n });\n\n // we want new items to get the size\n observeChildren(this, ({ addedNodes }) => {\n addedNodes.forEach((node) => {\n node.setAttribute('size', this.size);\n });\n });\n\n observeAttributes(\n this,\n () => {\n this.items.forEach((item) => {\n item.setAttribute('size', this.size);\n });\n },\n {\n includeAttrs: ['size'],\n }\n );\n }\n };\n\nexport const RadioGroupClass = compose(\n createStyleMixin({\n mappings: {\n ...textFieldMappings,\n buttonsSpacing: { selector: '::part(group-field)', property: 'justify-content' },\n buttonsRowGap: { selector: '::part(group-field)', property: 'row-gap' },\n buttonsColumnGap: { selector: '::part(group-field)', property: 'column-gap' },\n itemsLabelColor: {\n selector: () => `::slotted(${RadioButtonClass.componentName})`,\n property: RadioButtonClass.cssVarList.labelTextColor,\n },\n },\n }),\n draggableMixin,\n proxyInputMixin({ proxyProps: ['setSelectionRange'] }),\n componentNameValidationMixin,\n RadioGroupMixin\n)(\n createProxy({\n slots: ['', 'prefix'],\n wrappedEleName: 'vaadin-radio-group',\n style: () => `\n :host {\n display: inline-block;\n max-width: 100%;\n box-sizing: border-box;\n }\n\n vaadin-radio-group {\n padding: 0;\n width: 100%;\n }\n\n ${resetInputLabelPosition('vaadin-radio-group')}\n `,\n\n excludeAttrsSync: ['tabindex', 'size', 'data', 'direction', 'style'],\n componentName,\n includeForwardProps: ['value'],\n })\n);\n","import { componentName as groupComponentName, RadioGroupClass } from './RadioGroupClass';\nimport { componentName as buttonComponentName, RadioButtonClass } from './RadioButtonClass';\nimport '@vaadin/radio-group';\n\ncustomElements.define(groupComponentName, RadioGroupClass);\ncustomElements.define(buttonComponentName, RadioButtonClass);\n\nexport { RadioGroupClass, groupComponentName as componentName };\n","import { observeAttributes } from '../helpers/componentHelpers';\n\nconst defaultValidateSchema = () => true;\nconst defaultItemRenderer = (item) => `<pre>${JSON.stringify(item, null, 4)}</pre>`;\n\nconst createTemplate = (templateString) => {\n const template = document.createElement('template');\n template.innerHTML = templateString;\n\n return template;\n};\n\nconst getTemplateContent = (templateOrString) => {\n if (typeof templateOrString === 'string') {\n return createTemplate(templateOrString).content;\n }\n\n if (templateOrString instanceof HTMLTemplateElement) {\n return templateOrString.content;\n }\n\n // eslint-disable-next-line no-console\n console.error('Invalid template', templateOrString);\n return null;\n};\n\nexport const createDynamicDataMixin =\n ({\n itemRenderer = defaultItemRenderer,\n validateSchema = defaultValidateSchema,\n slotName,\n rerenderAttrsList = [],\n }) =>\n (superclass) =>\n class DynamicDataMixinClass extends superclass {\n #data = [];\n\n // eslint-disable-next-line class-methods-use-this\n #validateSchema(data) {\n if (!validateSchema) return true;\n\n const validation = validateSchema(data);\n if (validation === true) return true;\n\n // eslint-disable-next-line no-console\n console.error('Data schema validation failed', validation || '');\n\n return false;\n }\n\n #removeOldItems() {\n const selector = slotName ? `*[slot=\"${slotName}\"]` : ':not([slot])';\n this.baseElement.querySelectorAll(selector).forEach((item) => item.remove());\n }\n\n #renderItems() {\n this.#removeOldItems();\n this.data.forEach((item, index) => {\n const content = getTemplateContent(itemRenderer(item, index, this));\n this.baseElement.appendChild(content?.cloneNode(true));\n });\n }\n\n set data(value) {\n if (this.#validateSchema(value)) {\n this.#data = value;\n this.#renderItems();\n }\n }\n\n get data() {\n return this.#data;\n }\n\n init() {\n super.init?.();\n\n observeAttributes(\n this,\n (attrs) => {\n if (attrs.includes('data')) this.#handleDataAttr();\n else this.#renderItems();\n },\n { includeAttrs: [...rerenderAttrsList, 'data'] }\n );\n }\n\n #handleDataAttr() {\n const dataAttr = this.getAttribute('data');\n\n if (!dataAttr) return;\n\n try {\n this.data = JSON.parse(dataAttr);\n } catch (e) {\n // eslint-disable-next-line no-console\n console.warn('Invalid JSON data', dataAttr);\n }\n }\n };\n","import { injectStyle } from '@descope-ui/common/components-helpers';\nimport { createBaseClass } from '../../baseClasses/createBaseClass';\nimport { compose } from '../../helpers';\nimport { getComponentName } from '../../helpers/componentHelpers';\nimport { componentNameValidationMixin, createStyleMixin, draggableMixin } from '../../mixins';\nimport { createDynamicDataMixin } from '../../mixins/createDynamicDataMixin';\nimport { CheckboxClass } from '../boolean-fields/descope-checkbox/CheckboxClass';\nimport { SwitchToggleClass } from '../boolean-fields/descope-switch-toggle/SwitchToggleClass';\n\nexport const componentName = getComponentName('scopes-list');\nconst variants = ['checkbox', 'switch'];\n\nconst itemRenderer = ({ id, desc, required = false }, _, ref) => {\n const ComponentClass = ref.variant === 'checkbox' ? CheckboxClass : SwitchToggleClass;\n\n return `\n <${ComponentClass.componentName}\n bordered=\"true\"\n size=${ref.size}\n label=\"${desc}\"\n data-id=\"${id}\"\n readonly=\"${required || ref.isReadOnly}\"\n required=\"${required}\"\n checked=\"true\"\n ></${ComponentClass.componentName}>\n`;\n};\n\nclass RawScopesList extends createBaseClass({ componentName, baseSelector: 'div' }) {\n constructor() {\n super();\n\n this.attachShadow({ mode: 'open' }).innerHTML = `\n <div></div>\n\t\t`;\n\n injectStyle(\n `\n :host {\n display: inline-flex;\n }\n\n div {\n display: flex;\n flex-direction: column;\n }\n `,\n this\n );\n }\n\n get isReadOnly() {\n return this.getAttribute('readonly') === 'true';\n }\n\n get size() {\n return this.getAttribute('size') || 'sm';\n }\n\n #getChildNodes() {\n return Array.from(this.shadowRoot.querySelector('div').children);\n }\n\n // eslint-disable-next-line class-methods-use-this\n reportValidity() {\n this.checkValidity();\n }\n\n // eslint-disable-next-line class-methods-use-this\n checkValidity() {\n return this.data.every((item) => !item.required || this.value.includes(item.id));\n }\n\n get value() {\n return this.#getChildNodes()\n .filter((node) => node.checked)\n .map((node) => node.getAttribute('data-id'));\n }\n\n set value(val = []) {\n this.#getChildNodes().forEach((node) => {\n // eslint-disable-next-line no-param-reassign\n node.checked = val.includes(node.getAttribute('data-id'));\n });\n }\n\n get variant() {\n const variant = this.getAttribute('variant');\n\n return variants.includes(variant) ? variant : variants[0];\n }\n}\n\nexport const ScopesListClass = compose(\n createStyleMixin({\n mappings: {\n hostWidth: { selector: () => ':host', property: 'width' },\n hostDirection: [\n { selector: () => ':host', property: 'direction' },\n {\n selector: () => CheckboxClass.componentName,\n property: CheckboxClass.cssVarList.hostDirection,\n },\n {\n selector: () => SwitchToggleClass.componentName,\n property: SwitchToggleClass.cssVarList.hostDirection,\n },\n ],\n gap: { selector: () => 'div', property: 'gap' },\n requiredInputBorderColor: [\n {\n selector: `${CheckboxClass.componentName}[required=\"true\"]`,\n property: CheckboxClass.cssVarList.inputBorderColor,\n },\n {\n selector: `${SwitchToggleClass.componentName}[required=\"true\"]`,\n property: SwitchToggleClass.cssVarList.inputBorderColor,\n },\n ],\n requiredInputValueTextColor: [\n {\n selector: `${CheckboxClass.componentName}[required=\"true\"]`,\n property: CheckboxClass.cssVarList.inputValueTextColor,\n },\n {\n selector: `${SwitchToggleClass.componentName}[required=\"true\"]`,\n property: SwitchToggleClass.cssVarList.knobColor,\n },\n ],\n },\n }),\n createDynamicDataMixin({ itemRenderer, rerenderAttrsList: ['size', 'variant'] }),\n draggableMixin,\n componentNameValidationMixin\n)(RawScopesList);\n","import {\n createStyleMixin,\n draggableMixin,\n componentNameValidationMixin,\n activeableMixin,\n} from '@descope-ui/common/components-mixins';\nimport { compose } from '@descope-ui/common/utils';\nimport { getComponentName } from '@descope-ui/common/components-helpers';\nimport { injectStyle } from '@descope-ui/common/components-helpers';\nimport { createBaseClass } from '@descope-ui/common/base-classes';\n\nexport const componentName = getComponentName('list-item');\n\nconst customMixin = (superclass) =>\n class ListItemMixinClass extends superclass {\n constructor() {\n super();\n\n this.attachShadow({ mode: 'open' }).innerHTML = `\n <slot></slot>\n `;\n\n injectStyle(\n `\n slot {\n width: 100%;\n display: flex;\n overflow: hidden;\n box-sizing: border-box;\n }\n :host {\n display: block;\n }\n `,\n this,\n );\n }\n };\n\nexport const ListItemClass = compose(\n createStyleMixin({\n mappings: {\n verticalPadding: [\n { property: 'padding-top' },\n { property: 'padding-bottom' },\n ],\n horizontalPadding: [\n { property: 'padding-left' },\n { property: 'padding-right' },\n ],\n backgroundColor: {},\n borderColor: {},\n borderStyle: {},\n borderWidth: {},\n borderRadius: {},\n outline: {},\n cursor: {},\n gap: {},\n maxWidth: { selector: () => ':host' },\n alignItems: {},\n flexDirection: {},\n transition: {},\n },\n }),\n draggableMixin,\n componentNameValidationMixin,\n customMixin,\n activeableMixin,\n)(createBaseClass({ componentName, baseSelector: 'slot' }));\n","export const activeableMixin = (superclass) =>\n class ActiveableMixinClass extends superclass {\n init() {\n super.init?.();\n\n this.baseElement.addEventListener('mousedown', (e) => {\n e.preventDefault();\n this.setAttribute('active', 'true');\n window.addEventListener('mouseup', () => this.removeAttribute('active'), {\n once: true,\n });\n });\n }\n };\n","import { componentName, ListItemClass } from './ListItemClass';\n\ncustomElements.define(componentName, ListItemClass);\n\nexport { ListItemClass, componentName };\n","import {\n createStyleMixin,\n draggableMixin,\n componentNameValidationMixin,\n} from '@descope-ui/common/components-mixins';\nimport { compose } from '@descope-ui/common/utils';\nimport {\n getComponentName,\n observeChildren,\n} from '@descope-ui/common/components-helpers';\nimport { injectStyle } from '@descope-ui/common/components-helpers';\nimport { ListItemClass } from '@descope-ui/descope-list-item/class';\nimport { createBaseClass } from '@descope-ui/common/base-classes';\n\nexport const componentName = getComponentName('list');\n\nclass RawList extends createBaseClass({\n componentName,\n baseSelector: '.wrapper',\n}) {\n static get observedAttributes() {\n return ['variant', 'readonly'];\n }\n\n constructor() {\n super();\n\n this.attachShadow({ mode: 'open' }).innerHTML = `\n <div class=\"wrapper\">\n <slot></slot>\n <slot name=\"empty-state\">\n No item...\n </slot>\n </div>\n\t`;\n\n injectStyle(\n `\n .wrapper {\n overflow: auto;\n display: grid;\n max-height: 100%;\n width: 100%;\n }\n\n :host {\n display: inline-flex;\n width: 100%;\n }\n slot[name=\"empty-state\"] {\n justify-content: center;\n align-items: center;\n display: flex;\n flex-grow: 1;\n }\n\n :host slot[name=\"empty-state\"] {\n display: none;\n }\n :host([empty]) slot[name=\"empty-state\"] {\n display: flex;\n }\n ::slotted(:not([slot])) {\n width: 100%;\n }\n `,\n this,\n );\n }\n\n get items() {\n return this.shadowRoot.querySelector('slot').assignedElements();\n }\n\n #handleEmptyState() {\n if (this.items.length === 0) {\n this.setAttribute('empty', 'true');\n } else {\n this.removeAttribute('empty');\n }\n }\n\n get variant() {\n return this.getAttribute('variant') || 'list';\n }\n\n #handleItemsVariant() {\n this.items.forEach((item) => {\n let listItem = item;\n if (listItem.localName !== ListItemClass.componentName) {\n listItem = item.querySelector(ListItemClass.componentName);\n }\n\n const listItemVariant = this.variant === 'tiles' ? 'tile' : 'row';\n listItem?.setAttribute('variant', listItemVariant);\n });\n }\n\n init() {\n super.init?.();\n\n // we want new items to get the size\n observeChildren(this, () => {\n this.#handleEmptyState();\n this.#handleItemsVariant();\n this.#handleReadOnly();\n });\n }\n\n get isReadOnly() {\n return this.getAttribute('readonly') === 'true';\n }\n\n #handleReadOnly() {\n this.items.forEach((item) => {\n if (this.isReadOnly) item.setAttribute('inert', '');\n else item.removeAttribute('inert');\n });\n }\n\n attributeChangedCallback(name, oldValue, newValue) {\n super.attributeChangedCallback?.(name, oldValue, newValue);\n\n if (newValue === oldValue) return;\n\n if (name === 'variant') {\n this.#handleItemsVariant();\n } else if (name === 'readonly') {\n this.#handleReadOnly();\n }\n }\n}\n\nexport const ListClass = compose(\n createStyleMixin({\n mappings: {\n hostWidth: { selector: () => ':host', property: 'width' },\n maxHeight: { selector: () => ':host' },\n minHeight: {},\n verticalPadding: [\n { property: 'padding-top' },\n { property: 'padding-bottom' },\n ],\n horizontalPadding: [\n { property: 'padding-left' },\n { property: 'padding-right' },\n ],\n hostDirection: { selector: () => ':host', property: 'direction' },\n fontFamily: {},\n gap: {},\n\n backgroundColor: {},\n borderRadius: {},\n borderColor: {},\n borderStyle: {},\n borderWidth: {},\n\n boxShadow: {},\n gridTemplateColumns: {},\n maxItemsWidth: {\n selector: () => '::slotted(:not([slot]))',\n property: 'max-width',\n },\n minItemsWidth: {\n selector: () => '::slotted(:not([slot]))',\n property: 'min-width',\n },\n maxRowItems: {\n property: 'max-row-items',\n },\n itemsHorizontalAlign: {\n selector: () => '::slotted(*)',\n property: 'justify-self',\n },\n emptyStateTextColor: {\n selector: () => 'slot[name=\"empty-state\"]',\n property: 'color',\n },\n emptyStateTextFontFamily: {\n selector: () => 'slot[name=\"empty-state\"]',\n property: 'font-family',\n },\n },\n }),\n draggableMixin,\n componentNameValidationMixin,\n)(RawList);\n","import '@descope-ui/descope-list-item';\n\nimport { componentName, ListClass } from './ListClass';\n\ncustomElements.define(componentName, ListClass);\n\nexport { ListClass, componentName };\n","import { componentName, ScopesListClass } from './ScopesListClass';\nimport '@descope-ui/descope-list';\nimport '../boolean-fields/descope-checkbox';\nimport '../boolean-fields/descope-switch-toggle';\n\ncustomElements.define(componentName, ScopesListClass);\n\nexport { ScopesListClass, componentName };\n","import { injectStyle } from '@descope-ui/common/components-helpers';\nimport { createBaseClass } from '../../baseClasses/createBaseClass';\nimport { compose } from '../../helpers';\nimport { getComponentName } from '../../helpers/componentHelpers';\nimport { componentNameValidationMixin, createStyleMixin, draggableMixin } from '../../mixins';\nimport { IconClass } from '@descope-ui/descope-icon/class';\nimport { LogoClass } from '../descope-logo/LogoClass';\nimport arrowsImg from './arrows.svg';\n\nexport const componentName = getComponentName('third-party-app-logo');\nclass RawThirdPartyAppLogoClass extends createBaseClass({\n componentName,\n baseSelector: '.wrapper',\n}) {\n constructor() {\n super();\n this.attachShadow({ mode: 'open' }).innerHTML = `\n\t\t\t<div class=\"wrapper\">\n <div class=\"third-party-app-logo-wrapper\">\n <div class=\"third-party-app-logo\"></div>\n </div>\n <div class=\"arrows\">\n <descope-icon src=\"${arrowsImg}\"></descope-icon>\n </div>\n <div class=\"company-logo-wrapper\">\n <descope-logo st-height=\"100%\"></descope-logo>\n </div>\n </div>\n\t\t\t`;\n\n injectStyle(\n `\n :host {\n\t\t\t\t\tdisplay: inline-flex;\n\t\t\t\t}\n\t\t\t\t:host([draggable=\"true\"]) > div {\n\t\t\t\t\tpointer-events: none\n\t\t\t\t}\n\n .wrapper {\n display: flex;\n justify-content: center;\n align-items: center;\n min-width: max-content;\n }\n\n\t\t\t\t.third-party-app-logo {\n flex-shrink: 0;\n\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t\tmax-width: 100%;\n\t\t\t\t\tmax-height: 100%;\n\t\t\t\t\tobject-fit: contain;\n\t\t\t\t}\n\n .company-logo-wrapper, .third-party-app-logo-wrapper {\n flex-shrink: 0;\n display: inline-flex;\n }\n\n .company-logo-wrapper {\n justify-content: flex-end;\n }\n\n .third-party-app-logo-wrapper {\n justify-content: flex-start;\n }\n\n .arrows {\n flex-shrink: 0;\n display: flex;\n }\n `,\n this\n );\n }\n}\n\nconst companyLogoWrapper = '>.company-logo-wrapper';\nconst thirdPartyAppLogoWrapper = '>.third-party-app-logo-wrapper';\n\nexport const ThirdPartyAppLogoClass = compose(\n createStyleMixin({\n mappings: {\n logoMaxHeight: [\n { selector: companyLogoWrapper, property: 'height' },\n { selector: thirdPartyAppLogoWrapper, property: 'height' },\n ],\n logoMaxWidth: [\n { selector: companyLogoWrapper, property: 'max-width' },\n { selector: thirdPartyAppLogoWrapper, property: 'max-width' },\n ],\n thirdPartyAppLogo: {\n selector: () => '.third-party-app-logo',\n property: 'content',\n fallback: {},\n },\n companyLogoFallback: {\n selector: LogoClass.componentName,\n property: LogoClass.cssVarList.fallbackUrl,\n },\n gap: {},\n arrowsColor: { selector: IconClass.componentName, property: IconClass.cssVarList.fill },\n },\n }),\n draggableMixin,\n componentNameValidationMixin\n)(RawThirdPartyAppLogoClass);\n","import { componentName, ThirdPartyAppLogoClass } from './ThirdPartyAppLogoClass';\nimport '@descope-ui/descope-icon';\nimport '../descope-logo';\n\ncustomElements.define(componentName, ThirdPartyAppLogoClass);\n\nexport { ThirdPartyAppLogoClass };\n","import { createBaseClass } from '../../baseClasses/createBaseClass';\nimport { compose } from '../../helpers';\nimport { getComponentName, observeAttributes } from '../../helpers/componentHelpers';\nimport { componentNameValidationMixin, createStyleMixin, draggableMixin } from '../../mixins';\nimport { ComboBoxClass } from '@descope-ui/descope-combo-box/class';\nimport { TextFieldClass } from '../descope-text-field/TextFieldClass';\nimport { injectStyle } from '@descope-ui/common/components-helpers';\n\nexport const componentName = getComponentName('security-questions-setup');\n\nconst attrsToSync = [\n 'full-width',\n 'readonly',\n 'size',\n 'label-type',\n 'question-label',\n 'question-placeholder',\n 'question-data-errormessage-value-missing',\n 'answer-label',\n 'answer-placeholder',\n 'answer-data-errormessage-value-missing',\n 'st-error-message-icon',\n 'st-error-message-icon-size',\n 'st-error-message-icon-padding',\n];\n\nconst attrsToReRender = ['count', 'questions'];\nclass RawSecurityQuestionsSetup extends createBaseClass({ componentName, baseSelector: 'div' }) {\n constructor() {\n super();\n\n this.attachShadow({ mode: 'open' }).innerHTML = `\n <div></div>\n\t\t`;\n\n injectStyle(\n `\n :host {\n display: inline-flex;\n }\n\n div {\n display: flex;\n flex-direction: column;\n }\n `,\n this\n );\n }\n\n get count() {\n return Number(this.getAttribute('count')) || 0;\n }\n\n #renderQuestions() {\n const res = Array.from({ length: this.count }).map(\n (_, index) =>\n // <!--html-->\n `\n <div class=\"question-wrapper\">\n <descope-combo-box\n data-id=\"${index}\"\n item-label-path=\"data-name\"\n item-value-path=\"data-id\"\n bordered=\"true\"\n required=\"true\"\n clear-button-visible=\"true\"\n ></descope-combo-box>\n\n <descope-text-field\n data-id=\"${index}\"\n required=\"true\"\n bordered=\"true\"\n minlength=\"2\"\n ></descope-text-field>\n </div>\n `\n // <!--!html-->\n );\n\n this.baseElement.innerHTML = res.join(\n '<spacer></spacer><descope-divider></descope-divider><spacer></spacer>'\n );\n\n this.comboBoxes.forEach((el) => {\n el.addEventListener('change', (e) => {\n this.updateRemainingCombosData(e.target);\n const AttachedTextField = this.getAttachedTextField(e.target);\n\n AttachedTextField.value = '';\n });\n\n // eslint-disable-next-line no-param-reassign\n el.data = this.data;\n });\n\n this.#syncAttrs(attrsToSync);\n }\n\n getAttachedTextField(combo) {\n const selector = `descope-text-field[data-id=\"${combo.getAttribute('data-id')}\"]`;\n\n return this.baseElement.querySelector(selector);\n }\n\n filterData(comboValue) {\n const res = this.data.filter((item) => {\n return item.value === comboValue || !this.selectedQuestionIds.includes(item.value);\n });\n\n return res;\n }\n\n reportValidity() {\n this.inputs.reverse().forEach((el) => el.reportValidity());\n\n return this.checkValidity();\n }\n\n checkValidity() {\n return [...this.comboBoxes, ...this.textFields].every((el) => el.checkValidity());\n }\n\n updateRemainingCombosData(sourceCombo) {\n this.comboBoxes\n .filter((combo) => combo !== sourceCombo)\n .forEach((combo) => {\n // eslint-disable-next-line no-param-reassign\n combo.data = this.filterData(combo.value);\n });\n }\n\n get questions() {\n try {\n return JSON.parse(this.getAttribute('questions')) || [];\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error(componentName, 'Error parsing questions attribute', e);\n return [];\n }\n }\n\n // this returns the structure expected by the combo box\n get data() {\n return this.questions.map(({ id, text }) => ({ value: id, label: text }));\n }\n\n get comboBoxes() {\n return Array.from(this.baseElement.querySelectorAll('descope-combo-box'));\n }\n\n get textFields() {\n return Array.from(this.baseElement.querySelectorAll('descope-text-field'));\n }\n\n get inputs() {\n return Array.from(this.baseElement.querySelectorAll('descope-combo-box, descope-text-field'));\n }\n\n get selectedQuestionIds() {\n return this.comboBoxes.map((el) => el.value);\n }\n\n get value() {\n return this.comboBoxes.map((combo) => {\n const id = combo.value;\n const answer = this.getAttachedTextField(combo).value;\n\n return { id, answer };\n });\n }\n\n set value(val = []) {\n val.forEach((item, index) => {\n const combo = this.comboBoxes[index];\n const textField = this.getAttachedTextField(combo);\n\n combo.value = item.id;\n textField.value = item.answer;\n });\n }\n\n // eslint-disable-next-line class-methods-use-this\n #updateAttribute(ele, attrName, value) {\n if (value === null) ele.removeAttribute(attrName);\n else ele.setAttribute(attrName, value);\n }\n\n #syncAttrs(attrs) {\n const componentMap = {\n question: this.comboBoxes,\n answer: this.textFields,\n };\n\n attrs.forEach((attr) => {\n const [maybeComponentType, ...rest] = attr.split('-');\n const elements = componentMap[maybeComponentType] || this.inputs;\n const attrName = componentMap[maybeComponentType] ? rest.join('-') : attr;\n\n elements.forEach((el) => {\n this.#updateAttribute(el, attrName, this.getAttribute(attr));\n });\n });\n }\n\n init() {\n super.init?.();\n // render new components\n observeAttributes(\n this,\n () => {\n this.#renderQuestions();\n },\n { includeAttrs: attrsToReRender }\n );\n\n // update existing components\n observeAttributes(this, this.#syncAttrs.bind(this), {\n includeAttrs: attrsToSync,\n });\n }\n}\n\nexport const SecurityQuestionsSetupClass = compose(\n createStyleMixin({\n mappings: {\n hostWidth: [{ selector: () => ':host', property: 'width' }, { property: 'width' }],\n hostDirection: [\n { selector: () => ':host', property: 'direction' },\n {\n selector: () => ComboBoxClass.componentName,\n property: ComboBoxClass.cssVarList.hostDirection,\n },\n {\n selector: () => TextFieldClass.componentName,\n property: TextFieldClass.cssVarList.hostDirection,\n },\n ],\n gap: { selector: () => 'div', property: 'gap' },\n },\n }),\n draggableMixin,\n componentNameValidationMixin\n)(RawSecurityQuestionsSetup);\n","import { componentName, SecurityQuestionsSetupClass } from './SecurityQuestionsSetupClass';\nimport '../descope-text-field';\nimport '@descope-ui/descope-combo-box';\n\ncustomElements.define(componentName, SecurityQuestionsSetupClass);\n\nexport { SecurityQuestionsSetupClass, componentName };\n","import { createBaseClass } from '../../baseClasses/createBaseClass';\nimport { compose } from '../../helpers';\nimport { getComponentName, observeAttributes } from '../../helpers/componentHelpers';\nimport { componentNameValidationMixin, createStyleMixin, draggableMixin } from '../../mixins';\nimport { TextClass } from '@descope-ui/descope-text/class';\nimport { TextFieldClass } from '../descope-text-field/TextFieldClass';\nimport { injectStyle } from '@descope-ui/common/components-helpers';\n\nexport const componentName = getComponentName('security-questions-verify');\n\nconst textFieldsAttrs = [\n 'full-width',\n 'readonly',\n 'size',\n 'answer-placeholder',\n 'answer-data-errormessage-value-missing',\n 'st-error-message-icon',\n 'st-error-message-icon-size',\n 'st-error-message-icon-padding',\n];\n\nconst textsAttrs = ['question-mode'];\n\nconst attrMappings = {\n 'answer-placeholder': 'placeholder',\n 'answer-data-errormessage-value-missing': 'data-errormessage-value-missing',\n 'question-mode': 'mode',\n};\n\nconst attrsToSync = [...textFieldsAttrs, ...textsAttrs];\n\nconst attrsToReRender = ['questions'];\nclass RawSecurityQuestionsVerify extends createBaseClass({ componentName, baseSelector: 'div' }) {\n constructor() {\n super();\n\n this.attachShadow({ mode: 'open' }).innerHTML = `\n <div></div>\n\t\t`;\n\n injectStyle(\n `\n :host {\n display: inline-flex;\n }\n\n div {\n display: flex;\n flex-direction: column;\n }\n `,\n this\n );\n }\n\n #renderQuestions() {\n const res = this.questions.map(\n ({ id, text }) =>\n // <!--html-->\n `\n <div class=\"question-wrapper\">\n <descope-text\n data-id=\"${id}\"\n >${text}</descope-text>\n\n <descope-text-field\n data-id=\"${id}\"\n required=\"true\"\n bordered=\"true\"\n ></descope-text-field>\n </div>\n `\n // <!--!html-->\n );\n\n this.baseElement.innerHTML = res.join(\n '<spacer></spacer><descope-divider></descope-divider><spacer></spacer>'\n );\n\n this.#syncAttrs(attrsToSync);\n\n // focus input when text is clicked\n this.texts.forEach((el) => {\n const input = this.textFields.find(\n (field) => field.getAttribute('data-id') === el.getAttribute('data-id')\n );\n // eslint-disable-next-line no-param-reassign\n if (input) el.onclick = input.focus.bind(input);\n });\n }\n\n reportValidity() {\n this.textFields.reverse().forEach((el) => el.reportValidity());\n\n return this.checkValidity();\n }\n\n checkValidity() {\n return this.textFields.every((el) => el.checkValidity());\n }\n\n get questions() {\n try {\n return JSON.parse(this.getAttribute('questions')) || [];\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error(componentName, 'Error parsing questions attribute', e);\n return [];\n }\n }\n\n get texts() {\n return Array.from(this.baseElement.querySelectorAll('descope-text'));\n }\n\n get textFields() {\n return Array.from(this.baseElement.querySelectorAll('descope-text-field'));\n }\n\n get elements() {\n return Array.from(this.baseElement.querySelectorAll('descope-text, descope-text-field'));\n }\n\n get value() {\n return this.textFields.map((el) => ({ id: el.getAttribute('data-id'), answer: el.value }));\n }\n\n set value(val = []) {\n val.forEach(({ id, answer }) => {\n const textField = this.textFields.find((el) => el.getAttribute('data-id') === id);\n if (textField) textField.value = answer;\n });\n }\n\n // eslint-disable-next-line class-methods-use-this\n #updateAttribute(ele, attrName, value) {\n if (value === null) ele.removeAttribute(attrName);\n else ele.setAttribute(attrName, value);\n }\n\n #getElementsToUpdate(attr) {\n switch (true) {\n case textFieldsAttrs.includes(attr):\n return this.textFields;\n case textsAttrs.includes(attr):\n return this.texts;\n default:\n return [];\n }\n }\n\n #syncAttrs(attrs) {\n attrs.forEach((attr) => {\n this.#getElementsToUpdate(attr).forEach((el) => {\n this.#updateAttribute(el, attrMappings[attr] || attr, this.getAttribute(attr));\n });\n });\n }\n\n init() {\n super.init?.();\n // render new components\n observeAttributes(\n this,\n () => {\n this.#renderQuestions();\n },\n { includeAttrs: attrsToReRender }\n );\n\n // update existing components\n observeAttributes(this, this.#syncAttrs.bind(this), {\n includeAttrs: attrsToSync,\n });\n }\n}\n\nexport const SecurityQuestionsVerifyClass = compose(\n createStyleMixin({ componentNameOverride: getComponentName('input-wrapper') }),\n createStyleMixin({\n mappings: {\n hostWidth: [{ selector: () => ':host', property: 'width' }, { property: 'width' }],\n hostDirection: [\n { selector: () => ':host', property: 'direction' },\n {\n selector: () => TextClass.componentName,\n property: TextClass.cssVarList.hostDirection,\n },\n {\n selector: () => TextFieldClass.componentName,\n property: TextFieldClass.cssVarList.hostDirection,\n },\n ],\n gap: { selector: () => 'div', property: 'gap' },\n questionTextAlign: {\n selector: () => TextClass.componentName,\n property: TextClass.cssVarList.textAlign,\n },\n questionFontSize: {\n selector: () => TextClass.componentName,\n property: TextClass.cssVarList.fontSize,\n },\n questionFontFamily: {\n selector: () => TextClass.componentName,\n property: TextClass.cssVarList.fontFamily,\n },\n questionCursor: {\n selector: () => TextClass.componentName,\n property: 'cursor',\n },\n\n errorMessageIcon: {\n selector: () => TextClass.componentName,\n property: TextClass.cssVarList.errorMessageIcon,\n },\n errorMessageIconSize: {\n selector: () => TextClass.componentName,\n property: TextClass.cssVarList.errorMessageSize,\n },\n errorMessageIconPadding: {\n selector: () => TextClass.componentName,\n property: TextClass.cssVarList.errorMessagePadding,\n },\n errorMessageIconRepeat: {\n selector: () => TextClass.componentName,\n property: TextClass.cssVarList.errorMessageRepeat,\n },\n errorMessageIconPosition: {\n selector: () => TextClass.componentName,\n property: TextClass.cssVarList.errorMessagePosition,\n },\n errorMessageFontSize: {\n selector: () => TextClass.componentName,\n property: TextClass.cssVarList.errorMessageFontSize,\n },\n },\n }),\n draggableMixin,\n componentNameValidationMixin\n)(RawSecurityQuestionsVerify);\n","import { componentName, SecurityQuestionsVerifyClass } from './SecurityQuestionsVerifyClass';\nimport '@descope-ui/descope-text';\nimport '../descope-text-field';\n\ncustomElements.define(componentName, SecurityQuestionsVerifyClass);\n\nexport { SecurityQuestionsVerifyClass, componentName };\n","const NUMERIC_RE = /^\\d+$/;\n\nexport const isNumericValue = (val) => NUMERIC_RE.test(val.replaceAll('+', '').replaceAll('-', ''));\n\nexport const sanitizeCountryCodePrefix = (val) => val.replace(/\\+\\d+-/, '');\n","import { createStyleMixin, draggableMixin, componentNameValidationMixin } from '../../mixins';\nimport { createBaseClass } from '../../baseClasses/createBaseClass';\nimport { compose } from '../../helpers';\nimport { forwardAttrs, getComponentName } from '../../helpers/componentHelpers';\nimport { isNumericValue, sanitizeCountryCodePrefix as sanitizeValue } from './helpers';\nimport { PhoneFieldClass } from '../phone-fields/descope-phone-field/PhoneFieldClass';\nimport { PhoneFieldInputBoxClass } from '../phone-fields/descope-phone-input-box-field/PhoneFieldInputBoxClass';\nimport { injectStyle } from '@descope-ui/common/components-helpers';\n\nexport const componentName = getComponentName('hybrid-field');\n\nconst attrs = {\n shared: [\n 'label',\n 'bordered',\n 'full-width',\n 'label-type',\n 'size',\n 'disabled',\n 'readonly',\n 'required',\n 'st-host-direction',\n 'st-error-message-icon',\n 'st-error-message-icon-size',\n 'st-error-message-icon-padding',\n ],\n email: [\n 'placeholder',\n 'data-errormessage-value-missing-email',\n 'data-errormessage-pattern-mismatch-email',\n 'external-input',\n ],\n phone: {\n countryCode: [\n 'phone-input-label',\n 'country-input-label',\n 'country-input-placeholder',\n 'restrict-countries',\n 'default-code',\n 'phone-minlength',\n 'phone-format-value',\n 'phone-strict-validation',\n 'data-errormessage-value-missing-phone',\n ],\n inputBox: [\n 'restrict-countries',\n 'default-code',\n 'phone-minlength',\n 'phone-format-value',\n 'phone-strict-validation',\n 'data-errormessage-value-missing-phone',\n ],\n },\n};\n\nconst attrMap = {\n email: {\n 'data-errormessage-value-missing-email': 'data-errormessage-value-missing',\n 'data-errormessage-pattern-mismatch-email': 'data-errormessage-pattern-mismatch',\n },\n phone: {\n 'phone-input-label': 'label',\n 'phone-minlength': 'minlength',\n 'phone-format-value': 'format-value',\n 'phone-strict-validation': 'strict-validation',\n 'data-errormessage-value-missing-phone': 'data-errormessage-value-missing',\n },\n};\n\nconst EMAIL_FIELD = 'descope-email-field';\nconst PHONE_FIELD = 'descope-phone-field';\nconst PHONE_INPUT_BOX_FIELD = 'descope-phone-input-box-field';\n\nconst BaseClass = createBaseClass({\n componentName,\n baseSelector: 'div',\n});\n\nclass RawHybridField extends BaseClass {\n #isReportedValidity = false;\n\n #selectionStart;\n\n constructor() {\n super();\n\n this.attachShadow({ mode: 'open' }).innerHTML = `\n <div class=\"wrapper\">\n <descope-email-field external-input=\"${this.isExternalInput}\"></descope-email-field>\n <descope-phone-field allow-alphanumeric-input=\"true\"></descope-phone-field>\n <descope-phone-input-box-field allow-alphanumeric-input=\"true\"></descope-phone-input-box-field>\n </div>\n\t\t`;\n\n injectStyle(\n `\n :host {\n display: inline-flex;\n box-sizing: border-box;\n padding: 0;\n gap: 0;\n }\n .wrapper {\n display: grid;\n width: 100%;\n }\n descope-email-field,\n descope-phone-field,\n descope-phone-input-box-field {\n grid-area: 1/1;\n width: 100%;\n height: 100%;\n }\n .hidden {\n visibility: hidden;\n }\n `,\n this\n );\n }\n\n get isExternalInput() {\n return this.getAttribute('external-input') === 'true';\n }\n\n get emailInputEle() {\n return this.isExternalInput ? this.emailInput.externalInput : this.emailInput.inputElement;\n }\n\n get phoneVariant() {\n const isInputBox = this.getAttribute('phone-variant') === 'inputBox';\n return isInputBox ? this.phoneInputBoxInput : this.phoneCountryCodeInput;\n }\n\n get defaultCode() {\n const firstItem = this.phoneCountryCodeInput.countryCodes?.[0] || '';\n return this.getAttribute('default-code') || firstItem;\n }\n\n get activeInputEle() {\n if (this.activeInput === this.emailInput) {\n return this.emailInputEle;\n }\n return this.phoneVariant.phoneNumberInputEle;\n }\n\n get value() {\n return this.activeInput?.value || '';\n }\n\n set value(val) {\n this.handleActiveInput(val);\n this.activeInput.value = val;\n }\n\n async init() {\n super.init?.();\n\n this.initInputs();\n this.updateAttrs();\n this.toggleInputVisibility();\n\n await this.waitForInputs();\n\n this.initInputEles();\n this.overrideEmailInputType();\n this.overrideEmailSetAttribute();\n }\n\n waitForInputs() {\n return new Promise((resolve) => {\n const check = setInterval(() => {\n if (this.emailInputEle) {\n clearInterval(check);\n resolve();\n }\n });\n });\n }\n\n initInputs() {\n this.emailInput = this.shadowRoot.querySelector(EMAIL_FIELD);\n this.phoneCountryCodeInput = this.shadowRoot.querySelector(PHONE_FIELD);\n this.phoneInputBoxInput = this.shadowRoot.querySelector(PHONE_INPUT_BOX_FIELD);\n\n this.inputs = [this.emailInput, this.phoneCountryCodeInput, this.phoneInputBoxInput];\n\n this.activeInput = this.emailInput;\n }\n\n // we need to listen on the inner `input` element itself, otherwise we don't always get an `input` event\n initInputEles() {\n const inputEles = [\n this.emailInputEle,\n this.phoneCountryCodeInput.phoneNumberInputEle,\n this.phoneInputBoxInput.phoneNumberInputEle,\n ];\n\n inputEles.forEach((ele) => {\n ele.addEventListener('input', this.onValueChange.bind(this));\n });\n }\n\n overrideEmailInputType() {\n this.emailInputEle.addEventListener('focus', () => {\n this.emailInputEle.setAttribute('type', 'text');\n });\n this.emailInputEle.addEventListener('blur', () => {\n setTimeout(() => {\n this.emailInputEle.setAttribute('type', 'email');\n });\n });\n }\n\n // We want to prevent Vaadin from changing the input type to `email`\n // otherwise, we cannot get the selectionStart from the input.\n overrideEmailSetAttribute() {\n const origEmailSetAttr = this.emailInput.setAttribute.bind(this.emailInputEle);\n this.emailInputEle.setAttribute = (name, value) => {\n if (name !== 'type' || value !== 'email' || !this.emailInput.hasAttribute('focused')) {\n return origEmailSetAttr(name, value);\n }\n return false;\n };\n }\n\n updateAttrs() {\n forwardAttrs(this, this.emailInput, { includeAttrs: attrs.email, mapAttrs: attrMap.email });\n\n forwardAttrs(this, this.phoneCountryCodeInput, {\n includeAttrs: attrs.phone.countryCode,\n mapAttrs: attrMap.phone,\n });\n\n forwardAttrs(this, this.phoneInputBoxInput, {\n includeAttrs: attrs.phone.inputBox,\n mapAttrs: attrMap.phone,\n });\n\n this.inputs.forEach((input) => forwardAttrs(this, input, { includeAttrs: attrs.shared }));\n\n setTimeout(() => this.phoneCountryCodeInput.setAttribute('default-code', this.defaultCode));\n }\n\n onValueChange() {\n this.#selectionStart = this.activeInputEle.selectionStart;\n this.handleActiveInput(this.activeInput.value);\n }\n\n handleActiveInput(val) {\n const expectedActiveInput = isNumericValue(val) ? this.phoneVariant : this.emailInput;\n\n if (this.activeInput !== expectedActiveInput) {\n this.setActiveInput(expectedActiveInput);\n }\n }\n\n setActiveInput(expectedActiveInput) {\n const val = this.activeInput.value;\n this.activeInput = expectedActiveInput;\n this.setActiveInputValue(val);\n if (this.#isReportedValidity) this.activeInput.reportValidity();\n this.setActiveInputSelectionStart();\n this.toggleInputVisibility();\n }\n\n setActiveInputSelectionStart() {\n setTimeout(() => {\n this.activeInputEle.focus();\n this.activeInputEle.setSelectionRange?.(this.#selectionStart, this.#selectionStart);\n });\n }\n\n setActiveInputValue(val) {\n const sanitizedVal = sanitizeValue(val);\n const isPhoneField = this.activeInput.localName === PHONE_FIELD;\n const value = isPhoneField\n ? `${this.phoneCountryCodeInput.countryCodeItems}-${sanitizedVal}`\n : sanitizedVal;\n this.activeInput.value = value;\n }\n\n toggleInputVisibility() {\n this.inputs.forEach((input) => {\n input !== this.activeInput ? input.classList.add('hidden') : input.classList.remove('hidden');\n });\n }\n\n reportValidity() {\n this.#isReportedValidity = true;\n\n const ele = this.activeInputEle;\n\n // On reportValidity we want to set the caret at the end of the input value.\n // Since checkValidity triggers `focus` on the input, it sets the caret at the start of the input,\n // regardless the existing value.\n const origInputType = ele.type;\n ele.setAttribute('type', 'text');\n setTimeout(() => {\n ele.setSelectionRange?.(ele.value.length, ele.value.length);\n ele.setAttribute('type', origInputType);\n });\n\n return this.activeInput.reportValidity();\n }\n\n checkValidity() {\n return this.activeInput.checkValidity();\n }\n}\n\nexport const HybridFieldClass = compose(\n createStyleMixin({ componentNameOverride: getComponentName('input-wrapper') }),\n createStyleMixin({\n mappings: {\n hostWidth: { selector: () => ':host', property: 'width' },\n hostDirection: [\n { selector: () => 'descope-email-field', property: 'direction' },\n { selector: () => 'descope-phone-field', property: 'direction' },\n { selector: () => 'descope-phone-input-box-field', property: 'direction' },\n ],\n errorMessageIcon: [\n {\n selector: () => PhoneFieldClass.componentName,\n property: PhoneFieldClass.cssVarList.errorMessageIcon,\n },\n {\n selector: () => PhoneFieldInputBoxClass.componentName,\n property: PhoneFieldInputBoxClass.cssVarList.errorMessageIcon,\n },\n ],\n errorMessageIconSize: [\n {\n selector: () => PhoneFieldClass.componentName,\n property: PhoneFieldClass.cssVarList.errorMessageIconSize,\n },\n {\n selector: () => PhoneFieldInputBoxClass.componentName,\n property: PhoneFieldInputBoxClass.cssVarList.errorMessageIconSize,\n },\n ],\n errorMessageIconPadding: [\n {\n selector: () => PhoneFieldClass.componentName,\n property: PhoneFieldClass.cssVarList.errorMessageIconPadding,\n },\n {\n selector: () => PhoneFieldInputBoxClass.componentName,\n property: PhoneFieldInputBoxClass.cssVarList.errorMessageIconPadding,\n },\n ],\n errorMessageIconRepeat: [\n {\n selector: () => PhoneFieldClass.componentName,\n property: PhoneFieldClass.cssVarList.errorMessageIconRepeat,\n },\n {\n selector: () => PhoneFieldInputBoxClass.componentName,\n property: PhoneFieldInputBoxClass.cssVarList.errorMessageIconRepeat,\n },\n ],\n errorMessageIconPosition: [\n {\n selector: () => PhoneFieldClass.componentName,\n property: PhoneFieldClass.cssVarList.errorMessageIconPosition,\n },\n {\n selector: () => PhoneFieldInputBoxClass.componentName,\n property: PhoneFieldInputBoxClass.cssVarList.errorMessageIconPosition,\n },\n ],\n errorMessageFontSize: [\n {\n selector: () => PhoneFieldClass.componentName,\n property: PhoneFieldClass.cssVarList.errorMessageFontSize,\n },\n {\n selector: () => PhoneFieldInputBoxClass.componentName,\n property: PhoneFieldInputBoxClass.cssVarList.errorMessageFontSize,\n },\n ],\n },\n }),\n draggableMixin,\n componentNameValidationMixin\n)(RawHybridField);\n","import '../descope-email-field';\nimport '../phone-fields/descope-phone-field';\nimport '../phone-fields/descope-phone-input-box-field';\n\nimport { componentName, HybridFieldClass } from './HybridFieldClass';\n\ncustomElements.define(componentName, HybridFieldClass);\n\nexport { HybridFieldClass, componentName };\n","import { createStyleMixin, draggableMixin, componentNameValidationMixin } from '../../mixins';\nimport { compose } from '../../helpers';\nimport { forwardAttrs, getComponentName } from '../../helpers/componentHelpers';\nimport { createBaseClass } from '../../baseClasses/createBaseClass';\nimport { EnrichedTextClass } from '@descope-ui/descope-enriched-text/class';\nimport { injectStyle, observeChildren, syncAttrs } from '@descope-ui/common/components-helpers';\n\nexport const componentName = getComponentName('alert');\n\nclass RawAlert extends createBaseClass({ componentName, baseSelector: ':host > div' }) {\n constructor() {\n super();\n\n this.attachShadow({ mode: 'open' }).innerHTML = `\n <div>\n <div class=\"icon\"></div>\n <div class=\"content\">\n <descope-enriched-text>\n <slot></slot>\n </descope-enriched-text>\n </div>\n </div>\n `;\n\n injectStyle(\n `\n :host {\n display: inline-flex;\n }\n :host > div {\n display: flex;\n width: 100%;\n }\n :host([empty=\"true\"]) {\n display: none;\n }\n .icon {\n flex-shrink: 0;\n }\n .content {\n display: flex;\n flex-wrap: wrap;\n white-space: normal;\n overflow-wrap: break-word;\n }\n `,\n this\n );\n }\n\n init() {\n super.init?.();\n\n this.slotEle = this.shadowRoot.querySelector('slot');\n this.textComp = this.shadowRoot.querySelector('descope-enriched-text');\n\n this.slotEle.addEventListener('slotchange', this.handleSlotChange.bind(this));\n\n syncAttrs(this.textComp, this, { includeAttrs: ['empty'] });\n\n observeChildren(this, this.handleChildrenChange.bind(this));\n\n forwardAttrs(this, this.textComp, {\n includeAttrs: ['variant', 'full-width', 'link-target-blank'],\n });\n }\n\n handleChildrenChange() {\n this.textComp.textContent = this.textContent;\n }\n\n handleSlotChange() {\n const assignedNodes = this.slotEle.assignedNodes({ flatten: true });\n if (!assignedNodes.length) return;\n this.textComp.textContent = assignedNodes[0]?.textContent || '';\n }\n}\n\nconst { icon } = {\n icon: { selector: () => '.icon' },\n};\n\nexport const AlertClass = compose(\n createStyleMixin({\n mappings: {\n hostWidth: { selector: () => ':host', property: 'width' },\n hostDirection: { selector: () => ':host', property: 'direction' },\n textColor: {\n selector: EnrichedTextClass.componentName,\n property: EnrichedTextClass.cssVarList.textColor,\n },\n backgroundColor: {},\n borderColor: {},\n borderWidth: {},\n borderStyle: {},\n borderRadius: {},\n fontSize: [\n {},\n {\n selector: EnrichedTextClass.componentName,\n property: EnrichedTextClass.cssVarList.fontSize,\n },\n ],\n gap: {},\n horizontalPadding: [{ property: 'padding-top' }, { property: 'padding-bottom' }],\n verticalPadding: [{ property: 'padding-right' }, { property: 'padding-left' }],\n alignItems: {},\n justifyContent: [\n {},\n {\n selector: EnrichedTextClass.componentName,\n property: EnrichedTextClass.cssVarList.textAlign,\n },\n ],\n icon: [\n { ...icon, property: 'content' },\n { ...icon, property: 'display', fallback: 'none' },\n ],\n iconSize: [\n { ...icon, property: 'width' },\n { ...icon, property: 'height' },\n ],\n },\n }),\n createStyleMixin({ componentNameOverride: getComponentName('enriched-text') }),\n createStyleMixin({ componentNameOverride: getComponentName('text') }),\n draggableMixin,\n componentNameValidationMixin\n)(RawAlert);\n","import '@descope-ui/descope-enriched-text';\nimport { componentName, AlertClass } from './AlertClass';\n\ncustomElements.define(componentName, AlertClass);\n\nexport { AlertClass, componentName };\n","import { injectStyle, observeChildren } from '@descope-ui/common/components-helpers';\nimport { draggableMixin, createStyleMixin, componentNameValidationMixin } from '../../mixins';\nimport { createBaseInputClass } from '../../baseClasses/createBaseInputClass';\nimport { compose } from '../../helpers';\nimport { getComponentName } from '../../helpers/componentHelpers';\n\nexport const componentName = getComponentName('hcaptcha');\n\nconst observedAttributes = ['enabled', 'site-key'];\n\nconst BaseInputClass = createBaseInputClass({ componentName, baseSelector: ':host > div' });\nclass RawHcaptcha extends BaseInputClass {\n static get observedAttributes() {\n return observedAttributes.concat(BaseInputClass.observedAttributes || []);\n }\n\n attributeChangedCallback(attrName, oldValue, newValue) {\n super.attributeChangedCallback?.(attrName, oldValue, newValue);\n if (oldValue !== newValue) {\n if (attrName === 'enabled') {\n this.toggleCaptchaEles(newValue === 'true');\n }\n }\n }\n\n constructor() {\n super();\n\n this.attachShadow({ mode: 'open' }).innerHTML = `\n <div class=\"badge\">\n <span id=\"hcaptcha\"></span>\n <input id=\"hcaptcha-input\" type=\"hidden\" name=\"hcaptcha\" required />\n <img src=\"https://imgs.descope.com/connectors/templates/hcaptcha/hcaptcha-big.png\" alt=\"hcaptcha\"/>\n </div>\n <slot></slot>\n\t`;\n\n injectStyle(\n `\n :host {\n display: inline-flex;\n }\n :host > div:not(.hidden) {\n display: flex;\n }\n :host #hcaptcha-input {\n display: none;\n }\n :host #hcaptcha .hcaptcha-logo {\n height: 100%;\n }\n :host #hcaptcha {\n\t\t\t\twidth: 100%;\n height: 100%;\n\t\t\t}\n :host img {\n max-width: 100%;\n max-height: 100%;\n object-fit: contain;\n }\n .hidden {\n display: none;\n }\n `,\n this\n );\n\n this.captchaEle = this.shadowRoot.querySelector('#hcaptcha');\n this.mockCaptchaEle = this.shadowRoot.querySelector('img');\n this.badge = this.shadowRoot.querySelector('.badge');\n this.inputElement = this.shadowRoot.querySelector('input');\n }\n\n init() {\n super.init?.();\n\n observeChildren(this, this.updatePreview.bind(this));\n // avoid any possible conflicts with the inner input elements\n this.inputElement.getValidity = null;\n this.inputElement.checkValidity = null;\n }\n\n toggleCaptchaEles(enabled) {\n if (enabled) {\n this.captchaEle.style.display = '';\n this.mockCaptchaEle.style.display = 'none';\n } else {\n this.captchaEle.style.display = 'none';\n this.mockCaptchaEle.style.display = '';\n }\n }\n\n updatePreview() {\n this.toggleCaptchaEles(this.enabled);\n }\n\n getValidity() {\n if (!this.inputElement.value) {\n return { valueMissing: true };\n }\n\n return {};\n }\n\n checkValidity() {\n return !!this.inputElement.value;\n }\n\n get siteKey() {\n return this.getAttribute('site-key');\n }\n\n get enabled() {\n return this.getAttribute('enabled') === 'true';\n }\n}\n\nexport const HcaptchaClass = compose(\n createStyleMixin({\n mappings: {\n hostWidth: [{ selector: () => ':host', property: 'width' }],\n hostDirection: { property: 'direction' },\n verticalPadding: [{ property: 'padding-top' }, { property: 'padding-bottom' }],\n horizontalPadding: [{ property: 'padding-left' }, { property: 'padding-right' }],\n maxHeight: [\n { selector: '>img', property: 'height' },\n { selector: '>#hcaptcha', property: 'height' },\n ],\n maxWidth: [\n { selector: '>img', property: 'max-width' },\n { selector: '>hcaptcha', property: 'max-width' },\n ],\n },\n }),\n draggableMixin,\n componentNameValidationMixin\n)(RawHcaptcha);\n","import { componentName, HcaptchaClass } from './HcaptchaClass';\n\ncustomElements.define(componentName, HcaptchaClass);\n\nexport { HcaptchaClass, componentName };\n","import { getThemeRefs, getThemeVars } from '../helpers/themeHelpers';\nimport { genColors } from '../helpers/themeHelpers/colorsHelpers';\n\nconst direction = 'ltr';\n\nexport const colors = genColors({\n surface: {\n main: '#ffffff',\n dark: '#636c74',\n light: '#cfd3d7',\n highlight: '#f4f5f6',\n contrast: '#181a1c',\n },\n primary: {\n main: '#006af5',\n dark: '#004094',\n light: '#71aeff',\n highlight: '#f0f6ff',\n contrast: '#ffffff',\n },\n secondary: {\n main: '#802ed6',\n dark: '#6410bc',\n light: '#be89f5',\n highlight: '#ede7f6',\n contrast: '#ffffff',\n },\n success: {\n main: '#008000',\n dark: '#005700',\n light: '#8bc38b',\n highlight: '#f5faf5',\n contrast: '#ffffff',\n },\n error: {\n main: '#e21d12',\n dark: '#b3170f',\n light: '#f4807a',\n highlight: '#fef1f1',\n contrast: '#ffffff',\n },\n warning: {\n main: '#c45512',\n dark: '#a24309',\n light: '#ff985a',\n highlight: '#fdf0e5',\n contrast: '#ffffff',\n },\n});\n\nconst fonts = {\n font1: {\n family: [\n 'Roboto',\n 'ui-sans-serif',\n 'system-ui',\n '-apple-system',\n 'BlinkMacSystemFont',\n 'Segoe UI',\n 'Helvetica Neue',\n 'Arial',\n 'Noto Sans',\n 'sans-serif',\n 'Apple Color Emoji',\n 'Segoe UI Emoji',\n 'Segoe UI Symbol',\n 'Noto Color Emoji',\n ],\n label: 'Roboto',\n url: 'https://fonts.googleapis.com/css?family=Roboto:100,200,300,400,500,600,700,800,900',\n },\n font2: {\n family: [\n 'ui-sans-serif',\n 'system-ui',\n '-apple-system',\n 'BlinkMacSystemFont',\n 'Segoe UI',\n 'Roboto',\n 'Helvetica Neue',\n 'Arial',\n 'Noto Sans',\n 'sans-serif',\n 'Apple Color Emoji',\n 'Segoe UI Emoji',\n 'Segoe UI Symbol',\n 'Noto Color Emoji',\n ],\n label: 'Sans Serif',\n },\n};\n\nconst fontsRef = getThemeRefs({ fonts }).fonts;\n\nconst typography = {\n h1: {\n font: fontsRef.font1.family,\n weight: '900',\n size: '48px',\n },\n h2: {\n font: fontsRef.font1.family,\n weight: '800',\n size: '38px',\n },\n h3: {\n font: fontsRef.font1.family,\n weight: '600',\n size: '28px',\n },\n subtitle1: {\n font: fontsRef.font2.family,\n weight: '500',\n size: '22px',\n },\n subtitle2: {\n font: fontsRef.font2.family,\n weight: '400',\n size: '20px',\n },\n body1: {\n font: fontsRef.font1.family,\n weight: '400',\n size: '16px',\n },\n body2: {\n font: fontsRef.font1.family,\n weight: '400',\n size: '14px',\n },\n};\n\nconst spacing = {\n xs: '2px',\n sm: '4px',\n md: '8px',\n lg: '16px',\n xl: '32px',\n};\n\nconst border = {\n xs: '1px',\n sm: '2px',\n md: '3px',\n lg: '4px',\n xl: '5px',\n};\n\nconst radius = {\n xs: '5px',\n sm: '10px',\n md: '15px',\n lg: '20px',\n xl: '25px',\n '2xl': '30px',\n '3xl': '35px',\n};\n\nconst shadow = {\n wide: {\n sm: '0 2px 3px -0.5px',\n md: '0 4px 6px -1px',\n lg: '0 10px 15px -3px',\n xl: '0 20px 25px -5px',\n '2xl': '0 25px 50px -12px',\n },\n narrow: {\n sm: '0 1px 2px -1px',\n md: '0 2px 4px -2px',\n lg: '0 4px 6px -4px',\n xl: '0 8px 10px -6px',\n '2xl': '0 16px 16px -8px',\n },\n};\n\nconst globals = {\n colors,\n typography,\n spacing,\n border,\n radius,\n shadow,\n fonts,\n direction,\n};\n\nexport default globals;\nexport const vars = getThemeVars(globals);\n","import {\n getThemeRefs,\n getThemeVars,\n genColors,\n} from '@descope-ui/common/theme-helpers';\n\nconst direction = 'ltr';\n\nexport const colors = genColors({\n surface: {\n main: '#ffffff',\n dark: '#636c74',\n light: '#cfd3d7',\n highlight: '#f4f5f6',\n contrast: '#181a1c',\n },\n primary: {\n main: '#006af5',\n dark: '#004094',\n light: '#71aeff',\n highlight: '#f0f6ff',\n contrast: '#ffffff',\n },\n secondary: {\n main: '#802ed6',\n dark: '#6410bc',\n light: '#be89f5',\n highlight: '#ede7f6',\n contrast: '#ffffff',\n },\n success: {\n main: '#008000',\n dark: '#005700',\n light: '#8bc38b',\n highlight: '#f5faf5',\n contrast: '#ffffff',\n },\n error: {\n main: '#e21d12',\n dark: '#b3170f',\n light: '#f4807a',\n highlight: '#fef1f1',\n contrast: '#ffffff',\n },\n warning: {\n main: '#c45512',\n dark: '#a24309',\n light: '#ff985a',\n highlight: '#fdf0e5',\n contrast: '#ffffff',\n },\n});\n\nconst fonts = {\n font1: {\n family: [\n 'Roboto',\n 'ui-sans-serif',\n 'system-ui',\n '-apple-system',\n 'BlinkMacSystemFont',\n 'Segoe UI',\n 'Helvetica Neue',\n 'Arial',\n 'Noto Sans',\n 'sans-serif',\n 'Apple Color Emoji',\n 'Segoe UI Emoji',\n 'Segoe UI Symbol',\n 'Noto Color Emoji',\n ],\n label: 'Roboto',\n url: 'https://fonts.googleapis.com/css?family=Roboto:100,200,300,400,500,600,700,800,900',\n },\n font2: {\n family: [\n 'ui-sans-serif',\n 'system-ui',\n '-apple-system',\n 'BlinkMacSystemFont',\n 'Segoe UI',\n 'Roboto',\n 'Helvetica Neue',\n 'Arial',\n 'Noto Sans',\n 'sans-serif',\n 'Apple Color Emoji',\n 'Segoe UI Emoji',\n 'Segoe UI Symbol',\n 'Noto Color Emoji',\n ],\n label: 'Sans Serif',\n },\n};\n\nconst fontsRef = getThemeRefs({ fonts }).fonts;\n\nconst typography = {\n h1: {\n font: fontsRef.font1.family,\n weight: '900',\n size: '48px',\n },\n h2: {\n font: fontsRef.font1.family,\n weight: '800',\n size: '38px',\n },\n h3: {\n font: fontsRef.font1.family,\n weight: '600',\n size: '28px',\n },\n subtitle1: {\n font: fontsRef.font2.family,\n weight: '500',\n size: '22px',\n },\n subtitle2: {\n font: fontsRef.font2.family,\n weight: '400',\n size: '20px',\n },\n body1: {\n font: fontsRef.font1.family,\n weight: '400',\n size: '16px',\n },\n body2: {\n font: fontsRef.font1.family,\n weight: '400',\n size: '14px',\n },\n};\n\nconst spacing = {\n xs: '2px',\n sm: '4px',\n md: '8px',\n lg: '16px',\n xl: '32px',\n};\n\nconst border = {\n xs: '1px',\n sm: '2px',\n md: '3px',\n lg: '4px',\n xl: '5px',\n};\n\nconst radius = {\n xs: '5px',\n sm: '10px',\n md: '15px',\n lg: '20px',\n xl: '25px',\n '2xl': '30px',\n '3xl': '35px',\n};\n\nconst shadow = {\n wide: {\n sm: '0 2px 3px -0.5px',\n md: '0 4px 6px -1px',\n lg: '0 10px 15px -3px',\n xl: '0 20px 25px -5px',\n '2xl': '0 25px 50px -12px',\n },\n narrow: {\n sm: '0 1px 2px -1px',\n md: '0 2px 4px -2px',\n lg: '0 4px 6px -4px',\n xl: '0 8px 10px -6px',\n '2xl': '0 16px 16px -8px',\n },\n};\n\nconst globals = {\n colors,\n typography,\n spacing,\n border,\n radius,\n shadow,\n fonts,\n direction,\n};\n\nexport default globals;\nexport const vars = getThemeVars(globals);\n","import globals from '@descope-ui/theme-globals';\nimport { getThemeRefs, createHelperVars } from '@descope-ui/common/theme-helpers';\nimport { componentName, ButtonClass } from './component/ButtonClass';\n\nconst globalRefs = getThemeRefs(globals);\nconst compVars = ButtonClass.cssVarList;\n\nconst mode = {\n primary: globalRefs.colors.primary,\n secondary: globalRefs.colors.secondary,\n success: globalRefs.colors.success,\n error: globalRefs.colors.error,\n surface: globalRefs.colors.surface,\n};\n\nconst [helperTheme, helperRefs, helperVars] = createHelperVars({ mode }, componentName);\n\nconst button = {\n ...helperTheme,\n\n [compVars.fontFamily]: globalRefs.fonts.font1.family,\n\n [compVars.cursor]: 'pointer',\n [compVars.hostHeight]: '3em',\n [compVars.hostWidth]: 'auto',\n [compVars.hostDirection]: globalRefs.direction,\n\n [compVars.borderRadius]: globalRefs.radius.sm,\n [compVars.borderWidth]: globalRefs.border.xs,\n [compVars.borderStyle]: 'solid',\n [compVars.borderColor]: 'transparent',\n\n [compVars.labelSpacing]: '0.25em',\n\n [compVars.textAlign]: 'center', // default text align center\n textAlign: {\n right: { [compVars.textAlign]: 'right' },\n left: { [compVars.textAlign]: 'left' },\n center: { [compVars.textAlign]: 'center' },\n },\n\n [compVars.verticalPadding]: '1em',\n [compVars.horizontalPadding]: '0.875em',\n\n [compVars.outlineWidth]: globals.border.sm,\n [compVars.outlineOffset]: '0px', // keep `px` unit for external calc\n [compVars.outlineStyle]: 'solid',\n [compVars.outlineColor]: 'transparent',\n\n [compVars.iconSize]: '1.5em',\n\n size: {\n xs: { [compVars.fontSize]: '12px' },\n sm: { [compVars.fontSize]: '14px' },\n md: { [compVars.fontSize]: '16px' },\n lg: { [compVars.fontSize]: '18px' },\n },\n\n _square: {\n [compVars.hostHeight]: '3em',\n [compVars.hostWidth]: '3em',\n [compVars.verticalPadding]: '0',\n },\n\n _fullWidth: {\n [compVars.hostWidth]: '100%',\n },\n\n _loading: {\n [compVars.cursor]: 'wait',\n [compVars.labelTextColor]: helperRefs.main,\n },\n\n _disabled: {\n [helperVars.main]: globalRefs.colors.surface.light,\n [helperVars.dark]: globalRefs.colors.surface.dark,\n [helperVars.light]: globalRefs.colors.surface.light,\n [helperVars.contrast]: globalRefs.colors.surface.main,\n [compVars.iconColor]: globalRefs.colors.surface.main,\n },\n\n variant: {\n contained: {\n [compVars.labelTextColor]: helperRefs.contrast,\n [compVars.backgroundColor]: helperRefs.main,\n _hover: {\n [compVars.backgroundColor]: helperRefs.dark,\n _loading: {\n [compVars.backgroundColor]: helperRefs.main,\n },\n },\n _active: {\n [compVars.backgroundColor]: helperRefs.main,\n },\n },\n\n outline: {\n [compVars.labelTextColor]: helperRefs.main,\n [compVars.borderColor]: helperRefs.main,\n _hover: {\n [compVars.labelTextColor]: helperRefs.dark,\n [compVars.borderColor]: helperRefs.dark,\n },\n _active: {\n [compVars.labelTextColor]: helperRefs.main,\n [compVars.borderColor]: helperRefs.main,\n },\n },\n\n link: {\n [compVars.labelTextColor]: helperRefs.main,\n [compVars.horizontalPadding]: '0.125em',\n _hover: {\n [compVars.labelTextColor]: helperRefs.dark,\n [compVars.labelTextDecoration]: 'underline',\n },\n _active: {\n [compVars.labelTextColor]: helperRefs.main,\n },\n },\n },\n\n _focused: {\n [compVars.outlineColor]: helperRefs.light,\n },\n};\n\nexport default button;\n\nexport const vars = {\n ...compVars,\n ...helperVars,\n};\n","import globals from '../globals';\nimport { getThemeRefs, createHelperVars } from '../../helpers/themeHelpers';\nimport { getComponentName } from '../../helpers/componentHelpers';\n\nconst componentName = getComponentName('input-wrapper');\nconst globalRefs = getThemeRefs(globals);\n\nconst [theme, refs, vars] = createHelperVars(\n {\n labelTextColor: globalRefs.colors.surface.dark,\n labelFontSize: '14px', // not taken from globals as it is fixed in all inputs\n labelFontWeight: '500', // not taken from globals as it is fixed in all inputs\n valueTextColor: globalRefs.colors.surface.contrast,\n placeholderTextColor: globalRefs.colors.surface.dark,\n requiredIndicator: \"'*'\",\n helperTextColor: globalRefs.colors.surface.dark,\n errorMessageTextColor: globalRefs.colors.error.main,\n successMessageTextColor: globalRefs.colors.success.main,\n\n borderWidth: globalRefs.border.xs,\n borderRadius: globalRefs.radius.xs,\n borderColor: 'transparent',\n\n outlineWidth: globalRefs.border.sm,\n outlineStyle: 'solid',\n outlineColor: 'transparent',\n outlineOffset: '0px', // we need to keep the px unit even for 0 value, as this var is used for calc in different component classes\n\n minWidth: '10em',\n toggleButtonSize: '1.5em',\n inputIconSize: '1em',\n inputHeight: '3em',\n horizontalPadding: '0.5em',\n verticalPadding: '0.5em',\n\n textAlign: 'start',\n\n backgroundColor: globalRefs.colors.surface.main,\n\n fontFamily: globalRefs.fonts.font1.family,\n\n direction: globalRefs.direction,\n\n overlayOpacity: '0.3',\n\n errorMessageIcon: '',\n errorMessageIconSize: '0',\n errorMessageIconPadding: '0',\n errorMessageIconPosition: '0 0.4em',\n errorMessageFontSize: '0.8125rem',\n errorMessageIconRepeat: 'no-repeat',\n\n size: {\n xs: { fontSize: '12px', chipFontSize: '10px' },\n sm: { fontSize: '14px', chipFontSize: '12px' },\n md: { fontSize: '16px', chipFontSize: '14px' },\n lg: { fontSize: '18px', chipFontSize: '16px' },\n },\n\n labelType: {\n static: {\n valueInputHeight: '3em',\n valueInputMarginBottom: 'auto',\n },\n floating: {\n labelPosition: 'absolute',\n labelTopPosition: '0',\n labelHorizontalPosition: '0.9em',\n labelFontSize: '1em',\n placeholderOpacity: 0,\n inputHeight: '3.5em',\n inputVerticalAlignment: 'flex-end',\n inputTransformY: 'translateY(1.55em)',\n inputTransition: 'all 75ms ease-in-out',\n marginInlineStart: '0',\n valueInputHeight: '1.5702em',\n valueInputMarginBottom: '0.5em',\n\n _focused: {\n labelFontSize: '0.75em',\n inputTransformY: 'translateY(1.05em)',\n labelFontWeight: '400',\n placeholderOpacity: 1,\n },\n\n _readOnly: {\n placeholderOpacity: 0,\n },\n\n _hasValue: {\n inputTransformY: 'translateY(1.05em)',\n labelFontSize: '0.75em',\n labelFontWeight: '400',\n },\n },\n },\n\n _fullWidth: {\n width: '100%',\n },\n\n _bordered: {\n outlineWidth: globalRefs.border.xs,\n borderColor: globalRefs.colors.surface.light,\n borderStyle: 'solid',\n _invalid: {\n borderColor: globalRefs.colors.error.main,\n },\n },\n\n _focused: {\n outlineColor: globalRefs.colors.surface.light,\n _invalid: {\n outlineColor: globalRefs.colors.error.main,\n },\n },\n\n _disabled: {\n labelTextColor: globalRefs.colors.surface.light,\n borderColor: globalRefs.colors.surface.light,\n valueTextColor: globalRefs.colors.surface.light,\n placeholderTextColor: globalRefs.colors.surface.light,\n helperTextColor: globalRefs.colors.surface.light,\n backgroundColor: globalRefs.colors.surface.main,\n },\n },\n componentName\n);\n\nexport { refs, vars };\nexport default theme;\n","import globals from '../globals';\nimport { getThemeRefs } from '../../helpers/themeHelpers';\nimport { TextFieldClass } from '../../components/descope-text-field/TextFieldClass';\nimport { refs } from './inputWrapper';\n\nconst globalRefs = getThemeRefs(globals);\nconst vars = TextFieldClass.cssVarList;\n\nexport const textField = {\n [vars.hostWidth]: refs.width,\n [vars.hostMinWidth]: refs.minWidth,\n [vars.hostDirection]: refs.direction,\n [vars.fontSize]: refs.fontSize,\n [vars.fontFamily]: refs.fontFamily,\n [vars.labelFontSize]: refs.labelFontSize,\n [vars.labelFontWeight]: refs.labelFontWeight,\n [vars.labelTextColor]: refs.labelTextColor,\n [vars.labelRequiredIndicator]: refs.requiredIndicator,\n [vars.errorMessageTextColor]: refs.errorMessageTextColor,\n [vars.inputValueTextColor]: refs.valueTextColor,\n [vars.inputPlaceholderColor]: refs.placeholderTextColor,\n [vars.inputBorderWidth]: refs.borderWidth,\n [vars.inputBorderStyle]: refs.borderStyle,\n [vars.inputBorderColor]: refs.borderColor,\n [vars.inputBorderRadius]: refs.borderRadius,\n [vars.inputOutlineWidth]: refs.outlineWidth,\n [vars.inputOutlineStyle]: refs.outlineStyle,\n [vars.inputOutlineColor]: refs.outlineColor,\n [vars.inputOutlineOffset]: refs.outlineOffset,\n [vars.inputBackgroundColor]: refs.backgroundColor,\n [vars.inputHeight]: refs.inputHeight,\n [vars.inputHorizontalPadding]: refs.horizontalPadding,\n [vars.helperTextColor]: refs.helperTextColor,\n [vars.textAlign]: refs.textAlign,\n textAlign: {\n right: { [vars.inputTextAlign]: 'right' },\n left: { [vars.inputTextAlign]: 'left' },\n center: { [vars.inputTextAlign]: 'center' },\n },\n [vars.labelPosition]: refs.labelPosition,\n [vars.labelTopPosition]: refs.labelTopPosition,\n [vars.labelHorizontalPosition]: refs.labelHorizontalPosition,\n [vars.inputTransformY]: refs.inputTransformY,\n [vars.inputTransition]: refs.inputTransition,\n [vars.marginInlineStart]: refs.marginInlineStart,\n [vars.placeholderOpacity]: refs.placeholderOpacity,\n [vars.inputVerticalAlignment]: refs.inputVerticalAlignment,\n [vars.valueInputHeight]: refs.valueInputHeight,\n [vars.valueInputMarginBottom]: refs.valueInputMarginBottom,\n [vars.inputIconOffset]: globalRefs.spacing.md,\n [vars.inputIconSize]: refs.inputIconSize,\n [vars.inputIconColor]: refs.placeholderTextColor,\n\n // error message icon\n [vars.errorMessageIcon]: refs.errorMessageIcon,\n [vars.errorMessageIconSize]: refs.errorMessageIconSize,\n [vars.errorMessageIconPadding]: refs.errorMessageIconPadding,\n [vars.errorMessageIconRepeat]: refs.errorMessageIconRepeat,\n [vars.errorMessageIconPosition]: refs.errorMessageIconPosition,\n [vars.errorMessageFontSize]: refs.errorMessageFontSize,\n};\n\nexport default textField;\nexport { vars };\n","import globals from '../globals';\nimport { getThemeRefs } from '../../helpers/themeHelpers';\nimport { PasswordClass } from '../../components/descope-password/PasswordClass';\nimport { refs } from './inputWrapper';\n\nconst globalRefs = getThemeRefs(globals);\nconst vars = PasswordClass.cssVarList;\n\nconst password = {\n [vars.hostWidth]: refs.width,\n [vars.hostMinWidth]: refs.minWidth,\n [vars.hostDirection]: refs.direction,\n [vars.fontSize]: refs.fontSize,\n [vars.fontFamily]: refs.fontFamily,\n [vars.labelFontSize]: refs.labelFontSize,\n [vars.labelFontWeight]: refs.labelFontWeight,\n [vars.labelTextColor]: refs.labelTextColor,\n [vars.errorMessageTextColor]: refs.errorMessageTextColor,\n [vars.inputHorizontalPadding]: refs.horizontalPadding,\n [vars.inputHeight]: refs.inputHeight,\n [vars.inputBackgroundColor]: refs.backgroundColor,\n [vars.labelRequiredIndicator]: refs.requiredIndicator,\n [vars.inputValueTextColor]: refs.valueTextColor,\n [vars.inputPlaceholderTextColor]: refs.placeholderTextColor,\n [vars.inputBorderWidth]: refs.borderWidth,\n [vars.inputBorderStyle]: refs.borderStyle,\n [vars.inputBorderColor]: refs.borderColor,\n [vars.inputBorderRadius]: refs.borderRadius,\n [vars.inputOutlineWidth]: refs.outlineWidth,\n [vars.inputOutlineStyle]: refs.outlineStyle,\n [vars.inputOutlineColor]: refs.outlineColor,\n [vars.inputOutlineOffset]: refs.outlineOffset,\n [vars.revealButtonOffset]: globalRefs.spacing.md,\n [vars.revealButtonSize]: refs.toggleButtonSize,\n [vars.revealButtonColor]: refs.placeholderTextColor,\n [vars.labelPosition]: refs.labelPosition,\n [vars.labelTopPosition]: refs.labelTopPosition,\n [vars.labelHorizontalPosition]: refs.labelHorizontalPosition,\n [vars.inputTransformY]: refs.inputTransformY,\n [vars.inputTransition]: refs.inputTransition,\n [vars.marginInlineStart]: refs.marginInlineStart,\n [vars.placeholderOpacity]: refs.placeholderOpacity,\n [vars.inputVerticalAlignment]: refs.inputVerticalAlignment,\n [vars.valueInputHeight]: refs.valueInputHeight,\n\n // error message icon\n [vars.errorMessageIcon]: refs.errorMessageIcon,\n [vars.errorMessageIconSize]: refs.errorMessageIconSize,\n [vars.errorMessageIconPadding]: refs.errorMessageIconPadding,\n [vars.errorMessageIconRepeat]: refs.errorMessageIconRepeat,\n [vars.errorMessageIconPosition]: refs.errorMessageIconPosition,\n [vars.errorMessageFontSize]: refs.errorMessageFontSize,\n};\n\nexport default password;\nexport { vars };\n","import { NumberFieldClass } from '../../components/descope-number-field/NumberFieldClass';\nimport { refs } from './inputWrapper';\n\nconst vars = NumberFieldClass.cssVarList;\n\nconst numberField = {\n [vars.hostWidth]: refs.width,\n [vars.hostMinWidth]: refs.minWidth,\n [vars.hostDirection]: refs.direction,\n [vars.fontSize]: refs.fontSize,\n [vars.fontFamily]: refs.fontFamily,\n [vars.labelFontSize]: refs.labelFontSize,\n [vars.labelFontWeight]: refs.labelFontWeight,\n [vars.labelTextColor]: refs.labelTextColor,\n [vars.errorMessageTextColor]: refs.errorMessageTextColor,\n [vars.inputValueTextColor]: refs.valueTextColor,\n [vars.inputPlaceholderColor]: refs.placeholderTextColor,\n [vars.inputBorderWidth]: refs.borderWidth,\n [vars.inputBorderStyle]: refs.borderStyle,\n [vars.inputBorderColor]: refs.borderColor,\n [vars.inputBorderRadius]: refs.borderRadius,\n [vars.inputOutlineWidth]: refs.outlineWidth,\n [vars.inputOutlineStyle]: refs.outlineStyle,\n [vars.inputOutlineColor]: refs.outlineColor,\n [vars.inputOutlineOffset]: refs.outlineOffset,\n [vars.inputBackgroundColor]: refs.backgroundColor,\n [vars.labelRequiredIndicator]: refs.requiredIndicator,\n [vars.inputHorizontalPadding]: refs.horizontalPadding,\n [vars.inputHeight]: refs.inputHeight,\n [vars.labelPosition]: refs.labelPosition,\n [vars.labelTopPosition]: refs.labelTopPosition,\n [vars.labelHorizontalPosition]: refs.labelHorizontalPosition,\n [vars.inputTransformY]: refs.inputTransformY,\n [vars.inputTransition]: refs.inputTransition,\n [vars.marginInlineStart]: refs.marginInlineStart,\n [vars.placeholderOpacity]: refs.placeholderOpacity,\n [vars.inputVerticalAlignment]: refs.inputVerticalAlignment,\n [vars.valueInputHeight]: refs.valueInputHeight,\n [vars.valueInputMarginBottom]: refs.valueInputMarginBottom,\n\n // error message icon\n [vars.errorMessageIcon]: refs.errorMessageIcon,\n [vars.errorMessageIconSize]: refs.errorMessageIconSize,\n [vars.errorMessageIconPadding]: refs.errorMessageIconPadding,\n [vars.errorMessageIconRepeat]: refs.errorMessageIconRepeat,\n [vars.errorMessageIconPosition]: refs.errorMessageIconPosition,\n [vars.errorMessageFontSize]: refs.errorMessageFontSize,\n};\n\nexport default numberField;\nexport { vars };\n","import { EmailFieldClass } from '../../components/descope-email-field/EmailFieldClass';\nimport { refs } from './inputWrapper';\n\nconst vars = EmailFieldClass.cssVarList;\n\nconst emailField = {\n [vars.hostWidth]: refs.width,\n [vars.hostMinWidth]: refs.minWidth,\n [vars.hostDirection]: refs.direction,\n [vars.fontSize]: refs.fontSize,\n [vars.fontFamily]: refs.fontFamily,\n [vars.labelFontSize]: refs.labelFontSize,\n [vars.labelFontWeight]: refs.labelFontWeight,\n [vars.labelTextColor]: refs.labelTextColor,\n [vars.errorMessageTextColor]: refs.errorMessageTextColor,\n [vars.inputValueTextColor]: refs.valueTextColor,\n [vars.labelRequiredIndicator]: refs.requiredIndicator,\n [vars.inputPlaceholderColor]: refs.placeholderTextColor,\n [vars.inputBorderWidth]: refs.borderWidth,\n [vars.inputBorderStyle]: refs.borderStyle,\n [vars.inputBorderColor]: refs.borderColor,\n [vars.inputBorderRadius]: refs.borderRadius,\n [vars.inputOutlineWidth]: refs.outlineWidth,\n [vars.inputOutlineStyle]: refs.outlineStyle,\n [vars.inputOutlineColor]: refs.outlineColor,\n [vars.inputOutlineOffset]: refs.outlineOffset,\n [vars.inputBackgroundColor]: refs.backgroundColor,\n [vars.inputHorizontalPadding]: refs.horizontalPadding,\n [vars.inputHeight]: refs.inputHeight,\n [vars.labelPosition]: refs.labelPosition,\n [vars.labelTopPosition]: refs.labelTopPosition,\n [vars.labelHorizontalPosition]: refs.labelHorizontalPosition,\n [vars.inputTransformY]: refs.inputTransformY,\n [vars.inputTransition]: refs.inputTransition,\n [vars.marginInlineStart]: refs.marginInlineStart,\n [vars.placeholderOpacity]: refs.placeholderOpacity,\n [vars.inputVerticalAlignment]: refs.inputVerticalAlignment,\n [vars.valueInputHeight]: refs.valueInputHeight,\n [vars.valueInputMarginBottom]: refs.valueInputMarginBottom,\n\n // error message icon\n [vars.errorMessageIcon]: refs.errorMessageIcon,\n [vars.errorMessageIconSize]: refs.errorMessageIconSize,\n [vars.errorMessageIconPadding]: refs.errorMessageIconPadding,\n [vars.errorMessageIconRepeat]: refs.errorMessageIconRepeat,\n [vars.errorMessageIconPosition]: refs.errorMessageIconPosition,\n [vars.errorMessageFontSize]: refs.errorMessageFontSize,\n};\n\nexport default emailField;\nexport { vars };\n","import { TextAreaClass } from '../../components/descope-text-area/TextAreaClass';\nimport { refs } from './inputWrapper';\n\nconst vars = TextAreaClass.cssVarList;\n\nconst textArea = {\n [vars.hostWidth]: refs.width,\n [vars.hostMinWidth]: refs.minWidth,\n [vars.hostDirection]: refs.direction,\n [vars.fontSize]: refs.fontSize,\n [vars.fontFamily]: refs.fontFamily,\n [vars.labelTextColor]: refs.labelTextColor,\n [vars.labelRequiredIndicator]: refs.requiredIndicator,\n [vars.errorMessageTextColor]: refs.errorMessageTextColor,\n [vars.inputBackgroundColor]: refs.backgroundColor,\n [vars.inputValueTextColor]: refs.valueTextColor,\n [vars.inputPlaceholderTextColor]: refs.placeholderTextColor,\n [vars.inputBorderRadius]: refs.borderRadius,\n [vars.inputBorderWidth]: refs.borderWidth,\n [vars.inputBorderStyle]: refs.borderStyle,\n [vars.inputBorderColor]: refs.borderColor,\n [vars.inputOutlineWidth]: refs.outlineWidth,\n [vars.inputOutlineStyle]: refs.outlineStyle,\n [vars.inputOutlineColor]: refs.outlineColor,\n [vars.inputOutlineOffset]: refs.outlineOffset,\n [vars.inputResizeType]: 'vertical',\n [vars.inputMinHeight]: '5em',\n\n // error message icon\n [vars.errorMessageIcon]: refs.errorMessageIcon,\n [vars.errorMessageIconSize]: refs.errorMessageIconSize,\n [vars.errorMessageIconPadding]: refs.errorMessageIconPadding,\n [vars.errorMessageIconRepeat]: refs.errorMessageIconRepeat,\n [vars.errorMessageIconPosition]: refs.errorMessageIconPosition,\n [vars.errorMessageFontSize]: refs.errorMessageFontSize,\n\n textAlign: {\n right: { [vars.inputTextAlign]: 'right' },\n left: { [vars.inputTextAlign]: 'left' },\n center: { [vars.inputTextAlign]: 'center' },\n },\n\n _readonly: {\n [vars.inputResizeType]: 'none',\n },\n};\n\nexport default textArea;\nexport { vars };\n","import { CheckboxClass } from '../../components/boolean-fields/descope-checkbox/CheckboxClass';\nimport { refs } from './inputWrapper';\n\nconst vars = CheckboxClass.cssVarList;\nconst checkboxSize = '1.35em';\n\nconst checkbox = {\n [vars.hostWidth]: refs.width,\n [vars.hostDirection]: refs.direction,\n [vars.fontSize]: refs.fontSize,\n [vars.fontFamily]: refs.fontFamily,\n [vars.labelTextColor]: refs.labelTextColor,\n [vars.labelRequiredIndicator]: refs.requiredIndicator,\n [vars.labelFontWeight]: '400',\n [vars.labelLineHeight]: checkboxSize,\n [vars.labelSpacing]: '1em',\n [vars.errorMessageTextColor]: refs.errorMessageTextColor,\n [vars.inputOutlineWidth]: refs.outlineWidth,\n [vars.inputOutlineOffset]: refs.outlineOffset,\n [vars.inputOutlineColor]: refs.outlineColor,\n [vars.inputOutlineStyle]: refs.outlineStyle,\n [vars.inputBorderRadius]: refs.borderRadius,\n [vars.inputBorderColor]: refs.borderColor,\n [vars.inputBorderWidth]: refs.borderWidth,\n [vars.inputBorderStyle]: refs.borderStyle,\n [vars.inputBackgroundColor]: refs.backgroundColor,\n [vars.inputSize]: checkboxSize,\n [vars.inputValueTextColor]: refs.valueTextColor,\n\n // error message icon\n [vars.errorMessageIcon]: refs.errorMessageIcon,\n [vars.errorMessageIconSize]: refs.errorMessageIconSize,\n [vars.errorMessageIconPadding]: refs.errorMessageIconPadding,\n [vars.errorMessageIconRepeat]: refs.errorMessageIconRepeat,\n [vars.errorMessageIconPosition]: refs.errorMessageIconPosition,\n [vars.errorMessageFontSize]: refs.errorMessageFontSize,\n};\n\nexport default checkbox;\nexport { vars };\n","import globals from '../globals';\nimport { getThemeRefs } from '../../helpers/themeHelpers';\nimport { SwitchToggleClass } from '../../components/boolean-fields/descope-switch-toggle/SwitchToggleClass';\nimport { refs } from './inputWrapper';\n\nconst knobMargin = '2px';\nconst checkboxHeight = '1.25em';\n\nconst globalRefs = getThemeRefs(globals);\nconst vars = SwitchToggleClass.cssVarList;\n\nconst switchToggle = {\n [vars.hostWidth]: refs.width,\n [vars.hostDirection]: refs.direction,\n [vars.fontSize]: refs.fontSize,\n [vars.fontFamily]: refs.fontFamily,\n\n [vars.inputOutlineWidth]: refs.outlineWidth,\n [vars.inputOutlineOffset]: refs.outlineOffset,\n [vars.inputOutlineColor]: refs.outlineColor,\n [vars.inputOutlineStyle]: refs.outlineStyle,\n\n [vars.trackBorderStyle]: refs.borderStyle,\n [vars.trackBorderWidth]: refs.borderWidth, // var `trackBorderWidth` used outside the theme for `left` margin calculation\n [vars.trackBorderColor]: refs.borderColor,\n [vars.trackBackgroundColor]: refs.backgroundColor,\n [vars.trackBorderRadius]: globalRefs.radius.md,\n [vars.trackWidth]: '2.5em', // var `trackWidth` used outside the theme for `left` margin calculation\n [vars.trackHeight]: checkboxHeight,\n\n [vars.knobSize]: `calc(1em - ${knobMargin})`,\n [vars.knobRadius]: '50%',\n [vars.knobTopOffset]: '1px',\n [vars.knobLeftOffset]: knobMargin,\n [vars.knobColor]: refs.labelTextColor,\n [vars.knobTransitionDuration]: '0.3s',\n\n [vars.labelTextColor]: refs.labelTextColor,\n [vars.labelFontWeight]: '400',\n [vars.labelLineHeight]: '1.35em',\n [vars.labelSpacing]: '1em',\n [vars.labelRequiredIndicator]: refs.requiredIndicator,\n [vars.errorMessageTextColor]: refs.errorMessageTextColor,\n\n // error message icon\n [vars.errorMessageIcon]: refs.errorMessageIcon,\n [vars.errorMessageIconSize]: refs.errorMessageIconSize,\n [vars.errorMessageIconPadding]: refs.errorMessageIconPadding,\n [vars.errorMessageIconRepeat]: refs.errorMessageIconRepeat,\n [vars.errorMessageIconPosition]: refs.errorMessageIconPosition,\n [vars.errorMessageFontSize]: refs.errorMessageFontSize,\n\n _checked: {\n [vars.trackBorderColor]: refs.borderColor,\n [vars.knobLeftOffset]: `calc(100% - var(${vars.knobSize}) - ${knobMargin})`,\n [vars.knobColor]: refs.valueTextColor,\n [vars.knobTextColor]: refs.valueTextColor,\n },\n\n _disabled: {\n [vars.knobColor]: globalRefs.colors.surface.light,\n [vars.trackBorderColor]: globalRefs.colors.surface.light,\n [vars.trackBackgroundColor]: globalRefs.colors.surface.main,\n [vars.labelTextColor]: refs.labelTextColor,\n _checked: {\n [vars.knobColor]: globalRefs.colors.surface.light,\n [vars.trackBackgroundColor]: globalRefs.colors.surface.main,\n },\n },\n\n _invalid: {\n [vars.trackBorderColor]: globalRefs.colors.error.main,\n [vars.knobColor]: globalRefs.colors.error.main,\n },\n};\n\nexport default switchToggle;\nexport { vars };\n","import { ContainerClass, componentName } from '../../components/descope-container/ContainerClass';\nimport { createHelperVars, getThemeRefs } from '../../helpers/themeHelpers';\nimport globals from '../globals';\n\nconst globalRefs = getThemeRefs(globals);\n\nconst compVars = ContainerClass.cssVarList;\n\nconst verticalAlignment = {\n start: { verticalAlignment: 'start' },\n center: { verticalAlignment: 'safe center' },\n end: { verticalAlignment: 'end' },\n};\n\nconst horizontalAlignment = {\n start: { horizontalAlignment: 'start' },\n center: { horizontalAlignment: 'safe center' },\n end: { horizontalAlignment: 'end' },\n};\n\nconst [helperTheme, helperRefs, helperVars] = createHelperVars(\n {\n verticalAlignment,\n horizontalAlignment,\n shadowColor: '#00000020', // if we want to support transparency vars, we should use different color format\n },\n componentName\n);\n\nconst { shadowColor } = helperRefs;\n\nconst container = {\n ...helperTheme,\n\n [compVars.itemsGrow]: '0',\n [compVars.hostWidth]: '100%',\n [compVars.boxShadow]: 'none',\n\n [compVars.backgroundColor]: globalRefs.colors.surface.main,\n\n [compVars.backgroundImage]: '', // we need to set a value to avoid inner containers from inheriting the parent's background image\n [compVars.backgroundPositionX]: 'center',\n [compVars.backgroundPositionY]: 'center',\n [compVars.backgroundSize]: 'cover',\n [compVars.backgroundRepeat]: 'no-repeat',\n\n [compVars.color]: globalRefs.colors.surface.contrast,\n [compVars.borderRadius]: '0px',\n [compVars.hostDirection]: globalRefs.direction,\n\n [compVars.borderStyle]: 'none',\n [compVars.borderWidth]: 'unset',\n [compVars.borderColor]: 'unset',\n\n verticalPadding: {\n sm: { [compVars.verticalPadding]: '5px' },\n md: { [compVars.verticalPadding]: '10px' },\n lg: { [compVars.verticalPadding]: '20px' },\n },\n\n horizontalPadding: {\n sm: { [compVars.horizontalPadding]: '5px' },\n md: { [compVars.horizontalPadding]: '10px' },\n lg: { [compVars.horizontalPadding]: '20px' },\n },\n\n direction: {\n row: {\n [compVars.flexDirection]: 'row',\n [compVars.alignItems]: helperRefs.verticalAlignment,\n [compVars.justifyContent]: helperRefs.horizontalAlignment,\n [compVars.flexWrap]: 'wrap',\n horizontalAlignment: {\n spaceBetween: {\n [helperVars.horizontalAlignment]: 'space-between',\n },\n },\n },\n column: {\n [compVars.flexDirection]: 'column',\n [compVars.alignItems]: helperRefs.horizontalAlignment,\n [compVars.justifyContent]: helperRefs.verticalAlignment,\n verticalAlignment: {\n spaceBetween: {\n [helperVars.verticalAlignment]: 'space-between',\n },\n },\n },\n },\n\n spaceBetween: {\n sm: { [compVars.gap]: '10px' },\n md: { [compVars.gap]: '20px' },\n lg: { [compVars.gap]: '30px' },\n },\n\n shadow: {\n sm: {\n [compVars.boxShadow]: `${globalRefs.shadow.wide.sm} ${shadowColor}, ${globalRefs.shadow.narrow.sm} ${shadowColor}`,\n },\n md: {\n [compVars.boxShadow]: `${globalRefs.shadow.wide.md} ${shadowColor}, ${globalRefs.shadow.narrow.md} ${shadowColor}`,\n },\n lg: {\n [compVars.boxShadow]: `${globalRefs.shadow.wide.lg} ${shadowColor}, ${globalRefs.shadow.narrow.lg} ${shadowColor}`,\n },\n xl: {\n [compVars.boxShadow]: `${globalRefs.shadow.wide.xl} ${shadowColor}, ${globalRefs.shadow.narrow.xl} ${shadowColor}`,\n },\n '2xl': {\n [helperVars.shadowColor]: '#00000050', // mimic daisyUI shadow settings\n [compVars.boxShadow]: `${globalRefs.shadow.wide['2xl']} ${shadowColor}`,\n },\n },\n\n // we must add & to override the root container style (applied via the styles page)\n '&borderRadius': {\n sm: { [compVars.borderRadius]: globalRefs.radius.sm },\n md: { [compVars.borderRadius]: globalRefs.radius.md },\n lg: { [compVars.borderRadius]: globalRefs.radius.lg },\n xl: { [compVars.borderRadius]: globalRefs.radius.xl },\n '2xl': { [compVars.borderRadius]: globalRefs.radius['2xl'] },\n '3xl': { [compVars.borderRadius]: globalRefs.radius['3xl'] },\n },\n};\n\nexport default container;\n\nexport const vars = {\n ...compVars,\n ...helperVars,\n};\n","import { LogoClass } from '../../components/descope-logo/LogoClass';\n\nconst vars = LogoClass.cssVarList;\n\nconst logo = {\n [vars.fallbackUrl]: 'url(https://imgs.descope.com/components/no-logo-placeholder.svg)',\n};\n\nexport default logo;\nexport { vars };\n","import { TotpImageClass } from '../../components/descope-totp-image/TotpImageClass';\n\nconst vars = TotpImageClass.cssVarList;\n\nconst logo = {\n [vars.fallbackUrl]: 'url(https://imgs.descope.com/components/totp-placeholder.svg)',\n};\n\nexport default logo;\nexport { vars };\n","import { NotpImageClass } from '../../components/descope-notp-image/NotpImageClass';\n\nconst vars = NotpImageClass.cssVarList;\n\nconst logo = {\n [vars.fallbackUrl]: 'url(https://imgs.descope.com/components/notp-placeholder.svg)',\n};\n\nexport default logo;\nexport { vars };\n","import globals from '@descope-ui/theme-globals';\nimport { getThemeRefs } from '@descope-ui/common/theme-helpers';\nimport { TextClass } from './component/TextClass';\n\nconst globalRefs = getThemeRefs(globals);\nconst vars = TextClass.cssVarList;\n\nconst text = {\n [vars.hostDirection]: globalRefs.direction,\n [vars.textLineHeight]: '1.35em',\n [vars.textAlign]: 'start',\n [vars.textColor]: globalRefs.colors.surface.dark,\n\n variant: {\n h1: {\n [vars.fontSize]: globalRefs.typography.h1.size,\n [vars.fontWeight]: globalRefs.typography.h1.weight,\n [vars.fontFamily]: globalRefs.typography.h1.font,\n },\n h2: {\n [vars.fontSize]: globalRefs.typography.h2.size,\n [vars.fontWeight]: globalRefs.typography.h2.weight,\n [vars.fontFamily]: globalRefs.typography.h2.font,\n },\n h3: {\n [vars.fontSize]: globalRefs.typography.h3.size,\n [vars.fontWeight]: globalRefs.typography.h3.weight,\n [vars.fontFamily]: globalRefs.typography.h3.font,\n },\n subtitle1: {\n [vars.fontSize]: globalRefs.typography.subtitle1.size,\n [vars.fontWeight]: globalRefs.typography.subtitle1.weight,\n [vars.fontFamily]: globalRefs.typography.subtitle1.font,\n },\n subtitle2: {\n [vars.fontSize]: globalRefs.typography.subtitle2.size,\n [vars.fontWeight]: globalRefs.typography.subtitle2.weight,\n [vars.fontFamily]: globalRefs.typography.subtitle2.font,\n },\n body1: {\n [vars.fontSize]: globalRefs.typography.body1.size,\n [vars.fontWeight]: globalRefs.typography.body1.weight,\n [vars.fontFamily]: globalRefs.typography.body1.font,\n },\n body2: {\n [vars.fontSize]: globalRefs.typography.body2.size,\n [vars.fontWeight]: globalRefs.typography.body2.weight,\n [vars.fontFamily]: globalRefs.typography.body2.font,\n },\n },\n\n mode: {\n primary: {\n [vars.textColor]: globalRefs.colors.surface.contrast,\n },\n secondary: {\n [vars.textColor]: globalRefs.colors.surface.dark,\n },\n error: {\n [vars.textColor]: globalRefs.colors.error.main,\n },\n 'error-dark': {\n [vars.textColor]: globalRefs.colors.error.dark,\n },\n success: {\n [vars.textColor]: globalRefs.colors.success.main,\n },\n 'success-dark': {\n [vars.textColor]: globalRefs.colors.success.dark,\n },\n warning: {\n [vars.textColor]: globalRefs.colors.warning.main,\n },\n 'warning-dark': {\n [vars.textColor]: globalRefs.colors.warning.dark,\n },\n },\n\n textAlign: {\n right: { [vars.textAlign]: 'right' },\n left: { [vars.textAlign]: 'left' },\n center: { [vars.textAlign]: 'center' },\n },\n\n _fullWidth: {\n [vars.hostWidth]: '100%',\n },\n\n _italic: {\n [vars.fontStyle]: 'italic',\n },\n\n _uppercase: {\n [vars.textTransform]: 'uppercase',\n },\n\n _lowercase: {\n [vars.textTransform]: 'lowercase',\n },\n};\n\nexport default text;\nexport { vars };\n","import globals from '@descope-ui/theme-globals';\nimport { getThemeRefs } from '@descope-ui/common/theme-helpers';\nimport { LinkClass } from './component/LinkClass';\n\nconst globalRefs = getThemeRefs(globals);\nconst vars = LinkClass.cssVarList;\n\nconst link = {\n [vars.hostDirection]: globalRefs.direction,\n [vars.cursor]: 'pointer',\n\n [vars.textColor]: globalRefs.colors.primary.main,\n\n textAlign: {\n right: { [vars.textAlign]: 'right' },\n left: { [vars.textAlign]: 'left' },\n center: { [vars.textAlign]: 'center' },\n },\n\n _fullWidth: {\n [vars.hostWidth]: '100%',\n },\n\n _hover: {\n [vars.textDecoration]: 'underline',\n },\n\n mode: {\n secondary: {\n [vars.textColor]: globalRefs.colors.secondary.main,\n },\n },\n};\n\nexport default link;\nexport { vars };\n","import globals from '@descope-ui/theme-globals';\nimport { getThemeRefs, useVar } from '@descope-ui/common/theme-helpers';\nimport { EnrichedTextClass } from './component/EnrichedTextClass';\nimport { vars as textCompVars } from '@descope-ui/descope-text/theme';\nimport { vars as linkCompVars } from '@descope-ui/descope-link/theme';\n\nconst globalRefs = getThemeRefs(globals);\nconst vars = EnrichedTextClass.cssVarList;\n\nconst enrichedText = {\n [vars.hostDirection]: globalRefs.direction,\n [vars.hostWidth]: useVar(textCompVars.hostWidth),\n\n [vars.textLineHeight]: useVar(textCompVars.textLineHeight),\n [vars.textColor]: useVar(textCompVars.textColor),\n [vars.textAlign]: useVar(textCompVars.textAlign),\n\n [vars.fontSize]: useVar(textCompVars.fontSize),\n [vars.fontWeight]: useVar(textCompVars.fontWeight),\n [vars.fontFamily]: useVar(textCompVars.fontFamily),\n\n [vars.linkColor]: useVar(linkCompVars.textColor),\n [vars.linkTextDecoration]: 'none',\n [vars.linkHoverTextDecoration]: 'underline',\n\n [vars.fontWeightBold]: '900',\n [vars.minWidth]: '0.25em',\n [vars.minHeight]: '1.35em',\n\n [vars.hostDisplay]: 'inline-block',\n\n _empty: {\n _hideWhenEmpty: {\n [vars.hostDisplay]: 'none',\n },\n },\n};\n\nexport default enrichedText;\nexport { vars };\n","import globals from '../globals';\nimport { componentName, DividerClass } from '../../components/descope-divider/DividerClass';\nimport { createHelperVars, getThemeRefs } from '../../helpers/themeHelpers';\n\nconst globalRefs = getThemeRefs(globals);\nconst compVars = DividerClass.cssVarList;\n\nconst [helperTheme, helperRefs, helperVars] = createHelperVars(\n {\n thickness: '2px',\n spacing: '10px',\n },\n componentName\n);\n\nconst divider = {\n ...helperTheme,\n\n [compVars.hostDirection]: globalRefs.direction,\n [compVars.alignItems]: 'center',\n [compVars.flexDirection]: 'row',\n [compVars.alignSelf]: 'stretch',\n [compVars.hostWidth]: '100%',\n [compVars.stripeColor]: globalRefs.colors.surface.light,\n [compVars.stripeColorOpacity]: '0.5',\n [compVars.stripeHorizontalThickness]: helperRefs.thickness,\n [compVars.labelTextWidth]: 'fit-content',\n [compVars.labelTextMaxWidth]: 'calc(100% - 100px)',\n [compVars.labelTextHorizontalSpacing]: helperRefs.spacing,\n [compVars.textAlign]: 'center',\n\n _vertical: {\n [compVars.minHeight]: '200px',\n [compVars.flexDirection]: 'column',\n [compVars.hostWidth]: 'fit-content',\n [compVars.hostPadding]: `0 calc(${helperRefs.thickness} * 3)`,\n [compVars.stripeVerticalThickness]: helperRefs.thickness,\n [compVars.labelTextWidth]: 'fit-content',\n [compVars.labelTextMaxWidth]: '100%',\n [compVars.labelTextVerticalSpacing]: helperRefs.spacing,\n },\n};\n\nexport default divider;\n\nexport const vars = {\n ...compVars,\n ...helperVars,\n};\n","import { PasscodeClass } from '../../components/descope-passcode/PasscodeClass';\nimport { refs } from './inputWrapper';\n\nconst vars = PasscodeClass.cssVarList;\n\nconst passcode = {\n [vars.hostDirection]: refs.direction,\n [vars.fontFamily]: refs.fontFamily,\n [vars.fontSize]: refs.fontSize,\n [vars.labelTextColor]: refs.labelTextColor,\n [vars.labelRequiredIndicator]: refs.requiredIndicator,\n [vars.errorMessageTextColor]: refs.errorMessageTextColor,\n [vars.digitValueTextColor]: refs.valueTextColor,\n [vars.digitPadding]: '0',\n [vars.digitTextAlign]: 'center',\n [vars.digitSpacing]: '4px',\n [vars.hostWidth]: refs.width,\n [vars.digitOutlineColor]: 'transparent',\n [vars.digitOutlineWidth]: refs.outlineWidth,\n [vars.focusedDigitFieldOutlineColor]: refs.outlineColor,\n [vars.digitSize]: refs.inputHeight,\n\n // error message icon\n [vars.errorMessageIcon]: refs.errorMessageIcon,\n [vars.errorMessageIconSize]: refs.errorMessageIconSize,\n [vars.errorMessageIconPadding]: refs.errorMessageIconPadding,\n [vars.errorMessageIconRepeat]: refs.errorMessageIconRepeat,\n [vars.errorMessageIconPosition]: refs.errorMessageIconPosition,\n [vars.errorMessageFontSize]: refs.errorMessageFontSize,\n\n size: {\n xs: { [vars.spinnerSize]: '15px' },\n sm: { [vars.spinnerSize]: '20px' },\n md: { [vars.spinnerSize]: '20px' },\n lg: { [vars.spinnerSize]: '20px' },\n },\n\n _hideCursor: {\n [vars.digitCaretTextColor]: 'transparent',\n },\n\n _loading: {\n [vars.overlayOpacity]: refs.overlayOpacity,\n },\n};\n\nexport default passcode;\nexport { vars };\n","import globals from '../../globals';\nimport { getThemeRefs } from '../../../helpers/themeHelpers';\nimport { LoaderLinearClass } from '../../../components/descope-loader-linear/LoaderLinearClass';\n\nconst globalRefs = getThemeRefs(globals);\nconst vars = LoaderLinearClass.cssVarList;\n\nconst loaderLinear = {\n [vars.hostDisplay]: 'inline-block',\n [vars.hostWidth]: '100%',\n\n [vars.barColor]: globalRefs.colors.surface.contrast,\n [vars.barWidth]: '20%',\n\n [vars.barBackgroundColor]: globalRefs.colors.surface.light,\n [vars.barBorderRadius]: '4px',\n\n [vars.animationDuration]: '2s',\n [vars.animationTimingFunction]: 'linear',\n [vars.animationIterationCount]: 'infinite',\n [vars.verticalPadding]: '0.25em',\n\n size: {\n xs: { [vars.barHeight]: '2px' },\n sm: { [vars.barHeight]: '4px' },\n md: { [vars.barHeight]: '6px' },\n lg: { [vars.barHeight]: '8px' },\n },\n\n mode: {\n primary: {\n [vars.barColor]: globalRefs.colors.primary.main,\n },\n secondary: {\n [vars.barColor]: globalRefs.colors.secondary.main,\n },\n },\n\n _hidden: {\n [vars.hostDisplay]: 'none',\n },\n};\n\nexport default loaderLinear;\nexport { vars };\n","import globals from '../../globals';\nimport {\n LoaderRadialClass,\n componentName,\n} from '../../../components/descope-loader-radial/LoaderRadialClass';\nimport { createHelperVars, getThemeRefs } from '../../../helpers/themeHelpers';\n\nconst globalRefs = getThemeRefs(globals);\nconst compVars = LoaderRadialClass.cssVarList;\n\nconst [helperTheme, helperRefs, helperVars] = createHelperVars(\n {\n spinnerColor: globalRefs.colors.surface.contrast,\n mode: {\n primary: {\n spinnerColor: globalRefs.colors.primary.main,\n },\n secondary: {\n spinnerColor: globalRefs.colors.secondary.main,\n },\n },\n },\n componentName\n);\n\nconst loaderRadial = {\n ...helperTheme,\n\n [compVars.animationDuration]: '2s',\n [compVars.animationTimingFunction]: 'linear',\n [compVars.animationIterationCount]: 'infinite',\n [compVars.spinnerBorderStyle]: 'solid',\n [compVars.spinnerBorderWidth]: '0.2em',\n [compVars.spinnerBorderRadius]: '50%',\n [compVars.spinnerQuadrant1Color]: helperRefs.spinnerColor,\n [compVars.spinnerQuadrant2Color]: 'transparent',\n [compVars.spinnerQuadrant3Color]: helperRefs.spinnerColor,\n [compVars.spinnerQuadrant4Color]: 'transparent',\n\n size: {\n xs: { [compVars.spinnerSize]: '20px' },\n sm: { [compVars.spinnerSize]: '30px' },\n md: { [compVars.spinnerSize]: '40px' },\n lg: { [compVars.spinnerSize]: '60px' },\n xl: { [compVars.spinnerSize]: '80px' },\n },\n\n _hidden: {\n [compVars.hostDisplay]: 'none',\n },\n};\n\nexport default loaderRadial;\nexport const vars = {\n ...compVars,\n ...helperVars,\n};\n","import globals from '@descope-ui/theme-globals';\nimport { getThemeRefs, createHelperVars } from '@descope-ui/common/theme-helpers';\nimport { getComponentName } from '@descope-ui/common/components-helpers';\n\nconst componentName = getComponentName('input-wrapper');\nconst globalRefs = getThemeRefs(globals);\n\nconst [theme, refs, vars] = createHelperVars(\n {\n labelTextColor: globalRefs.colors.surface.dark,\n labelFontSize: '14px', // not taken from globals as it is fixed in all inputs\n labelFontWeight: '500', // not taken from globals as it is fixed in all inputs\n valueTextColor: globalRefs.colors.surface.contrast,\n placeholderTextColor: globalRefs.colors.surface.dark,\n requiredIndicator: \"'*'\",\n helperTextColor: globalRefs.colors.surface.dark,\n errorMessageTextColor: globalRefs.colors.error.main,\n successMessageTextColor: globalRefs.colors.success.main,\n\n borderWidth: globalRefs.border.xs,\n borderRadius: globalRefs.radius.xs,\n borderColor: 'transparent',\n\n outlineWidth: globalRefs.border.sm,\n outlineStyle: 'solid',\n outlineColor: 'transparent',\n outlineOffset: '0px', // we need to keep the px unit even for 0 value, as this var is used for calc in different component classes\n\n minWidth: '10em',\n toggleButtonSize: '1.5em',\n inputIconSize: '1em',\n inputHeight: '3em',\n horizontalPadding: '0.5em',\n verticalPadding: '0.5em',\n\n textAlign: 'start',\n\n backgroundColor: globalRefs.colors.surface.main,\n\n fontFamily: globalRefs.fonts.font1.family,\n\n direction: globalRefs.direction,\n\n overlayOpacity: '0.3',\n\n errorMessageIcon: '',\n errorMessageIconSize: '0',\n errorMessageIconPadding: '0',\n errorMessageIconPosition: '0 0.4em',\n errorMessageFontSize: '0.8125rem',\n errorMessageIconRepeat: 'no-repeat',\n errorMessageIconRepeat: 'no-repeat',\n\n size: {\n xs: { fontSize: '12px', chipFontSize: '10px' },\n sm: { fontSize: '14px', chipFontSize: '12px' },\n md: { fontSize: '16px', chipFontSize: '14px' },\n lg: { fontSize: '18px', chipFontSize: '16px' },\n },\n\n labelType: {\n static: {\n valueInputHeight: '3em',\n valueInputMarginBottom: 'auto',\n },\n floating: {\n labelPosition: 'absolute',\n labelTopPosition: '0',\n labelHorizontalPosition: '0.9em',\n labelFontSize: '1em',\n placeholderOpacity: 0,\n inputHeight: '3.5em',\n inputVerticalAlignment: 'flex-end',\n inputTransformY: 'translateY(1.55em)',\n inputTransition: 'all 75ms ease-in-out',\n marginInlineStart: '0',\n valueInputHeight: '1.5702em',\n valueInputMarginBottom: '0.5em',\n\n _focused: {\n labelFontSize: '0.75em',\n inputTransformY: 'translateY(1.05em)',\n labelFontWeight: '400',\n placeholderOpacity: 1,\n },\n\n _readOnly: {\n placeholderOpacity: 0,\n },\n\n _hasValue: {\n inputTransformY: 'translateY(1.05em)',\n labelFontSize: '0.75em',\n labelFontWeight: '400',\n },\n },\n },\n\n _fullWidth: {\n width: '100%',\n },\n\n _focused: {\n outlineColor: globalRefs.colors.surface.light,\n _invalid: {\n outlineColor: globalRefs.colors.error.main,\n },\n },\n\n _bordered: {\n outlineWidth: globalRefs.border.xs,\n borderColor: globalRefs.colors.surface.light,\n borderStyle: 'solid',\n _invalid: {\n borderColor: globalRefs.colors.error.main,\n },\n },\n\n _disabled: {\n labelTextColor: globalRefs.colors.surface.light,\n borderColor: globalRefs.colors.surface.light,\n valueTextColor: globalRefs.colors.surface.light,\n placeholderTextColor: globalRefs.colors.surface.light,\n helperTextColor: globalRefs.colors.surface.light,\n backgroundColor: globalRefs.colors.surface.main,\n },\n },\n componentName,\n);\n\nexport { refs, vars };\nexport default theme;\n","import globals from '@descope-ui/theme-globals';\nimport { ComboBoxClass } from './component/ComboBoxClass';\nimport { getThemeRefs } from '@descope-ui/common/theme-helpers';\nimport { refs } from '@descope-ui/theme-input-wrapper';\n\nconst globalRefs = getThemeRefs(globals);\nconst vars = ComboBoxClass.cssVarList;\n\nexport const comboBox = {\n [vars.hostWidth]: refs.width,\n [vars.hostDirection]: refs.direction,\n [vars.fontSize]: refs.fontSize,\n [vars.fontFamily]: refs.fontFamily,\n [vars.labelFontSize]: refs.labelFontSize,\n [vars.labelFontWeight]: refs.labelFontWeight,\n [vars.labelTextColor]: refs.labelTextColor,\n [vars.errorMessageTextColor]: refs.errorMessageTextColor,\n [vars.inputBorderColor]: refs.borderColor,\n [vars.inputBorderWidth]: refs.borderWidth,\n [vars.inputBorderStyle]: refs.borderStyle,\n [vars.inputBorderRadius]: refs.borderRadius,\n [vars.inputOutlineColor]: refs.outlineColor,\n [vars.inputOutlineOffset]: refs.outlineOffset,\n [vars.inputOutlineWidth]: refs.outlineWidth,\n [vars.inputOutlineStyle]: refs.outlineStyle,\n [vars.labelRequiredIndicator]: refs.requiredIndicator,\n [vars.inputValueTextColor]: refs.valueTextColor,\n [vars.inputPlaceholderTextColor]: refs.placeholderTextColor,\n [vars.inputBackgroundColor]: refs.backgroundColor,\n [vars.inputHorizontalPadding]: refs.horizontalPadding,\n [vars.inputHeight]: refs.inputHeight,\n [vars.inputDropdownButtonColor]: globalRefs.colors.surface.dark,\n [vars.inputDropdownButtonCursor]: 'pointer',\n [vars.inputDropdownButtonSize]: refs.toggleButtonSize,\n [vars.inputDropdownButtonOffset]: globalRefs.spacing.xs,\n [vars.overlayItemPaddingInlineStart]: globalRefs.spacing.xs,\n [vars.overlayItemPaddingInlineEnd]: globalRefs.spacing.lg,\n [vars.labelPosition]: refs.labelPosition,\n [vars.labelTopPosition]: refs.labelTopPosition,\n [vars.labelHorizontalPosition]: refs.labelHorizontalPosition,\n [vars.inputTransformY]: refs.inputTransformY,\n [vars.inputTransition]: refs.inputTransition,\n [vars.marginInlineStart]: refs.marginInlineStart,\n [vars.placeholderOpacity]: refs.placeholderOpacity,\n [vars.inputVerticalAlignment]: refs.inputVerticalAlignment,\n [vars.valueInputHeight]: refs.valueInputHeight,\n [vars.valueInputMarginBottom]: refs.valueInputMarginBottom,\n\n // error message icon\n [vars.errorMessageIcon]: refs.errorMessageIcon,\n [vars.errorMessageIconSize]: refs.errorMessageIconSize,\n [vars.errorMessageIconPadding]: refs.errorMessageIconPadding,\n [vars.errorMessageIconRepeat]: refs.errorMessageIconRepeat,\n [vars.errorMessageIconPosition]: refs.errorMessageIconPosition,\n [vars.errorMessageFontSize]: refs.errorMessageFontSize,\n\n _readonly: {\n [vars.inputDropdownButtonCursor]: 'default',\n },\n\n // Overlay theme exposed via the component:\n [vars.overlayFontSize]: refs.fontSize,\n [vars.overlayFontFamily]: refs.fontFamily,\n [vars.overlayCursor]: 'pointer',\n [vars.overlayItemBoxShadow]: 'none',\n [vars.overlayBackground]: refs.backgroundColor,\n [vars.overlayTextColor]: refs.valueTextColor,\n [vars.overlayCheckmarkDisplay]: 'initial',\n [vars.overlaySelectedItemBackground]: 'initial',\n [vars.overlaySelectedItemHoverBackground]:\n globalRefs.colors.primary.highlight,\n [vars.overlaySelectedItemFocusBackground]:\n globalRefs.colors.primary.highlight,\n [vars.overlayItemHoverBackground]: globalRefs.colors.primary.highlight,\n [vars.overlayItemFocusBackground]: globalRefs.colors.primary.highlight,\n\n // Overlay direct theme:\n [vars.overlay.minHeight]: '400px',\n [vars.overlay.margin]: '0',\n\n [vars.overlay.contentHeight]: '100%',\n [vars.overlay.contentOpacity]: '1',\n [vars.overlay.scrollerMinHeight]: '1px',\n _loading: {\n [vars.overlay.loaderTop]: '50%',\n [vars.overlay.loaderLeft]: '50%',\n [vars.overlay.loaderRight]: 'auto',\n // Margin has to be negative to center the loader, \"transform\" can't be used because the animation uses it\n // Margin has to be half of the width/height of the loader to center it\n [vars.overlay.loaderMargin]: '-15px 0 0 -15px',\n [vars.overlay.loaderWidth]: '30px',\n [vars.overlay.loaderHeight]: '30px',\n [vars.overlay.loaderBorder]: '2px solid transparent',\n [vars.overlay.loaderBorderColor]:\n `${globalRefs.colors.primary.highlight} ${globalRefs.colors.primary.highlight} ${globalRefs.colors.primary.main} ${globalRefs.colors.primary.main}`,\n [vars.overlay.loaderBorderRadius]: '50%',\n [vars.overlay.contentHeight]: '100px',\n [vars.overlay.scrollerMinHeight]: '100px',\n [vars.overlay.contentOpacity]: '0',\n },\n};\n\nexport default comboBox;\nexport { vars };\n","import { PhoneFieldClass } from '../../components/phone-fields/descope-phone-field/PhoneFieldClass';\nimport { refs } from './inputWrapper';\n\nconst vars = PhoneFieldClass.cssVarList;\n\nconst phoneField = {\n [vars.hostWidth]: refs.width,\n [vars.hostDirection]: refs.direction,\n [vars.fontSize]: refs.fontSize,\n [vars.fontFamily]: refs.fontFamily,\n [vars.labelTextColor]: refs.labelTextColor,\n [vars.labelRequiredIndicator]: refs.requiredIndicator,\n [vars.errorMessageTextColor]: refs.errorMessageTextColor,\n [vars.inputValueTextColor]: refs.valueTextColor,\n [vars.inputPlaceholderTextColor]: refs.placeholderTextColor,\n [vars.inputBorderStyle]: refs.borderStyle,\n [vars.inputBorderWidth]: refs.borderWidth,\n [vars.inputBorderColor]: refs.borderColor,\n [vars.inputBorderRadius]: refs.borderRadius,\n [vars.inputOutlineStyle]: refs.outlineStyle,\n [vars.inputOutlineWidth]: refs.outlineWidth,\n [vars.inputOutlineColor]: refs.outlineColor,\n [vars.inputOutlineOffset]: refs.outlineOffset,\n [vars.phoneInputWidth]: refs.minWidth,\n [vars.countryCodeInputWidth]: '5em',\n [vars.countryCodeDropdownWidth]: '20em',\n [vars.marginInlineStart]: '-0.25em',\n [vars.valueInputHeight]: refs.valueInputHeight,\n [vars.valueInputMarginBottom]: refs.valueInputMarginBottom,\n\n // error message icon\n [vars.errorMessageIcon]: refs.errorMessageIcon,\n [vars.errorMessageIconSize]: refs.errorMessageIconSize,\n [vars.errorMessageIconPadding]: refs.errorMessageIconPadding,\n [vars.errorMessageIconRepeat]: refs.errorMessageIconRepeat,\n [vars.errorMessageIconPosition]: refs.errorMessageIconPosition,\n [vars.errorMessageFontSize]: refs.errorMessageFontSize,\n\n // '@overlay': {\n // \toverlayItemBackgroundColor: 'red'\n // }\n};\n\nexport default phoneField;\nexport { vars };\n","import { PhoneFieldInputBoxClass } from '../../components/phone-fields/descope-phone-input-box-field/PhoneFieldInputBoxClass';\nimport { refs } from './inputWrapper';\n\nconst vars = PhoneFieldInputBoxClass.cssVarList;\n\nconst phoneInputBoxField = {\n [vars.hostWidth]: '16em',\n [vars.hostMinWidth]: refs.minWidth,\n [vars.hostDirection]: refs.direction,\n [vars.fontSize]: refs.fontSize,\n [vars.fontFamily]: refs.fontFamily,\n [vars.labelFontSize]: refs.labelFontSize,\n [vars.labelFontWeight]: refs.labelFontWeight,\n [vars.labelTextColor]: refs.labelTextColor,\n [vars.labelRequiredIndicator]: refs.requiredIndicator,\n [vars.errorMessageTextColor]: refs.errorMessageTextColor,\n [vars.inputValueTextColor]: refs.valueTextColor,\n [vars.inputPlaceholderTextColor]: refs.placeholderTextColor,\n [vars.inputBorderStyle]: refs.borderStyle,\n [vars.inputBorderWidth]: refs.borderWidth,\n [vars.inputBorderColor]: refs.borderColor,\n [vars.inputBorderRadius]: refs.borderRadius,\n [vars.inputOutlineStyle]: refs.outlineStyle,\n [vars.inputOutlineWidth]: refs.outlineWidth,\n [vars.inputOutlineColor]: refs.outlineColor,\n [vars.inputOutlineOffset]: refs.outlineOffset,\n [vars.labelPosition]: refs.labelPosition,\n [vars.labelTopPosition]: refs.labelTopPosition,\n [vars.labelHorizontalPosition]: refs.labelHorizontalPosition,\n [vars.inputTransformY]: refs.inputTransformY,\n [vars.inputTransition]: refs.inputTransition,\n [vars.marginInlineStart]: refs.marginInlineStart,\n [vars.valueInputHeight]: refs.valueInputHeight,\n [vars.valueInputMarginBottom]: refs.valueInputMarginBottom,\n [vars.inputHorizontalPadding]: '0',\n\n // error message icon\n [vars.errorMessageIcon]: refs.errorMessageIcon,\n [vars.errorMessageIconSize]: refs.errorMessageIconSize,\n [vars.errorMessageIconPadding]: refs.errorMessageIconPadding,\n [vars.errorMessageIconRepeat]: refs.errorMessageIconRepeat,\n [vars.errorMessageIconPosition]: refs.errorMessageIconPosition,\n [vars.errorMessageFontSize]: refs.errorMessageFontSize,\n\n _fullWidth: {\n [vars.hostWidth]: refs.width,\n },\n};\n\nexport default phoneInputBoxField;\nexport { vars };\n","import globals from '../globals';\nimport { NewPasswordClass } from '../../components/descope-new-password/NewPasswordClass';\nimport { refs } from './inputWrapper';\nimport { getThemeRefs } from '../../helpers/themeHelpers';\n\nconst globalRefs = getThemeRefs(globals);\nconst vars = NewPasswordClass.cssVarList;\n\nconst newPassword = {\n [vars.hostWidth]: refs.width,\n [vars.hostMinWidth]: refs.minWidth,\n [vars.hostDirection]: refs.direction,\n [vars.fontSize]: refs.fontSize,\n [vars.fontFamily]: refs.fontFamily,\n [vars.labelFontSize]: refs.labelFontSize,\n [vars.labelFontWeight]: refs.labelFontWeight,\n [vars.labelTextColor]: refs.labelTextColor,\n [vars.spaceBetweenInputs]: '1em',\n [vars.errorMessageTextColor]: refs.errorMessageTextColor,\n [vars.policyPreviewBackgroundColor]: 'none',\n [vars.policyPreviewPadding]: globalRefs.spacing.lg,\n [vars.valueInputHeight]: refs.valueInputHeight,\n\n // error message icon\n [vars.errorMessageIcon]: refs.errorMessageIcon,\n [vars.errorMessageIconSize]: refs.errorMessageIconSize,\n [vars.errorMessageIconPadding]: refs.errorMessageIconPadding,\n [vars.errorMessageIconRepeat]: refs.errorMessageIconRepeat,\n [vars.errorMessageIconPosition]: refs.errorMessageIconPosition,\n [vars.errorMessageFontSize]: refs.errorMessageFontSize,\n\n _required: {\n // NewPassword doesn't pass `required` attribute to its Password components.\n // That's why we fake the required indicator on each input.\n // We do that by injecting `::after` element, and populating it with requiredIndicator content.\n [vars.inputsRequiredIndicator]: refs.requiredIndicator, // used to populate required content for NewPassword input fields outside the theme\n },\n};\n\nexport default newPassword;\nexport { vars };\n","import { UploadFileClass } from '../../components/descope-upload-file/UploadFileClass';\nimport { refs } from './inputWrapper';\n\nconst vars = UploadFileClass.cssVarList;\n\nconst uploadFile = {\n [vars.hostDirection]: refs.direction,\n [vars.labelTextColor]: refs.labelTextColor,\n [vars.fontFamily]: refs.fontFamily,\n\n [vars.iconSize]: '2em',\n\n [vars.hostPadding]: '0.75em',\n [vars.gap]: '0.5em',\n\n [vars.fontSize]: '16px',\n [vars.titleFontWeight]: '500',\n [vars.lineHeight]: '1em',\n\n [vars.borderWidth]: refs.borderWidth,\n [vars.borderColor]: refs.borderColor,\n [vars.borderRadius]: refs.borderRadius,\n [vars.borderStyle]: 'dashed',\n\n _required: {\n [vars.requiredIndicator]: refs.requiredIndicator,\n },\n\n size: {\n xs: {\n [vars.hostHeight]: '196px',\n [vars.hostWidth]: '200px',\n [vars.titleFontSize]: '0.875em',\n [vars.descriptionFontSize]: '0.875em',\n [vars.lineHeight]: '1.25em',\n },\n sm: {\n [vars.hostHeight]: '216px',\n [vars.hostWidth]: '230px',\n [vars.titleFontSize]: '1em',\n [vars.descriptionFontSize]: '0.875em',\n [vars.lineHeight]: '1.25em',\n },\n md: {\n [vars.hostHeight]: '256px',\n [vars.hostWidth]: '312px',\n [vars.titleFontSize]: '1.125em',\n [vars.descriptionFontSize]: '1em',\n [vars.lineHeight]: '1.5em',\n },\n lg: {\n [vars.hostHeight]: '280px',\n [vars.hostWidth]: '336px',\n [vars.titleFontSize]: '1.125em',\n [vars.descriptionFontSize]: '1.125em',\n [vars.lineHeight]: '1.75em',\n },\n },\n\n _fullWidth: {\n [vars.hostWidth]: refs.width,\n },\n};\n\nexport default uploadFile;\nexport { vars };\n","import { ButtonSelectionGroupItemClass } from '../../../components/button-selection-group-fields/descope-button-selection-group-item/ButtonSelectionGroupItemClass';\nimport { getThemeRefs } from '../../../helpers/themeHelpers';\nimport globals from '../../globals';\n\nconst globalRefs = getThemeRefs(globals);\n\nexport const vars = ButtonSelectionGroupItemClass.cssVarList;\n\nconst buttonSelectionGroupItem = {\n [vars.hostDirection]: 'inherit',\n [vars.backgroundColor]: globalRefs.colors.surface.main,\n [vars.labelTextColor]: globalRefs.colors.surface.contrast,\n [vars.borderColor]: globalRefs.colors.surface.light,\n [vars.borderStyle]: 'solid',\n [vars.borderRadius]: globalRefs.radius.sm,\n [vars.outlineColor]: 'transparent',\n [vars.borderWidth]: globalRefs.border.xs,\n\n _hover: {\n [vars.backgroundColor]: globalRefs.colors.surface.highlight,\n },\n\n _focused: {\n [vars.outlineColor]: globalRefs.colors.surface.light,\n },\n\n _selected: {\n [vars.borderColor]: globalRefs.colors.surface.contrast,\n [vars.backgroundColor]: globalRefs.colors.surface.contrast,\n [vars.labelTextColor]: globalRefs.colors.surface.main,\n },\n};\n\nexport default buttonSelectionGroupItem;\n","import { getThemeRefs } from '../../../helpers/themeHelpers';\nimport globals from '../../globals';\nimport { refs } from '../inputWrapper';\n\nconst globalRefs = getThemeRefs(globals);\n\nexport const createBaseButtonSelectionGroupMappings = (vars) => ({\n [vars.hostDirection]: refs.direction,\n [vars.fontFamily]: refs.fontFamily,\n [vars.labelTextColor]: refs.labelTextColor,\n [vars.labelRequiredIndicator]: refs.requiredIndicator,\n [vars.itemsSpacing]: globalRefs.spacing.sm,\n [vars.hostWidth]: refs.width,\n\n [vars.errorMessageTextColor]: refs.errorMessageTextColor,\n\n // error message icon\n [vars.errorMessageIcon]: refs.errorMessageIcon,\n [vars.errorMessageIconSize]: refs.errorMessageIconSize,\n [vars.errorMessageIconPadding]: refs.errorMessageIconPadding,\n [vars.errorMessageIconRepeat]: refs.errorMessageIconRepeat,\n [vars.errorMessageIconPosition]: refs.errorMessageIconPosition,\n [vars.errorMessageFontSize]: refs.errorMessageFontSize,\n});\n","import { ButtonSelectionGroupClass } from '../../../components/button-selection-group-fields/descope-button-selection-group/ButtonSelectionGroupClass';\nimport { createBaseButtonSelectionGroupMappings } from './baseButtonSelectionGroup';\n\nconst vars = ButtonSelectionGroupClass.cssVarList;\n\nconst buttonSelectionGroup = {\n ...createBaseButtonSelectionGroupMappings(vars),\n};\n\nexport default buttonSelectionGroup;\nexport { vars };\n","import { ButtonMultiSelectionGroupClass } from '../../../components/button-selection-group-fields/descope-button-multi-selection-group/ButtonMultiSelectionGroupClass';\nimport { createBaseButtonSelectionGroupMappings } from './baseButtonSelectionGroup';\n\nconst vars = ButtonMultiSelectionGroupClass.cssVarList;\n\nconst buttonMultiSelectionGroup = {\n ...createBaseButtonSelectionGroupMappings(vars),\n};\n\nexport default buttonMultiSelectionGroup;\nexport { vars };\n","import globals from '../globals';\nimport { getThemeRefs } from '../../helpers/themeHelpers';\nimport { ModalClass } from '../../components/descope-modal/ModalClass';\n\nconst globalRefs = getThemeRefs(globals);\n\nconst compVars = ModalClass.cssVarList;\n\nconst modal = {\n [compVars.overlayBackgroundColor]: globalRefs.colors.surface.main,\n [compVars.overlayShadow]: globalRefs.shadow.wide['2xl'],\n [compVars.overlayWidth]: '540px',\n [compVars.overlayBackdropColor]: 'hsla(214, 53%, 23%, 0.16)',\n};\n\nexport default modal;\n\nexport const vars = {\n ...compVars,\n};\n","import globals from '../globals';\nimport { getThemeRefs } from '../../helpers/themeHelpers';\nimport { GridClass } from '../../components/descope-grid/GridClass';\nimport { refs } from './inputWrapper';\n\nconst globalRefs = getThemeRefs(globals);\nconst vars = GridClass.cssVarList;\n\nexport const grid = {\n [vars.hostWidth]: '100%',\n [vars.hostHeight]: '100%',\n [vars.hostMinHeight]: '400px',\n [vars.fontWeight]: '400',\n [vars.backgroundColor]: globalRefs.colors.surface.main,\n\n [vars.fontSize]: refs.fontSize,\n [vars.fontFamily]: refs.fontFamily,\n\n [vars.sortIndicatorsColor]: globalRefs.colors.surface.light,\n [vars.activeSortIndicator]: globalRefs.colors.surface.dark,\n [vars.resizeHandleColor]: globalRefs.colors.surface.light,\n\n [vars.borderWidth]: refs.borderWidth,\n [vars.borderStyle]: refs.borderStyle,\n [vars.borderRadius]: refs.borderRadius,\n [vars.borderColor]: 'transparent',\n\n [vars.headerRowTextColor]: globalRefs.colors.surface.dark,\n [vars.separatorColor]: globalRefs.colors.surface.light,\n\n [vars.valueTextColor]: globalRefs.colors.surface.contrast,\n [vars.selectedBackgroundColor]: globalRefs.colors.surface.highlight,\n [vars.hostDirection]: globalRefs.direction,\n\n [vars.toggleDetailsPanelButtonSize]: '1em',\n [vars.toggleDetailsPanelButtonOpenedColor]: globalRefs.colors.surface.contrast,\n [vars.toggleDetailsPanelButtonClosedColor]: globalRefs.colors.surface.light,\n [vars.toggleDetailsPanelButtonCursor]: 'pointer',\n [vars.detailsPanelBackgroundColor]: globalRefs.colors.surface.highlight,\n [vars.detailsPanelBorderTopColor]: globalRefs.colors.surface.light,\n [vars.detailsPanelLabelsColor]: globalRefs.colors.surface.dark,\n [vars.detailsPanelLabelsFontSize]: '0.8em',\n [vars.detailsPanelItemsGap]: '2em',\n [vars.detailsPanelPadding]: '12px 0',\n\n _bordered: {\n [vars.borderColor]: refs.borderColor,\n },\n};\n\nexport default grid;\nexport { vars };\n","import globals from '../globals';\nimport { getThemeRefs } from '../../helpers/themeHelpers';\nimport { NotificationCardClass } from '../../components/descope-notification/descope-notification-card/NotificationCardClass';\n\nconst globalRefs = getThemeRefs(globals);\nconst vars = NotificationCardClass.cssVarList;\n\nconst shadowColor = '#00000020';\n\nconst notification = {\n [vars.hostMinWidth]: '415px',\n [vars.fontFamily]: globalRefs.fonts.font1.family,\n [vars.fontSize]: globalRefs.typography.body1.size,\n [vars.backgroundColor]: globalRefs.colors.surface.main,\n [vars.textColor]: globalRefs.colors.surface.contrast,\n [vars.boxShadow]: `${globalRefs.shadow.wide.xl} ${shadowColor}, ${globalRefs.shadow.narrow.xl} ${shadowColor}`,\n [vars.verticalPadding]: '0.625em',\n [vars.horizontalPadding]: '1.5em',\n [vars.borderRadius]: globalRefs.radius.xs,\n\n _bordered: {\n [vars.borderWidth]: globalRefs.border.sm,\n [vars.borderStyle]: 'solid',\n [vars.borderColor]: 'transparent',\n },\n\n size: {\n xs: { [vars.fontSize]: '12px' },\n sm: { [vars.fontSize]: '14px' },\n md: { [vars.fontSize]: '16px' },\n lg: { [vars.fontSize]: '18px' },\n },\n\n mode: {\n primary: {\n [vars.backgroundColor]: globalRefs.colors.primary.main,\n [vars.textColor]: globalRefs.colors.primary.contrast,\n [vars.borderColor]: globalRefs.colors.primary.light,\n },\n success: {\n [vars.backgroundColor]: globalRefs.colors.success.main,\n [vars.textColor]: globalRefs.colors.success.contrast,\n [vars.borderColor]: globalRefs.colors.success.light,\n },\n error: {\n [vars.backgroundColor]: globalRefs.colors.error.main,\n [vars.textColor]: globalRefs.colors.error.contrast,\n [vars.borderColor]: globalRefs.colors.error.light,\n },\n },\n};\n\nexport default notification;\nexport { vars };\n","import globals from '../globals';\nimport { MultiSelectComboBoxClass } from '../../components/descope-multi-select-combo-box/MultiSelectComboBoxClass';\nimport { getThemeRefs } from '../../helpers/themeHelpers';\nimport { refs } from './inputWrapper';\n\nconst globalRefs = getThemeRefs(globals);\nconst vars = MultiSelectComboBoxClass.cssVarList;\n\nexport const multiSelectComboBox = {\n [vars.hostWidth]: refs.width,\n [vars.hostDirection]: refs.direction,\n [vars.fontSize]: refs.fontSize,\n [vars.fontFamily]: refs.fontFamily,\n [vars.labelFontSize]: refs.labelFontSize,\n [vars.labelFontWeight]: refs.labelFontWeight,\n [vars.labelTextColor]: refs.labelTextColor,\n [vars.errorMessageTextColor]: refs.errorMessageTextColor,\n [vars.inputBorderColor]: refs.borderColor,\n [vars.inputBorderWidth]: refs.borderWidth,\n [vars.inputBorderStyle]: refs.borderStyle,\n [vars.inputBorderRadius]: refs.borderRadius,\n [vars.inputOutlineColor]: refs.outlineColor,\n [vars.inputOutlineOffset]: refs.outlineOffset,\n [vars.inputOutlineWidth]: refs.outlineWidth,\n [vars.inputOutlineStyle]: refs.outlineStyle,\n [vars.labelRequiredIndicator]: refs.requiredIndicator,\n [vars.inputValueTextColor]: refs.valueTextColor,\n [vars.inputPlaceholderTextColor]: refs.placeholderTextColor,\n [vars.inputBackgroundColor]: refs.backgroundColor,\n [vars.inputHorizontalPadding]: refs.horizontalPadding,\n [vars.inputVerticalPadding]: refs.verticalPadding,\n [vars.inputHeight]: refs.inputHeight,\n [vars.inputDropdownButtonColor]: globalRefs.colors.surface.dark,\n [vars.inputDropdownButtonCursor]: 'pointer',\n [vars.inputDropdownButtonSize]: refs.toggleButtonSize,\n [vars.inputDropdownButtonOffset]: globalRefs.spacing.xs,\n [vars.overlayItemPaddingInlineStart]: globalRefs.spacing.xs,\n [vars.overlayItemPaddingInlineEnd]: globalRefs.spacing.lg,\n [vars.chipFontSize]: refs.chipFontSize,\n [vars.chipTextColor]: globalRefs.colors.surface.contrast,\n [vars.chipBackgroundColor]: globalRefs.colors.surface.light,\n [vars.labelPosition]: refs.labelPosition,\n [vars.labelTopPosition]: refs.labelTopPosition,\n [vars.labelLeftPosition]: refs.labelLeftPosition,\n [vars.labelHorizontalPosition]: refs.labelHorizontalPosition,\n [vars.inputTransformY]: refs.inputTransformY,\n [vars.inputTransition]: refs.inputTransition,\n [vars.marginInlineStart]: refs.marginInlineStart,\n [vars.placeholderOpacity]: refs.placeholderOpacity,\n [vars.inputVerticalAlignment]: refs.inputVerticalAlignment,\n\n // error message icon\n [vars.errorMessageIcon]: refs.errorMessageIcon,\n [vars.errorMessageIconSize]: refs.errorMessageIconSize,\n [vars.errorMessageIconPadding]: refs.errorMessageIconPadding,\n [vars.errorMessageIconRepeat]: refs.errorMessageIconRepeat,\n [vars.errorMessageIconPosition]: refs.errorMessageIconPosition,\n [vars.errorMessageFontSize]: refs.errorMessageFontSize,\n\n labelType: {\n floating: {\n [vars.inputHorizontalPadding]: '0.25em',\n _hasValue: {\n [vars.inputHorizontalPadding]: '0.45em',\n },\n },\n },\n\n _readonly: {\n [vars.inputDropdownButtonCursor]: 'default',\n },\n\n // Overlay theme exposed via the component:\n [vars.overlayFontSize]: refs.fontSize,\n [vars.overlayFontFamily]: refs.fontFamily,\n [vars.overlayCursor]: 'pointer',\n [vars.overlayItemBoxShadow]: 'none',\n [vars.overlayBackground]: refs.backgroundColor,\n [vars.overlayTextColor]: refs.valueTextColor,\n\n // Overlay direct theme:\n [vars.overlay.minHeight]: '400px',\n [vars.overlay.margin]: '0',\n};\n\nexport default multiSelectComboBox;\nexport { vars };\n","import globals from '@descope-ui/theme-globals';\nimport { getThemeRefs } from '@descope-ui/common/theme-helpers';\nimport { BadgeClass } from './component/BadgeClass';\n\nconst globalRefs = getThemeRefs(globals);\n\nconst vars = BadgeClass.cssVarList;\n\nconst badge = {\n [vars.hostWidth]: 'fit-content',\n [vars.hostDirection]: globalRefs.direction,\n\n [vars.textAlign]: 'center',\n\n [vars.fontFamily]: globalRefs.fonts.font1.family,\n [vars.fontWeight]: '400',\n\n [vars.verticalPadding]: '0.25em',\n [vars.horizontalPadding]: '0.5em',\n\n [vars.borderWidth]: globalRefs.border.xs,\n [vars.borderRadius]: globalRefs.radius.xs,\n [vars.borderColor]: 'transparent',\n [vars.borderStyle]: 'solid',\n\n _fullWidth: {\n [vars.hostWidth]: '100%',\n },\n\n size: {\n xs: { [vars.fontSize]: '12px' },\n sm: { [vars.fontSize]: '14px' },\n md: { [vars.fontSize]: '16px' },\n lg: { [vars.fontSize]: '18px' },\n },\n\n mode: {\n default: {\n [vars.textColor]: globalRefs.colors.surface.dark,\n _bordered: {\n [vars.borderColor]: globalRefs.colors.surface.light,\n },\n },\n primary: {\n [vars.textColor]: globalRefs.colors.primary.main,\n _bordered: {\n [vars.borderColor]: globalRefs.colors.primary.light,\n },\n },\n secondary: {\n [vars.textColor]: globalRefs.colors.secondary.main,\n _bordered: {\n [vars.borderColor]: globalRefs.colors.secondary.light,\n },\n },\n error: {\n [vars.textColor]: globalRefs.colors.error.main,\n _bordered: {\n [vars.borderColor]: globalRefs.colors.error.light,\n },\n },\n success: {\n [vars.textColor]: globalRefs.colors.success.main,\n _bordered: {\n [vars.borderColor]: globalRefs.colors.success.light,\n },\n },\n },\n};\n\nexport default badge;\nexport { vars };\n","import {\n createStyleMixin,\n draggableMixin,\n componentNameValidationMixin,\n} from '@descope-ui/common/components-mixins';\nimport { createBaseClass } from '@descope-ui/common/base-classes';\nimport { compose } from '@descope-ui/common/utils';\nimport {\n forwardAttrs,\n getComponentName,\n injectStyle,\n observeAttributes,\n} from '@descope-ui/common/components-helpers';\n\nexport const componentName = getComponentName('avatar');\nclass RawAvatar extends createBaseClass({\n componentName,\n baseSelector: ':host > .wrapper',\n}) {\n constructor() {\n super();\n\n this.attachShadow({ mode: 'open' }).innerHTML = `\n <div class=\"wrapper\">\n <vaadin-avatar></vaadin-avatar>\n <div class=\"editableBadge\">\n <vaadin-icon icon=\"vaadin:pencil\"></vaadin-icon>\n </div>\n </div>\n\t\t`;\n\n injectStyle(`\n :host {\n\t\t\t\t\tdisplay: inline-flex;\n\t\t\t\t}\n\n .editableBadge {\n border: 1px solid;\n border-radius: 100%;\n height: fit-content;\n width: 25%;\n height: 25%;\n display: flex;\n justify-content: center;\n align-items: center;\n padding: 5%;\n box-sizing: border-box;\n position: absolute;\n bottom: 0;\n inset-inline-end: 0;\n }\n\n vaadin-icon {\n color: currentcolor;\n }\n\n vaadin-avatar {\n width: 100%;\n height: 100%;\n margin: 0;\n border: none\n }\n\n .wrapper {\n display: inline-flex;\n position: relative;\n width: 100%;\n height: 100%;\n }\n `, this);\n\n this.avatarComponent = this.shadowRoot.querySelector('vaadin-avatar');\n\n forwardAttrs(this, this.avatarComponent, {\n includeAttrs: ['display-name', 'img', 'abbr'],\n mapAttrs: { 'display-name': 'name' },\n });\n\n const editableIcon = this.shadowRoot.querySelector('.editableBadge');\n\n observeAttributes(\n this,\n () => {\n editableIcon.style.display = this.isEditable ? '' : 'none';\n },\n { includeAttrs: ['editable'] },\n );\n }\n\n get isEditable() {\n return this.getAttribute('editable') === 'true';\n }\n}\n\nconst { host, editableBadge, avatar } = {\n host: { selector: () => ':host' },\n editableBadge: { selector: '> .editableBadge' },\n avatar: { selector: 'vaadin-avatar' },\n};\n\nexport const AvatarClass = compose(\n createStyleMixin({\n mappings: {\n hostWidth: [\n { ...host, property: 'width' },\n { ...host, property: 'min-width' },\n ],\n hostHeight: { ...host, property: 'height' },\n cursor: [avatar, host],\n hostDirection: { ...host, property: 'direction' },\n avatarTextColor: { ...avatar, property: 'color' },\n avatarBackgroundColor: { ...avatar, property: 'background-color' },\n editableIconColor: { ...editableBadge, property: 'color' },\n editableBorderColor: { ...editableBadge, property: 'border-color' },\n editableBackgroundColor: {\n ...editableBadge,\n property: 'background-color',\n },\n },\n }),\n draggableMixin,\n componentNameValidationMixin,\n)(RawAvatar);\n","import globals from '@descope-ui/theme-globals';\nimport { AvatarClass } from './component/AvatarClass';\nimport { getThemeRefs } from '@descope-ui/common/theme-helpers';\n\nconst globalRefs = getThemeRefs(globals);\nconst compVars = AvatarClass.cssVarList;\n\nconst avatar = {\n [compVars.hostDirection]: globalRefs.direction,\n [compVars.editableIconColor]: globalRefs.colors.surface.dark,\n [compVars.editableBorderColor]: globalRefs.colors.surface.dark,\n [compVars.editableBackgroundColor]: globalRefs.colors.surface.main,\n [compVars.avatarTextColor]: globalRefs.colors.surface.main,\n [compVars.avatarBackgroundColor]: globalRefs.colors.surface.dark,\n\n _editable: {\n [compVars.cursor]: 'pointer',\n },\n\n size: {\n xs: {\n [compVars.hostWidth]: '30px',\n [compVars.hostHeight]: '30px',\n },\n sm: {\n [compVars.hostWidth]: '40px',\n [compVars.hostHeight]: '40px',\n },\n md: {\n [compVars.hostWidth]: '60px',\n [compVars.hostHeight]: '60px',\n },\n lg: {\n [compVars.hostWidth]: '98px',\n [compVars.hostHeight]: '98px',\n },\n xl: {\n [compVars.hostWidth]: '120px',\n [compVars.hostHeight]: '120px',\n },\n '2xl': {\n [compVars.hostWidth]: '140px',\n [compVars.hostHeight]: '140px',\n },\n },\n};\n\nexport default avatar;\n\nexport const vars = {\n ...compVars,\n};\n","import globals from '../globals';\nimport { MappingsFieldClass } from '../../components/mapping-fields/descope-mappings-field/MappingsFieldClass';\nimport { getThemeRefs } from '../../helpers/themeHelpers';\nimport { refs } from './inputWrapper';\n\nconst globalRefs = getThemeRefs(globals);\n\nconst vars = MappingsFieldClass.cssVarList;\n\nexport const mappingsField = {\n [vars.hostWidth]: refs.width,\n [vars.hostDirection]: refs.direction,\n [vars.fontSize]: refs.fontSize,\n [vars.fontFamily]: refs.fontFamily,\n [vars.separatorFontSize]: '14px',\n [vars.labelsFontSize]: '14px',\n [vars.labelsLineHeight]: '1',\n [vars.labelsMarginBottom]: '6px',\n [vars.labelTextColor]: refs.labelTextColor,\n [vars.itemMarginBottom]: '1em',\n // To be positioned correctly, the min width has to match the text field min width\n [vars.valueLabelMinWidth]: refs.minWidth,\n // To be positioned correctly, the min width has to match the combo box field min width\n [vars.attrLabelMinWidth]: `calc(12em + 2 * ${globalRefs.border.xs})`,\n [vars.separatorWidth]: '70px',\n [vars.removeButtonWidth]: '60px',\n};\n\nexport default mappingsField;\nexport { vars };\n","import globals from '../globals';\nimport {\n UserAttributeClass,\n componentName,\n} from '../../components/descope-user-attribute/UserAttributeClass';\nimport { createHelperVars, getThemeRefs, useVar } from '../../helpers/themeHelpers';\n\nconst globalRefs = getThemeRefs(globals);\nexport const vars = UserAttributeClass.cssVarList;\n\nconst userAttribute = {\n [vars.labelMinWidth]: '150px',\n [vars.hostDirection]: globalRefs.direction,\n [vars.contentMinWidth]: `calc(100% - ${useVar(vars.labelMinWidth)} - ${useVar(vars.itemsGap)})`,\n [vars.badgeMaxWidth]: '85px',\n [vars.itemsGap]: '4px',\n [vars.hostMinWidth]: '310px',\n [vars.hostWidth]: '530px',\n [vars.hostMaxWidth]: '100%',\n\n _fullWidth: {\n [vars.hostWidth]: '100%',\n },\n};\n\nexport default userAttribute;\n","import globals from '../globals';\nimport { UserAuthMethodClass } from '../../components/descope-user-auth-method/UserAuthMethodClass';\nimport { getThemeRefs } from '../../helpers/themeHelpers';\n\nconst globalRefs = getThemeRefs(globals);\nexport const vars = UserAuthMethodClass.cssVarList;\n\nconst userAuthMethod = {\n [vars.hostDirection]: globalRefs.direction,\n [vars.itemsGap]: '16px',\n [vars.hostMinWidth]: '310px',\n [vars.hostWidth]: '530px',\n [vars.hostMaxWidth]: '100%',\n [vars.iconSize]: '24px',\n [vars.iconColor]: 'currentcolor',\n _fullWidth: {\n [vars.hostWidth]: '100%',\n },\n};\n\nexport default userAuthMethod;\n","import { SamlGroupMappingsClass } from '../../components/mapping-fields/descope-saml-group-mappings/SamlGroupMappingsClass';\nimport { refs } from './inputWrapper';\n\nconst vars = SamlGroupMappingsClass.cssVarList;\n\nexport const samlGroupMappings = {\n [vars.hostWidth]: refs.width,\n [vars.hostDirection]: refs.direction,\n [vars.groupNameInputMarginBottom]: '1em',\n\n // error message icon\n [vars.errorMessageIcon]: refs.errorMessageIcon,\n [vars.errorMessageIconSize]: refs.errorMessageIconSize,\n [vars.errorMessageIconPadding]: refs.errorMessageIconPadding,\n [vars.errorMessageIconRepeat]: refs.errorMessageIconRepeat,\n [vars.errorMessageIconPosition]: refs.errorMessageIconPosition,\n [vars.errorMessageFontSize]: refs.errorMessageFontSize,\n};\n\nexport default samlGroupMappings;\nexport { vars };\n","import globals from '../globals';\nimport { getThemeRefs } from '../../helpers/themeHelpers';\nimport { PolicyValidationClass } from '../../components/descope-policy-validation/PolicyValidationClass';\nimport { refs } from './inputWrapper';\n\nconst globalRefs = getThemeRefs(globals);\nconst vars = PolicyValidationClass.cssVarList;\n\nconst policyValidation = {\n [vars.fontFamily]: refs.fontFamily,\n [vars.fontSize]: refs.labelFontSize,\n [vars.textColor]: refs.labelTextColor,\n [vars.borderWidth]: refs.borderWidth,\n [vars.borderStyle]: refs.borderStyle,\n [vars.borderColor]: refs.borderColor,\n [vars.borderRadius]: globalRefs.radius.sm,\n [vars.backgroundColor]: 'none',\n [vars.padding]: '0px',\n [vars.labelMargin]: globalRefs.spacing.sm,\n [vars.itemsSpacing]: globalRefs.spacing.lg,\n [vars.itemSymbolDefault]: \"'\\\\2022'\", // \"•\"\n [vars.itemSymbolSuccess]: \"'\\\\2713'\", // \"✓\"\n [vars.itemSymbolError]: \"'\\\\2A09'\", // \"⨉\"\n [vars.itemSymbolSuccessColor]: globalRefs.colors.success.main,\n [vars.itemSymbolErrorColor]: globalRefs.colors.error.main,\n};\n\nexport default policyValidation;\nexport { vars };\n","import { IconClass } from './component/IconClass';\n\nexport const vars = IconClass.cssVarList;\n\nconst icon = {};\n\nexport default icon;\n\n","import { ImageClass } from './component/ImageClass';\n\nexport const vars = ImageClass.cssVarList;\n\nconst image = {};\n\nexport default image;\n","import globals from '../globals';\nimport { getThemeRefs } from '../../helpers/themeHelpers';\nimport { CodeSnippetClass } from '../../components/descope-code-snippet/CodeSnippetClass';\n\nconst globalRefs = getThemeRefs(globals);\n\nconst vars = CodeSnippetClass.cssVarList;\n\nconst light = {\n color1: '#fa0',\n color2: '#d73a49',\n color3: '#6f42c1',\n color4: '#005cc5',\n color5: '#e36209',\n color6: '#6a737d',\n color7: '#22863a',\n color8: '#24292e',\n color9: '#735c0f',\n color10: '#f0fff4',\n color11: '#b31d28',\n color12: '#ffeef0',\n color13: '#032f62',\n};\n\nconst dark = {\n color1: '#c9d1d9',\n color2: '#ff7b72',\n color3: '#d2a8ff',\n color4: '#79c0ff',\n color5: '#ffa657',\n color6: '#8b949e',\n color7: '#7ee787',\n color8: '#c9d1d9',\n color9: '#735c0f',\n color10: '#f0fff4',\n color11: '#67060c',\n color12: '#ffeef0',\n color13: '#a5d6ff',\n};\n\nconst CodeSnippet = {\n [vars.rootBgColor]: globalRefs.colors.surface.main,\n [vars.rootTextColor]: globalRefs.colors.surface.contrast,\n [vars.docTagTextColor]: light.color2,\n [vars.keywordTextColor]: light.color2,\n [vars.metaKeywordTextColor]: light.color2,\n [vars.templateTagTextColor]: light.color2,\n [vars.templateVariableTextColor]: light.color2,\n [vars.typeTextColor]: light.color2,\n [vars.variableLanguageTextColor]: light.color2,\n [vars.titleTextColor]: light.color3,\n [vars.titleClassTextColor]: light.color3,\n [vars.titleClassInheritedTextColor]: light.color3,\n [vars.titleFunctionTextColor]: light.color3,\n [vars.attrTextColor]: light.color4,\n [vars.attributeTextColor]: light.color4,\n [vars.literalTextColor]: light.color4,\n [vars.metaTextColor]: light.color4,\n [vars.numberTextColor]: light.color4,\n [vars.operatorTextColor]: light.color4,\n [vars.variableTextColor]: light.color4,\n [vars.selectorAttrTextColor]: light.color4,\n [vars.selectorClassTextColor]: light.color4,\n [vars.selectorIdTextColor]: light.color4,\n [vars.regexpTextColor]: light.color13,\n [vars.stringTextColor]: light.color13,\n [vars.metaStringTextColor]: light.color13,\n [vars.builtInTextColor]: light.color5,\n [vars.symbolTextColor]: light.color5,\n [vars.commentTextColor]: light.color6,\n [vars.codeTextColor]: light.color6,\n [vars.formulaTextColor]: light.color6,\n [vars.nameTextColor]: light.color7,\n [vars.quoteTextColor]: light.color7,\n [vars.selectorTagTextColor]: light.color7,\n [vars.selectorPseudoTextColor]: light.color7,\n [vars.substTextColor]: light.color8,\n [vars.sectionTextColor]: light.color4,\n [vars.bulletTextColor]: light.color9,\n [vars.emphasisTextColor]: light.color8,\n [vars.strongTextColor]: light.color8,\n [vars.additionTextColor]: light.color7,\n [vars.additionBgColor]: light.color10,\n [vars.deletionTextColor]: light.color2,\n [vars.deletionBgColor]: light.color10,\n /* purposely ignored */\n // [vars.charEscapeTextColor]: '',\n // [vars.linkTextColor]: '',\n // [vars.paramsTextColor]: '',\n // [vars.propertyTextColor]: '',\n // [vars.punctuationTextColor]: '',\n // [vars.tagTextColor ]: '',\n};\n\nexport const codeSnippetDarkThemeOverrides = {\n codeSnippet: {\n [vars.rootBgColor]: globalRefs.colors.surface.main,\n [vars.rootTextColor]: globalRefs.colors.surface.contrast,\n [vars.docTagTextColor]: dark.color2,\n [vars.keywordTextColor]: dark.color2,\n [vars.metaKeywordTextColor]: dark.color2,\n [vars.templateTagTextColor]: dark.color2,\n [vars.templateVariableTextColor]: dark.color2,\n [vars.typeTextColor]: dark.color2,\n [vars.variableLanguageTextColor]: dark.color2,\n [vars.titleTextColor]: dark.color3,\n [vars.titleClassTextColor]: dark.color3,\n [vars.titleClassInheritedTextColor]: dark.color3,\n [vars.titleFunctionTextColor]: dark.color3,\n [vars.attrTextColor]: dark.color4,\n [vars.attributeTextColor]: dark.color4,\n [vars.literalTextColor]: dark.color4,\n [vars.metaTextColor]: dark.color4,\n [vars.numberTextColor]: dark.color4,\n [vars.operatorTextColor]: dark.color4,\n [vars.variableTextColor]: dark.color4,\n [vars.selectorAttrTextColor]: dark.color4,\n [vars.selectorClassTextColor]: dark.color4,\n [vars.selectorIdTextColor]: dark.color4,\n [vars.regexpTextColor]: dark.color13,\n [vars.stringTextColor]: dark.color13,\n [vars.metaStringTextColor]: dark.color13,\n [vars.builtInTextColor]: dark.color5,\n [vars.symbolTextColor]: dark.color5,\n [vars.commentTextColor]: dark.color6,\n [vars.codeTextColor]: dark.color6,\n [vars.formulaTextColor]: dark.color6,\n [vars.nameTextColor]: dark.color7,\n [vars.quoteTextColor]: dark.color7,\n [vars.selectorTagTextColor]: dark.color7,\n [vars.selectorPseudoTextColor]: dark.color7,\n [vars.substTextColor]: dark.color8,\n [vars.sectionTextColor]: dark.color4,\n [vars.bulletTextColor]: dark.color9,\n [vars.emphasisTextColor]: dark.color8,\n [vars.strongTextColor]: dark.color8,\n [vars.additionTextColor]: dark.color7,\n [vars.additionBgColor]: dark.color10,\n [vars.deletionTextColor]: dark.color2,\n [vars.deletionBgColor]: dark.color10,\n },\n};\n\nexport default CodeSnippet;\nexport { vars };\n","import { RadioGroupClass } from '../../../components/descope-radio-group/RadioGroupClass';\nimport { getThemeRefs } from '../../../helpers/themeHelpers';\nimport globals from '../../globals';\nimport { refs } from '../inputWrapper';\n\nconst vars = RadioGroupClass.cssVarList;\nconst globalRefs = getThemeRefs(globals);\n\nexport const radioGroup = {\n [vars.buttonsRowGap]: '9px',\n [vars.hostWidth]: refs.width,\n [vars.hostDirection]: refs.direction,\n [vars.fontSize]: refs.fontSize,\n [vars.fontFamily]: refs.fontFamily,\n [vars.labelTextColor]: refs.labelTextColor,\n [vars.labelRequiredIndicator]: refs.requiredIndicator,\n [vars.errorMessageTextColor]: refs.errorMessageTextColor,\n [vars.errorMessageIcon]: refs.errorMessageIcon,\n [vars.errorMessageIconSize]: refs.errorMessageIconSize,\n [vars.errorMessageIconPadding]: refs.errorMessageIconPadding,\n [vars.errorMessageIconRepeat]: refs.errorMessageIconRepeat,\n [vars.errorMessageIconPosition]: refs.errorMessageIconPosition,\n [vars.errorMessageFontSize]: refs.errorMessageFontSize,\n [vars.helperTextColor]: refs.helperTextColor,\n [vars.itemsLabelColor]: globalRefs.colors.surface.contrast,\n\n textAlign: {\n right: { [vars.inputTextAlign]: 'right' },\n left: { [vars.inputTextAlign]: 'left' },\n center: { [vars.inputTextAlign]: 'center' },\n },\n\n _fullWidth: {\n [vars.buttonsSpacing]: 'space-between',\n },\n\n _disabled: {\n [vars.itemsLabelColor]: globalRefs.colors.surface.light,\n },\n};\n\nexport default radioGroup;\nexport { vars };\n","import { RadioButtonClass } from '../../../components/descope-radio-group/RadioButtonClass';\nimport { getThemeRefs } from '../../../helpers/themeHelpers';\nimport globals from '../../globals';\nimport { refs } from '../inputWrapper';\n\nconst vars = RadioButtonClass.cssVarList;\nconst globalRefs = getThemeRefs(globals);\n\nexport const radioButton = {\n [vars.fontFamily]: refs.fontFamily,\n [vars.radioSize]: 'calc(1em + 6px)',\n [vars.radioMargin]: 'auto 4px',\n [vars.radioCheckedSize]: `calc(var(${vars.radioSize})/5)`,\n [vars.radioCheckedColor]: globalRefs.colors.surface.light,\n [vars.radioBackgroundColor]: globalRefs.colors.surface.light,\n [vars.radioBorderColor]: 'none',\n [vars.radioBorderWidth]: 0,\n\n _checked: {\n [vars.radioBackgroundColor]: globalRefs.colors.surface.contrast,\n },\n\n _hover: {\n cursor: 'pointer',\n },\n\n size: {\n xs: {\n [vars.fontSize]: '12px',\n },\n sm: {\n [vars.fontSize]: '14px',\n },\n md: {\n [vars.fontSize]: '16px',\n },\n lg: {\n [vars.fontSize]: '18px',\n },\n },\n};\n\nexport default radioButton;\nexport { vars };\n","import globals from '../globals';\nimport { CalendarClass } from '../../components/descope-date-field/descope-calendar/CalendarClass';\nimport { getThemeRefs } from '../../helpers/themeHelpers';\nimport { refs } from './inputWrapper';\n\nconst globalRefs = getThemeRefs(globals);\n\nconst vars = CalendarClass.cssVarList;\n\nconst calendar = {\n [vars.fontFamily]: refs.fontFamily,\n [vars.fontSize]: refs.fontSize,\n [vars.hostDirection]: refs.direction,\n\n [vars.calendarPadding]: '1em',\n\n [vars.topNavVerticalPadding]: '1em',\n [vars.topNavAlignment]: 'space-between',\n [vars.topNavGap]: '0',\n [vars.topNavSelectorsGap]: '0.5em',\n\n [vars.bottomNavVerticalPadding]: '0.75em',\n [vars.bottomNavHorizontalPadding]: '1.5em',\n [vars.bottomNavAlignment]: 'space-between',\n [vars.bottomNavGap]: '0.5em',\n\n [vars.navMarginBottom]: '0.75em',\n [vars.navBorderBottomWidth]: '1px',\n [vars.navBorderBottomColor]: globalRefs.colors.surface.highlight,\n [vars.navBorderBottomStyle]: 'solid',\n\n [vars.yearInputWidth]: '6em',\n [vars.monthInputWidth]: '8em',\n\n [vars.navButtonSize]: '24px',\n [vars.navButtonCursor]: 'pointer',\n\n [vars.weekdayFontSize]: '0.875em',\n [vars.weekdayFontWeight]: '500',\n\n // day table cell\n [vars.dayHeight]: '3.125em',\n\n // day value\n [vars.daySize]: '2.125em',\n [vars.dayFontSize]: '1em',\n [vars.dayRadius]: '50%',\n [vars.dayTextAlign]: 'center',\n [vars.dayPadding]: '0',\n [vars.dayTextColor]: globalRefs.colors.surface.contrast,\n [vars.dayFontWeight]: '500',\n [vars.dayBackgroundColor]: 'transparent',\n [vars.dayCursor]: 'pointer',\n [vars.dayBackgroundColorHover]: globalRefs.colors.primary.highlight,\n\n // selected day\n [vars.daySelectedBackgroundColor]: globalRefs.colors.primary.main,\n [vars.daySelectedTextdColor]: globalRefs.colors.primary.contrast,\n\n // disabled day (out of min/max range)\n [vars.dayDisabledTextdColor]: globalRefs.colors.surface.light,\n\n // today\n [vars.currentDayBorderColor]: globalRefs.colors.surface.light,\n [vars.currentDayBorderWidth]: '1px',\n [vars.currentDayBorderStyle]: 'solid',\n\n size: {\n xs: { [vars.fontSize]: '12px' },\n sm: { [vars.fontSize]: '14px' },\n md: { [vars.fontSize]: '16px' },\n lg: { [vars.fontSize]: '18px' },\n },\n\n [vars.navButtonRotation]: 'rotate(180deg)',\n\n _disabled: {\n [vars.navButtonOpacity]: '0.5',\n [vars.dayBackgroundColorHover]: 'none',\n [vars.navButtonCursor]: 'default',\n [vars.dayCursor]: 'default',\n },\n\n _fullWidth: {\n [vars.hostWidth]: '100%',\n [vars.dayBlockAlign]: '0 auto',\n },\n};\n\nexport default calendar;\nexport { vars };\n","import { DateFieldClass } from '../../components/descope-date-field/DateFieldClass';\nimport { refs } from './inputWrapper';\nimport globals from '../globals';\nimport { getThemeRefs } from '../../helpers/themeHelpers';\n\nconst globalRefs = getThemeRefs(globals);\nconst shadowColor = '#00000020';\nconst { shadow } = globalRefs;\n\nconst vars = DateFieldClass.cssVarList;\n\nconst dateField = {\n [vars.hostWidth]: refs.width,\n [vars.hostDirection]: refs.direction,\n [vars.iconMargin]: '0.375em',\n\n [vars.overlay.marginTop]: `calc(${refs.outlineWidth} + 1px)`,\n [vars.overlay.backgroundColor]: refs.backgroundColor,\n [vars.overlay.backdropBackgroundColor]: 'transparent',\n [vars.overlay.backdropPointerEvents]: 'all',\n [vars.overlay.boxShadow]: `${shadow.wide.xl} ${shadowColor}, ${shadow.narrow.xl} ${shadowColor}`,\n [vars.overlay.outlineWidth]: '0',\n [vars.overlay.outlineColor]: 'transparent',\n [vars.overlay.outlineStyle]: 'none',\n [vars.overlay.padding]: '0',\n\n [vars.rtlInputDirection]: 'ltr',\n [vars.rtlInputAlignment]: 'right',\n\n [vars.errorMessageIcon]: refs.errorMessageIcon,\n [vars.errorMessageIconSize]: refs.errorMessageIconSize,\n [vars.errorMessageIconPadding]: refs.errorMessageIconPadding,\n [vars.errorMessageIconRepeat]: refs.errorMessageIconRepeat,\n [vars.errorMessageIconPosition]: refs.errorMessageIconPosition,\n [vars.errorMessageFontSize]: refs.errorMessageFontSize,\n};\n\nexport default dateField;\nexport { vars };\n","import { compose } from '@descope-ui/common/utils';\nimport {\n getComponentName,\n limitAbbreviation,\n} from '@descope-ui/common/components-helpers';\nimport {\n createStyleMixin,\n draggableMixin,\n createProxy,\n componentNameValidationMixin,\n createDynamicDataMixin,\n} from '@descope-ui/common/components-mixins';\nimport { TextClass } from '@descope-ui/descope-text/class';\nimport { ListClass } from '@descope-ui/descope-list/class';\nimport { ListItemClass } from '@descope-ui/descope-list-item/class';\n\nexport const componentName = getComponentName('apps-list');\n\nconst itemRenderer = ({ name, icon, url }, _, ref) => `\n <a ${url ? `href=\"${url}\" title=\"${url}\"` : ''} ${ref.openInSameWindow ? '' : 'target=\"_blank\"'}>\n <descope-list-item>\n <div class=\"avatar-wrapper\">\n <descope-avatar\n ${icon ? `img=\"${icon}\"` : ''}\n ${name ? `display-name=\"${name}\" abbr=${limitAbbreviation(name)}` : ''}\n size=\"${ref.logoSize || ref.size}\"\n ></descope-avatar>\n </div>\n <descope-text\n variant=\"${ref.itemTextVariant}\"\n mode=\"primary\"\n >${name}</descope-text>\n </descope-list-item>\n </a>\n`;\n\nconst customMixin = (superclass) =>\n class AppsListMixinClass extends superclass {\n // size controls both item logo size and font size\n get size() {\n return this.getAttribute('size') || 'sm';\n }\n\n get itemTextVariant() {\n return this.getAttribute('item-text-variant') || 'body1';\n }\n\n get logoSize() {\n return this.getAttribute('logo-size');\n }\n\n get openInSameWindow() {\n return this.getAttribute('open-in-same-window') === 'true';\n }\n };\n\nexport const AppsListClass = compose(\n createStyleMixin({\n mappings: {\n maxHeight: { selector: () => ':host' },\n minHeight: { selector: () => ':host' },\n hostDirection: { selector: () => ':host', property: 'direction' },\n gap: {\n selector: ListClass.componentName,\n property: ListClass.cssVarList.gap,\n },\n maxRowItems: {\n selector: ListClass.componentName,\n property: ListClass.cssVarList.maxRowItems,\n },\n itemsFontWeight: {\n selector: TextClass.componentName,\n property: TextClass.cssVarList.fontWeightOverride,\n },\n itemsFontSize: {\n selector: TextClass.componentName,\n property: TextClass.cssVarList.fontSizeOverride,\n },\n itemsTextAlign: {\n selector: TextClass.componentName,\n property: TextClass.cssVarList.textAlign,\n },\n itemBackgroundColor: {\n selector: ListItemClass.componentName,\n property: ListItemClass.cssVarList.backgroundColor,\n },\n itemHoverBackgroundColor: {\n selector: `${ListItemClass.componentName}:hover`,\n property: ListItemClass.cssVarList.backgroundColor,\n },\n backgroundColor: {\n selector: ListClass.componentName,\n property: ListClass.cssVarList.backgroundColorOverride,\n },\n itemBorderStyle: {\n selector: ListItemClass.componentName,\n property: ListItemClass.cssVarList.borderStyleOverride,\n },\n itemBorderColor: {\n selector: ListItemClass.componentName,\n property: ListItemClass.cssVarList.borderColorOverride,\n },\n itemBorderWidth: {\n selector: ListItemClass.componentName,\n property: ListItemClass.cssVarList.borderWidthOverride,\n },\n itemVerticalPadding: {\n selector: ListItemClass.componentName,\n property: ListItemClass.cssVarList.verticalPaddingOverride,\n },\n itemHorizontalPadding: {\n selector: ListItemClass.componentName,\n property: ListItemClass.cssVarList.horizontalPaddingOverride,\n },\n itemAlignment: [\n { selector: () => '.avatar-wrapper', property: 'text-align' },\n {\n selector: TextClass.componentName,\n property: TextClass.cssVarList.textAlign,\n },\n ],\n },\n }),\n createDynamicDataMixin({\n itemRenderer,\n rerenderAttrsList: [\n 'size',\n 'item-text-variant',\n 'logo-size',\n 'open-in-same-window',\n ],\n }),\n draggableMixin,\n componentNameValidationMixin,\n customMixin,\n)(\n createProxy({\n slots: ['empty-state'],\n wrappedEleName: 'descope-list',\n excludeAttrsSync: ['tabindex', 'class', 'empty', 'style'],\n componentName,\n style: () => `\n :host {\n width: 100%;\n display: inline-flex;\n }\n\n descope-text::part(text-wrapper) {\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n }\n\n descope-list-item[variant=\"tile\"] .avatar-wrapper {\n width: 100%;\n }\n\n .avatar-wrapper {\n line-height: 0;\n }\n\n a {\n text-decoration: none;\n }\n\n descope-text {\n ${TextClass.cssVarList.hostDirection}: var(${AppsListClass.cssVarList.hostDirection});\n max-width: 100%;\n width: 100%;\n }\n `,\n }),\n);\n","import { AppsListClass } from './component/AppsListClass';\nimport { getThemeRefs } from '@descope-ui/common/theme-helpers';\nimport globals from '@descope-ui/theme-globals';\n\nexport const vars = AppsListClass.cssVarList;\nconst globalRefs = getThemeRefs(globals);\n\nconst defaultHeight = '400px';\n\nconst appsList = {\n [vars.itemsTextAlign]: 'start',\n [vars.hostDirection]: globalRefs.direction,\n [vars.maxHeight]: defaultHeight,\n [vars.itemHoverBackgroundColor]: globalRefs.colors.surface.highlight,\n\n _empty: {\n [vars.minHeight]: defaultHeight,\n },\n\n size: {\n xs: {\n [vars.itemsFontSize]: '14px',\n [vars.itemsFontWeight]: 'normal',\n },\n sm: {\n [vars.itemsFontSize]: '14px',\n [vars.itemsFontWeight]: 'normal',\n },\n md: {\n [vars.itemsFontSize]: '16px',\n [vars.itemsFontWeight]: 'normal',\n },\n lg: {\n [vars.itemsFontSize]: '20px',\n [vars.itemsFontWeight]: 'normal',\n },\n },\n\n itemPadding: {\n xs: {\n [vars.itemVerticalPadding]: globalRefs.spacing.xs,\n [vars.itemHorizontalPadding]: globalRefs.spacing.xs,\n },\n sm: {\n [vars.itemVerticalPadding]: globalRefs.spacing.sm,\n [vars.itemHorizontalPadding]: globalRefs.spacing.sm,\n },\n md: {\n [vars.itemVerticalPadding]: globalRefs.spacing.md,\n [vars.itemHorizontalPadding]: globalRefs.spacing.md,\n },\n lg: {\n [vars.itemVerticalPadding]: globalRefs.spacing.lg,\n [vars.itemHorizontalPadding]: globalRefs.spacing.lg,\n },\n xl: {\n [vars.itemVerticalPadding]: globalRefs.spacing.xl,\n [vars.itemHorizontalPadding]: globalRefs.spacing.xl,\n },\n },\n};\n\nexport default appsList;\n","import globals from '@descope-ui/theme-globals';\nimport {\n getThemeRefs,\n createHelperVars,\n useVar,\n} from '@descope-ui/common/theme-helpers';\nimport { ListClass, componentName } from './component/ListClass';\n\nconst globalRefs = getThemeRefs(globals);\n\nconst compVars = ListClass.cssVarList;\n\nconst [helperTheme, helperRefs, helperVars] = createHelperVars(\n { shadowColor: '#00000020' },\n componentName,\n);\n\nconst { shadowColor } = helperRefs;\n\nconst list = {\n ...helperTheme,\n\n [compVars.hostWidth]: '100%',\n [compVars.backgroundColor]: globalRefs.colors.surface.main,\n [compVars.fontFamily]: globalRefs.fonts.font1.family,\n [compVars.borderColor]: globalRefs.colors.surface.light,\n [compVars.borderStyle]: 'solid',\n [compVars.borderWidth]: globalRefs.border.xs,\n [compVars.borderRadius]: globalRefs.radius.sm,\n [compVars.gap]: globalRefs.spacing.md,\n [compVars.verticalPadding]: globalRefs.spacing.lg,\n [compVars.horizontalPadding]: globalRefs.spacing.lg,\n [compVars.boxShadow]: `${globalRefs.shadow.wide.sm} ${shadowColor}, ${globalRefs.shadow.narrow.sm} ${shadowColor}`,\n [compVars.maxHeight]: '100%',\n [compVars.hostDirection]: globalRefs.direction,\n [compVars.minItemsWidth]: '150px',\n [compVars.maxRowItems]: '1000', // effectively no limit\n\n _empty: {\n [compVars.minHeight]: '150px',\n [compVars.emptyStateTextColor]: globalRefs.colors.surface.dark,\n [compVars.emptyStateTextFontFamily]: globalRefs.fonts.font1.family,\n },\n\n variant: {\n tiles: {\n [compVars.gridTemplateColumns]: `repeat(auto-fit, minmax(\n max(\n min(${useVar(compVars.minItemsWidth)}, 100%),\n calc((100% - (${useVar(compVars.maxRowItems)} - 1) * ${useVar(compVars.gap)}) / ${useVar(compVars.maxRowItems)})),\n 1fr))`,\n [compVars.maxItemsWidth]: '200px',\n [compVars.itemsHorizontalAlign]: 'center',\n },\n },\n\n gap: {\n xs: {\n [compVars.gap]: globalRefs.spacing.xs,\n },\n sm: {\n [compVars.gap]: globalRefs.spacing.sm,\n },\n md: {\n [compVars.gap]: globalRefs.spacing.md,\n },\n lg: {\n [compVars.gap]: globalRefs.spacing.lg,\n },\n xl: {\n [compVars.gap]: globalRefs.spacing.xl,\n },\n },\n};\n\nexport default list;\n\nexport const vars = {\n ...compVars,\n ...helperVars,\n};\n","import globals from '@descope-ui/theme-globals';\nimport { getThemeRefs } from '@descope-ui/common/theme-helpers';\nimport { ListItemClass } from './component/ListItemClass';\n\nconst globalRefs = getThemeRefs(globals);\n\nexport const vars = ListItemClass.cssVarList;\n\nconst listItem = {\n [vars.backgroundColor]: globalRefs.colors.surface.main,\n [vars.verticalPadding]: globalRefs.spacing.lg,\n [vars.horizontalPadding]: globalRefs.spacing.lg,\n [vars.gap]: globalRefs.spacing.md,\n [vars.borderStyle]: 'solid',\n [vars.borderWidth]: globalRefs.border.xs,\n [vars.borderColor]: globalRefs.colors.surface.main,\n [vars.borderRadius]: globalRefs.radius.sm,\n [vars.cursor]: 'pointer',\n [vars.alignItems]: 'center',\n [vars.flexDirection]: 'row',\n [vars.transition]: 'border-color 0.2s, background-color 0.2s',\n\n variant: {\n tile: {\n [vars.alignItems]: 'flex-start',\n [vars.flexDirection]: 'column',\n [vars.borderColor]: globalRefs.colors.surface.light,\n },\n },\n\n _hover: {\n [vars.backgroundColor]: globalRefs.colors.surface.highlight,\n },\n\n _active: {\n [vars.backgroundColor]: globalRefs.colors.surface.main,\n [vars.borderColor]: globalRefs.colors.primary.light,\n [vars.outline]: `1px solid ${globalRefs.colors.primary.light}`,\n },\n};\n\nexport default listItem;\n","import { ScopesListClass } from '../../components/descope-scopes-list/ScopesListClass';\nimport theme, { vars as inputVars } from './inputWrapper';\n\nexport const vars = ScopesListClass.cssVarList;\n\nconst scopesList = {\n [vars.requiredInputBorderColor]: theme._disabled[inputVars.borderColor],\n [vars.requiredInputValueTextColor]: theme._disabled[inputVars.valueTextColor],\n [vars.hostWidth]: '280px',\n _fullWidth: {\n [vars.hostWidth]: '100%',\n },\n};\n\nexport default scopesList;\n","import { ThirdPartyAppLogoClass } from '../../components/descope-third-party-app-logo/ThirdPartyAppLogoClass';\nimport { getThemeRefs } from '../../helpers/themeHelpers';\nimport globals from '../globals';\n\nconst globalRefs = getThemeRefs(globals);\nconst vars = ThirdPartyAppLogoClass.cssVarList;\n\nconst thirdPartyAppLogo = {\n [vars.gap]: globalRefs.spacing.lg,\n [vars.arrowsColor]: globalRefs.colors.surface.dark,\n [vars.thirdPartyAppLogoFallback]:\n 'url(https://imgs.descope.com/components/third-party-app-logo-placeholder.svg)',\n [vars.companyLogoFallback]:\n 'url(https://imgs.descope.com/components/project-logo-placeholder.svg)',\n size: {\n xs: {\n [vars.logoMaxHeight]: '30px',\n [vars.logoMaxWidth]: '120px',\n },\n sm: {\n [vars.logoMaxHeight]: '40px',\n [vars.logoMaxWidth]: '160px',\n },\n md: {\n [vars.logoMaxHeight]: '48px',\n [vars.logoMaxWidth]: '200px',\n },\n lg: {\n [vars.logoMaxHeight]: '60px',\n [vars.logoMaxWidth]: '240px',\n },\n },\n};\n\nexport default thirdPartyAppLogo;\nexport { vars };\n","import { SecurityQuestionsSetupClass } from '../../components/descope-security-questions-setup/SecurityQuestionsSetupClass';\n\nexport const vars = SecurityQuestionsSetupClass.cssVarList;\n\nconst securityQuestionsSetup = {\n [vars.hostWidth]: 'fit-content',\n _fullWidth: {\n [vars.hostWidth]: '100%',\n },\n};\n\nexport default securityQuestionsSetup;\n","import { SecurityQuestionsVerifyClass } from '../../components/descope-security-questions-verify/SecurityQuestionsVerifyClass';\nimport { refs } from './inputWrapper';\n\nexport const vars = SecurityQuestionsVerifyClass.cssVarList;\n\nconst securityQuestionsVerify = {\n [vars.hostWidth]: 'min-content',\n [vars.questionCursor]: 'pointer',\n _fullWidth: {\n [vars.hostWidth]: '100%',\n },\n [vars.questionFontSize]: refs.fontSize,\n [vars.questionFontFamily]: refs.fontFamily,\n};\n\nexport default securityQuestionsVerify;\n","import { HybridFieldClass } from '../../components/descope-hybrid-field/HybridFieldClass';\nimport { refs } from './inputWrapper';\n\nconst vars = HybridFieldClass.cssVarList;\n\nconst hybridField = {\n [vars.hostDirection]: refs.direction,\n\n // error message icon\n [vars.errorMessageIcon]: refs.errorMessageIcon,\n [vars.errorMessageIconSize]: refs.errorMessageIconSize,\n [vars.errorMessageIconPadding]: refs.errorMessageIconPadding,\n [vars.errorMessageIconRepeat]: refs.errorMessageIconRepeat,\n [vars.errorMessageIconPosition]: refs.errorMessageIconPosition,\n [vars.errorMessageFontSize]: refs.errorMessageFontSize,\n\n _fullWidth: {\n [vars.hostWidth]: '100%',\n },\n};\n\nexport default hybridField;\nexport { vars };\n","import globals from '../globals';\nimport { getThemeRefs, useVar } from '../../helpers/themeHelpers';\nimport { AlertClass } from '../../components/descope-alert/AlertClass';\nimport { vars as textCompVars } from '@descope-ui/descope-text/theme';\n\nconst globalRefs = getThemeRefs(globals);\nconst vars = AlertClass.cssVarList;\n\nconst alert = {\n [vars.hostDirection]: globalRefs.direction,\n [vars.backgroundColor]: 'transparent',\n [vars.iconSize]: '1.35em',\n [vars.alignItems]: 'center',\n [vars.borderRadius]: globalRefs.radius.md,\n [vars.horizontalPadding]: '0',\n [vars.verticalPadding]: '0',\n [vars.gap]: `0.5em`,\n [vars.fontSize]: useVar(textCompVars.fontSize),\n\n mode: {\n error: {\n // Notice: If icon is empty, we need to remove it from the theme, to prevent it from rendering minimal layout\n // [vars.icon]: `url(${icon})`,\n [vars.textColor]: globalRefs.colors.error.main,\n _bordered: {\n [vars.borderColor]: globalRefs.colors.error.main,\n },\n },\n success: {\n // Notice: If icon is empty, we need to remove it from the theme, to prevent it from rendering minimal layout\n // [vars.icon]: '',\n [vars.textColor]: globalRefs.colors.success.main,\n _bordered: {\n [vars.borderColor]: globalRefs.colors.success.main,\n },\n },\n },\n\n spacing: {\n xs: {\n [vars.horizontalPadding]: globalRefs.spacing.xs,\n [vars.verticalPadding]: globalRefs.spacing.xs,\n },\n sm: {\n [vars.horizontalPadding]: globalRefs.spacing.sm,\n [vars.verticalPadding]: globalRefs.spacing.sm,\n },\n md: {\n [vars.horizontalPadding]: globalRefs.spacing.md,\n [vars.verticalPadding]: globalRefs.spacing.md,\n },\n lg: {\n [vars.horizontalPadding]: globalRefs.spacing.lg,\n [vars.verticalPadding]: globalRefs.spacing.lg,\n },\n xl: {\n [vars.horizontalPadding]: globalRefs.spacing.xl,\n [vars.verticalPadding]: globalRefs.spacing.xl,\n },\n },\n\n textAlign: {\n left: {\n [vars.justifyContent]: 'left',\n },\n center: {\n [vars.justifyContent]: 'center',\n },\n right: {\n [vars.justifyContent]: 'right',\n },\n },\n\n _bordered: {\n [vars.borderWidth]: globalRefs.border.xs,\n [vars.borderColor]: 'transparent',\n [vars.borderStyle]: 'solid',\n [vars.borderWidth]: globalRefs.border.xs,\n [vars.borderRadius]: globalRefs.radius.sm,\n },\n\n _fullWidth: {\n [vars.hostWidth]: '100%',\n },\n};\n\nexport default alert;\nexport { vars };\n","import { HcaptchaClass } from '../../components/descope-hcaptcha/HcaptchaClass';\n\nconst vars = HcaptchaClass.cssVarList;\n\nconst hcaptcha = {\n enabled: {\n false: {\n [vars.maxHeight]: '70px',\n },\n },\n};\n\nexport default hcaptcha;\nexport { vars };\n","import { createBaseInputClass } from '@descope-ui/common/base-classes';\nimport {\n forwardAttrs,\n getComponentName,\n syncAttrs,\n} from '@descope-ui/common/components-helpers';\nimport { asyncDebounce } from '@descope-ui/common/utils';\n\nexport const componentName = getComponentName('autocomplete-field-internal');\n\nconst BaseInputClass = createBaseInputClass({\n componentName,\n baseSelector: '',\n});\nconst observedAttrs = [];\n\nconst INVALID_OPTION_VALUE = 'DESCOPE_INVALID_OPTION';\nconst DEBOUNCE_SEARCH_DELAY = 250;\n\nclass AutocompleteFieldInternal extends BaseInputClass {\n static get observedAttributes() {\n return [].concat(BaseInputClass.observedAttributes || [], observedAttrs);\n }\n\n get allowCustomValue() {\n return this.getAttribute('allow-custom-value') === 'true';\n }\n\n get minSearchLength() {\n return this.getAttribute('min-search-length') || 3;\n }\n\n get noResultsFoundMessage() {\n return this.getAttribute('no-results-message') || 'No results found';\n }\n\n get errorFetchingResultsMessage() {\n return (\n this.getAttribute('error-fetching-results-message') ||\n 'An error occurred fetching results'\n );\n }\n\n constructor() {\n super();\n\n this.innerHTML = `\n <div class=\"autocomplete-field\">\n <descope-combo-box clear-button-visible=\"true\" auto-open-disabled=\"true\" has-dynamic-data=\"true\" item-label-path=\"data-name\" item-value-path=\"data-id\" hide-toggle-button=\"true\"></descope-combo-box>\n </div>\n `;\n\n this.comboBox = this.querySelector('descope-combo-box');\n }\n\n get value() {\n return this.comboBox.value;\n }\n\n set value(val) {\n if (!this.allowCustomValue) {\n this.comboBox.data = [{ label: val, value: val }];\n setTimeout(() => {\n this.comboBox.value = val;\n });\n } else {\n this.comboBox.value = val;\n }\n }\n\n get defaultValue() {\n return this.getAttribute('default-value');\n }\n\n async #autoCompleteSearch(value) {\n const { results, error } = await this.fetchResults(value);\n if (error) {\n return { error };\n }\n return {\n results,\n };\n }\n\n // eslint-disable-next-line class-methods-use-this\n #itemRenderer(displayName, value, label, disabled) {\n return `<span data-name=\"${label}\" data-id=\"${value}\" ${disabled ? 'disabled=\"true\"' : ''}>${\n displayName || label\n }</span>`;\n }\n\n #overrideComboBoxRenderers() {\n this.comboBox.renderer = (root, _, model) => {\n if (model.item.getAttribute('disabled') === 'true') {\n root.setAttribute('disabled', 'true');\n } else {\n root.removeAttribute('disabled');\n }\n // eslint-disable-next-line no-param-reassign\n root.innerHTML = model.item.outerHTML;\n };\n\n this.comboBox.renderItem = ({ displayName, value, label, disabled }) =>\n this.#itemRenderer(displayName, value, label, disabled);\n }\n\n focus() {\n this.comboBox.focus();\n }\n\n init() {\n // This event listener needs to be placed before the super.init() call\n this.addEventListener('focus', (e) => {\n // we want to ignore focus events we are dispatching\n if (e.isTrusted) this.comboBox.focus();\n });\n\n super.init?.();\n this.#initComboBox();\n // This is required since when we remove the invalid attribute from the internal mappings field,\n // we want to reflect the change in the parent component\n syncAttrs(this, this.comboBox, { includeAttrs: ['invalid'] });\n }\n\n #initComboBox() {\n this.debouncedSearch = asyncDebounce(async (value) => {\n try {\n const { results, error } = await this.#autoCompleteSearch(value);\n return { results, error, value };\n } catch (error) {\n return { error, value };\n }\n }, DEBOUNCE_SEARCH_DELAY);\n\n forwardAttrs(this, this.comboBox, {\n includeAttrs: [\n 'size',\n 'bordered',\n 'label',\n 'label-type',\n 'placeholder',\n 'disabled',\n 'readonly',\n 'required',\n 'full-width',\n 'helper-text',\n 'invalid',\n 'error-message',\n 'data-errormessage-value-missing',\n 'st-host-direction',\n 'allow-custom-value',\n 'st-error-message-icon',\n 'st-error-message-icon-size',\n 'st-error-message-icon-padding',\n ],\n });\n\n this.comboBox.addEventListener('filter-changed', this.onSearch.bind(this));\n this.#overrideComboBoxRenderers();\n }\n\n #getEmptyResultsData() {\n return [\n {\n label: this.noResultsFoundMessage,\n value: INVALID_OPTION_VALUE,\n disabled: true,\n },\n ];\n }\n\n #getErrorResultsData() {\n return [\n {\n label: this.errorFetchingResultsMessage,\n value: INVALID_OPTION_VALUE,\n disabled: true,\n },\n ];\n }\n\n async onSearch(e) {\n const searchValue = e.detail.value;\n if (!searchValue || searchValue.length < this.minSearchLength) {\n return;\n }\n this.comboBox.loading = true;\n this.comboBox.setAttribute('opened', 'true');\n const response = await this.debouncedSearch(searchValue);\n if (response && response.value === searchValue) {\n this.comboBox.loading = false;\n if (response.error) {\n this.comboBox.data = this.#getErrorResultsData();\n } else if (response.results?.length === 0) {\n this.comboBox.data = this.#getEmptyResultsData();\n } else {\n this.comboBox.data = response.results || [];\n }\n }\n }\n\n // eslint-disable-next-line class-methods-use-this,no-unused-vars\n fetchResults(value) {\n // eslint-disable-next-line no-console\n console.warn('fetchResults', 'needs to be implemented');\n return { results: [], error: undefined };\n }\n\n getValidity() {\n if (this.isRequired && !this.value) {\n return { valueMissing: true };\n }\n return { valid: true };\n }\n}\n\nexport default AutocompleteFieldInternal;\n","import {\n createStyleMixin,\n draggableMixin,\n createProxy,\n proxyInputMixin,\n componentNameValidationMixin,\n} from '@descope-ui/common/components-mixins';\nimport {\n forwardAttrs,\n getComponentName,\n syncAttrs,\n} from '@descope-ui/common/components-helpers';\nimport { compose } from '@descope-ui/common/utils';\nimport { ComboBoxClass } from '@descope-ui/descope-combo-box/class';\nimport { componentName as descopeInternalComponentName } from './descope-autocomplete-field-internal/AutocompleteFieldInternal';\n\nexport const componentName = getComponentName('autocomplete-field');\n\nconst customMixin = (superclass) =>\n class AutocompleteFieldMixinClass extends superclass {\n get defaultValue() {\n return this.getAttribute('default-value');\n }\n\n setDefaultValue() {\n if (this.defaultValue) {\n setTimeout(() => {\n this.inputElement.value = this.defaultValue;\n });\n }\n }\n\n init() {\n super.init?.();\n const template = document.createElement('template');\n\n template.innerHTML = `\n <${descopeInternalComponentName}\n tabindex=\"-1\"\n ></${descopeInternalComponentName}>\n `;\n\n this.baseElement.appendChild(template.content.cloneNode(true));\n\n this.inputElement = this.shadowRoot.querySelector(\n descopeInternalComponentName,\n );\n\n forwardAttrs(this, this.inputElement, {\n includeAttrs: [\n 'size',\n 'bordered',\n 'label',\n 'required',\n 'label-type',\n 'placeholder',\n 'full-width',\n 'allow-custom-value',\n 'min-search-length',\n 'no-results-message',\n 'error-fetching-results-message',\n 'data-errormessage-value-missing',\n 'invalid',\n 'error-message',\n 'readonly',\n 'disabled',\n 'st-host-direction',\n 'st-error-message-icon',\n 'st-error-message-icon-size',\n 'st-error-message-icon-padding',\n ],\n });\n\n // This is required since when we remove the invalid attribute from the internal mappings field,\n // we want to reflect the change in the parent component\n syncAttrs(this, this.inputElement, { includeAttrs: ['invalid'] });\n this.inputElement.fetchResults = this.fetchResults;\n this.setDefaultValue();\n }\n\n set fetchResults(fetchResults) {\n this.inputElement.fetchResults = fetchResults;\n }\n };\n\nconst { host } = {\n host: { selector: () => ':host' },\n};\n\nexport const AutocompleteFieldClass = compose(\n createStyleMixin({\n componentNameOverride: getComponentName('input-wrapper'),\n }),\n createStyleMixin({\n mappings: {\n hostWidth: { ...host, property: 'width' },\n hostDirection: { ...host, property: 'direction' },\n fontSize: { ...host },\n checkmarkDisplay: {\n selector: ComboBoxClass.componentName,\n property: ComboBoxClass.cssVarList.overlayCheckmarkDisplay,\n },\n itemPaddingInlineStart: {\n selector: ComboBoxClass.componentName,\n property: ComboBoxClass.cssVarList.overlayItemPaddingInlineStart,\n },\n itemPaddingInlineEnd: {\n selector: ComboBoxClass.componentName,\n property: ComboBoxClass.cssVarList.overlayItemPaddingInlineEnd,\n },\n selectedItemBackground: {\n selector: ComboBoxClass.componentName,\n property: ComboBoxClass.cssVarList.overlaySelectedItemBackground,\n },\n selectedItemHoverBackground: {\n selector: ComboBoxClass.componentName,\n property: ComboBoxClass.cssVarList.overlaySelectedItemHoverBackground,\n },\n selectedItemFocusBackground: {\n selector: ComboBoxClass.componentName,\n property: ComboBoxClass.cssVarList.overlaySelectedItemFocusBackground,\n },\n itemHoverBackground: {\n selector: ComboBoxClass.componentName,\n property: ComboBoxClass.cssVarList.overlayItemHoverBackground,\n },\n },\n }),\n draggableMixin,\n proxyInputMixin({\n proxyProps: ['value', 'selectionStart'],\n inputEvent: 'input',\n proxyParentValidation: true,\n }),\n componentNameValidationMixin,\n customMixin,\n)(\n createProxy({\n slots: [],\n wrappedEleName: 'vaadin-custom-field',\n style: () => `\n :host {\n display: inline-flex;\n max-width: 100%;\n direction: ltr;\n }\n vaadin-custom-field {\n line-height: unset;\n width: 100%;\n }\n\n descope-autocomplete-field-internal {\n display: inline-block;\n box-sizing: border-box;\n user-select: none;\n width: 100%;\n max-width: 100%;\n }\n\n descope-autocomplete-field-internal ::slotted {\n padding: 0;\n }\n `,\n excludeAttrsSync: ['tabindex', 'error-message', 'label', 'style'],\n componentName,\n }),\n);\n","import globals from '@descope-ui/theme-globals';\nimport { AutocompleteFieldClass } from './component/AutocompleteFieldClass';\nimport { getThemeRefs } from '@descope-ui/common/theme-helpers';\nimport { refs } from '@descope-ui/theme-input-wrapper';\n\nconst vars = AutocompleteFieldClass.cssVarList;\nconst globalRefs = getThemeRefs(globals);\n\nconst autocompleteField = {\n [vars.hostWidth]: refs.width,\n [vars.hostDirection]: refs.direction,\n [vars.fontSize]: refs.fontSize,\n [vars.checkmarkDisplay]: 'none',\n [vars.itemPaddingInlineStart]: globalRefs.spacing.lg,\n [vars.itemPaddingInlineEnd]: globalRefs.spacing.lg,\n [vars.selectedItemBackground]: globalRefs.colors.primary.light,\n [vars.selectedItemHoverBackground]: globalRefs.colors.primary.light,\n [vars.selectedItemFocusBackground]: globalRefs.colors.primary.light,\n [vars.itemHoverBackground]: globalRefs.colors.primary.highlight,\n\n _fullWidth: {\n [vars.hostWidth]: '100%',\n },\n};\n\nexport default autocompleteField;\nexport { vars };\n","/* global google */\n\nimport {\n createBaseConnectorClass,\n CONNECTOR_ERRORS,\n} from '@descope-ui/common/base-classes';\nimport { initGoogleMapsLoader } from './googleScriptInit';\n\nexport class GoogleMapsConnector extends createBaseConnectorClass() {\n #autocompleteService = null;\n\n #initializationPromise = null;\n\n constructor(getAttribute) {\n super(getAttribute);\n // Start initialization but don't block constructor\n this.#initializationPromise = this.#initializeAutocompleteService();\n }\n\n // eslint-disable-next-line class-methods-use-this\n getRequiredParams() {\n return ['public-api-key'];\n }\n\n // eslint-disable-next-line class-methods-use-this\n getOptionalParams() {\n return [\n {\n key: 'includedPrimaryTypes',\n attribute: 'address-types',\n },\n {\n key: 'language',\n attribute: 'address-language',\n },\n {\n key: 'region',\n attribute: 'address-region',\n },\n ];\n }\n\n async #initializeAutocompleteService() {\n const apiKey = this.getAttribute('public-api-key');\n if (this.#autocompleteService || !apiKey) {\n return;\n }\n\n try {\n initGoogleMapsLoader(apiKey);\n\n const { AutocompleteSuggestion } =\n await google.maps.importLibrary('places');\n this.#autocompleteService = AutocompleteSuggestion;\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\n 'Failed to initialize Google Maps Autocomplete service:',\n error,\n );\n throw error;\n }\n }\n\n async _fetchResults(query) {\n if (!query?.trim()) {\n return { results: [] };\n }\n\n try {\n await this.#initializationPromise;\n\n const request = {\n input: query,\n };\n\n // Add optional parameters\n this.getOptionalParams().forEach(({ attribute, key, defaultValue }) => {\n const value = this.getAttribute(attribute) || defaultValue;\n if (value) {\n if (key === 'includedPrimaryTypes') {\n request[key] = value\n .split(',')\n .map((type) => type.trim())\n .filter(Boolean);\n } else {\n request[key] = value;\n }\n }\n });\n\n const { suggestions } =\n await this.#autocompleteService.fetchAutocompleteSuggestions(request);\n return this.#parseResponse(suggestions);\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('Google Maps Places Autocomplete failed:', error);\n return { results: [], error: CONNECTOR_ERRORS.FETCH_RESULTS_ERROR };\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n #parseResponse(suggestions) {\n if (!suggestions?.length) {\n return { results: [] };\n }\n\n return {\n results: suggestions.map((suggestion) => {\n const prediction = suggestion.placePrediction;\n return {\n id: prediction.placeId,\n label: prediction.text.text,\n value: prediction.text.text,\n };\n }),\n };\n }\n}\n","export const initGoogleMapsLoader = (apiKey) => {\n if (window.google?.maps) {\n return;\n }\n\n /* eslint-disable */\n // prettier-ignore\n (g=>{var h,a,k,p=\"The Google Maps JavaScript API\",c=\"google\",l=\"importLibrary\",q=\"__ib__\",m=document,b=window;b=b[c]||(b[c]={});var d=b.maps||(b.maps={}),r=new Set,e=new URLSearchParams,u=()=>h||(h=new Promise(async(f,n)=>{await (a=m.createElement(\"script\"));e.set(\"libraries\",[...r]+\"\");for(k in g)e.set(k.replace(/[A-Z]/g,t=>\"_\"+t[0].toLowerCase()),g[k]);e.set(\"callback\",c+\".maps.\"+q);a.src=`https://maps.${c}apis.com/maps/api/js?`+e;d[q]=f;a.onerror=()=>h=n(Error(p+\" could not load.\"));a.nonce=m.querySelector(\"script[nonce]\")?.nonce||\"\";m.head.append(a)}));d[l]?console.warn(p+\" only loads once. Ignoring:\",g):d[l]=(f,...n)=>r.add(f)&&u().then(()=>d[l](f,...n))})({\n key: apiKey,\n });\n /* eslint-enable */\n};\n","import {\n createBaseConnectorClass,\n CONNECTOR_ERRORS,\n} from '@descope-ui/common/base-classes';\n\nconst RADAR_AUTOCOMPLETE_URL = 'https://api.radar.io/v1/search/autocomplete';\n\nexport class RadarConnector extends createBaseConnectorClass() {\n // eslint-disable-next-line class-methods-use-this\n getRequiredParams() {\n return ['public-api-key'];\n }\n\n // eslint-disable-next-line class-methods-use-this\n getOptionalParams() {\n return [\n {\n key: 'layers',\n attribute: 'address-types',\n },\n {\n key: 'limit',\n attribute: 'address-limit',\n },\n {\n key: 'lang',\n attribute: 'address-language',\n },\n {\n key: 'countryCode',\n attribute: 'address-region',\n },\n ];\n }\n\n async _fetchResults(query) {\n if (!query?.trim()) {\n return { results: [] };\n }\n\n const apiKey = this.getAttribute('public-api-key');\n const params = new URLSearchParams({\n query: query.trim(),\n });\n\n // Add optional parameters\n this.getOptionalParams().forEach(({ attribute, key, defaultValue }) => {\n const value = this.getAttribute(attribute) || defaultValue;\n if (value) {\n if (key === 'layers' || key === 'countryCode') {\n params.append(\n key,\n value\n .split(',')\n .map((type) => type.trim())\n .filter(Boolean)\n .join(','),\n );\n } else {\n params.append(key, value);\n }\n }\n });\n\n try {\n const response = await fetch(\n `${RADAR_AUTOCOMPLETE_URL}?${params.toString()}`,\n {\n headers: {\n Authorization: apiKey,\n },\n },\n );\n\n if (!response.ok) {\n throw new Error(`Radar API returned ${response.status}`);\n }\n\n const data = await response.json();\n return this.#parseResponse(data);\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('Radar Places Autocomplete failed:', error);\n return { results: [], error: CONNECTOR_ERRORS.FETCH_RESULTS_ERROR };\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n #parseResponse(data) {\n if (!data?.addresses?.length) {\n return { results: [] };\n }\n return {\n results: data.addresses.map((address) => ({\n label: address.formattedAddress,\n value: address.formattedAddress,\n })),\n };\n }\n}\n","import { createBaseInputClass } from '@descope-ui/common/base-classes';\nimport {\n getComponentName,\n forwardAttrs,\n syncAttrs,\n} from '@descope-ui/common/components-helpers';\nimport { connectorMixin } from '@descope-ui/common/components-mixins';\nimport { compose } from '@descope-ui/common/utils';\nimport { GoogleMapsConnector, RadarConnector } from '../../connectors';\n\nexport const componentName = getComponentName('address-field-internal');\n\nconst GOOGLE_MAPS_CONNECTOR_TEMPLATE = 'google-maps-places';\nconst RADAR_CONNECTOR_TEMPLATE = 'radar';\n\nconst CONNECTOR_CLASSES = {\n [GOOGLE_MAPS_CONNECTOR_TEMPLATE]: GoogleMapsConnector,\n [RADAR_CONNECTOR_TEMPLATE]: RadarConnector,\n};\n\nconst BaseInputClass = createBaseInputClass({\n componentName,\n baseSelector: '',\n});\nconst initConnectorAttrs = ['public-api-key'];\nconst observedAttrs = [...initConnectorAttrs];\n\nclass RawAddressFieldInternal extends BaseInputClass {\n static get observedAttributes() {\n return [].concat(BaseInputClass.observedAttributes || [], observedAttrs);\n }\n\n get errorMsgValueMissing() {\n return (\n this.getAttribute('data-errormessage-value-missing') ||\n this.defaultErrorMsgValueMissing\n );\n }\n\n constructor() {\n super();\n\n this.innerHTML = `\n <div>\n <descope-autocomplete-field></descope-autocomplete-field>\n </div>\n `;\n\n this.autocompleteField = this.querySelector('descope-autocomplete-field');\n }\n\n get value() {\n return this.autocompleteField.value;\n }\n\n set value(val) {\n this.autocompleteField.value = val;\n }\n\n focus() {\n this.autocompleteField.focus();\n }\n\n init() {\n // This event listener needs to be placed before the super.init() call\n this.addEventListener('focus', (e) => {\n // we want to ignore focus events we are dispatching\n if (e.isTrusted) this.autocompleteField.focus();\n });\n\n super.init?.();\n this.initAutocomplete();\n }\n\n initAutocomplete() {\n forwardAttrs(this, this.autocompleteField, {\n includeAttrs: [\n 'size',\n 'bordered',\n 'label',\n 'label-type',\n 'placeholder',\n 'disabled',\n 'readonly',\n 'required',\n 'full-width',\n 'helper-text',\n 'error-message',\n 'default-value',\n 'data-errormessage-value-missing',\n 'st-host-direction',\n 'allow-custom-value',\n 'min-search-length',\n 'st-error-message-icon',\n 'st-error-message-icon-size',\n 'st-error-message-icon-padding',\n ],\n });\n // This is required since when we remove the invalid attribute from the autocomplete field,\n // we want to reflect the change in the address field component\n syncAttrs(this, this.autocompleteField, { includeAttrs: ['invalid'] });\n\n // Bind the connector fetch results fn to the autocomplete field\n this.autocompleteField.fetchResults = this.fetchConnectorResults.bind(this);\n }\n\n attributeChangedCallback(attrName, oldValue, newValue) {\n super.attributeChangedCallback?.(attrName, oldValue, newValue);\n\n if (oldValue !== newValue) {\n if (initConnectorAttrs.includes(attrName)) {\n this.initializeConnector();\n }\n }\n }\n\n getValidity() {\n if (this.isRequired && !this.value) {\n return { valueMissing: true };\n }\n return { valid: true };\n }\n}\n\nexport const AddressFieldInternal = compose(\n connectorMixin({ connectorClasses: CONNECTOR_CLASSES }),\n)(RawAddressFieldInternal);\n","export const connectorMixin =\n ({ connectorClasses }) =>\n (superclass) =>\n class ConnectorMixinClass extends superclass {\n #connectorClasses = connectorClasses;\n\n static get observedAttributes() {\n return [...(superclass.observedAttributes || []), 'connector-template'];\n }\n\n get connectorClasses() {\n return this.#connectorClasses;\n }\n\n set connectorClasses(value) {\n this.#connectorClasses = value;\n }\n\n get connectorTemplate() {\n return this.getAttribute('connector-template');\n }\n\n initializeConnector() {\n const template = this.connectorTemplate;\n\n if (!this.connectorClasses[template]) {\n return;\n }\n const ConnectorClass = this.connectorClasses[template];\n this.connector = new ConnectorClass(this.getAttribute.bind(this));\n }\n\n async fetchConnectorResults(query) {\n if (!this.connector) {\n // eslint-disable-next-line no-console\n console.error(\n `No connector initialized for the field with template: ${this.connectorTemplate}`,\n );\n return { results: [] };\n }\n\n const { results, error } = await this.connector.fetch(query);\n if (error) {\n return { results: [], error };\n }\n return {\n results: results.map(({ label, value }) => ({\n label,\n value,\n })),\n };\n }\n\n init() {\n super.init?.();\n this.initializeConnector();\n }\n\n attributeChangedCallback(attrName, oldValue, newValue) {\n super.attributeChangedCallback?.(attrName, oldValue, newValue);\n\n if (oldValue !== newValue) {\n if (attrName === 'connector-template') {\n this.initializeConnector();\n }\n }\n }\n };\n","import {\n createStyleMixin,\n draggableMixin,\n createProxy,\n proxyInputMixin,\n componentNameValidationMixin,\n} from '@descope-ui/common/components-mixins';\nimport {\n getComponentName,\n forwardAttrs,\n syncAttrs,\n} from '@descope-ui/common/components-helpers';\nimport { compose } from '@descope-ui/common/utils';\nimport { componentName as descopeInternalComponentName } from './descope-address-field-internal/AddressFieldInternal';\n\nexport const componentName = getComponentName('address-field');\n\nconst customMixin = (superclass) =>\n class AddressFieldMixinClass extends superclass {\n get defaultValue() {\n return this.getAttribute('default-value');\n }\n\n setDefaultValue() {\n if (this.defaultValue) {\n setTimeout(() => {\n this.inputElement.value = this.defaultValue;\n });\n }\n }\n\n set connectorClasses(value) {\n this.inputElement.connectorClasses = value;\n }\n\n get connectorClasses() {\n return this.inputElement.connectorClasses;\n }\n\n init() {\n super.init?.();\n const template = document.createElement('template');\n\n template.innerHTML = `\n <${descopeInternalComponentName}\n tabindex=\"-1\"\n ></${descopeInternalComponentName}>\n `;\n\n this.baseElement.appendChild(template.content.cloneNode(true));\n\n this.inputElement = this.shadowRoot.querySelector(\n descopeInternalComponentName,\n );\n\n forwardAttrs(this, this.inputElement, {\n includeAttrs: [\n 'size',\n 'bordered',\n 'label',\n 'required',\n 'label-type',\n 'placeholder',\n 'full-width',\n 'allow-custom-value',\n 'min-search-length',\n 'no-results-message',\n 'error-fetching-results-message',\n 'data-errormessage-value-missing',\n 'invalid',\n 'error-message',\n 'readonly',\n 'disabled',\n 'st-host-direction',\n 'st-error-message-icon',\n 'st-error-message-icon-size',\n 'st-error-message-icon-padding',\n 'connector-template',\n 'public-api-key',\n 'address-types',\n 'address-language',\n 'address-region',\n 'address-limit',\n ],\n });\n\n // This is required since when we remove the invalid attribute from the internal mappings field,\n // we want to reflect the change in the parent component\n syncAttrs(this, this.inputElement, { includeAttrs: ['invalid'] });\n this.setDefaultValue();\n }\n };\n\nconst { host } = {\n host: { selector: () => ':host' },\n};\n\nexport const AddressFieldClass = compose(\n createStyleMixin({\n componentNameOverride: getComponentName('input-wrapper'),\n }),\n createStyleMixin({\n mappings: {\n hostWidth: { ...host, property: 'width' },\n hostDirection: { ...host, property: 'direction' },\n },\n }),\n draggableMixin,\n proxyInputMixin({\n proxyProps: ['value', 'selectionStart'],\n inputEvent: 'input',\n proxyParentValidation: true,\n }),\n componentNameValidationMixin,\n customMixin,\n)(\n createProxy({\n slots: [],\n wrappedEleName: 'vaadin-custom-field',\n style: () => `\n :host {\n display: inline-flex;\n max-width: 100%;\n direction: ltr;\n }\n vaadin-custom-field {\n line-height: unset;\n width: 100%;\n }\n\n ${descopeInternalComponentName} {\n display: inline-block;\n box-sizing: border-box;\n user-select: none;\n width: 100%;\n max-width: 100%;\n }\n\n ${descopeInternalComponentName} ::slotted {\n padding: 0;\n }\n`,\n excludeAttrsSync: ['tabindex', 'error-message', 'label', 'style'],\n componentName,\n }),\n);\n","import { AddressFieldClass } from './component/AddressFieldClass';\nimport { refs } from '@descope-ui/theme-input-wrapper';\n\nconst vars = AddressFieldClass.cssVarList;\n\nconst addressField = {\n [vars.hostWidth]: refs.width,\n [vars.hostDirection]: refs.direction,\n\n _fullWidth: {\n [vars.hostWidth]: '100%',\n },\n};\n\nexport default addressField;\nexport { vars };\n","const fmt = (val, pad = 2) => String(val).padStart(pad, '0');\n\nexport const formatTime = (ms = 0) => {\n const totalSeconds = Math.floor(ms / 1000);\n\n const secondsInMinute = 60;\n const secondsInHour = secondsInMinute * 60;\n\n const hours = Math.floor(totalSeconds / secondsInHour);\n const minutes = Math.floor((totalSeconds % secondsInHour) / secondsInMinute);\n const seconds = totalSeconds % secondsInMinute;\n\n const timeParts = [...(hours ? [fmt(hours)] : []), fmt(minutes), fmt(seconds)];\n\n return timeParts.join(':');\n};\n","import {\n createStyleMixin,\n draggableMixin,\n componentNameValidationMixin,\n} from '@descope-ui/common/components-mixins';\nimport { createBaseClass } from '@descope-ui/common/base-classes';\nimport { compose } from '@descope-ui/common/utils';\nimport {\n getComponentName,\n injectStyle,\n} from '@descope-ui/common/components-helpers';\nimport clockIcon from './clock.svg';\nimport { IconClass } from '@descope-ui/descope-icon/class';\nimport { formatTime } from './helpers';\n\nexport const componentName = getComponentName('timer');\n\nconst observedAttributes = ['seconds', 'hide-icon', 'paused'];\n\nconst BaseClass = createBaseClass({\n componentName,\n baseSelector: ':host > .wrapper',\n});\n\nconst DEFAULT_INTERVAL = 1000;\n\nclass RawTimer extends BaseClass {\n #timeRemains = 0;\n\n #intervalId;\n\n static get observedAttributes() {\n return observedAttributes.concat(BaseClass.observedAttributes || []);\n }\n\n constructor() {\n super();\n\n this.attachShadow({ mode: 'open' }).innerHTML = `\n <div class=\"wrapper\">\n <descope-icon src=\"${clockIcon}\" class=\"icon\"></descope-icon>\n <div class=\"timer\"></div>\n </div>\n\t\t`;\n\n injectStyle(\n `\n :host {\n display: inline-flex;\n user-select: none;\n -webkit-user-select: none;\n }\n .wrapper {\n display: flex;\n align-items: center;\n flex-direction: row;\n width: 100%;\n }\n .hidden {\n display: none;\n }\n `,\n this,\n );\n\n this.icon = this.shadowRoot.querySelector('.icon');\n this.timer = this.shadowRoot.querySelector('.timer');\n }\n\n get seconds() {\n const val = this.getAttribute('seconds');\n const secs = parseInt(val || 0, 10) * 1000;\n return Math.max(0, secs);\n }\n\n // we use `pause` attribute for allowing preview mode by executing `pause`\n get isPaused() {\n return this.getAttribute('paused') === 'true';\n }\n\n init() {\n super.init?.();\n\n this.#timeRemains = this.seconds;\n }\n\n startInterval() {\n const intervalCycle = () => {\n this.#decreaseInterval();\n if (!this.#timeRemains) this.stop();\n this.#updateDisplay(this.#timeRemains);\n };\n\n if (this.#timeRemains) {\n this.#intervalId = setInterval(intervalCycle, DEFAULT_INTERVAL);\n } else {\n this.stop();\n }\n }\n\n stopInterval() {\n clearInterval(this.#intervalId);\n }\n\n #decreaseInterval() {\n this.#timeRemains = this.#timeRemains - DEFAULT_INTERVAL;\n }\n\n reset() {\n this.#timeRemains = this.seconds;\n this.#updateDisplay(this.#timeRemains);\n\n if (this.isPaused) return;\n\n this.dispatchEvent(new CustomEvent('timer-started', { bubbles: true }));\n this.startInterval();\n }\n\n stop() {\n this.stopInterval();\n this.#timeRemains = 0;\n this.#updateDisplay(this.#timeRemains);\n this.dispatchEvent(new CustomEvent('timer-ended', { bubbles: true }));\n }\n\n pause() {\n this.setAttribute('paused', 'true');\n this.stopInterval();\n }\n\n resume() {\n this.removeAttribute('paused');\n this.startInterval();\n }\n\n #updateDisplay(val) {\n this.timer.textContent = formatTime(val);\n }\n\n #toggleIcon(val) {\n this.icon.classList.toggle('hidden', val);\n }\n\n #handlePause(paused) {\n setTimeout(() => {\n if (paused) {\n this.pause();\n } else {\n // we want to prevent a another interval from starting in case previous interval was not yet cleared\n if (!this.#intervalId) {\n this.resume();\n }\n }\n });\n }\n\n attributeChangedCallback(attrName, oldValue, newValue) {\n super.attributeChangedCallback?.(attrName, oldValue, newValue);\n\n if (newValue !== oldValue) {\n if (attrName === 'seconds') {\n this.reset();\n }\n if (attrName === 'hide-icon') {\n this.#toggleIcon(newValue === 'true');\n }\n if (attrName === 'paused') {\n this.#handlePause(newValue === 'true');\n }\n }\n }\n}\n\nconst { host, icon, timer } = {\n host: { selector: () => ':host' },\n icon: { selector: () => '.icon' },\n timer: { selector: () => '.timer' },\n};\n\nexport const TimerClass = compose(\n createStyleMixin({\n mappings: {\n fontSize: {},\n iconSize: [\n { ...icon, property: 'width' },\n { ...icon, property: 'height' },\n ],\n fontFamily: {},\n minHeight: {},\n fontWeight: { ...timer },\n lineHeight: { ...timer },\n textColor: { ...timer, property: 'color' },\n gap: {},\n textAlign: { property: 'justify-content' },\n hostWidth: { ...host, property: 'width' },\n hostDirection: { ...host, property: 'direction' },\n iconColor: { ...icon, property: IconClass.cssVarList.fill },\n },\n }),\n draggableMixin,\n componentNameValidationMixin,\n)(RawTimer);\n","import globals from '@descope-ui/theme-globals';\nimport { TimerClass } from './component/TimerClass';\nimport { getThemeRefs } from '@descope-ui/common/theme-helpers';\n\nconst globalRefs = getThemeRefs(globals);\nconst vars = TimerClass.cssVarList;\n\nconst timer = {\n [vars.hostDirection]: globalRefs.direction,\n [vars.gap]: '0.25em',\n [vars.fontFamily]: globalRefs.fonts.font1.family,\n [vars.minHeight]: '1.5em',\n [vars.lineHeight]: '1em',\n [vars.fontWeight]: globalRefs.fonts.font1.fontWeight,\n [vars.textColor]: globalRefs.colors.surface.contrast,\n [vars.iconColor]: globalRefs.colors.surface.contrast,\n [vars.iconSize]: '1em',\n\n size: {\n xs: { [vars.fontSize]: '12px' },\n sm: { [vars.fontSize]: '14px' },\n md: { [vars.fontSize]: '16px' },\n lg: { [vars.fontSize]: '18px' },\n },\n\n textAlign: {\n right: { [vars.textAlign]: 'right' },\n left: { [vars.textAlign]: 'left' },\n center: { [vars.textAlign]: 'center' },\n },\n\n _fullWidth: {\n [vars.hostWidth]: '100%',\n },\n};\n\nexport default timer;\n\nexport { vars };\n","import {\n createStyleMixin,\n draggableMixin,\n componentNameValidationMixin,\n} from '@descope-ui/common/components-mixins';\nimport { createBaseClass } from '@descope-ui/common/base-classes';\nimport { compose } from '@descope-ui/common/utils';\nimport {\n forwardAttrs,\n getComponentName,\n injectStyle,\n} from '@descope-ui/common/components-helpers';\n\nexport const componentName = getComponentName('timer-button');\n\nconst buttonAttrs = [\n 'button-variant',\n 'button-mode',\n 'size',\n 'text-align',\n 'full-width',\n];\n\nconst mapButtonAttrs = {\n 'button-variant': 'variant',\n 'button-mode': 'mode',\n};\n\nconst timerAttrs = [\n 'timer-seconds',\n 'timer-hide-icon',\n 'timer-paused',\n 'size',\n 'text-align',\n 'full-width',\n];\n\nconst mapTimerAttrs = {\n 'timer-seconds': 'seconds',\n 'timer-hide-icon': 'hide-icon',\n 'timer-paused': 'paused',\n};\n\nconst BaseClass = createBaseClass({\n componentName,\n baseSelector: ':host > div',\n});\n\nclass RawTimerButton extends BaseClass {\n constructor() {\n super();\n\n this.attachShadow({ mode: 'open' }).innerHTML = `\n <div class=\"wrapper\">\n <descope-timer class=\"timer\"></descope-timer>\n <descope-button class=\"button\" disabled=\"true\">\n <slot></slot>\n </descope-button>\n </div>\n\t\t`;\n\n injectStyle(\n `\n :host {\n display: inline-flex;\n }\n .wrapper {\n display: flex;\n flex-direction: column;\n gap: 0.5em;\n align-items: center;\n width: 100%;\n }\n .timer {\n flex: 1;\n }\n `,\n this,\n );\n\n this.timer = this.shadowRoot.querySelector('.timer');\n this.button = this.shadowRoot.querySelector('.button');\n\n this.timer.addEventListener('timer-started', () => this.onTimerStarted());\n this.timer.addEventListener('timer-ended', () => this.onTimerEnded());\n\n this.button.addEventListener('click', this.onClick.bind(this));\n }\n\n set onclick(val) {\n this.button.onclick = val;\n }\n\n init() {\n super.init?.();\n\n forwardAttrs(this, this.button, {\n includeAttrs: buttonAttrs,\n mapAttrs: mapButtonAttrs,\n });\n\n forwardAttrs(this, this.timer, {\n includeAttrs: timerAttrs,\n mapAttrs: mapTimerAttrs,\n });\n\n // When we sync attributes, the `disabled` attribute is being compared to the attribute\n // on Vaadin component; since the Vaadin component has no `disabled` attribute, we sync\n // that back to our component.\n // This is pending a more generic fix in the way we sync attibutes.\n this.button.shadowRoot\n .querySelector('vaadin-button')\n .setAttribute('disabled', 'true');\n }\n\n onTimerStarted() {\n this.toggleButtonDisable(true);\n }\n\n onTimerEnded() {\n this.toggleButtonDisable(false);\n }\n\n onClick() {\n this.timer.reset();\n }\n\n toggleButtonDisable(isDisabled) {\n setTimeout(() => {\n isDisabled\n ? this.button.setAttribute('disabled', 'true')\n : this.button.removeAttribute('disabled');\n });\n }\n}\n\nconst { host } = {\n host: { selector: () => ':host' },\n icon: { selector: '.icon' },\n timer: { selector: '.timer' },\n};\n\nexport const TimerButtonClass = compose(\n createStyleMixin({\n mappings: {\n gap: {},\n flexDirection: {},\n hostWidth: { ...host, property: 'width' },\n hostDirection: { ...host, property: 'direction' },\n },\n }),\n draggableMixin,\n componentNameValidationMixin,\n)(RawTimerButton);\n","import globals from '@descope-ui/theme-globals';\nimport { getThemeRefs } from '@descope-ui/common/theme-helpers';\nimport { TimerButtonClass } from './component/TimerButtonClass';\n\nconst globalRefs = getThemeRefs(globals);\nconst vars = TimerButtonClass.cssVarList;\n\nconst timerButton = {\n [vars.gap]: globalRefs.spacing.sm,\n [vars.flexDirection]: 'column',\n\n _horizontal: {\n [vars.flexDirection]: 'row',\n },\n\n _fullWidth: {\n [vars.hostWidth]: '100%',\n },\n};\n\nexport default timerButton;\n\nexport { vars };\n","import { createBaseClass } from '@descope-ui/common/base-classes';\nimport {\n getComponentName,\n injectStyle\n} from '@descope-ui/common/components-helpers';\nimport {\n componentNameValidationMixin,\n createStyleMixin,\n draggableMixin,\n} from '@descope-ui/common/components-mixins';\nimport { compose } from '@descope-ui/common/utils';\n\nexport const componentName = getComponentName('password-strength');\nclass RawPasswordStrength extends createBaseClass({\n componentName,\n baseSelector: ':host > .wrapper',\n}) {\n static get observedAttributes() {\n return ['options', 'value'];\n }\n\n constructor() {\n super();\n\n this.attachShadow({ mode: 'open' }).innerHTML = `\n <div class=\"wrapper\">\n <div class=\"bars-container\"></div>\n <div class=\"text-container\">\n </div>\n </div>\n\t\t`;\n\n injectStyle(`\n :host {\n\t\t\t\t\tdisplay: inline-flex;\n\t\t\t\t}\n\n .wrapper {\n display: inline-flex;\n position: relative;\n flex-direction: column;\n width: 100%;\n height: 100%;\n align-items: flex-start;\n }\n\n .bar {\n flex-grow: 1;\n }\n\n .bars-container {\n display: flex;\n flex-grow: 1;\n width: 100%;\n }\n `, this);\n\n this.barsContainer = this.shadowRoot.querySelector('.bars-container');\n this.textContainer = this.shadowRoot.querySelector('.text-container');\n }\n\n get options() {\n return this.getAttribute('options')?.split(',') || [];\n }\n\n // we need to have the option to take the zxcvbn from outside the component\n getCalcScoreFn = () => import('./calcScore').then(module => module.default);\n\n #score = -1;\n\n async calcScore() {\n const value = this.getAttribute('value') || ''\n if (!value) return -1;\n\n const calcScore = await this.getCalcScoreFn();\n\n return calcScore(value).score;\n }\n\n renderBars() {\n this.barsContainer.innerHTML = '';\n this.bars = this.options.map((option, index) => {\n const bar = document.createElement('div');\n bar.classList.add('bar');\n bar.classList.toggle('filled', index <= this.#score);\n this.barsContainer.appendChild(bar);\n\n return bar;\n });\n }\n\n init() {\n super.init?.();\n // we are prefetching the calcScore function\n this.getCalcScoreFn();\n }\n\n\n async onValueChange() {\n const newScore = await this.calcScore();\n if (newScore === this.#score) return;\n\n this.#score = newScore;\n this.dispatchEvent(new CustomEvent('score-changed', { bubbles: true, composed: true, detail: this.#score }));\n\n this.bars?.forEach((bar, index) => {\n bar.classList.toggle('filled', index <= this.#score);\n });\n\n this.textContainer.innerHTML = this.options[this.#score] || '';\n\n if (this.#score === -1) this.removeAttribute('score');\n else this.setAttribute('score', this.#score);\n }\n\n attributeChangedCallback(name, oldValue, newValue) {\n if (oldValue === newValue) return;\n\n if (name === 'options') {\n return this.renderBars();\n }\n\n if (name === 'value') {\n return this.onValueChange();\n }\n }\n}\n\nconst { host, bar, filledBar, barsContainer, text } = {\n host: { selector: () => ':host' },\n bar: { selector: ' .bar' },\n barsContainer: { selector: ' .bars-container' },\n filledBar: { selector: ' .bar.filled' },\n text: { selector: ' .text-container' },\n};\n\nexport const PasswordStrengthClass = compose(\n createStyleMixin({ componentNameOverride: getComponentName('input-wrapper') }),\n createStyleMixin({\n mappings: {\n hostWidth: [\n { ...host, property: 'width' },\n { ...host, property: 'min-width' },\n ],\n hostDirection: { ...host, property: 'direction' },\n hostMinWidth: { ...host, property: 'min-width' },\n barHeight: { ...bar, property: 'height' },\n barBorderRadius: { ...bar, property: 'border-radius' },\n emptyBarColor: { ...bar, property: 'background-color' },\n filledBarColor: { ...filledBar, property: 'background-color' },\n textColor: { ...text, property: 'color' },\n spacing: { property: 'gap' },\n barSpacing: { ...barsContainer, property: 'gap' },\n fontSize: {},\n fontWeight: {},\n fontFamily: {},\n barTransition: { ...bar, property: 'transition' },\n },\n }),\n draggableMixin,\n componentNameValidationMixin,\n)(RawPasswordStrength);\n","import globals from '@descope-ui/theme-globals';\nimport { PasswordStrengthClass } from './component/PasswordStrengthClass';\nimport { getThemeRefs } from '@descope-ui/common/theme-helpers';\nimport { refs } from '@descope-ui/theme-input-wrapper';\n\nconst globalRefs = getThemeRefs(globals);\nconst compVars = PasswordStrengthClass.cssVarList;\n\nconst passwordStrength = {\n [compVars.hostDirection]: globalRefs.direction,\n [compVars.barHeight]: '4px',\n [compVars.barTransition]: 'background-color 0.3s',\n [compVars.barBorderRadius]: globalRefs.radius.sm,\n [compVars.hostMinWidth]: refs.minWidth,\n [compVars.barSpacing]: globalRefs.spacing.sm,\n [compVars.emptyBarColor]: globalRefs.colors.surface.light,\n [compVars.fontFamily]: refs.fontFamily,\n [compVars.fontSize]: refs.labelFontSize,\n [compVars.fontWeight]: refs.labelFontWeight,\n [compVars.spacing]: globalRefs.spacing.sm,\n _fullWidth: {\n [compVars.hostWidth]: '100%',\n },\n score : {\n 0: {\n [compVars.filledBarColor]: globalRefs.colors.error.light,\n [compVars.textColor]: globalRefs.colors.error.light,\n },\n 1: {\n [compVars.filledBarColor]: globalRefs.colors.error.main,\n [compVars.textColor]: globalRefs.colors.error.main,\n },\n 2: {\n [compVars.filledBarColor]: globalRefs.colors.error.dark,\n [compVars.textColor]: globalRefs.colors.error.dark,\n },\n 3: {\n [compVars.filledBarColor]: globalRefs.colors.success.dark,\n [compVars.textColor]: globalRefs.colors.success.dark,\n },\n 4: {\n [compVars.filledBarColor]: globalRefs.colors.success.main,\n [compVars.textColor]: globalRefs.colors.success.main,\n },\n }\n};\n\nexport default passwordStrength;\n\nexport const vars = {\n ...compVars,\n};\n","import {\n createStyleMixin,\n draggableMixin,\n componentNameValidationMixin,\n} from '@descope-ui/common/components-mixins';\nimport { createBaseClass } from '@descope-ui/common/base-classes';\nimport { compose } from '@descope-ui/common/utils';\nimport {\n forwardAttrs,\n getComponentName,\n injectStyle,\n} from '@descope-ui/common/components-helpers';\nimport chevronIcon from './chevron.svg';\nimport { TextClass } from '@descope-ui/descope-text/class';\n\nexport const componentName = getComponentName('collapsible-container');\n\nclass RawCollapsibleContainer extends createBaseClass({\n componentName,\n baseSelector: 'slot',\n}) {\n static get observedAttributes() {\n return ['collapsed', 'collapsible', 'text'];\n }\n\n constructor() {\n super();\n\n this.attachShadow({ mode: 'open' }).innerHTML = `\n <div class=\"wrapper\">\n <descope-text st-host-direction=\"ltr\">\n <div class=\"header\">\n <div class=\"icon\">\n <descope-icon st-fill=\"currentcolor\" src=${chevronIcon}></descope-icon>\n </div>\n <span></span>\n </div>\n </descope-text>\n <div class=\"content\">\n <slot></slot>\n </div>\n </div>\n\t`;\n\n injectStyle(\n `\n div.content {\n transition-property: max-height;\n overflow: auto;\n height: auto;\n\t\t\t}\n\t\t\tslot {\n\t\t\t\tbox-sizing: border-box;\n\t\t\t\twidth: 100%;\n\t\t\t\tdisplay: flex;\n\t\t\t}\n slot:focus-visible {\n outline: none;\n }\n\t\t\t:host {\n\t\t\t\tdisplay: inline-flex;\n\t\t\t}\n .header {\n user-select: none;\n display: flex;\n align-items: baseline;\n }\n .icon {\n flex-shrink: 0;\n height: var(${TextClass.cssVarList.textLineHeight});\n min-height: 24px;\n display: flex;\n align-items: center;\n }\n descope-icon {\n transition-property: transform;\n }\n .rotate {\n transform: rotate(-180deg);\n }\n descope-text {\n width: 100%;\n display: flex;\n }\n span {\n align-self: center;\n word-break: break-word;\n }\n span:empty {\n display: none;\n }\n .wrapper {\n overflow: hidden;\n display: inline-flex;\n width: 100%;\n flex-direction: column;\n }\n `,\n this,\n );\n\n this.header = this.shadowRoot.querySelector('.header');\n this.content = this.shadowRoot.querySelector('div.content');\n this.icon = this.header.querySelector('descope-icon');\n this.headerText = this.header.querySelector('span');\n this.textComponent = this.shadowRoot.querySelector('descope-text');\n }\n\n get isCollapsible() {\n return this.getAttribute('collapsible') === 'true';\n }\n\n calcContentHeight() {\n return this.content.offsetHeight || this.content.scrollHeight;\n }\n\n get isCollapsed() {\n return this.getAttribute('collapsed') === 'true';\n }\n\n toggle() {\n this.setAttribute('collapsed', this.isCollapsed ? 'false' : 'true');\n }\n\n collapse(animated = false) {\n const final = () => {\n this.content.style.maxHeight = '0px';\n };\n this.icon.classList.add('rotate');\n if (!animated) return final();\n\n this.content.style.maxHeight = this.calcContentHeight() + 'px';\n setTimeout(final);\n }\n\n expand(animated = false) {\n const final = () => {\n this.content.style.maxHeight = '';\n };\n this.icon.classList.remove('rotate');\n if (!animated) return final();\n\n this.content.addEventListener('transitionend', final, { once: true });\n this.content.style.maxHeight = this.calcContentHeight() + 'px';\n }\n\n #isComponentMounted = false;\n\n init() {\n super.init?.();\n // we want to animate the collapse/expand only after the first time the component is connected\n // so when setting a default value for the collapsed attribute, it will not animate\n this.#isComponentMounted = true;\n\n this.header.addEventListener('click', () => {\n if (!this.isCollapsible) return;\n this.toggle();\n });\n forwardAttrs(this, this.textComponent, {\n includeAttrs: ['text-align', 'text-variant', 'text-mode'],\n mapAttrs: { 'text-mode': 'mode', 'text-variant': 'variant' },\n });\n }\n\n updateHeaderText() {\n const text = this.getAttribute('text') || '';\n this.headerText.innerText = text;\n }\n\n attributeChangedCallback(name, oldValue, newValue) {\n if (name === 'text') {\n this.updateHeaderText();\n return;\n }\n const collapsed = this.isCollapsed && this.isCollapsible;\n if (collapsed) {\n this.collapse(this.#isComponentMounted);\n } else {\n this.expand(this.#isComponentMounted);\n }\n }\n}\n\nconst selectors = {\n host: () => ':host',\n icon: () => 'descope-icon',\n iconWrapper: () => '.icon',\n header: () => '.header',\n text: () => 'span',\n wrapper: () => '.wrapper',\n content: () => 'div.content',\n};\n\nexport const CollapsibleContainerClass = compose(\n createStyleMixin({\n mappings: {\n hostWidth: { selector: selectors.host, property: 'width' },\n hostDirection: { selector: selectors.host, property: 'direction' },\n verticalPadding: [\n { selector: selectors.wrapper, property: 'padding-top' },\n { selector: selectors.wrapper, property: 'padding-bottom' },\n ],\n horizontalPadding: [\n { selector: selectors.wrapper, property: 'padding-left' },\n { selector: selectors.wrapper, property: 'padding-right' },\n ],\n\n flexDirection: {},\n justifyContent: {},\n alignItems: {},\n gap: [{}, { property: 'margin-top' }],\n\n backgroundColor: { selector: selectors.wrapper },\n backgroundImage: { selector: selectors.wrapper },\n backgroundPositionX: { selector: selectors.wrapper },\n backgroundPositionY: { selector: selectors.wrapper },\n backgroundSize: { selector: selectors.wrapper },\n backgroundRepeat: { selector: selectors.wrapper },\n\n borderRadius: { selector: selectors.wrapper },\n borderColor: { selector: selectors.wrapper },\n borderStyle: { selector: selectors.wrapper },\n borderWidth: { selector: selectors.wrapper },\n\n boxShadow: { selector: selectors.wrapper },\n\n headerIconOrder: { selector: selectors.iconWrapper, property: 'order' },\n headerCursor: { selector: selectors.header, property: 'cursor' },\n headerGap: { selector: selectors.header, property: 'gap' },\n textGrow: { selector: selectors.text, property: 'flex-grow' },\n textDirection: { selector: selectors.text, property: 'direction' },\n iconAnimationDuration: {\n selector: selectors.icon,\n property: 'transition-duration',\n },\n contentAnimationDuration: {\n selector: selectors.content,\n property: 'transition-duration',\n },\n },\n }),\n draggableMixin,\n componentNameValidationMixin,\n)(RawCollapsibleContainer);\n","import { CollapsibleContainerClass, componentName } from './component/CollapsibleContainerClass';\nimport globals from '@descope-ui/theme-globals';\nimport { getThemeRefs, createHelperVars } from '@descope-ui/common/theme-helpers';\n\n\nconst globalRefs = getThemeRefs(globals);\n\nconst compVars = CollapsibleContainerClass.cssVarList;\n\nconst [helperTheme, helperRefs, helperVars] = createHelperVars(\n {\n shadowColor: '#00000020', // if we want to support transparency vars, we should use different color format\n },\n componentName\n);\n\nconst { shadowColor } = helperRefs;\n\nconst collapsibleContainer = {\n ...helperTheme,\n\n [compVars.hostWidth]: '100%',\n [compVars.boxShadow]: 'none',\n\n [compVars.backgroundColor]: globalRefs.colors.surface.main,\n\n [compVars.backgroundImage]: '', // we need to set a value to avoid inner containers from inheriting the parent's background image\n [compVars.backgroundPositionX]: 'center',\n [compVars.backgroundPositionY]: 'center',\n [compVars.backgroundSize]: 'cover',\n [compVars.backgroundRepeat]: 'no-repeat',\n\n [compVars.borderRadius]: '0px',\n [compVars.hostDirection]: globalRefs.direction,\n\n [compVars.flexDirection]: 'column',\n [compVars.alignItems]: 'flex-start',\n [compVars.justifyContent]: 'flex-start',\n\n [compVars.headerGap]: globalRefs.spacing.md,\n\n [compVars.iconAnimationDuration]: '0.1s',\n [compVars.contentAnimationDuration]: '0.1s',\n\n [compVars.borderWidth]: '0px',\n [compVars.textGrow]: '0',\n\n verticalPadding: {\n sm: { [compVars.verticalPadding]: '5px' },\n md: { [compVars.verticalPadding]: '10px' },\n lg: { [compVars.verticalPadding]: '20px' },\n },\n\n horizontalPadding: {\n sm: { [compVars.horizontalPadding]: '5px' },\n md: { [compVars.horizontalPadding]: '10px' },\n lg: { [compVars.horizontalPadding]: '20px' },\n },\n\n spaceBetween: {\n sm: { [compVars.gap]: '10px' },\n md: { [compVars.gap]: '20px' },\n lg: { [compVars.gap]: '30px' },\n },\n\n shadow: {\n sm: {\n [compVars.boxShadow]: `${globalRefs.shadow.wide.sm} ${shadowColor}, ${globalRefs.shadow.narrow.sm} ${shadowColor}`,\n },\n md: {\n [compVars.boxShadow]: `${globalRefs.shadow.wide.md} ${shadowColor}, ${globalRefs.shadow.narrow.md} ${shadowColor}`,\n },\n lg: {\n [compVars.boxShadow]: `${globalRefs.shadow.wide.lg} ${shadowColor}, ${globalRefs.shadow.narrow.lg} ${shadowColor}`,\n },\n xl: {\n [compVars.boxShadow]: `${globalRefs.shadow.wide.xl} ${shadowColor}, ${globalRefs.shadow.narrow.xl} ${shadowColor}`,\n },\n '2xl': {\n [helperVars.shadowColor]: '#00000050', // mimic daisyUI shadow settings\n [compVars.boxShadow]: `${globalRefs.shadow.wide['2xl']} ${shadowColor}`,\n },\n },\n\n borderRadius: {\n sm: { [compVars.borderRadius]: globalRefs.radius.sm },\n md: { [compVars.borderRadius]: globalRefs.radius.md },\n lg: { [compVars.borderRadius]: globalRefs.radius.lg },\n xl: { [compVars.borderRadius]: globalRefs.radius.xl },\n '2xl': { [compVars.borderRadius]: globalRefs.radius['2xl'] },\n '3xl': { [compVars.borderRadius]: globalRefs.radius['3xl'] },\n },\n\n iconPosition: {\n 'left': { [compVars.headerIconOrder]: '0' },\n 'right': { [compVars.headerIconOrder]: '1' },\n },\n\n _fillTitle: {\n [compVars.textGrow]: '1',\n },\n\n _border: {\n [compVars.borderColor]: globalRefs.colors.surface.light,\n [compVars.borderWidth]: globalRefs.border.xs,\n [compVars.borderStyle]: 'solid',\n },\n\n _collapsible: {\n [compVars.headerCursor]: 'pointer',\n }\n};\n\nexport default collapsibleContainer;\n\nexport const vars = {\n ...compVars,\n ...helperVars,\n};\n","import {\n createStyleMixin,\n draggableMixin,\n componentNameValidationMixin,\n createDynamicDataMixin,\n} from '@descope-ui/common/components-mixins';\nimport { compose } from '@descope-ui/common/utils';\nimport {\n forwardAttrs,\n getComponentName,\n injectStyle,\n} from '@descope-ui/common/components-helpers';\nimport { createBaseClass } from '@descope-ui/common/base-classes';\nimport { TextClass } from '@descope-ui/descope-text/class';\n\nexport const componentName = getComponentName('recovery-codes');\n\nconst itemRenderer = ({ value }, _, ref) => {\n return `\n <descope-text variant=\"${ref.variant}\" mode=\"${ref.mode}\">\n <span>${value}</span>\n </descope-text>\n `;\n};\n\nclass RawRecoveryCodes extends createBaseClass({\n componentName,\n baseSelector: ':host > div',\n}) {\n static get observedAttributes() {\n return ['readonly'];\n }\n\n constructor() {\n super();\n\n this.attachShadow({ mode: 'open' }).innerHTML = `\n <div class=\"wrapper\">\n <div class=\"list\"></div>\n <descope-text class=\"icon-wrapper\">\n <vaadin-icon class=\"icon\" icon=\"vaadin:copy-o\" title=\"Copy\"></vaadin-icon>\n </descope-text>\n </div>\n `;\n\n this.list = this.shadowRoot.querySelector('.list');\n this.icon = this.shadowRoot.querySelector('.icon');\n this.iconWrapper = this.shadowRoot.querySelector('.icon-wrapper');\n\n injectStyle(\n `\n :host {\n display: inline-block;\n position: relative;\n }\n .wrapper {\n display: flex;\n justify-content: space-between;\n }\n .list {\n display: flex;\n flex-grow: 1;\n flex-direction: column;\n }\n descope-text span {\n display: inline-flex;\n align-items: center;\n width: fit-content;\n }\n descope-text span::before {\n content: '\\\\02022';\n transform: translateY(-0.06em);\n }\n .icon-wrapper {\n align-self: flex-start;\n }\n .icon {\n cursor: pointer;\n }\n .icon.copied {\n cursor: initial;\n }\n .icon.readonly {\n pointer-events: none;\n }\n `,\n this,\n );\n }\n\n get variant() {\n return this.getAttribute('variant');\n }\n\n get mode() {\n return this.getAttribute('mode');\n }\n\n init() {\n super.init();\n\n this.icon.addEventListener('click', this.onCopy.bind(this));\n\n forwardAttrs(this, this.iconWrapper, { includeAttrs: ['variant', 'mode'] });\n }\n\n onCopy() {\n navigator.clipboard.writeText(\n String(this.data.map((rc) => rc.value).join('\\n')),\n );\n\n this.icon.setAttribute('icon', 'vaadin:check-circle-o');\n this.icon.setAttribute('title', 'Copied');\n this.icon.classList.add('copied');\n\n setTimeout(() => {\n this.icon.setAttribute('icon', 'vaadin:copy-o');\n this.icon.setAttribute('title', 'Copy');\n this.icon.classList.remove('copied');\n }, 5000);\n }\n\n onReadOnly(isReadOnly) {\n this.icon.classList.toggle('readonly', isReadOnly);\n }\n\n attributeChangedCallback(attrName, oldValue, newValue) {\n super.attributeChangedCallback?.(attrName, oldValue, newValue);\n\n if (newValue !== oldValue) {\n if (attrName === 'readonly') {\n this.onReadOnly(newValue === 'true');\n }\n }\n }\n}\n\nexport const RecoveryCodesClass = compose(\n createStyleMixin({\n mappings: {\n hostWidth: { selector: () => ':host', property: 'width' },\n hostMinWidth: { selector: () => ':host', property: 'min-width' },\n hostDirection: [\n { selector: () => ':host', property: 'direction' },\n {\n selector: () => TextClass.componentName,\n property: TextClass.cssVarList.hostDirection,\n },\n ],\n textAlign: { selector: () => '.list', property: 'align-items' },\n iconColor: { selector: () => 'vaadin-icon', property: 'color' },\n iconSize: { selector: () => 'vaadin-icon', property: 'font-size' },\n iconGap: { selector: () => '.wrapper', property: 'gap' },\n bulletGap: { selector: () => 'descope-text span', property: 'gap' },\n },\n }),\n createDynamicDataMixin({\n itemRenderer,\n rerenderAttrsList: ['variant', 'mode'],\n targetSelector: '.list',\n }),\n draggableMixin,\n componentNameValidationMixin,\n)(RawRecoveryCodes);\n","import globals from '@descope-ui/theme-globals';\nimport { getThemeRefs, useVar } from '@descope-ui/common/theme-helpers';\nimport { TextClass } from '@descope-ui/descope-text/class';\nimport { RecoveryCodesClass } from './component/RecoveryCodesClass';\n\nconst globalRefs = getThemeRefs(globals);\nconst vars = RecoveryCodesClass.cssVarList;\nconst textVars = TextClass.cssVarList;\n\nconst recoveryCodes = {\n [vars.hostMinWidth]: '190px',\n [vars.hostDirection]: globalRefs.direction,\n [vars.iconColor]: useVar(textVars.textColor),\n [vars.iconSize]: useVar(textVars.fontSize),\n [vars.iconGap]: '8px',\n [vars.bulletGap]: '0.35em',\n\n textAlign: {\n right: { [vars.textAlign]: 'flex-end' },\n left: { [vars.textAlign]: 'flex-start' },\n center: { [vars.textAlign]: 'center' },\n },\n\n _fullWidth: {\n [vars.hostWidth]: '100%',\n },\n};\n\nexport default recoveryCodes;\nexport { vars };\n","import { compose } from '@descope-ui/common/utils';\nimport {\n limitAbbreviation,\n getComponentName,\n injectStyle,\n} from '@descope-ui/common/components-helpers';\nimport {\n createStyleMixin,\n draggableMixin,\n componentNameValidationMixin,\n createDynamicDataMixin,\n} from '@descope-ui/common/components-mixins';\nimport { createBaseClass } from '@descope-ui/common/base-classes';\nimport { IconClass } from '@descope-ui/descope-icon/class';\nimport { TextClass } from '@descope-ui/descope-text/class';\nimport { ListClass } from '@descope-ui/descope-list/class';\nimport { ListItemClass } from '@descope-ui/descope-list-item/class';\n\nexport const componentName = getComponentName('outbound-apps');\n\nconst itemRenderer = (\n { name, description, logo, appId, isConnected },\n _,\n ref,\n) => {\n const action = isConnected ? 'disconnect' : 'connect';\n return `\n <descope-list-item>\n <descope-avatar\n ${logo ? `img=\"${logo}\"` : ''}\n ${name ? `display-name=\"${name}\" abbr=${limitAbbreviation(name)}` : ''}\n size=${ref.size}\n ${logo ? 'st-avatar-background-color=\"none\"' : ''}\n class=\"app-logo\"\n ></descope-avatar>\n\n <div class=\"content\">\n <descope-text\n class=\"app-title\"\n variant=\"subtitle1\"\n mode=\"primary\"\n >${name}</descope-text>\n ${\n description\n ? `\n <descope-text\n class=\"app-description\"\n variant=\"body2\"\n mode=\"primary\"\n >${description}</descope-text>\n `\n : ''\n }\n </div>\n <div class=\"controls\">\n <descope-button variant=\"link\" mode=\"primary\" size=${ref.size} data-action=\"${action}\" data-outbound-app-id=\"${appId}\" data-id=\"${action}\">\n ${isConnected ? ref.disconnectButtonLabel : ref.connectButtonLabel}\n </descope-button>\n </div>\n </descope-list-item>\n`;\n};\n\nconst BaseClass = createBaseClass({\n componentName,\n baseSelector: 'descope-list',\n});\n\nclass RawOutboundAppsClass extends BaseClass {\n constructor() {\n super();\n\n this.attachShadow({ mode: 'open' }).innerHTML = `\n <descope-list>\n <slot name=\"empty-state\" slot=\"empty-state\"></slot>\n </descope-list>\n `;\n\n this.appsList = this.shadowRoot.querySelector('descope-list');\n\n injectStyle(\n `\n :host {\n width: 100%;\n }\n .controls {\n display: flex;\n min-width: 8em;\n justify-content: end;\n }\n .content {\n flex-grow: 1;\n display: flex;\n flex-direction: column;\n }\n .app-title,\n .app-description {\n display: flex;\n direction: inherit;\n }\n descope-list {\n display: block;\n }\n `,\n this,\n );\n }\n\n init() {\n super.init?.();\n\n this.appsList.itemRenderer = itemRenderer;\n\n this.appsList.addEventListener('click', this.onAppsListClick.bind(this));\n }\n\n get readonly() {\n return this.getAttribute('readonly') === 'true';\n }\n\n onAppsListClick(e) {\n if (!this.readonly) {\n const id = e.srcElement.getAttribute('data-outbound-app-id');\n const action = e.srcElement.getAttribute('data-action');\n if (id && action) {\n this.dispatchEvent(\n new CustomEvent(`${action}-clicked`, {\n bubbles: true,\n detail: { id, action },\n }),\n );\n }\n }\n }\n\n get size() {\n return this.getAttribute('size') || 'sm';\n }\n\n get connectButtonLabel() {\n return this.getAttribute('connect-button-label') || 'Connect';\n }\n\n get disconnectButtonLabel() {\n return this.getAttribute('disconnect-button-label') || 'Disconnect';\n }\n}\n\nconst { host } = {\n host: { selector: () => ':host' },\n};\n\nexport const OutboundAppsClass = compose(\n createStyleMixin({\n mappings: {\n hostWidth: { ...host, property: 'width' },\n minHeight: { selector: () => ':host' },\n hostDirection: [\n { ...host, property: 'direction' },\n {\n selector: 'descope-list',\n property: 'direction',\n },\n {\n selector: 'descope-list-item',\n property: 'direction',\n },\n ],\n iconColor: {\n selector: () => ' descope-icon',\n property: IconClass.cssVarList.fill,\n },\n errorIconColor: {\n selector: () => ' descope-icon.error-icon',\n property: IconClass.cssVarList.fill,\n },\n fontSize: {\n selector: TextClass.componentName,\n property: TextClass.cssVarList.fontSize,\n },\n appLogoGap: {\n selector: () => ' .app-logo',\n property: 'margin-inline-end',\n },\n contentGap: {\n selector: () => ' .content',\n property: 'gap',\n },\n itemsTextAlign: {\n selector: TextClass.componentName,\n property: TextClass.cssVarList.textAlign,\n },\n itemCursor: {\n selector: ListItemClass.componentName,\n property: ListItemClass.cssVarList.cursor,\n },\n itemOutline: {\n selector: ListItemClass.componentName,\n property: ListItemClass.cssVarList.outline,\n },\n itemBorderColor: {\n selector: ListItemClass.componentName,\n property: ListItemClass.cssVarList.borderColor,\n },\n itemBackgroundColor: {\n selector: ListItemClass.componentName,\n property: ListItemClass.cssVarList.backgroundColor,\n },\n listBorderWidth: {\n selector: () => ListClass.componentName,\n property: ListClass.cssVarList.borderWidth,\n },\n listBoxShadow: {\n selector: () => ListClass.componentName,\n property: ListClass.cssVarList.boxShadow,\n },\n listPadding: [\n {\n selector: () => ListClass.componentName,\n property: ListClass.cssVarList.verticalPadding,\n },\n {\n selector: () => ListClass.componentName,\n property: ListClass.cssVarList.horizontalPadding,\n },\n ],\n },\n }),\n draggableMixin,\n createDynamicDataMixin({\n itemRenderer,\n rerenderAttrsList: [\n 'size',\n 'connect-button-label',\n 'disconnect-button-label',\n ],\n }),\n componentNameValidationMixin,\n)(RawOutboundAppsClass);\n","import { OutboundAppsClass } from './component/OutboundAppsClass';\nimport globals from '@descope-ui/theme-globals';\n\nexport const vars = OutboundAppsClass.cssVarList;\n\nconst outboundApps = {\n [vars.iconColor]: globals.colors.primary.main,\n [vars.errorIconColor]: globals.colors.error.main,\n\n [vars.appLogoGap]: globals.spacing.md,\n [vars.contentGap]: globals.spacing.xs,\n\n // list-item overrides\n [vars.itemCursor]: 'default',\n [vars.itemOutline]: 'none',\n [vars.itemBorderColor]: 'transparent',\n\n [vars.listPadding]: '0',\n [vars.listBorderWidth]: '0',\n [vars.listBoxShadow]: 'none',\n\n size: {\n xs: {\n [vars.fontSize]: '0.6em',\n },\n sm: {\n [vars.fontSize]: '0.8em',\n },\n md: {\n [vars.fontSize]: '1em',\n },\n lg: {\n [vars.fontSize]: '1.5em',\n },\n },\n};\n\nexport default outboundApps;\n","import {\n componentNameValidationMixin,\n createStyleMixin,\n draggableMixin,\n} from '@descope-ui/common/components-mixins';\nimport {\n forwardAttrs,\n getComponentName,\n injectStyle,\n} from '@descope-ui/common/components-helpers';\nimport { compose } from '@descope-ui/common/utils';\nimport { createBaseClass } from '@descope-ui/common/base-classes';\nimport { ButtonClass } from '@descope-ui/descope-button/class';\n\nexport const componentName = getComponentName('outbound-app-button');\n\nclass RawOutboundAppButton extends createBaseClass({\n componentName,\n baseSelector: ':host > descope-button',\n}) {\n static get observedAttributes() {\n return ['label', 'icon-src', 'icon-fill-current-color'];\n }\n\n constructor() {\n super();\n\n this.attachShadow({ mode: 'open' }).innerHTML = `\n <descope-button>\n <descope-icon class=\"icon\"></descope-icon>\n <span class=\"label\"></span>\n </descope-button>\n `;\n\n injectStyle(`\n :host {\n display: inline-block;\n }\n .hidden {\n display: none;\n }\n `, this);\n\n this.button = this.shadowRoot.querySelector('descope-button');\n this.icon = this.shadowRoot.querySelector('.icon');\n this.label = this.shadowRoot.querySelector('.label');\n }\n\n init() {\n super.init?.();\n\n forwardAttrs(this, this.button, {\n excludeAttrs: [\n 'style',\n 'class',\n 'label',\n 'icon-src',\n 'icon-fill-current-color',\n ]\n });\n }\n\n updateLabel(val = '') {\n this.label.textContent = val;\n this.label.classList.toggle('hidden', !val);\n }\n\n updateIcon(val = '') {\n this.icon.setAttribute('src', val);\n this.icon.classList.toggle('hidden', !val);\n }\n\n attributeChangedCallback(attrName, oldValue, newValue) {\n super.attributeChangedCallback?.(attrName, oldValue, newValue);\n\n if (oldValue !== newValue) {\n if (attrName === 'label') {\n this.updateLabel(newValue);\n } else if (attrName === 'icon-src') {\n this.updateIcon(newValue);\n }\n }\n }\n}\n\nexport const OutboundAppButtonClass = compose(\n createStyleMixin({\n mappings: {\n hostWidth: {\n selector: () => ':host',\n property: 'width'\n },\n iconFillCurrentColor: {\n selector: () => 'descope-icon',\n property: ButtonClass.cssVarList.iconColor\n }\n },\n }),\n draggableMixin,\n componentNameValidationMixin,\n)(RawOutboundAppButton);\n","import { OutboundAppButtonClass } from './component/OutboundAppButtonClass';\n\nconst compVars = OutboundAppButtonClass.cssVarList;\n\nconst outboundAppButton = {\n [compVars.iconFillCurrentColor]: 'inherit',\n\n _iconFillCurrentColor: {\n [compVars.iconFillCurrentColor]: 'currentColor',\n },\n\n _fullWidth: {\n [compVars.hostWidth]: '100%',\n },\n};\n\nexport default outboundAppButton;\n\nexport const vars = compVars;\n","import desktopDeviceIconLight from './icons/desktop-device-light.svg';\nimport mobileDeviceIconLight from './icons/mobile-device-light.svg';\nimport tabletDeviceIconLight from './icons/tablet-device-light.svg';\nimport unknownDeviceIconLight from './icons/unknown-device-light.svg';\nimport desktopDeviceIconDark from './icons/desktop-device-dark.svg';\nimport mobileDeviceIconDark from './icons/mobile-device-dark.svg';\nimport tabletDeviceIconDark from './icons/tablet-device-dark.svg';\nimport unknownDeviceIconDark from './icons/unknown-device-dark.svg';\n\nconst ensureDate = (loginDate) => {\n const numVal = parseInt(loginDate, 10);\n if (Number.isNaN(numVal)) return 0;\n return numVal;\n}\n\nexport const sortFn = (a, b) =>\n ensureDate(b.lastLoginDate) - ensureDate(a.lastLoginDate);\n\nexport const parseDate = (epoch, format) => {\n if (Number.isNaN(parseInt(epoch, 10))) return '';\n\n const date = new Date(epoch);\n const year = date.getFullYear();\n const month = String(date.getMonth() + 1).padStart(2, '0');\n const day = String(date.getDate()).padStart(2, '0');\n const time = date.toLocaleTimeString('en-US', {\n hour12: false,\n hour: '2-digit',\n minute: '2-digit',\n });\n\n const formatMap = {\n 'DD-MM-YYYY': `${day}/${month}/${year}`,\n 'YYYY-MM-DD': `${year}/${month}/${day}`,\n 'MM-DD-YYYY': `${month}/${day}/${year}`,\n };\n\n const dateStr = formatMap[format] || formatMap['MM/DD/YYYY'];\n return `${dateStr} ${time}`;\n};\n\nexport const deviceIconMap = {\n desktop: {\n light: desktopDeviceIconLight,\n dark: desktopDeviceIconDark,\n },\n mobile: {\n light: mobileDeviceIconLight,\n dark: mobileDeviceIconDark,\n },\n tablet: {\n light: tabletDeviceIconLight,\n dark: tabletDeviceIconDark,\n },\n unknown: {\n light: unknownDeviceIconLight,\n dark: unknownDeviceIconDark,\n },\n};\n\nexport const getDeviceIcon = (deviceType) => {\n const icon = deviceIconMap[deviceType] || deviceIconMap.unknown;\n return {\n iconSrc: icon.light,\n iconSrcDark: icon.dark,\n };\n};\n","export default \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTIwIDE4QzIxLjEgMTggMjEuOTkgMTcuMSAyMS45OSAxNkwyMiA2QzIyIDQuOSAyMS4xIDQgMjAgNEg0QzIuOSA0IDIgNC45IDIgNlYxNkMyIDE3LjEgMi45IDE4IDQgMThIMFYyMEgyNFYxOEgyMFpNNCA2SDIwVjE2SDRWNloiIGZpbGw9IiM2MzZDNzQiLz4KPC9zdmc+Cg==\"","export default \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjUiIHZpZXdCb3g9IjAgMCAyNCAyNSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTIwIDE4LjVDMjEuMSAxOC41IDIxLjk5IDE3LjYgMjEuOTkgMTYuNUwyMiA2LjVDMjIgNS40IDIxLjEgNC41IDIwIDQuNUg0QzIuOSA0LjUgMiA1LjQgMiA2LjVWMTYuNUMyIDE3LjYgMi45IDE4LjUgNCAxOC41SDBWMjAuNUgyNFYxOC41SDIwWk00IDYuNUgyMFYxNi41SDRWNi41WiIgZmlsbD0iI0Y0RjVGNiIvPgo8L3N2Zz4K\"","export default \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTE2IDFIOEM2LjM0IDEgNSAyLjM0IDUgNFYyMEM1IDIxLjY2IDYuMzQgMjMgOCAyM0gxNkMxNy42NiAyMyAxOSAyMS42NiAxOSAyMFY0QzE5IDIuMzQgMTcuNjYgMSAxNiAxWk0xNyAxOEg3VjRIMTdWMThaTTE0IDIxSDEwVjIwSDE0VjIxWiIgZmlsbD0iIzYzNkM3NCIvPgo8L3N2Zz4K\"","export default \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjUiIHZpZXdCb3g9IjAgMCAyNCAyNSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTE2IDEuNUg4QzYuMzQgMS41IDUgMi44NCA1IDQuNVYyMC41QzUgMjIuMTYgNi4zNCAyMy41IDggMjMuNUgxNkMxNy42NiAyMy41IDE5IDIyLjE2IDE5IDIwLjVWNC41QzE5IDIuODQgMTcuNjYgMS41IDE2IDEuNVpNMTcgMTguNUg3VjQuNUgxN1YxOC41Wk0xNCAyMS41SDEwVjIwLjVIMTRWMjEuNVoiIGZpbGw9IiNGNEY1RjYiLz4KPC9zdmc+Cg==\"","export default \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjUiIHZpZXdCb3g9IjAgMCAyNCAyNSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzUyNTJfNzY4KSI+CjxwYXRoIGQ9Ik0xOC41IDAuNUg0LjVDMy4xMiAwLjUgMiAxLjYyIDIgM1YyMkMyIDIzLjM4IDMuMTIgMjQuNSA0LjUgMjQuNUgxOC41QzE5Ljg4IDI0LjUgMjEgMjMuMzggMjEgMjJWM0MyMSAxLjYyIDE5Ljg4IDAuNSAxOC41IDAuNVpNMTEuNSAyMy41QzEwLjY3IDIzLjUgMTAgMjIuODMgMTAgMjJDMTAgMjEuMTcgMTAuNjcgMjAuNSAxMS41IDIwLjVDMTIuMzMgMjAuNSAxMyAyMS4xNyAxMyAyMkMxMyAyMi44MyAxMi4zMyAyMy41IDExLjUgMjMuNVpNMTkgMTkuNUg0VjMuNUgxOVYxOS41WiIgZmlsbD0iIzYzNkM3NCIvPgo8L2c+CjxkZWZzPgo8Y2xpcFBhdGggaWQ9ImNsaXAwXzUyNTJfNzY4Ij4KPHJlY3Qgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiBmaWxsPSJ3aGl0ZSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCAwLjUpIi8+CjwvY2xpcFBhdGg+CjwvZGVmcz4KPC9zdmc+Cg==\"","export default \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjUiIHZpZXdCb3g9IjAgMCAyNCAyNSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzUzMDNfODYzKSI+CjxwYXRoIGQ9Ik0xOC41IDAuNUg0LjVDMy4xMiAwLjUgMiAxLjYyIDIgM1YyMkMyIDIzLjM4IDMuMTIgMjQuNSA0LjUgMjQuNUgxOC41QzE5Ljg4IDI0LjUgMjEgMjMuMzggMjEgMjJWM0MyMSAxLjYyIDE5Ljg4IDAuNSAxOC41IDAuNVpNMTEuNSAyMy41QzEwLjY3IDIzLjUgMTAgMjIuODMgMTAgMjJDMTAgMjEuMTcgMTAuNjcgMjAuNSAxMS41IDIwLjVDMTIuMzMgMjAuNSAxMyAyMS4xNyAxMyAyMkMxMyAyMi44MyAxMi4zMyAyMy41IDExLjUgMjMuNVpNMTkgMTkuNUg0VjMuNUgxOVYxOS41WiIgZmlsbD0iI0Y0RjVGNiIvPgo8L2c+CjxkZWZzPgo8Y2xpcFBhdGggaWQ9ImNsaXAwXzUzMDNfODYzIj4KPHJlY3Qgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiBmaWxsPSJ3aGl0ZSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCAwLjUpIi8+CjwvY2xpcFBhdGg+CjwvZGVmcz4KPC9zdmc+Cg==\"","export default \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjUiIHZpZXdCb3g9IjAgMCAyNCAyNSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTQgNi41SDIyVjQuNUg0QzIuOSA0LjUgMiA1LjQgMiA2LjVWMTcuNUgwVjIwLjVIMTRWMTcuNUg0VjYuNVpNMjMgOC41SDE3QzE2LjQ1IDguNSAxNiA4Ljk1IDE2IDkuNVYxOS41QzE2IDIwLjA1IDE2LjQ1IDIwLjUgMTcgMjAuNUgyM0MyMy41NSAyMC41IDI0IDIwLjA1IDI0IDE5LjVWOS41QzI0IDguOTUgMjMuNTUgOC41IDIzIDguNVpNMjIgMTcuNUgxOFYxMC41SDIyVjE3LjVaIiBmaWxsPSIjNjM2Qzc0Ii8+Cjwvc3ZnPgo=\"","export default \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTQgNkgyMlY0SDRDMi45IDQgMiA0LjkgMiA2VjE3SDBWMjBIMTRWMTdINFY2Wk0yMyA4SDE3QzE2LjQ1IDggMTYgOC40NSAxNiA5VjE5QzE2IDE5LjU1IDE2LjQ1IDIwIDE3IDIwSDIzQzIzLjU1IDIwIDI0IDE5LjU1IDI0IDE5VjlDMjQgOC40NSAyMy41NSA4IDIzIDhaTTIyIDE3SDE4VjEwSDIyVjE3WiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg==\"","import { compose } from '@descope-ui/common/utils';\nimport {\n getComponentName,\n injectStyle,\n} from '@descope-ui/common/components-helpers';\nimport {\n createStyleMixin,\n draggableMixin,\n componentNameValidationMixin,\n createDynamicDataMixin,\n} from '@descope-ui/common/components-mixins';\nimport { createBaseClass } from '@descope-ui/common/base-classes';\nimport { BadgeClass } from '@descope-ui/descope-badge/class';\nimport { ListClass } from '@descope-ui/descope-list/class';\nimport { ListItemClass } from '@descope-ui/descope-list-item/class';\nimport { getDeviceIcon, parseDate, sortFn } from './helpers';\n\nexport const componentName = getComponentName('trusted-devices');\n\nconst itemRenderer = (\n { id, name, lastLoginDate, deviceType, isCurrent },\n _,\n ref,\n) => {\n const itemClassName = isCurrent ? 'class=\"current-device\"' : '';\n\n const { iconSrc, iconSrcDark } = getDeviceIcon(deviceType);\n\n const loginLabel = ref.lastLoginLabel ? `${ref.lastLoginLabel} ` : '';\n\n const loginDate = parseDate(lastLoginDate, ref.format);\n\n const badge = isCurrent\n ? `<descope-badge\n bordered=\"true\"\n size=\"xs\"\n mode=\"primary\"\n st-host-direction=\"${ref.direction}\"\n >\n ${ref.currentDeviceLabel}\n </descope-badge>`\n : '';\n\n const removeDeviceLink =\n !ref.hideActions && !isCurrent\n ? `<descope-link\n class=\"remove-device\"\n variant=\"body1\"\n mode=\"primary\"\n data-action=\"remove-device\"\n data-device-id=\"${id}\"\n st-host-direction=\"${ref.direction}\"\n ellipsis=\"true\"\n >\n ${ref.removeDeviceLabel}\n </descope-link>`\n : '';\n\n const template = document.createElement('template');\n\n template.innerHTML = `\n <descope-list-item ${itemClassName}>\n <div class=\"content\">\n <div class=\"main\">\n <span class=\"device\">\n <descope-icon\n class=\"device-icon\"\n src=\"${iconSrc}\"\n src-dark=\"${iconSrcDark}\">\n </descope-icon>\n <descope-text\n class=\"device-name\"\n variant=\"body1\"\n mode=\"primary\">\n </descope-text>\n </span>\n <span class=\"panel\">\n ${badge}\n ${removeDeviceLink}\n </span>\n </div>\n <div class=\"meta\">\n <descope-text\n variant=\"body2\"\n mode=\"primary\"\n >\n ${loginLabel}\n </descope-text>\n <descope-text\n class=\"login-date\"\n variant=\"body2\"\n mode=\"primary\"\n >\n ${loginDate}\n </descope-text>\n </div>\n </div>\n </descope-list-item>\n `;\n\n // we return a template instead of returning a string so we can avoid XSS on device name\n template.content.querySelector('.device-name').textContent = name;\n return template;\n};\n\nconst BaseClass = createBaseClass({\n componentName,\n baseSelector: ListClass.componentName,\n});\n\nclass RawTrustedDevicesClass extends BaseClass {\n constructor() {\n super();\n\n this.attachShadow({ mode: 'open' }).innerHTML = `\n <descope-list>\n <slot name=\"empty-state\" slot=\"empty-state\"></slot>\n </descope-list>\n `;\n\n this.appsList = this.shadowRoot.querySelector('descope-list');\n\n injectStyle(\n `\n :host {\n display: inline-block;\n }\n\n .descope-list-item {\n min-width: 0;\n }\n\n .current-device {\n order: -1;\n }\n\n .content {\n display: flex;\n flex-direction: column;\n width: 100%;\n }\n\n .main {\n display: flex;\n align-items: center;\n justify-content: space-between;\n }\n\n .panel {\n display: flex;\n flex-shrink: 0;\n max-width: 75%;\n overflow: hidden;\n }\n\n .device {\n display: flex;\n min-width: 0;\n }\n\n .device-icon {\n flex-shrink: 0;\n }\n\n .meta {\n display: flex;\n }\n\n .login-date {\n min-width: fit-content;\n }\n\n descope-badge {\n min-width: 0;\n }\n\n descope-text {\n display: flex;\n align-items: center; \n min-width: 0;\n }\n descope-text::part(text-wrapper) {\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n }\n\n descope-link {\n overflow: hidden;\n }\n descope-link.remove-device::part(wrapper) {\n display: flex;\n width: 100%;\n }\n descope-link.remove-device {\n width: 100%;\n }\n `,\n this,\n );\n }\n\n init() {\n super.init?.();\n\n this.appsList.itemRenderer = itemRenderer;\n\n this.appsList.addEventListener('click', this.onRemoveClick.bind(this));\n }\n\n onRemoveClick(e) {\n if (this.readOnly) return;\n\n const target = e.target.closest('[data-device-id]');\n const deviceId = target?.getAttribute('data-device-id');\n\n if (deviceId) {\n this.dispatchEvent(\n new CustomEvent('remove-device-clicked', {\n bubbles: true,\n detail: { id: deviceId, action: 'remove-device' },\n }),\n );\n }\n }\n\n get readOnly() {\n return this.getAttribute('readonly') === 'true';\n }\n\n get hideActions() {\n return this.getAttribute('hide-actions') === 'true';\n }\n\n get format() {\n return this.getAttribute('format')?.toUpperCase() || 'MM-DD-YYYY';\n }\n\n get removeDeviceLabel() {\n return this.getAttribute('remove-device-label') || 'Sign out';\n }\n\n get currentDeviceLabel() {\n return this.getAttribute('current-device-label') || 'Current device';\n }\n\n get lastLoginLabel() {\n return this.getAttribute('last-login-label') || 'Last login:';\n }\n\n get direction() {\n return this.getAttribute('st-host-direction');\n }\n}\n\nconst { host } = {\n host: { selector: () => ':host' },\n};\n\nexport const TrustedDevicesClass = compose(\n createStyleMixin({\n mappings: {\n hostWidth: { ...host, property: 'width' },\n hostMinWidth: { ...host, property: 'min-width' },\n hostDirection: [\n { ...host, property: 'direction' },\n {\n selector: () => 'descope-list-item',\n property: 'direction',\n },\n {\n selector: () => 'descope-text',\n property: 'direction',\n },\n ],\n\n listItemsGap: {\n property: ListClass.cssVarList.gap,\n },\n listBackgroundColor: {\n selector: () => ListClass.componentName,\n property: ListClass.cssVarList.backgroundColor,\n },\n listBorderRadius: {\n selector: () => ListClass.componentName,\n property: ListClass.cssVarList.borderRadius,\n },\n listBorderWidth: {\n selector: () => ListClass.componentName,\n property: ListClass.cssVarList.borderWidth,\n },\n listBoxShadow: {\n selector: () => ListClass.componentName,\n property: ListClass.cssVarList.boxShadow,\n },\n listPadding: [\n {\n selector: () => ListClass.componentName,\n property: ListClass.cssVarList.verticalPadding,\n },\n {\n selector: () => ListClass.componentName,\n property: ListClass.cssVarList.horizontalPadding,\n },\n ],\n\n itemVerticalPadding: {\n selector: ListItemClass.componentName,\n property: ListItemClass.cssVarList.verticalPadding,\n },\n itemHorizontalPadding: {\n selector: ListItemClass.componentName,\n property: ListItemClass.cssVarList.horizontalPadding,\n },\n itemCursor: {\n selector: ListItemClass.componentName,\n property: ListItemClass.cssVarList.cursor,\n },\n itemOutline: {\n selector: ListItemClass.componentName,\n property: ListItemClass.cssVarList.outline,\n },\n itemBorderColor: {\n selector: ListItemClass.componentName,\n property: ListItemClass.cssVarList.borderColor,\n },\n itemBorderRadius: {\n selector: ListItemClass.componentName,\n property: ListItemClass.cssVarList.borderRadius,\n },\n itemBackgroundColor: {\n selector: ListItemClass.componentName,\n property: ListItemClass.cssVarList.backgroundColor,\n },\n itemContentGap: {\n selector: () => '.content',\n property: 'gap',\n },\n\n badgeBorderColor: {\n selector: BadgeClass.componentName,\n property: BadgeClass.cssVarList.borderColor,\n },\n badgeTextColor: {\n selector: BadgeClass.componentName,\n property: BadgeClass.cssVarList.textColor,\n },\n badgeBackgroundColor: {\n selector: BadgeClass.componentName,\n property: BadgeClass.cssVarList.backgroundColor,\n },\n badgeBorderRadius: {\n selector: BadgeClass.componentName,\n property: BadgeClass.cssVarList.borderRadius,\n },\n\n devicePanelGap: {\n selector: () => '.main',\n property: 'gap',\n },\n deviceIconGap: {\n selector: () => '.device',\n property: 'gap',\n },\n deviceIconSize: [\n {\n selector: () => '.device-icon',\n property: 'width',\n },\n {\n selector: () => '.device-icon',\n property: 'height',\n },\n ],\n\n lastLoginLabelGap: {\n selector: ' .meta',\n property: 'gap',\n },\n },\n }),\n draggableMixin,\n createDynamicDataMixin({\n itemRenderer,\n sortFn,\n rerenderAttrsList: [\n 'remove-device-label',\n 'current-device-label',\n 'last-login-label',\n 'format',\n 'hide-actions',\n ],\n }),\n componentNameValidationMixin,\n)(RawTrustedDevicesClass);\n","import { TrustedDevicesClass } from './component/TrustedDevicesClass';\nimport globals from '@descope-ui/theme-globals';\n\nexport const vars = TrustedDevicesClass.cssVarList;\n\nconst TrustedDevices = {\n [vars.hostWidth]: 'auto',\n [vars.hostWidth]: '300px',\n [vars.hostMinWidth]: '300px',\n\n [vars.listBackgroundColor]: 'transparent',\n [vars.listBorderRadius]: '0',\n [vars.listBorderWidth]: '0',\n [vars.listPadding]: '0',\n [vars.listBoxShadow]: 'none',\n [vars.listItemsGap]: globals.spacing.lg,\n\n [vars.itemBorderColor]: globals.colors.surface.light,\n [vars.itemVerticalPadding]: globals.spacing.lg,\n [vars.itemHorizontalPadding]: globals.spacing.lg,\n [vars.itemBorderRadius]: globals.radius.xs,\n [vars.itemOutline]: 'transparent',\n [vars.itemBackgroundColor]: 'transparent',\n [vars.itemCursor]: 'default',\n [vars.itemContentGap]: globals.spacing.sm,\n\n [vars.badgeBorderColor]: globals.colors.surface.light,\n [vars.badgeTextColor]: globals.colors.surface.dark,\n [vars.badgeBorderRadius]: globals.radius.xs,\n [vars.badgeBackgroundColor]: globals.colors.surface.main,\n\n [vars.devicePanelGap]: globals.spacing.md,\n [vars.deviceIconGap]: globals.spacing.md,\n [vars.deviceIconSize]: '24px',\n [vars.lastLoginLabelGap]: globals.spacing.xs,\n\n _fullWidth: {\n [vars.hostWidth]: '100%',\n },\n};\n\nexport default TrustedDevices;\n","import {\n componentNameValidationMixin,\n portalMixin,\n} from '@descope-ui/common/components-mixins';\nimport { compose } from '@descope-ui/common/utils';\nimport {\n forwardAttrs,\n getComponentName,\n} from '@descope-ui/common/components-helpers';\nimport { createBaseClass } from '@descope-ui/common/base-classes';\nimport { EnrichedTextClass } from '@descope-ui/descope-enriched-text/class';\n\nexport const componentName = getComponentName('tooltip');\n\nconst tooltipAttrs = [\n 'text',\n 'position',\n 'hide-delay',\n 'hover-delay',\n 'opened',\n];\n\nconst BaseClass = createBaseClass({\n componentName,\n baseSelector: 'vaadin-tooltip',\n});\n\nclass RawTooltip extends BaseClass {\n static get observedAttributes() {\n return tooltipAttrs.concat(BaseClass.observedAttributes || []);\n }\n\n get isOpened() {\n return this.getAttribute('opened') === 'true';\n }\n\n get overlay() {\n return this.tooltip?._overlayElement;\n }\n\n get overlayContentNode() {\n return this.overlay?.shadowRoot.querySelector('[part=\"content\"]');\n }\n\n get tooltipText() {\n return this.getAttribute('text')?.trim() || '';\n }\n\n get isStaticDisplay() {\n return this.getAttribute('static-display') === 'true';\n }\n\n // We use `static-display` for presentation purposes, to show the tooltip content.\n // This should be used only when `opened` is `true`. Once `static-display` is set,\n // the overlay would become a `static` element, and will have layout in the presenting page.\n // This is mainly aimed to solve the presentation problem on our Styles Page in the Console.\n #handleStaticDisplay() {\n if (this.isStaticDisplay) {\n this.#revealWrappedParts();\n this.setAttribute('inert', 'true');\n } else {\n this.#hideWrappedParts();\n this.removeAttribute('inert');\n }\n }\n\n init() {\n super.init();\n\n // Create the vaadin-tooltip here instead of constructor (for React compatibility)\n this.style.display = 'contents';\n this.insertAdjacentHTML('beforeend', '<vaadin-tooltip></vaadin-tooltip>');\n this.tooltip = this.querySelector('vaadin-tooltip');\n\n this.#hideWrappedParts();\n\n this.#setTooltipTarget();\n\n setTimeout(() => this.#onOverlayReady());\n }\n\n #hideWrappedParts() {\n this.tooltip.style.width = '0';\n this.tooltip.style.height = '0';\n this.tooltip.style.display = 'block';\n this.tooltip.style.overflow = 'hidden';\n this.tooltip.style.position = 'absolute';\n }\n \n #revealWrappedParts() {\n this.tooltip.style.width = '100%';\n this.tooltip.style.height = '100%';\n this.tooltip.style.position = 'static';\n this.tooltip.style.overflow = 'visible';\n this.tooltip.textContent = '';\n this.overlay.style.display = 'block';\n this.overlay.style.position = 'static';\n }\n\n #onOverlayReady() {\n this.#initTooltipTextComponent();\n this.#overrideAttachOverlay();\n\n forwardAttrs(this, this.tooltip, {\n includeAttrs: ['position', 'opened'],\n });\n\n this.#handleTooltipVisibility();\n }\n\n #setTooltipTarget() {\n if (!this.children?.length) return;\n\n let ele = Array.from(this.children).find(\n (child) => child !== this.tooltip,\n );\n\n if (!ele) return;\n\n this.tooltip.target = ele;\n }\n\n #clearOverlayContentNode() {\n this.overlayContentNode.innerHTML = '';\n }\n\n #createEnrichedTextComponent() {\n const enrichedText = document.createElement('descope-enriched-text');\n\n enrichedText.setAttribute('link-target-blank', 'true');\n enrichedText.textContent = this.tooltipText;\n\n return enrichedText;\n }\n\n #initTooltipTextComponent() {\n if (!this.overlayContentNode) return;\n\n setTimeout(() => {\n this.#clearOverlayContentNode();\n\n this.textComponent = this.#createEnrichedTextComponent();\n\n this.overlayContentNode.appendChild(this.textComponent);\n\n forwardAttrs(this, this.textComponent, {\n includeAttrs: ['readonly'],\n });\n });\n }\n\n // the default vaadin behavior is to attach the overlay to the body when opened\n // we do not want that because it's difficult to style the overlay in this way\n // so we override it to open inside the shadow DOM\n #overrideAttachOverlay() {\n if (!this.overlay) return;\n\n if (this.isOpened) {\n // When `opened` attr is used, vaadin doesn't execute `_attachOverlay`,\n // and the overlay element is rendered outside the component, on the top\n // level. We need to move it back to the local component's DOM.\n setTimeout(() => {\n this.tooltip.shadowRoot.appendChild(this.overlay);\n this.#handleStaticDisplay();\n });\n } else {\n this.overlay._detachOverlay = () => {};\n\n this.overlay._attachOverlay = () =>\n this.tooltip.shadowRoot.appendChild(this.overlay);\n }\n }\n\n #handleTooltipVisibility() {\n // This is Vaadin's API for manual control of tooltip visibility\n this.tooltip?.toggleAttribute('manual', this.isOpened);\n }\n\n #updateText(value) {\n if (!this.textComponent) return;\n this.textComponent.textContent = value?.trim();\n }\n\n attributeChangedCallback(attrName, oldValue, newValue) {\n super.attributeChangedCallback?.(attrName, oldValue, newValue);\n\n if (oldValue !== newValue) {\n if (attrName === 'text') {\n this.#updateText(newValue);\n }\n\n if (attrName === 'opened') {\n this.#handleTooltipVisibility(attrName, newValue)\n }\n }\n }\n}\n\nconst { overlay, content } = {\n overlay: { selector: () => 'vaadin-tooltip-overlay::part(overlay)' },\n content: { selector: () => 'vaadin-tooltip-overlay::part(content)' },\n};\n\n/**\n * This component has no Shadow DOM of its own, so we can't add styles to it\n * (otherwise it would affect the rest of the DOM).\n * Note that all styles are within PortalMixin.\n */\nexport const TooltipClass = compose(\n componentNameValidationMixin,\n portalMixin({\n selector: '',\n mappings: {\n fontFamily: {\n ...content,\n property: EnrichedTextClass.cssVarList.fontFamilyOverride,\n },\n fontSize: {\n ...content,\n property: EnrichedTextClass.cssVarList.fontSizeOverride,\n },\n fontWeight: {\n ...content,\n property: EnrichedTextClass.cssVarList.fontWeightOverride,\n },\n textColor: {\n ...content,\n property: EnrichedTextClass.cssVarList.textColorOverride,\n },\n hostDirection: {\n ...content,\n property: EnrichedTextClass.cssVarList.hostDirectionOverride,\n },\n backgroundColor: [{ ...overlay }, { ...content }],\n borderColor: { ...overlay },\n borderStyle: { ...overlay },\n borderWidth: { ...overlay },\n borderRadius: { ...overlay },\n boxShadow: { ...overlay },\n horizontalPadding: [\n { ...content, property: 'padding-left' },\n { ...content, property: 'padding-right' },\n ],\n verticalPadding: [\n { ...content, property: 'padding-top' },\n { ...content, property: 'padding-bottom' },\n ],\n },\n forward: {\n attributes: ['style'],\n include: false,\n },\n }),\n)(RawTooltip);\n","import globals from '@descope-ui/theme-globals';\nimport { getThemeRefs, createHelperVars } from '@descope-ui/common/theme-helpers';\nimport { TooltipClass, componentName } from './component/TooltipClass';\n\nconst globalRefs = getThemeRefs(globals);\nconst vars = TooltipClass.cssVarList;\n\nconst [helperTheme, helperRefs, helperVars] = createHelperVars(\n {\n shadowColor: '#00000020', // if we want to support transparency vars, we should use different color format\n },\n componentName\n);\n\nconst { shadowColor } = helperRefs;\nconst defaultShadow = `${globalRefs.shadow.wide.sm} ${shadowColor}, ${globalRefs.shadow.narrow.sm} ${shadowColor}`;\n\nconst tooltip = {\n ...helperTheme,\n [vars.fontFamily]: globalRefs.fonts.font1.family,\n [vars.fontSize]: globals.typography.body2.size,\n [vars.fontWeight]: globals.typography.body2.weight,\n [vars.textColor]: globalRefs.colors.surface.contrast,\n [vars.hostDirection]: globalRefs.direction,\n [vars.backgroundColor]: globalRefs.colors.surface.main,\n [vars.borderColor]: globalRefs.colors.surface.light,\n [vars.borderStyle]: 'solid',\n [vars.borderWidth]: globalRefs.border.xs,\n [vars.borderRadius]: globalRefs.radius.xs,\n [vars.horizontalPadding]: globalRefs.spacing.md,\n [vars.verticalPadding]: globalRefs.spacing.sm,\n [vars.boxShadow]: defaultShadow,\n\n shadow: {\n sm: {\n [vars.boxShadow]: defaultShadow,\n },\n md: {\n [vars.boxShadow]: `${globalRefs.shadow.wide.md} ${shadowColor}, ${globalRefs.shadow.narrow.md} ${shadowColor}`,\n },\n lg: {\n [vars.boxShadow]: `${globalRefs.shadow.wide.lg} ${shadowColor}, ${globalRefs.shadow.narrow.lg} ${shadowColor}`,\n },\n xl: {\n [vars.boxShadow]: `${globalRefs.shadow.wide.xl} ${shadowColor}, ${globalRefs.shadow.narrow.xl} ${shadowColor}`,\n },\n '2xl': {\n [helperVars.shadowColor]: '#00000050', // mimic daisyUI shadow settings\n [vars.boxShadow]: `${globalRefs.shadow.wide['2xl']} ${shadowColor}`,\n },\n },\n};\n\nexport default tooltip;\nexport { vars };\n","import * as button from '@descope-ui/descope-button/theme';\nimport * as textField from './textField';\nimport * as password from './password';\nimport * as numberField from './numberField';\nimport * as emailField from './emailField';\nimport * as textArea from './textArea';\nimport * as checkbox from './checkbox';\nimport * as switchToggle from './switchToggle';\nimport * as container from './container';\nimport * as logo from './logo';\nimport * as totpImage from './totpImage';\nimport * as notpImage from './notpImage';\nimport * as text from '@descope-ui/descope-text/theme';\nimport * as enrichedText from '@descope-ui/descope-enriched-text/theme';\nimport * as link from '@descope-ui/descope-link/theme';\nimport * as divider from './divider';\nimport * as passcode from './passcode';\nimport { loaderRadial, loaderLinear } from './loader';\nimport * as comboBox from '@descope-ui/descope-combo-box/theme';\nimport * as phoneField from './phoneField';\nimport * as phoneInputBoxField from './phoneInputBoxField';\nimport * as newPassword from './newPassword';\nimport * as inputWrapper from './inputWrapper';\nimport * as uploadFile from './uploadFile';\nimport * as buttonSelectionGroupItem from './buttonSelectionGroup/buttonSelectionGroupItem';\nimport * as buttonSelectionGroup from './buttonSelectionGroup/buttonSelectionGroup';\nimport * as buttonMultiSelectionGroup from './buttonSelectionGroup/buttonMultiSelectionGroup';\nimport * as modal from './modal';\nimport * as grid from './grid';\nimport * as notificationCard from './notificationCard';\nimport * as multiSelectComboBox from './multiSelectComboBox';\nimport * as badge from '@descope-ui/descope-badge/theme';\nimport * as avatar from '@descope-ui/descope-avatar/theme';\nimport * as mappingsField from './mappingsField';\nimport * as userAttribute from './userAttribute';\nimport * as userAuthMethod from './userAuthMethod';\nimport * as samlGroupMappings from './samlGroupMappings';\nimport * as policyValidation from './policyValidation';\nimport * as icon from '@descope-ui/descope-icon/theme';\nimport * as image from '@descope-ui/descope-image/theme';\nimport * as codeSnippet from './codeSnippet';\nimport * as radioGroup from './radioGroup/radioGroup';\nimport * as radioButton from './radioGroup/radioButton';\nimport * as calendar from './calendar';\nimport * as dateField from './dateField';\nimport * as appsList from '@descope-ui/descope-apps-list/theme';\nimport * as list from '@descope-ui/descope-list/theme';\nimport * as listItem from '@descope-ui/descope-list-item/theme';\nimport * as scopesList from './scopesList';\nimport * as thirdPartyAppLogo from './thirdPartyAppLogo';\nimport * as securityQuestionsSetup from './securityQuestionsSetup';\nimport * as securityQuestionsVerify from './securityQuestionsVerify';\nimport * as hybridField from './hybridField';\nimport * as alert from './alert';\nimport * as hcaptcha from './hcaptcha';\nimport * as autocompleteField from '@descope-ui/descope-autocomplete-field/theme';\nimport * as addressField from '@descope-ui/descope-address-field/theme';\nimport * as timer from '@descope-ui/descope-timer/theme';\nimport * as timerButton from '@descope-ui/descope-timer-button/theme';\nimport * as passwordStrength from '@descope-ui/descope-password-strength/theme';\nimport * as collapsibleContainer from '@descope-ui/descope-collapsible-container/theme';\nimport * as recoveryCodes from '@descope-ui/descope-recovery-codes/theme';\nimport * as outboundApps from '@descope-ui/descope-outbound-apps/theme';\nimport * as outboundAppButton from '@descope-ui/descope-outbound-app-button/theme';\nimport * as trustedDevices from '@descope-ui/descope-trusted-devices/theme';\nimport * as tooltip from '@descope-ui/descope-tooltip/theme';\n\nconst components = {\n button,\n textField,\n password,\n numberField,\n emailField,\n textArea,\n checkbox,\n switchToggle,\n container,\n logo,\n totpImage,\n notpImage,\n text,\n enrichedText,\n link,\n divider,\n passcode,\n loaderRadial,\n loaderLinear,\n comboBox,\n phoneField,\n phoneInputBoxField,\n newPassword,\n inputWrapper,\n uploadFile,\n buttonSelectionGroupItem,\n buttonSelectionGroup,\n buttonMultiSelectionGroup,\n modal,\n grid,\n notificationCard,\n multiSelectComboBox,\n badge,\n avatar,\n mappingsField,\n userAttribute,\n userAuthMethod,\n samlGroupMappings,\n policyValidation,\n image,\n icon,\n codeSnippet,\n radioGroup,\n radioButton,\n calendar,\n dateField,\n list,\n listItem,\n appsList,\n scopesList,\n thirdPartyAppLogo,\n securityQuestionsSetup,\n securityQuestionsVerify,\n hybridField,\n alert,\n autocompleteField,\n addressField,\n timer,\n timerButton,\n passwordStrength,\n collapsibleContainer,\n recoveryCodes,\n hcaptcha,\n outboundApps,\n outboundAppButton,\n trustedDevices,\n tooltip,\n};\n\nconst theme = Object.keys(components).reduce(\n (acc, comp) => ({ ...acc, [comp]: components[comp].default }),\n {}\n);\nconst vars = Object.keys(components).reduce(\n (acc, comp) => ({ ...acc, [comp]: components[comp].vars }),\n {}\n);\n\nexport default theme;\nexport { vars };\n","import globals, { vars as globalsVars } from './globals';\nimport components, { vars as componentsVars } from './components';\n\nexport const defaultTheme = { globals, components };\nexport const themeVars = { globals: globalsVars, components: componentsVars };\n","import merge from 'lodash.merge';\nimport { defaultTheme } from './theme';\nimport { codeSnippetDarkThemeOverrides } from './theme/components/codeSnippet';\n\nexport const colors = {\n surface: {\n main: '#181a1c',\n dark: '#bec4ca',\n light: '#555f68',\n highlight: '#22262a',\n contrast: '#f5f6f7',\n },\n primary: {\n main: '#1f80ff',\n dark: '#71aeff',\n light: '#004094',\n highlight: '#00214d',\n contrast: '#000000',\n },\n secondary: {\n main: '#a665eb',\n dark: '#b9a0f3',\n light: '#683ae6',\n highlight: '#361299',\n contrast: '#000000',\n },\n success: {\n main: '#27963c',\n dark: '#8bc3a2',\n light: '#004d0f',\n highlight: '#001f00',\n contrast: '#000000',\n },\n error: {\n main: '#f85249',\n dark: '#fa7c75',\n light: '#c51107',\n highlight: '#4a0603',\n contrast: '#000000',\n },\n warning: {\n main: '#EF7A33',\n dark: '#FF985A',\n light: '#FF6304',\n highlight: '#C45512',\n contrast: '#000000',\n },\n};\n\nconst darkTheme = merge({}, defaultTheme, {\n globals: {\n colors,\n },\n components: {\n ...codeSnippetDarkThemeOverrides,\n },\n});\n\nexport default darkTheme;\n","import AutocompleteFieldInternal, {\n componentName,\n} from './AutocompleteFieldInternal';\n\ncustomElements.define(componentName, AutocompleteFieldInternal);\n","import debounce from 'lodash.debounce';\n\n/**\n * Creates a debounced version of an async function that manages multiple pending promises and ensures proper error handling.\n * When multiple calls are made within the wait period, all pending promises will be resolved/rejected with the result/error\n * of the most recent call.\n *\n * @param {Function} func - The async function to debounce.\n * @param {number} wait - The number of milliseconds to delay before calling the function.\n * @returns {Function} A debounced version of the input function that returns a promise which will resolve/reject based on\n * the most recent call's result.\n *\n * @example\n * const debouncedSearch = asyncDebounce(async (query) => {\n * const results = await api.search(query);\n * return results;\n * }, 300);\n *\n * // Multiple calls within 300ms will all resolve with the results from the last call\n * const promise1 = debouncedSearch('search');\n * const promise2 = debouncedSearch('search term');\n * // Both promises will resolve with results from 'search term'\n *\n * // If the last call throws an error, all pending promises will be rejected\n * try {\n * await debouncedSearch('error term');\n * } catch (error) {\n * // Handle error\n * }\n */\nexport const asyncDebounce = (func, wait) => {\n let currentId = 0;\n const resolveSet = new Set();\n const rejectSet = new Set();\n\n const debounced = debounce((args, requestId) => {\n func(...args)\n .then((result) => {\n if (requestId === currentId) {\n resolveSet.forEach((resolve) => resolve(result));\n resolveSet.clear();\n }\n })\n .catch((error) => {\n rejectSet.forEach((reject) => reject(error));\n rejectSet.clear();\n });\n }, wait);\n\n return (...args) => {\n currentId++; // Increment for new request\n return new Promise((resolve, reject) => {\n resolveSet.add(resolve);\n rejectSet.add(reject);\n debounced(args, currentId);\n });\n };\n};\n","import '@vaadin/custom-field';\nimport '@descope-ui/descope-combo-box';\nimport './descope-autocomplete-field-internal';\n\nimport {\n componentName,\n AutocompleteFieldClass,\n} from './AutocompleteFieldClass';\n\ncustomElements.define(componentName, AutocompleteFieldClass);\n\nexport { AutocompleteFieldClass, componentName };\n","import { AddressFieldInternal, componentName } from './AddressFieldInternal';\n\ncustomElements.define(componentName, AddressFieldInternal);\n","import '@vaadin/custom-field';\nimport '@descope-ui/descope-autocomplete-field';\nimport './descope-address-field-internal';\n\nimport { componentName, AddressFieldClass } from './AddressFieldClass';\n\ncustomElements.define(componentName, AddressFieldClass);\n\nexport { AddressFieldClass, componentName };\n","import { componentName, AvatarClass } from './AvatarClass';\nimport '@vaadin/avatar';\nimport '@vaadin/icon';\nimport '@vaadin/icons';\n\ncustomElements.define(componentName, AvatarClass);\n\nexport { AvatarClass, componentName };\n","import '@descope-ui/descope-list';\nimport '@descope-ui/descope-avatar';\nimport '@descope-ui/descope-text';\nimport { componentName, AppsListClass } from './AppsListClass';\n\ncustomElements.define(componentName, AppsListClass);\n\nexport { AppsListClass, componentName };\n","import '@descope-ui/descope-text'\nimport '@descope-ui/descope-icon'\nimport { componentName, CollapsibleContainerClass } from './CollapsibleContainerClass';\n\ncustomElements.define(componentName, CollapsibleContainerClass);\n\nexport { CollapsibleContainerClass, componentName };\n","import {\n componentName,\n OutboundAppButtonClass,\n} from './OutboundAppButtonClass';\nimport '@descope-ui/descope-button';\nimport '@descope-ui/descope-icon';\n\ncustomElements.define(componentName, OutboundAppButtonClass);\n\nexport { OutboundAppButtonClass, componentName };\n","import '@descope-ui/descope-list';\nimport '@descope-ui/descope-list-item';\nimport '@descope-ui/descope-text';\nimport '@descope-ui/descope-avatar';\nimport '@descope-ui/descope-button';\nimport { componentName, OutboundAppsClass } from './OutboundAppsClass';\n\ncustomElements.define(componentName, OutboundAppsClass);\n\nexport { OutboundAppsClass, componentName };\n","import { componentName, PasswordStrengthClass } from './PasswordStrengthClass';\n\ncustomElements.define(componentName, PasswordStrengthClass);\n\nexport { PasswordStrengthClass, componentName };\n","import { componentNameValidationMixin } from '@descope-ui/common/components-mixins';\nimport { createBaseClass } from '@descope-ui/common/base-classes';\nimport { getComponentName } from '@descope-ui/common/components-helpers';\nimport { compose } from '@descope-ui/common/utils';\n\n// NOTICE: This component registers with a DIFFERENT name than its file name\nexport const componentName = getComponentName('ponyhot');\n\nconst HP_PREFIX = 'dhp-';\n\nconst BaseClass = createBaseClass({\n componentName,\n baseSelector: '',\n});\n\nclass RawHoneypot extends BaseClass {\n get type() {\n return this.getAttribute('type');\n }\n\n get value() {\n return this.input?.value || '';\n }\n\n init() {\n this.input = this.querySelector('input');\n\n if (!this.input) return;\n\n this.#setupTrapListeners();\n this.#setupValueInterceptor();\n this.#hideComponent();\n }\n\n #setupTrapListeners() {\n const events = [\n 'input',\n 'change',\n 'click',\n 'keydown',\n 'keyup',\n 'mouseover',\n 'mousedown',\n ];\n\n const fillHoneypot = (e) => {\n this.input.value = `${HP_PREFIX}${e.type}`;\n\n // Stop listening to all events after first trigger\n events.forEach((event) => {\n this.input.removeEventListener(event, fillHoneypot);\n });\n };\n\n events.forEach((event) => {\n this.input.addEventListener(event, fillHoneypot);\n });\n }\n\n // Intercept direct value assignments to catch bots that bypass events\n #setupValueInterceptor() {\n const originalDescriptor = Object.getOwnPropertyDescriptor(\n HTMLInputElement.prototype,\n 'value',\n );\n\n Object.defineProperty(this.input, 'value', {\n get() {\n return originalDescriptor.get.call(this);\n },\n set(newValue) {\n const currentValue = originalDescriptor.get.call(this);\n\n // Only trap if the value is being set by external code (not our own trap)\n if (\n newValue &&\n !newValue.startsWith(HP_PREFIX) &&\n newValue !== currentValue\n ) {\n originalDescriptor.set.call(this, `${HP_PREFIX}direct-set`);\n } else {\n originalDescriptor.set.call(this, newValue);\n }\n },\n configurable: true,\n });\n }\n\n #hideComponent() {\n const styles = {\n position: 'absolute',\n opacity: '0.01',\n width: '1px',\n height: '1px',\n pointerEvents: 'none',\n zIndex: '-1',\n left: '-999999px',\n };\n\n Object.entries(styles).forEach(([key, value]) => {\n this.style[key] = value;\n });\n }\n}\n\nexport const HoneypotClass = compose(componentNameValidationMixin)(RawHoneypot);\n","import { componentName, HoneypotClass } from './HoneypotClass';\n\ncustomElements.define(componentName, HoneypotClass);\n\nexport { HoneypotClass, componentName };\n","import '@descope-ui/descope-text';\nimport '@vaadin/icons';\nimport '@vaadin/icon';\n\nimport { componentName, RecoveryCodesClass } from './RecoveryCodesClass';\n\ncustomElements.define(componentName, RecoveryCodesClass);\n\nexport { RecoveryCodesClass, componentName };\n","import { componentName, TimerClass } from './TimerClass';\nimport '@descope-ui/descope-icon';\n\ncustomElements.define(componentName, TimerClass);\n\nexport { TimerClass, componentName };\n","import { componentName, TimerButtonClass } from './TimerButtonClass';\nimport '@descope-ui/descope-button';\nimport '@descope-ui/descope-timer';\n\ncustomElements.define(componentName, TimerButtonClass);\n\nexport { TimerButtonClass, componentName };\n","import '@descope-ui/descope-enriched-text';\nimport '@vaadin/tooltip';\nimport { componentName, TooltipClass } from './TooltipClass';\n\ncustomElements.define(componentName, TooltipClass);\n\nexport { TooltipClass, componentName };\n","import '@descope-ui/descope-list';\nimport '@descope-ui/descope-list-item';\nimport '@descope-ui/descope-text';\nimport '@descope-ui/descope-link';\nimport '@descope-ui/descope-badge';\nimport '@descope-ui/descope-icon';\n\nimport { componentName, TrustedDevicesClass } from './TrustedDevicesClass';\n\ncustomElements.define(componentName, TrustedDevicesClass);\n\nexport { TrustedDevicesClass, componentName };\n","import { zxcvbn, zxcvbnOptions } from \"@zxcvbn-ts/core\";\nimport * as zxcvbnCommonPackage from \"@zxcvbn-ts/language-common\";\nimport * as zxcvbnEnPackage from \"@zxcvbn-ts/language-en\";\n\n\nexport const options = {\n translations: zxcvbnEnPackage.translations,\n graphs: zxcvbnCommonPackage.adjacencyGraphs,\n dictionary: {\n ...zxcvbnCommonPackage.dictionary,\n ...zxcvbnEnPackage.dictionary,\n },\n};\nzxcvbnOptions.setOptions(options);\n\nexport default zxcvbn\n"],"names":["DESCOPE_PREFIX$1","kebabCase$1","str","replace","toLowerCase","kebabCaseJoin$1","kebabCaseJoin","args","filter","arg","join","compose$1","compose","fns","val","reduceRight","res","fn","isFunction$1","maybeFunc","observeAttributes$1","observeAttributes","ele","callback","excludeAttrs","includeAttrs","filteredAttrs","Array","from","attributes","attr","includes","name","length","map","MutationObserver","mutationsList","forEach","mutation","type","attributeName","observe","observeChildren$1","observeChildren","addedNodes","children","removedNodes","childList","characterData","subtree","createSyncAttrsCb$1","createSyncAttrsCb","srcEle","targetEle","mapAttrs","attrNames","attrName","targetAttrName","srcAttrVal","getAttribute","setAttribute","removeAttribute","syncAttrs$1","syncAttrs","ele1","ele2","options","getComponentName$1","getCssVarName$1","getCssVarName","forwardAttrs$1","forwardAttrs","source","dest","injectStyle","cssString","ref","prepend","style","CSSStyleSheet","e","generateStyleTagFallback","_ref","shadowRoot","replaceSync","adoptedStyleSheets","cssRules","console","warn","CSSStyleSheetMock","constructor","this","styleEle","document","createElement","textContent","window","DESCOPE_NONCE","append","sheet","limitAbbreviation","limit","trim","split","splice","s","toUpperCase","componentsThemeManager","static","Set","cb","currentThemeName","themeName","currentTheme","onCurrentThemeChange","add","delete","themes","hasThemes","Object","keys","colorGaps$1","darken$1","darken","c","percentage","hex","contrast$1","isDark","mix","Color","saturate","lighten$1","lighten","lightness","isNearWhite$1","color","luminosity","generateDarkColor$1","generateDarkColor","theme","isNearBlack$1","generateLightColor$1","generateLightColor","generateHighlightColor$1","generateHighlightColor","genColor$1","genColor","mainColor","main","dark","light","highlight","contrast","getVarName$1","path","set$1","set","obj","value","pathArray","isArray","match","reduce","acc","key","i","undefined","transformTheme$1","transformTheme","getTransformation","entries","merge","concat","getThemeRefs$1","getThemeRefs","prefix","useVar$1","useVar","varNames","startsWith","createHelperVars$1","createHelperVars","modifiedPath","property","varName","vars","useVars","getOverrideCssVarName$1","origVarName","createCssVar$1","createCssVar","fallback","createOverride","ret","styleMap","Map","selector","has","get","toString","propValArr","properties","getFallbackVarName$1","getFallbackVarName","suffix","getFallbackVarsNames$1","getFallbackVarsNames","fallbackVarName","fallbackAttrName","camelCaseJoin","Boolean","index","charAt","slice","camelCaseJoin$1","createCssVarsList$1","createCssVarsList","componentName","mappings","assign","createStyleMixin$1","createStyleMixin","componentNameOverride","superclass","CustomStyleMixinClass","cssVarList","getRootElement","componentNameSuffix","themeSection","baseSelector","super","onThemeChange","bind","classSpecifier","repeat","elementId","CSS","escape","RegExp","setProperty","removeProperty","attrs","createStyle","StyleBuilder$1","createFallbackVar","attrConfig","normalizeConfig","config","defaultMapping","entry","normalizeConfig$1","cssVarName","relativeSelectorOrSelectorFn","important","fallbackValue","createCssSelector","test","createCssSelector$1","createStyle$1","className","classList","host","init","isConnected","disconnectedCallback","draggableMixin$1","isDraggable","hasAttribute","addEventListener","prevTabIndex","baseElement","onComplete","target","removeEventListener","once","componentNameValidationMixin$1","currentComponentName","localName","Error","componentsContextMixin$1","updateComponentsContext","componentsContext","dispatchEvent","CustomEvent","bubbles","composed","detail","hoverableMixin$1","booleanAttributesList$1","normalizeBooleanAttributesMixin$1","attrVal","isBooleanAttribute$1","debug","createBaseClass$1","createBaseClass","DescopeBaseClass","HTMLElement","rootElement","querySelector","connectedCallback","createDispatchEvent$1","eventName","event","Event","changeMixin$1","prevValue","stopPropagation","inputEventsDispatchingMixin$1","isTrusted","stopImmediatePropagation","handleFocusEventsDispatching","inputs","timerId","input","setTimeout","call","onFocus","clearTimeout","handleInputEventDispatching","previousRootComponentValue","observedAttributes$8","validationTargetSymbol$1","Symbol","inputValidationMixin$1","observedAttributes","formAssociated","internals","attachInternals","defaultErrorMsgValueMissing","defaultErrorMsgPatternMismatch","defaultErrorMsgTooShort","defaultErrorMsgTooLong","defaultErrorMsgRangeUnderflow","defaultErrorMsgRangeOverflow","defaultErrorMsgTypeMismatch","getCustomErrorMessage","defaultMsg","getErrorMessage","flags","valueMissing","patternMismatch","typeMismatch","stepMismatch","tooShort","tooLong","rangeOverflow","rangeUnderflow","badInput","customError","validationMessage","validity","isReadOnly","getValidity","setValidity","validationTarget","checkValidity","valid","reportValidity","inputElement","setCustomValidity","errorMessage","isRequired","isDisabled","pattern","form","attributeChangedCallback","oldValue","newValue","createBaseInputClass$1","createBaseInputClass","CONNECTOR_ERRORS","createBaseConnectorClass","isValid","checkConnectorValidity","getRequiredParams","param","validateParam","error","fetch","query","_fetchResults","results","createProxy$1","createProxy","wrappedEleName","slots","excludeAttrsSync","includeAttrsSync","includeForwardProps","delegatesFocus","ProxyClass","attachShadow","mode","innerHTML","slot","_","forwardProps","src","props","prop","v","defineProperties","forwardProps$3","errorAttrs$1","getNestedInput$1","nonSlotEle","assignedElements","proxyInputMixin$1","proxyInputMixin","proxyProps","useProxyTargets","inputEvent","triggerValidationEvents","proxyParentValidation","warnIfInputElementIsMissing","inputElementTimerId","inputSlot","textAreaSlot","focus","defaultReportValidity","_setInvalid","invalid","_shouldSetInvalid","externalInput","proxyTargets","targets","targetArr","defineProperty","configurable","forwardProps$2","setSelectionRange","inputElementInternals","parentThis","Proxy","newArgs","push","composedProxyInputMixin$1","proxyInputMixinConfig","portalMixin$1","portalMixin","forward","include","eleDisplayName","sanitizeSelector","BaseClass","getPortalElement","getRootElementFn","async","that","Promise","counter","check","then","portalEle","onmouseenter","onmouseleave","defaultValidateSchema$1","defaultValidateSchema","defaultItemRenderer$1","item","JSON","stringify","createDynamicDataMixin$1","createDynamicDataMixin","itemRenderer","validateSchema","slotName","rerenderAttrsList","targetSelector","sortFn","data","validation","querySelectorAll","remove","sort","content","templateOrString","templateString","template","createTemplate$1","HTMLTemplateElement","appendChild","cloneNode","dataAttr","parse","disableRules","componentName$1m","EnrichedText","contentNode","HTMLAnchorElement","onReadOnlyChange","customUnderlineRenderer","processor","renderer","rules","em_open","tokens","idx","env","self","markup","tag","em_close","linkTargetBlank","link_open","attrSet","disable","defaultLinkRenderer","renderToken","defaultStrongRenderer","MarkdownIt","html","textArea","decodeHTML","references","render","breaks","firstChild","EnrichedTextClass","hostWidth","hostDisplay","hostDirection","fontSize","fontFamily","fontWeight","fontWeightBold","textColor","textLineHeight","textAlign","linkColor","linkTextDecoration","linkHoverTextDecoration","minHeight","minWidth","kebabCase","isFunction","DESCOPE_PREFIX","BASE_THEME_SECTION","getComponentName","forwardProps$1","colorGaps","isNearBlack","isNearWhite","useHostExternalPadding","inputOutlineWidth","inputOutlineOffset","resetInputContainer","resetInputField","resetInputCursor","resetInputPlaceholder","resetInputFieldInvalidBackgroundColor","resetInputOverrides","resetInputAutoFill","inputValueTextColor","inputHeight","inputBackgroundColor","resetInitialHeight","resetInputElement","resetInputFieldUnderlayingBorder","resetInputLabelPosition","getVarName","getCssVarValue","maybeUrl","URL","isUrl","globalsThemeToStyle","themeToCSSVarsObj","componentsThemeToStyle","componentsTheme","createComponentsTheme","styleObj","component","restPath","pop","shift","attrsSelector","section","ampersands","splitAmpersands","selectorMultiplier","Math","min","nextSection","componentsThemeToStyleObj","componentThemes","themeToStyle","globals","components","getOverrideCssVarName","StyleBuilder","draggableMixin","componentNameValidationMixin","componentsContextMixin","hoverableMixin","booleanAttributesList","normalizeBooleanAttributesMixin","isBooleanAttribute","createDispatchEvent","observedAttributes$7","validationTargetSymbol","inputValidationMixin","errorAttrs","getNestedInput","composedProxyInputMixin","withWaitForShadowRoot","baseEle","changeMixin","inputEventsDispatchingMixin","externalInputMixin","inputType","inputName","autocompleteType","noBlurDispatch","isExternalInput","createExternalInput","origInput","externalInputSlot","createExternalInputSlot","slotEle","createExternalInputEle","targetSlotName","inputEle","getAutocompleteType","applyExternalInputStyles","sourceInputEle","targetInputEle","labelType","computedStyle","getComputedStyle","height","getPropertyValue","paddingLeft","paddingRight","letterSpacing","caretColor","valueColor","getValueColor","origVal","marginBottom","width","forwardInputValue","handleFocusEvents","handleBlurEvents","handlelInputEvents","clearBlurTimers","timer","dispatchBlur","valueDescriptor","getOwnPropertyDescriptor","prototype","inputOverrideValidConstraintsMixin","_hasValidConstraints","componentName$1l","forwardAttributes$1","BaseInputClass$d","booleanFieldMixin","checkbox","commonStyles","componentName$1k","host$w","component$1","checkboxElement","checkboxSurface","checkboxLabel","checkboxLabel$1","requiredIndicator","requiredIndicator$b","helperText","helperText$a","errorMessage$d","CheckboxClass","labelTextColor","labelSpacing","labelLineHeight","labelFontWeight","labelRequiredIndicator","errorMessageTextColor","errorMessageIcon","errorMessageIconSize","errorMessageIconPadding","errorMessageIconRepeat","errorMessageIconPosition","errorMessageFontSize","inputBorderRadius","inputBorderWidth","inputBorderOffset","inputBorderColor","inputBorderStyle","inputOutlineColor","inputOutlineStyle","inputAlign","inputContainerPadding","inputContainerBackgroundColor","inputContainerBorderRadius","inputContainerBorderWidth","inputContainerBorderColor","inputContainerBorderStyle","inputContainerOutlineWidth","inputContainerOutlineOffset","inputContainerOutlineColor","inputContainerOutlineStyle","inputSize","componentName$1j","RawText","hideWhenEmpty","hasChildren","childNodes","display","host$v","TextClass","textLetterSpacing","textShadow","textTransform","fontStyle","borderWidth","borderStyle","borderColor","componentName$1i","RawLink","tooltip","selectors$3","link","anchor","wrapper","text","text$4","host$u","wrapper$1","link$3","LinkClass","textDecoration","cursor","customElements","define","wrapperEle","labelContent","checked","click","onLabelChange","labelValue","componentName$1h","host$t","track","knob","requiredIndicator$a","helperText$9","errorMessage$c","SwitchToggleClass","trackBorderWidth","trackBorderStyle","trackBorderColor","trackBackgroundColor","trackBorderRadius","trackWidth","trackHeight","knobSize","knobTextColor","knobRadius","knobTransitionDuration","knobColor","knobTopOffset","knobLeftOffset","componentName$1g","RawLoaderLinear","after","after$1","host$s","LoaderLinearClass","barHeight","barBorderRadius","verticalPadding","barBackgroundColor","barColor","barWidth","animationDuration","animationTimingFunction","animationIterationCount","componentName$1f","RawLoaderRadial","LoaderRadialClass","spinnerSize","spinnerBorderWidth","spinnerBorderStyle","spinnerBorderRadius","spinnerQuadrant1Color","spinnerQuadrant2Color","spinnerQuadrant3Color","spinnerQuadrant4Color","componentName$1e","RawContainer","ContainerClass","hostHeight","itemsGrow","horizontalPadding","flexDirection","justifyContent","alignItems","gap","flexWrap","backgroundColor","backgroundImage","backgroundPositionX","backgroundPositionY","backgroundSize","backgroundRepeat","borderRadius","boxShadow","componentName$1d","host$r","inputField","inputField$6","inputElement$3","placeholder","placeholder$3","toggle","toggle$1","clearButton","clearButton$1","label","label$a","requiredIndicator$9","helperText$8","errorMessage$b","loader","overlayContent","ComboBoxClass","labelFontSize","inputPlaceholderTextColor","inputDropdownButtonCursor","inputDropdownButtonColor","inputDropdownButtonSize","inputDropdownButtonOffset","inputHorizontalPadding","labelPosition","labelTopPosition","labelHorizontalPosition","inputTransformY","inputTransition","marginInlineStart","placeholderOpacity","inputVerticalAlignment","valueInputHeight","valueInputMarginBottom","overlayBackground","overlay","overlayTextColor","overlayBorder","border","overlayFontSize","overlayFontFamily","overlayCursor","overlayItemBoxShadow","itemBoxShadow","overlayItemPaddingInlineStart","itemPaddingInlineStart","overlayItemPaddingInlineEnd","itemPaddingInlineEnd","overlayCheckmarkDisplay","checkmarkDisplay","overlaySelectedItemBackground","selectedItemBackground","overlaySelectedItemHoverBackground","selectedItemHoverBackground","overlaySelectedItemFocusBackground","selectedItemFocusBackground","overlayItemHoverBackground","itemHoverBackground","overlayItemFocusBackground","itemFocusBackground","margin","loaderTop","loaderLeft","loaderRight","loaderMargin","loaderWidth","loaderHeight","loaderBorder","loaderBorderColor","loaderBorderRadius","contentHeight","contentOpacity","scrollerMinHeight","#renderItem","displayName","defaultValue","renderItem","renderFn","renderItems","loading","isValidDataType","message","getItemsTemplate","hasDynamicData","shouldSelectItemOnItemsChange","allowCustomValue","handleSelectedItem","selectedItem","currentSelected","setDefaultValue","customValueTransformFn","setComboBoxDescriptor","comboBox","items","transformedValue","node","writable","_attachOverlay","bringToFront","_detachOverlay","_enterModalState","root","combo","model","outerHTML","_dataProviderFilterChanged","onLabelClick","autoOpenDisabled","find","selectedChild","capture","__data","resetInputPlaceholder$1","resetInputCursor$1","createSvgEle","clean","DOMPurify","sanitize","USE_PROFILES","svg","svgFilters","ADD_TAGS","FORBID_TAGS","DOMParser","parseFromString","componentName$1c","srcAttrs","RawImage","toggleVisibility","getSrc","renderImage","isVisible","altText","legacySrc","themeSrc","updateFillColor","ImageClass","fill","isBase64Svg","svgXml","atob","base64Prefix","getFileExtension","fetchedSrc","createImgEle","createImage","shouldRender","srcVal","componentName$1b","IconClass","componentName$1a","host$q","label$9","slottedIcon","loadingIndicatorStyles","ButtonClass","outlineOffset","outlineColor","outlineStyle","outlineWidth","iconColor","labelTextDecoration","iconSize","isLoading","SUPPORTED_FORMATS","DEFAULT_FORMAT","NATIVE_FORMAT","DIVIDER","months","weekdays","counterConfig","id","max","valRange","newDate","date","isUtcTime","Date","d","patterns","MM","DD","YYYY","createFormat","format","part","createPattern","toValuesFn","order","values","createToValuesFn","regexp","validate","getDate","createDate","exec","year","month","day","formats","fromEntries","f","isValidEpoch","Number","isNaN","getPartsFromEpoch","epoch","getFullYear","getMonth","formatEpoch","parts","String","padStart","getCurrentTime","getTime","dateToEpoch","isUtc","UTC","isValidAttrArr","arr","count","comboBoxItemTpl","dataId","dataName","getMonthsOptions","customMonths","isViewVisible","selectionEpoch","previewEpoch","previewYear","previewMonth","selectedYear","selectedMonth","initComboBox","onChange","onBlur","componentName$19","observedAttrs$5","calendarUiAttrs","BaseInputClass$c","calendar","calendar$2","dayEntry","currentDay","selectedDay","disabledDay","weekday","topNav","topNavSelectors","bottomNav","navPrev","navNext","navPrevRTL","navNextRTL","yearInput","monthInput","CalendarClass","topNavVerticalPadding","topNavHorizointalPadding","topNavAlignment","topNavGap","topNavSelectorsGap","bottomNavVerticalPadding","bottomNavHorizontalPadding","bottomNavAlignment","bottomNavGap","navMarginBottom","calendarPadding","navBorderBottomWidth","navBorderBottomColor","navBorderBottomStyle","weekdayFontSize","weekdayFontWeight","currentDayBorderColor","currentDayBorderWidth","currentDayBorderStyle","dayHeight","daySize","dayPadding","dayRadius","dayTextAlign","dayBlockAlign","dayTextColor","dayFontWeight","dayBackgroundColor","dayCursor","dayFontSize","dayBackgroundColorHover","daySelectedTextdColor","daySelectedBackgroundColor","dayDisabledTextdColor","yearInputWidth","monthInputWidth","navButtonSize","navButtonCursor","navButtonRotation","navButtonOpacity","preview","renderCalendar","isSelectedView","isTodayView","monthNames","monthArr","ensureMonthNamesArr","weekdayNames","customWeekdayArr","ensureWeekdayNamesArr","hasYearValue","hasMonthValue","yearsRange","range","start","end","currentYear","initCalendar","navPrevEle","navNextEle","submitButton","cancelButton","initInputs","initNav","createInputs","onMonthChange","onMonthInputBlur","onYearChange","onYearInputBlur","navPrevMonth","navNextMonth","onCancel","onSubmit","btn","clearSelectedDay","getSelectedDayEle","updateInputs","createMonthView","shortWeekdays","daysInMonth","getMaxDaysInMonth","firstDayOfMonth","getDay","monthView","dayOfWeek","substring","onDayChange","setSelectedDay","setCurrentDay","setDate","setFullYear","setMonth","getCurrentDayEle","clearSelectedDays","cells","title","prevMonth","nextMonth","clearValue","onInitialValueChange","onYearsRangeChange","years","generateYearList","onMonthNamesChange","onSubmitLabelChange","onCancelLabelChange","onInitialMonthChange","currYear","onInitialYearChange","currMonth","host$p","label$8","placeholder$2","requiredIndicator$8","inputField$5","input$1","inputMask","helperText$7","errorMessage$a","disabledPlaceholder","inputDisabled","inputIcon","externalInputDisabled","externalPlaceholder","externalDisabledPlaceholder","textFieldMappings","hostMinWidth","inputDirection","helperTextColor","inputCaretTextColor","inputTextAlign","inputPlaceholderColor","inputIconOffset","inputIconSize","inputIconColor","componentName$18","observedAttrs$4","TextFieldClass","icon","renderCopyToClipboard","iconInitConfig","iconCopiedConfig","navigator","clipboard","writeText","oldVal","newVal","attributeChangeCallback","_setType","DateCounter","freeze","numberValue","stringValue","isFull","isEmpty","num","del","clear","inc","replaceValue","dec","isInRange","setMin","setMax","componentName$17","BaseInputClass$b","dateFieldAttrs","calendarAttrs","observedAttrs$3","textVars$5","host$o","inputEleRTL","toggleButton","overlay$1","backdrop","DateFieldClass","iconMargin","rtlInputDirection","rtlInputAlignment","overlayGap","overlayBackgroundColor","overlayPadding","overlayBoxShadow","overlayOutlineWidth","overlayOutlineColor","overlayOutlineStyle","marginTop","backdropBackgroundColor","backdropPointerEvents","padding","selectedCounterIdx","updateCountersDisplay","countersValue","updateValue","isCountersOutOfRange","resetEpoch","updateEpoch","onDateCounterChange","dateCounters","popoverToggleButton","opened","displayValueEpoch","sortedCounters","dc","activeCounter","isRTL","computedStyleDirection","isInvalidDate","parseInt","resetDateCounters","clearInputEle","updateDateCounters","isCountersEmpty","every","some","disableCalendar","isSelectAll","selectionStart","selectionEnd","updateInputDisplay","updateFormatPattern","initPopover","initInputElement","onPopoverToggle","handleMouseCaretPositionChange","handleKeyboard","handleInput","onPointerDown","onPaste","preventDefault","handleSelectAll","parseDigits","handleNavKeys","trigger","withBackdrop","selectFirstCounter","positionTarget","cs","insertRule","overrideConstructedStylesheet","closePopover","updateCalendarView","popover","windowRect","body","getBoundingClientRect","inputRect","calendarRect","side","offset","availableLeft","left","availableRight","right","newOffset","abs","onCalendarSubmit","openPopover","getCounterById","calendarDate","validInputVal","resetDisplay","onFormatUpdate","selectNextCounter","setInputSelectionRange","getCounterIdx","caretPos","counter1ln","counter2ln","indexOf","setSelectedCounterByCaretPosition","selectPrevCounter","caretStart","getUTCMonth","getUTCFullYear","getUTCDate","metaKey","ctrlKey","onCut","handleBackspace","resetToInitialState","togglePopoverAccess","visibility","yearCounter","isYearOutOfRange","isDateDisplayMismatch","getDateVals","err","pastedData","clipboardData","getData","validDate","parseDateString","trimmed","componentName$16","RawDivider","textComponent","textVars$4","host$n","before","text$3","DividerClass","hostPadding","alignSelf","labelTextWidth","labelTextMaxWidth","labelTextVerticalSpacing","labelTextHorizontalSpacing","stripeColor","stripeHorizontalThickness","stripeVerticalThickness","stripeColorOpacity","componentName$15","EmailFieldClass","createCssVarImageClass","RawCssVarImageClass","CssVarImageClass","componentName$14","LogoClass","componentName$13","TotpImageClass","componentName$12","NotpImageClass","componentName$11","NumberFieldClass","INPUT_MASK_TEXT_PROP","INPUT_MASK_DISPLAY_PROP","INPUT_MASK_FALLBACK_PROP","focusElement","sanitizeStr","toggleMaskVisibility","componentName$10","observedAttributes$6","forwardAttributes","BaseInputClass$a","componentName$$","observedAttributes$5","host$m","digitField","label$7","requiredIndicator$7","internalWrapper","internalWrapper$1","focusedDigitField","errorMessage$9","textVars$3","loaderVars","PasscodeClass","digitValueTextColor","digitSize","digitPadding","digitTextAlign","digitCaretTextColor","digitSpacing","digitOutlineColor","digitOutlineWidth","focusedDigitFieldOutlineColor","overlayOpacity","digits","loaderContainer","renderInputs","handleLoadingState","parseInputValue","getInputIdx","getNextInput","currInput","currentIdx","newIdx","getPrevInput","fillDigits","charArr","currentInput","nextInput","debouncedHandleParseInput","debounce","trailing","onkeydown","componentName$_","host$l","inputField$4","inputElement$2","inputElementPlaceholder","revealButtonContainer","revealButtonIcon","label$6","requiredIndicator$6","errorMessage$8","helperText$6","PasswordClass","revealButtonOffset","revealButtonSize","revealButtonColor","prevType","manualToggleVisibility","handleCaretOnVisibilityChange","origSetPasswordVisible","_setPasswordVisible","origSetFocused","_setFocused","setFocus","initExternalInput","handlePasswordVisibility","caretPosition","origTogglePasswordVisibility","_togglePasswordVisibility","focused","resetPasswordVisibilityToggle","origSetFocus","origBoundRevealButtonMouseDown","__boundRevealButtonMouseDown","_passwordVisibleChanged","showPasswordVisibility","hidePasswordVisibility","componentName$Z","host$k","label$5","placeholder$1","inputField$3","textArea$2","requiredIndicator$5","helperText$5","errorMessage$7","TextAreaClass","inputResizeType","inputMinHeight","CountryCodes","dialCode","code","a","b","comboBoxItem","country","getCountryFlag","componentName$Y","commonAttrs$1","countryAttrs","phoneAttrs","labelTypeAttrs","mapAttrs$1","inputRelatedAttrs$1","BaseInputClass$9","textField","countryCodeInputData","countryCodeValue","phoneNumberInputEle","allowAlphanumericInput","defaultCode","minLength","selectedCountryCode","restrictCountries","isFormatValue","isStrictValidation","nationalNumber","countryCode","nationalNumer","isValidLength","telDigitsRegExp","sanitizedInput","char","AsYouType","reset","parsed","parsePhoneNumberFromString","countryCodeItem","textVars$2","comboVars","componentName$X","host$j","label$4","requiredIndicator$4","inputField$2","internalAfter","countryCodeInput","phoneInput","phoneInput$1","separator","separator$1","errorMessage$6","helperText$4","PhoneFieldClass","countryCodeInputWidth","countryCodeDropdownWidth","phoneInputWidth","overlayItemBackgroundColor","countryCodeItems","countryCodes","componentName$W","observedAttributes$4","BaseInputClass$8","defaultDialCode","maxLength","parsedVal","countryCallingCode","validPhonePattern","stripValue","sanitizedVal","parsePhoneNumberFromString$1","dialCodePrefixPattern","phoneNumber","openParenMatches","closeParenMatches","matchingParenthesis","textVars$1","componentName$V","host$i","label$3","inputElement$1","requiredIndicator$3","inputField$1","internalComponent","internalComponentAfter","errorMessage$5","helperText$3","PhoneFieldInputBoxClass","componentName$U","interpolateString","componentName$T","dataAttrs","policyAttrs","RawPolicyValidation","panel","list","updateLabel","availablePolicies","ln","minlength","passwordStrength","passwordstrength","expected","actual","getStrengthScore","compareValues","comparison","policies","policy","p","compare","validationResult","exp","getValidationItemTemplate","activePolicies","host$h","symbolDefault","symbolSuccess","symbolError","PolicyValidationClass","labelMargin","itemsSpacing","itemSymbolSuccessColor","itemSymbolErrorColor","itemSymbolDefault","itemSymbolSuccess","itemSymbolError","componentName$S","policyPreviewVars","host$g","label$2","internalInputsWrapper","errorMessage$4","helperText$2","passwordInput","policyPreview","NewPasswordClass","inputsRequiredIndicator","spaceBetweenInputs","policyPreviewBackgroundColor","policyPreviewPadding","externalInputAttr","createSlottedExternalInput","targetSlot","confirmInput","passwordAttrPrefixRegex","confirmAttrPrefixRegex","removeAttrPrefix","passwordInputAttrs","confirmInputAttrs","policyPanelAttrs","commonAttrs","inputRelatedAttrs","BaseInputClass$7","hasConfirm","onHasConfirmChange","onHasValidationChange","hasValidation","policyPanel","minVal","hasExternalInput","handleIndicatorStyle","isInvalid","handleInputsInvalidAttribute","changedAttributes","inputInvalidValue","rootInvalidValue","togglePasswordStrength","resolve","insertBefore","toggleBooleanAttribute","componentName$R","observedAttributes$3","BaseClass$7","RecaptchaClass","renderRecaptcha","enabled","updatePreview","toggleRecaptchaEles","recaptchaEle","mockRecaptchaEle","badge","enterprise","siteKey","action","scriptURL","url","pathname","searchParams","getElementById","onRecaptchaLoadCallback","script","defer","grecaptchaInstance","grecaptcha","currentNode","recaptchaWidgetId","ready","execute","token","risktoken","riskaction","hasChildNodes","sitekey","size","componentName$Q","observedAttributes$2","BaseInputClass$6","buttonVars","host$f","icon$4","title$1","description","requiredIndicator$2","UploadFileClass","lineHeight","titleFontSize","titleFontWeight","descriptionFontSize","button","onclick","onchange","receivedFileList","files","fileObj","reader","FileReader","onload","result","readAsDataURL","updateDescription","getFilename","oninvalid","updateTitle","updateButtonLabel","updateButtonMode","updateButtonVariant","updateButtonSize","updateInputAccept","updateReadOnly","createBaseButtonSelectionGroupInternalClass","BaseButtonSelectionGroupInternalClass","dispatchChange","isReadonly","onSizeChange","toggleAttribute","onObservedAttributeChange","componentName$P","ButtonSelectionGroupInternalClass","getSelectedNode","allowDeselect","removeSelected","onClick","currentTarget","setSelected","child","buttonSelectionGroupBaseMixin","host$e","label$1","requiredIndicator$1","errorMessage$3","buttonSelectionGroupMappings","buttonSelectionGroupStyles","componentName$O","ButtonSelectionGroupClass","componentName$N","RawSelectItem","variant","handleFocus","ButtonSelectionGroupItemClass","componentName$M","ButtonMultiSelectionGroupInternalClass","minItemsSelection","maxItemsSelection","defaultValues","defaultValuesAttr","setDefaultValues","componentName$L","ButtonMultiSelectionGroupClass","GridTextColumnClass","GridSortColumn","sortable","_defaultRenderer","cell","_col","__setTextContent","_defaultHeaderRenderer","_column","__getHeader","header","componentName$K","componentName$J","contentEle","newEle","createCheckboxEle","getIsAllItemsSelected","grid","selectedItems","GridSelectionColumnClass","GridSelectionColumn","_onHeaderRendererOrBindingChanged","_headerRenderer","parentNode","isAllItemsSelected","col","selectItem","deselectItem","selected","componentName$I","GridItemDetailsColumnClass","_gridValue","itemIdx","detailsOpenedItems","isOpened","toggleIcon","toSpliced","componentName$H","componentName$G","lang","isInline","sanitized","txt","decode","language","highlighted","hljs","tpl","docTag","keyword","metaKeyword","templateTag","templateVariable","variableLanguage","titleClass","titleClassInherited","titleFunction","attribute","literal","meta","number","operator","variable","selectorAttr","selectorClass","selectorId","string","metaString","builtIn","symbol","comment","formula","quote","selectorTag","selectorPseudo","subst","bullet","emphasis","strong","addition","deletion","charEscape","link$2","params","punctuation","CodeSnippetClass","rootBgColor","rootTextColor","docTagTextColor","keywordTextColor","metaKeywordTextColor","templateTagTextColor","templateVariableTextColor","typeTextColor","variableLanguageTextColor","titleTextColor","titleClassTextColor","titleClassInheritedTextColor","titleFunctionTextColor","attrTextColor","attributeTextColor","literalTextColor","metaTextColor","numberTextColor","operatorTextColor","variableTextColor","selectorAttrTextColor","selectorClassTextColor","selectorIdTextColor","regexpTextColor","stringTextColor","metaStringTextColor","builtInTextColor","symbolTextColor","commentTextColor","codeTextColor","formulaTextColor","nameTextColor","quoteTextColor","selectorTagTextColor","selectorPseudoTextColor","substTextColor","sectionTextColor","bulletTextColor","emphasisTextColor","strongTextColor","additionTextColor","additionBgColor","deletionTextColor","deletionBgColor","charEscapeTextColor","linkTextColor","paramsTextColor","propertyTextColor","punctuationTextColor","tagTextColor","CodeSnippet$1","escapeXML","dom","getValueType","isPlainObject","renderCodeSnippet","renderText","renderJson","componentName$F","host$d","headerRow","headerRowCell","contentRow","firstRow","sortIndicators","activeSortIndicator","selectedRow","rowSeparator","resizeHandle","toggleDetailsPanelButton","toggleDetailsPanelButtonOpened","toggleDetailsPanelButtonClosed","detailsPanel","detailsPanelLabels","selectedRowCell","detailsPanelContent","GridClass","hostMinHeight","valueTextColor","sortIndicatorsColor","selectedBackgroundColor","headerRowTextColor","separatorColor","resizeHandleColor","toggleDetailsPanelButtonSize","toggleDetailsPanelButtonOpenedColor","toggleDetailsPanelButtonClosedColor","toggleDetailsPanelButtonCursor","detailsPanelBackgroundColor","detailsPanelBorderTopColor","detailsPanelLabelsColor","detailsPanelLabelsFontSize","detailsPanelItemsGap","detailsPanelPadding","handleColumns","forwardSelectedItemsChange","_mapSorters","origUpdateDetailsCellHeight","_updateDetailsCellHeight","row","rowDetailsRenderer","getRowDetailsTemplate","itemLabelsMapping","defaultRowDetailsRenderer","word","valueType","renderXml","defaultRowDetailsValueRenderer","setColumnsDataFromAttr","columnsAttr","setColumnsFromChildren","columns","#renderColumn","tagName","renderColumn","renderColumns","getColumnsTemplate","reassignRowDetailsRenderer","itemsIds","uniqueColumnId","newSelectedItems","paths","componentName$E","host$c","helperText$1","errorMessage$2","chip","chipLabel","overflowChipFirstBorder","overflowChipSecondBorder","MultiSelectComboBoxClass","chipFontSize","inputVerticalPadding","chipTextColor","chipBackgroundColor","labelLeftPosition","allowCustomValues","updateSelectedItems","dedupItems","newItemHtml","_lastFilter","setGetValidity","patternRegex","elem","vals","selectedChildren","existingValues","missingValues","newItemsHtml","newSelectedValues","compareArraysUnordered","arr1","arr2","sortedArr1","sortedArr2","componentName$D","observedAttrs$2","ModalClass","overlayBackdropColor","backdropColor","overlayShadow","shadow","overlayWidth","overlayBorderWidth","overlayBorderStyle","overlayBorderColor","overlayBorderRadius","handleOpened","close","vaadinContainerClass","componentName$C","selectors$1","NotificationCardClass","closeEle","componentName$B","NotificationClass","NotificationMixinClass","_container","position","_removeNotificationCard","createCard","cardRoot","isContainerEmpty","removeContainer","removeNotification","componentName$A","BaseInputClass$5","componentName$z","host$b","errorMessage$1","mappingItem","labels","labelsText","valueLabel","attrLabel","labelsContainer","MappingsFieldClass","separatorFontSize","labelsFontSize","labelsLineHeight","itemMarginBottom","valueLabelMinWidth","attrLabelMinWidth","labelsMarginBottom","separatorWidth","removeButtonWidth","initialDefaultValues","getOwnPropertyNames","labelAttr","buttonLabel","addNewMappingItem","focusNewItem","newMappingItem","mappingsContainerEle","resetInvalidIndication","currentItems","removeChild","mapping","labelsEle","buttonContainer","initLabels","initAddButton","contains","errorItem","componentName$y","inputAttrs","BaseInputClass$4","attributeValue","attributeInput","inputValue","valueInput","InputEvent","removeButton","initRemoveButton","handleSeparatorChange","componentName$x","RawBadge","BadgeClass","componentName$w","RawUserAttribute","deleteButton","editButton","labelText","valueText","innerText","onValueOrPlaceholderChange","onBadgeLabelChange","badgeLabel","onBadgeTooltipTextChange","badgeTooltipText","onIsRequiredChange","handleDeleteButtonVisibility","setDefaultChildren","host$a","textFields","buttons","buttons$1","badge$3","contentWrapper","UserAttributeClass","hostMaxWidth","labelMinWidth","contentMinWidth","badgeMaxWidth","itemsGap","componentName$v","RawUserAuthMethod","unfulfilledButton","fulfilledButton","statusIndicator","btnRef","textSpanEle","onFulfilledChange","isFulfilled","handleFulfilled","handleUnfulfilled","isFulfilledEditable","isUnfulfilledEditable","unfulfilledButtonLabel","fulfilledButtonLabel","host$9","textField$2","badge$2","textWrapper","methodIconSlot","UserAuthMethodClass","componentName$u","BaseInputClass$3","componentName$t","host$8","groupInput","SamlGroupMappingsClass","groupNameInputMarginBottom","groupInputElement","mappingsElement","handleMappingsInvalidChange","initFocusHandler","group","componentName$s","RadioButtonClass","radioSize","radioBackgroundColor","radioMargin","radioCheckedSize","radioCheckedColor","radioBorderColor","radioBorderWidth","radioBorderStyle","renderLabel","componentName$r","RadioGroupClass","buttonsSpacing","buttonsRowGap","buttonsColumnGap","itemsLabelColor","__filterRadioButtons","nodes","layout","defaultItemRenderer","componentName$q","variants","RawScopesList","required","ScopesListClass","requiredInputBorderColor","requiredInputValueTextColor","createTemplate","desc","ComponentClass","componentName$p","ListItemClass","outline","maxWidth","transition","componentName$o","RawList","listItem","listItemVariant","ListClass","maxHeight","gridTemplateColumns","maxItemsWidth","minItemsWidth","maxRowItems","itemsHorizontalAlign","emptyStateTextColor","emptyStateTextFontFamily","componentName$n","RawThirdPartyAppLogoClass","companyLogoWrapper","thirdPartyAppLogoWrapper","ThirdPartyAppLogoClass","logoMaxHeight","logoMaxWidth","thirdPartyAppLogo","companyLogoFallback","fallbackUrl","arrowsColor","componentName$m","attrsToSync$1","attrsToReRender$1","RawSecurityQuestionsSetup","comboBoxes","el","updateRemainingCombosData","getAttachedTextField","filterData","comboValue","selectedQuestionIds","reverse","sourceCombo","questions","answer","componentMap","question","maybeComponentType","rest","elements","SecurityQuestionsSetupClass","componentName$l","textFieldsAttrs","textsAttrs","attrMappings","attrsToSync","attrsToReRender","RawSecurityQuestionsVerify","texts","field","SecurityQuestionsVerifyClass","questionTextAlign","questionFontSize","questionFontFamily","questionCursor","errorMessageSize","errorMessagePadding","errorMessageRepeat","errorMessagePosition","NUMERIC_RE","componentName$k","shared","email","phone","inputBox","attrMap","PHONE_FIELD","BaseClass$6","HybridFieldClass","emailInputEle","emailInput","phoneVariant","phoneInputBoxInput","phoneCountryCodeInput","firstItem","activeInputEle","activeInput","handleActiveInput","updateAttrs","toggleInputVisibility","waitForInputs","initInputEles","overrideEmailInputType","overrideEmailSetAttribute","setInterval","clearInterval","onValueChange","origEmailSetAttr","expectedActiveInput","replaceAll","isNumericValue","setActiveInput","setActiveInputValue","setActiveInputSelectionStart","sanitizeCountryCodePrefix","origInputType","componentName$j","RawAlert","textComp","handleSlotChange","handleChildrenChange","assignedNodes","flatten","icon$3","AlertClass","componentName$i","observedAttributes$1","BaseInputClass$2","HcaptchaClass","toggleCaptchaEles","captchaEle","mockCaptchaEle","colors$2","colors","surface","primary","secondary","success","warning","colorName","currentColor","fonts$1","font1","family","font2","fontsRef$1","fonts","globals$1","typography","h1","font","weight","h2","h3","subtitle1","subtitle2","body1","body2","spacing","xs","sm","md","lg","xl","radius","wide","narrow","direction","vars$14","getThemeVars","colors$1","genColors$1","fontsRef","getThemeVars$1","globalRefs$H","compVars$9","helperTheme$6","helperRefs$6","helperVars$6","center","_square","_fullWidth","_loading","_disabled","contained","_hover","_active","_focused","vars$13","componentName$h","globalRefs$G","theme$2","refs$1","vars$12","placeholderTextColor","successMessageTextColor","toggleButtonSize","floating","_readOnly","_hasValue","_bordered","_invalid","globalRefs$F","vars$11","globalRefs$E","vars$10","password","vars$$","numberField","vars$_","emailField","vars$Z","_readonly","vars$Y","checkboxSize","knobMargin","globalRefs$D","vars$X","switchToggle","_checked","globalRefs$C","compVars$8","helperTheme$5","helperRefs$5","helperVars$5","verticalAlignment","horizontalAlignment","shadowColor","shadowColor$5","container","spaceBetween","column","vars$W","vars$V","logo$2","vars$U","logo$1","vars$T","logo","globalRefs$B","vars$S","text$1","_italic","_uppercase","_lowercase","globalRefs$A","vars$R","globalRefs$z","vars$Q","enrichedText","_empty","_hideWhenEmpty","globalRefs$y","compVars$7","helperTheme$4","helperRefs$4","helperVars$4","thickness","divider","_vertical","vars$P","vars$O","passcode","_hideCursor","globalRefs$x","vars$N","loaderLinear","_hidden","globalRefs$w","compVars$6","helperTheme$3","helperRefs$3","helperVars$3","spinnerColor","loaderRadial","vars$M","componentName$g","globalRefs$v","theme$1","refs","globalRefs$u","vars$L","vars$K","phoneField","vars$J","phoneInputBoxField","globalRefs$t","vars$I","newPassword","_required","vars$H","uploadFile","globalRefs$s","vars$G","buttonSelectionGroupItem","_selected","globalRefs$r","createBaseButtonSelectionGroupMappings","vars$F","buttonSelectionGroup","vars$E","buttonMultiSelectionGroup","globalRefs$q","compVars$5","modal","vars$D","globalRefs$p","vars$C","globalRefs$o","vars$B","shadowColor$4","notification","globalRefs$n","vars$A","multiSelectComboBox","globalRefs$m","vars$z","default","componentName$f","RawAvatar","avatarComponent","editableIcon","isEditable","host$7","editableBadge","avatar","avatar$2","AvatarClass","avatarTextColor","avatarBackgroundColor","editableIconColor","editableBorderColor","editableBackgroundColor","globalRefs$l","compVars$4","_editable","vars$y","globalRefs$k","vars$x","mappingsField","globalRefs$j","vars$w","userAttribute","globalRefs$i","vars$v","userAuthMethod","vars$u","samlGroupMappings","globalRefs$h","vars$t","policyValidation","vars$s","vars$r","globalRefs$g","vars$q","CodeSnippet","codeSnippetDarkThemeOverrides","codeSnippet","vars$p","globalRefs$f","radioGroup","vars$o","globalRefs$e","radioButton","globalRefs$d","vars$n","globalRefs$c","shadowColor$3","vars$m","dateField","componentName$e","AppsListClass","itemsFontWeight","fontWeightOverride","itemsFontSize","fontSizeOverride","itemsTextAlign","itemBackgroundColor","itemHoverBackgroundColor","backgroundColorOverride","itemBorderStyle","borderStyleOverride","itemBorderColor","borderColorOverride","itemBorderWidth","borderWidthOverride","itemVerticalPadding","verticalPaddingOverride","itemHorizontalPadding","horizontalPaddingOverride","itemAlignment","openInSameWindow","logoSize","itemTextVariant","vars$l","globalRefs$b","defaultHeight","appsList","itemPadding","globalRefs$a","compVars$3","helperTheme$2","helperRefs$2","helperVars$2","shadowColor$2","tiles","vars$k","globalRefs$9","vars$j","tile","vars$i","scopesList","globalRefs$8","vars$h","thirdPartyAppLogoFallback","vars$g","securityQuestionsSetup","vars$f","securityQuestionsVerify","vars$e","hybridField","globalRefs$7","vars$d","alert","vars$c","hcaptcha","false","componentName$d","BaseInputClass$1","observedAttrs$1","INVALID_OPTION_VALUE","componentName$c","host$6","AutocompleteFieldClass","fetchResults","vars$b","globalRefs$6","autocompleteField","GoogleMapsConnector","getOptionalParams","apiKey","g","h","k","l","q","m","r","google","maps","URLSearchParams","n","t","onerror","nonce","head","initGoogleMapsLoader","AutocompleteSuggestion","importLibrary","request","suggestions","fetchAutocompleteSuggestions","suggestion","prediction","placePrediction","placeId","RadarConnector","response","headers","Authorization","ok","status","json","addresses","address","formattedAddress","componentName$b","GOOGLE_MAPS_CONNECTOR_TEMPLATE","RADAR_CONNECTOR_TEMPLATE","CONNECTOR_CLASSES","BaseInputClass","initConnectorAttrs","observedAttrs","AddressFieldInternal","connectorMixin","connectorClasses","connectorTemplate","initializeConnector","ConnectorClass","connector","fetchConnectorResults","errorMsgValueMissing","initAutocomplete","componentName$a","host$5","AddressFieldClass","vars$a","addressField","fmt","pad","componentName$9","BaseClass$5","host$4","timer$2","TimerClass","seconds","secs","isPaused","startInterval","intervalCycle","stop","stopInterval","pause","resume","formatTime","ms","totalSeconds","floor","hours","secondsInMinute","minutes","paused","globalRefs$5","vars$9","componentName$8","buttonAttrs","mapButtonAttrs","timerAttrs","mapTimerAttrs","BaseClass$4","host$3","TimerButtonClass","onTimerStarted","onTimerEnded","toggleButtonDisable","globalRefs$4","vars$8","timerButton","_horizontal","componentName$7","RawPasswordStrength","barsContainer","textContainer","getCalcScoreFn","calcScore","module","score","renderBars","bars","option","bar","newScore","host$2","filledBar","PasswordStrengthClass","emptyBarColor","filledBarColor","barSpacing","barTransition","globalRefs$3","compVars$2","vars$7","componentName$6","RawCollapsibleContainer","headerText","isCollapsible","calcContentHeight","offsetHeight","scrollHeight","isCollapsed","collapse","animated","final","expand","updateHeaderText","selectors","iconWrapper","CollapsibleContainerClass","headerIconOrder","headerCursor","headerGap","textGrow","textDirection","iconAnimationDuration","contentAnimationDuration","globalRefs$2","compVars$1","helperTheme$1","helperRefs$1","helperVars$1","shadowColor$1","collapsibleContainer","iconPosition","_fillTitle","_border","_collapsible","vars$6","componentName$5","RawRecoveryCodes","onCopy","rc","onReadOnly","RecoveryCodesClass","iconGap","bulletGap","globalRefs$1","vars$5","textVars","recoveryCodes","componentName$4","itemRenderer$1","appId","disconnectButtonLabel","connectButtonLabel","BaseClass$3","host$1","OutboundAppsClass","errorIconColor","appLogoGap","contentGap","itemCursor","itemOutline","listBorderWidth","listBoxShadow","listPadding","onAppsListClick","readonly","srcElement","vars$4","outboundApps","componentName$3","RawOutboundAppButton","updateIcon","OutboundAppButtonClass","iconFillCurrentColor","compVars","outboundAppButton","_iconFillCurrentColor","vars$3","ensureDate","loginDate","numVal","deviceIconMap","desktop","mobile","tablet","unknown","componentName$2","lastLoginDate","deviceType","isCurrent","itemClassName","iconSrc","iconSrcDark","getDeviceIcon","loginLabel","lastLoginLabel","parseDate","time","toLocaleTimeString","hour12","hour","minute","formatMap","currentDeviceLabel","removeDeviceLink","hideActions","removeDeviceLabel","BaseClass$2","TrustedDevicesClass","listItemsGap","listBackgroundColor","listBorderRadius","itemBorderRadius","itemContentGap","badgeBorderColor","badgeTextColor","badgeBackgroundColor","badgeBorderRadius","devicePanelGap","deviceIconGap","deviceIconSize","lastLoginLabelGap","onRemoveClick","readOnly","closest","deviceId","vars$2","TrustedDevices","componentName$1","tooltipAttrs","BaseClass$1","TooltipClass","fontFamilyOverride","textColorOverride","hostDirectionOverride","_overlayElement","overlayContentNode","tooltipText","isStaticDisplay","insertAdjacentHTML","overflow","globalRefs","vars$1","helperTheme","helperRefs","helperVars","defaultShadow","button$1","textField$1","password$1","numberField$1","emailField$1","textArea$1","checkbox$1","switchToggle$1","container$1","logo$3","totpImage","notpImage","text$2","enrichedText$1","link$1","divider$1","passcode$1","loaderRadial$1","loaderLinear$1","comboBox$1","phoneField$1","phoneInputBoxField$1","newPassword$1","inputWrapper","uploadFile$1","buttonSelectionGroupItem$1","buttonSelectionGroup$1","buttonMultiSelectionGroup$1","modal$1","grid$1","notificationCard","multiSelectComboBox$1","badge$1","avatar$1","mappingsField$1","userAttribute$1","userAuthMethod$1","samlGroupMappings$1","policyValidation$1","image","image$1","icon$2","radioGroup$1","radioButton$1","calendar$1","dateField$1","list$1","listItem$1","appsList$1","scopesList$1","thirdPartyAppLogo$1","securityQuestionsSetup$1","securityQuestionsVerify$1","hybridField$1","alert$1","autocompleteField$1","addressField$1","timer$1","timerButton$1","passwordStrength$1","collapsibleContainer$1","recoveryCodes$1","hcaptcha$1","outboundApps$1","outboundAppButton$1","trustedDevices","comp","defaultTheme","themeVars","darkTheme","minSearchLength","noResultsFoundMessage","errorFetchingResultsMessage","disabled","debouncedSearch","asyncDebounce","func","currentId","resolveSet","rejectSet","debounced","requestId","catch","reject","onSearch","searchValue","HP_PREFIX","HoneypotClass","events","fillHoneypot","originalDescriptor","HTMLInputElement","currentValue","opacity","pointerEvents","zIndex","translations","zxcvbnEnPackage","graphs","zxcvbnCommonPackage","dictionary","zxcvbnOptions","setOptions"],"sourceRoot":""}
|