@descope/sdk-mixins 0.5.0 → 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/constants.js +6 -0
- package/dist/cjs/constants.js.map +1 -0
- package/dist/cjs/index.js +41 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/mixins/baseStaticUrlMixin.js +14 -0
- package/dist/cjs/mixins/baseStaticUrlMixin.js.map +1 -0
- package/dist/cjs/mixins/baseUrlMixin.js +14 -0
- package/dist/cjs/mixins/baseUrlMixin.js.map +1 -0
- package/dist/cjs/mixins/configMixin/configMixin.js +42 -0
- package/dist/cjs/mixins/configMixin/configMixin.js.map +1 -0
- package/dist/cjs/mixins/configMixin/constants.js +6 -0
- package/dist/cjs/mixins/configMixin/constants.js.map +1 -0
- package/dist/cjs/mixins/createStateManagementMixin.js +47 -0
- package/dist/cjs/mixins/createStateManagementMixin.js.map +1 -0
- package/dist/cjs/mixins/createValidateAttributesMixin/commonValidators.js +7 -0
- package/dist/cjs/mixins/createValidateAttributesMixin/commonValidators.js.map +1 -0
- package/dist/cjs/mixins/createValidateAttributesMixin/createValidateAttributesMixin.js +40 -0
- package/dist/cjs/mixins/createValidateAttributesMixin/createValidateAttributesMixin.js.map +1 -0
- package/dist/cjs/mixins/debuggerMixin/debugger-wc.js +229 -0
- package/dist/cjs/mixins/debuggerMixin/debugger-wc.js.map +1 -0
- package/dist/cjs/mixins/debuggerMixin/debuggerMixin.js +73 -0
- package/dist/cjs/mixins/debuggerMixin/debuggerMixin.js.map +1 -0
- package/dist/cjs/mixins/debuggerMixin/helpers.js +76 -0
- package/dist/cjs/mixins/debuggerMixin/helpers.js.map +1 -0
- package/dist/cjs/mixins/descopeUiMixin/constants.js +25 -0
- package/dist/cjs/mixins/descopeUiMixin/constants.js.map +1 -0
- package/dist/cjs/mixins/descopeUiMixin/descopeUiMixin.js +165 -0
- package/dist/cjs/mixins/descopeUiMixin/descopeUiMixin.js.map +1 -0
- package/dist/cjs/mixins/descopeUiMixin/helpers.js +18 -0
- package/dist/cjs/mixins/descopeUiMixin/helpers.js.map +1 -0
- package/dist/cjs/mixins/formMixin.js +57 -0
- package/dist/cjs/mixins/formMixin.js.map +1 -0
- package/dist/cjs/mixins/initElementMixin.js +33 -0
- package/dist/cjs/mixins/initElementMixin.js.map +1 -0
- package/dist/cjs/mixins/initLifecycleMixin.js +29 -0
- package/dist/cjs/mixins/initLifecycleMixin.js.map +1 -0
- package/dist/cjs/mixins/loggerMixin/loggerMixin.js +37 -0
- package/dist/cjs/mixins/loggerMixin/loggerMixin.js.map +1 -0
- package/dist/cjs/mixins/modalMixin/constants.js +6 -0
- package/dist/cjs/mixins/modalMixin/constants.js.map +1 -0
- package/dist/cjs/mixins/modalMixin/helpers.js +14 -0
- package/dist/cjs/mixins/modalMixin/helpers.js.map +1 -0
- package/dist/cjs/mixins/modalMixin/modalMixin.js +47 -0
- package/dist/cjs/mixins/modalMixin/modalMixin.js.map +1 -0
- package/dist/cjs/mixins/notificationsMixin/constants.js +6 -0
- package/dist/cjs/mixins/notificationsMixin/constants.js.map +1 -0
- package/dist/cjs/mixins/notificationsMixin/helpers.js +14 -0
- package/dist/cjs/mixins/notificationsMixin/helpers.js.map +1 -0
- package/dist/cjs/mixins/notificationsMixin/notificationsMixin.js +50 -0
- package/dist/cjs/mixins/notificationsMixin/notificationsMixin.js.map +1 -0
- package/dist/cjs/mixins/observeAttributesMixin/helpers.js +17 -0
- package/dist/cjs/mixins/observeAttributesMixin/helpers.js.map +1 -0
- package/dist/cjs/mixins/observeAttributesMixin/observeAttributesMixin.js +47 -0
- package/dist/cjs/mixins/observeAttributesMixin/observeAttributesMixin.js.map +1 -0
- package/dist/cjs/mixins/projectIdMixin.js +17 -0
- package/dist/cjs/mixins/projectIdMixin.js.map +1 -0
- package/dist/cjs/mixins/staticResourcesMixin/constants.js +13 -0
- package/dist/cjs/mixins/staticResourcesMixin/constants.js.map +1 -0
- package/dist/cjs/mixins/staticResourcesMixin/staticResourcesMixin.js +40 -0
- package/dist/cjs/mixins/staticResourcesMixin/staticResourcesMixin.js.map +1 -0
- package/dist/cjs/mixins/themeMixin/constants.js +7 -0
- package/dist/cjs/mixins/themeMixin/constants.js.map +1 -0
- package/dist/cjs/mixins/themeMixin/helpers.js +34 -0
- package/dist/cjs/mixins/themeMixin/helpers.js.map +1 -0
- package/dist/cjs/mixins/themeMixin/index.js +8 -0
- package/dist/cjs/mixins/themeMixin/index.js.map +1 -0
- package/dist/cjs/mixins/themeMixin/themeMixin.js +176 -0
- package/dist/cjs/mixins/themeMixin/themeMixin.js.map +1 -0
- package/dist/esm/constants.js +4 -0
- package/dist/esm/constants.js.map +1 -0
- package/dist/esm/index.js +18 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/mixins/baseStaticUrlMixin.js +12 -0
- package/dist/esm/mixins/baseStaticUrlMixin.js.map +1 -0
- package/dist/esm/mixins/baseUrlMixin.js +12 -0
- package/dist/esm/mixins/baseUrlMixin.js.map +1 -0
- package/dist/esm/mixins/configMixin/configMixin.js +40 -0
- package/dist/esm/mixins/configMixin/configMixin.js.map +1 -0
- package/dist/esm/mixins/configMixin/constants.js +4 -0
- package/dist/esm/mixins/configMixin/constants.js.map +1 -0
- package/dist/esm/mixins/createStateManagementMixin.js +45 -0
- package/dist/esm/mixins/createStateManagementMixin.js.map +1 -0
- package/dist/esm/mixins/createValidateAttributesMixin/commonValidators.js +5 -0
- package/dist/esm/mixins/createValidateAttributesMixin/commonValidators.js.map +1 -0
- package/dist/esm/mixins/createValidateAttributesMixin/createValidateAttributesMixin.js +38 -0
- package/dist/esm/mixins/createValidateAttributesMixin/createValidateAttributesMixin.js.map +1 -0
- package/dist/esm/mixins/debuggerMixin/debugger-wc.js +225 -0
- package/dist/esm/mixins/debuggerMixin/debugger-wc.js.map +1 -0
- package/dist/esm/mixins/debuggerMixin/debuggerMixin.js +71 -0
- package/dist/esm/mixins/debuggerMixin/debuggerMixin.js.map +1 -0
- package/dist/esm/mixins/debuggerMixin/helpers.js +72 -0
- package/dist/esm/mixins/debuggerMixin/helpers.js.map +1 -0
- package/dist/esm/mixins/descopeUiMixin/constants.js +16 -0
- package/dist/esm/mixins/descopeUiMixin/constants.js.map +1 -0
- package/dist/esm/mixins/descopeUiMixin/descopeUiMixin.js +163 -0
- package/dist/esm/mixins/descopeUiMixin/descopeUiMixin.js.map +1 -0
- package/dist/esm/mixins/descopeUiMixin/helpers.js +14 -0
- package/dist/esm/mixins/descopeUiMixin/helpers.js.map +1 -0
- package/dist/esm/mixins/formMixin.js +55 -0
- package/dist/esm/mixins/formMixin.js.map +1 -0
- package/dist/esm/mixins/initElementMixin.js +31 -0
- package/dist/esm/mixins/initElementMixin.js.map +1 -0
- package/dist/esm/mixins/initLifecycleMixin.js +27 -0
- package/dist/esm/mixins/initLifecycleMixin.js.map +1 -0
- package/dist/esm/mixins/loggerMixin/loggerMixin.js +35 -0
- package/dist/esm/mixins/loggerMixin/loggerMixin.js.map +1 -0
- package/dist/esm/mixins/modalMixin/constants.js +4 -0
- package/dist/esm/mixins/modalMixin/constants.js.map +1 -0
- package/dist/esm/mixins/modalMixin/helpers.js +12 -0
- package/dist/esm/mixins/modalMixin/helpers.js.map +1 -0
- package/dist/esm/mixins/modalMixin/modalMixin.js +45 -0
- package/dist/esm/mixins/modalMixin/modalMixin.js.map +1 -0
- package/dist/esm/mixins/notificationsMixin/constants.js +4 -0
- package/dist/esm/mixins/notificationsMixin/constants.js.map +1 -0
- package/dist/esm/mixins/notificationsMixin/helpers.js +12 -0
- package/dist/esm/mixins/notificationsMixin/helpers.js.map +1 -0
- package/dist/esm/mixins/notificationsMixin/notificationsMixin.js +48 -0
- package/dist/esm/mixins/notificationsMixin/notificationsMixin.js.map +1 -0
- package/dist/esm/mixins/observeAttributesMixin/helpers.js +15 -0
- package/dist/esm/mixins/observeAttributesMixin/helpers.js.map +1 -0
- package/dist/esm/mixins/observeAttributesMixin/observeAttributesMixin.js +45 -0
- package/dist/esm/mixins/observeAttributesMixin/observeAttributesMixin.js.map +1 -0
- package/dist/esm/mixins/projectIdMixin.js +15 -0
- package/dist/esm/mixins/projectIdMixin.js.map +1 -0
- package/dist/esm/mixins/staticResourcesMixin/constants.js +9 -0
- package/dist/esm/mixins/staticResourcesMixin/constants.js.map +1 -0
- package/dist/esm/mixins/staticResourcesMixin/staticResourcesMixin.js +37 -0
- package/dist/esm/mixins/staticResourcesMixin/staticResourcesMixin.js.map +1 -0
- package/dist/esm/mixins/themeMixin/constants.js +5 -0
- package/dist/esm/mixins/themeMixin/constants.js.map +1 -0
- package/dist/esm/mixins/themeMixin/helpers.js +31 -0
- package/dist/esm/mixins/themeMixin/helpers.js.map +1 -0
- package/dist/esm/mixins/themeMixin/index.js +2 -0
- package/dist/esm/mixins/themeMixin/index.js.map +1 -0
- package/dist/esm/mixins/themeMixin/themeMixin.js +174 -0
- package/dist/esm/mixins/themeMixin/themeMixin.js.map +1 -0
- package/dist/index.d.ts +543 -543
- package/dist/types/constants.d.ts +1 -0
- package/dist/types/index.d.ts +23 -0
- package/dist/types/mixins/baseStaticUrlMixin.d.ts +331 -0
- package/dist/types/mixins/baseUrlMixin.d.ts +331 -0
- package/dist/types/mixins/configMixin/configMixin.d.ts +357 -0
- package/dist/types/mixins/configMixin/constants.d.ts +1 -0
- package/dist/types/mixins/configMixin/index.d.ts +2 -0
- package/dist/types/mixins/configMixin/types.d.ts +43 -0
- package/dist/types/mixins/createStateManagementMixin.d.ts +341 -0
- package/dist/types/mixins/createValidateAttributesMixin/commonValidators.d.ts +1 -0
- package/dist/types/mixins/createValidateAttributesMixin/createValidateAttributesMixin.d.ts +346 -0
- package/dist/types/mixins/createValidateAttributesMixin/index.d.ts +1 -0
- package/dist/types/mixins/debuggerMixin/debugger-wc.d.ts +9 -0
- package/dist/types/mixins/debuggerMixin/debuggerMixin.d.ts +347 -0
- package/dist/types/mixins/debuggerMixin/helpers.d.ts +4 -0
- package/dist/types/mixins/debuggerMixin/index.d.ts +1 -0
- package/dist/types/mixins/debuggerMixin/types.d.ts +12 -0
- package/dist/types/mixins/descopeUiMixin/constants.d.ts +8 -0
- package/dist/types/mixins/descopeUiMixin/descopeUiMixin.d.ts +371 -0
- package/dist/types/mixins/descopeUiMixin/helpers.d.ts +3 -0
- package/dist/types/mixins/descopeUiMixin/index.d.ts +1 -0
- package/dist/types/mixins/formMixin.d.ts +345 -0
- package/dist/types/mixins/initElementMixin.d.ts +332 -0
- package/dist/types/mixins/initLifecycleMixin.d.ts +332 -0
- package/dist/types/mixins/loggerMixin/index.d.ts +2 -0
- package/dist/types/mixins/loggerMixin/loggerMixin.d.ts +339 -0
- package/dist/types/mixins/loggerMixin/types.d.ts +6 -0
- package/dist/types/mixins/modalMixin/constants.d.ts +1 -0
- package/dist/types/mixins/modalMixin/helpers.d.ts +1 -0
- package/dist/types/mixins/modalMixin/index.d.ts +1 -0
- package/dist/types/mixins/modalMixin/modalMixin.d.ts +401 -0
- package/dist/types/mixins/notificationsMixin/constants.d.ts +1 -0
- package/dist/types/mixins/notificationsMixin/helpers.d.ts +1 -0
- package/dist/types/mixins/notificationsMixin/index.d.ts +1 -0
- package/dist/types/mixins/notificationsMixin/notificationsMixin.d.ts +420 -0
- package/dist/types/mixins/observeAttributesMixin/helpers.d.ts +1 -0
- package/dist/types/mixins/observeAttributesMixin/index.d.ts +1 -0
- package/dist/types/mixins/observeAttributesMixin/observeAttributesMixin.d.ts +342 -0
- package/dist/types/mixins/projectIdMixin.d.ts +342 -0
- package/dist/types/mixins/staticResourcesMixin/constants.d.ts +4 -0
- package/dist/types/mixins/staticResourcesMixin/index.d.ts +1 -0
- package/dist/types/mixins/staticResourcesMixin/staticResourcesMixin.d.ts +356 -0
- package/dist/types/mixins/themeMixin/constants.d.ts +2 -0
- package/dist/types/mixins/themeMixin/helpers.d.ts +5 -0
- package/dist/types/mixins/themeMixin/index.d.ts +1 -0
- package/dist/types/mixins/themeMixin/themeMixin.d.ts +398 -0
- package/package.json +24 -11
- package/dist/cjs/index.cjs.js +0 -1185
- package/dist/cjs/index.cjs.js.map +0 -1
- package/dist/index.esm.js +0 -1166
- package/dist/index.esm.js.map +0 -1
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { IS_LOCAL_STORAGE } from '../../constants.js';
|
|
2
|
+
|
|
3
|
+
const DESCOPE_UI_SCRIPT_ID = 'load-descope-ui';
|
|
4
|
+
const DESCOPE_UI_FALLBACK_SCRIPT_ID = 'load-descope-ui-fallback-script';
|
|
5
|
+
const DESCOPE_UI_FALLBACK_2_SCRIPT_ID = 'load-descope-ui-fallback-script-2';
|
|
6
|
+
const UI_COMPONENTS_URL_KEY = 'base.ui.components.url';
|
|
7
|
+
const UI_COMPONENTS_URL = (IS_LOCAL_STORAGE && localStorage.getItem(UI_COMPONENTS_URL_KEY)) ||
|
|
8
|
+
'https://descopecdn.com/npm/@descope/web-components-ui@<version>/dist/umd/index.js';
|
|
9
|
+
const UI_COMPONENTS_FALLBACK_URL = (IS_LOCAL_STORAGE && localStorage.getItem(UI_COMPONENTS_URL_KEY)) ||
|
|
10
|
+
'https://static.descope.com/npm/@descope/web-components-ui@<version>/dist/umd/index.js';
|
|
11
|
+
const UI_COMPONENTS_FALLBACK_2_URL = (IS_LOCAL_STORAGE && localStorage.getItem(UI_COMPONENTS_URL_KEY)) ||
|
|
12
|
+
'https://cdn.jsdelivr.net/npm/@descope/web-components-ui@<version>/dist/umd/index.js';
|
|
13
|
+
const UI_COMPONENTS_URL_VERSION_PLACEHOLDER = '<version>';
|
|
14
|
+
|
|
15
|
+
export { DESCOPE_UI_FALLBACK_2_SCRIPT_ID, DESCOPE_UI_FALLBACK_SCRIPT_ID, DESCOPE_UI_SCRIPT_ID, UI_COMPONENTS_FALLBACK_2_URL, UI_COMPONENTS_FALLBACK_URL, UI_COMPONENTS_URL, UI_COMPONENTS_URL_KEY, UI_COMPONENTS_URL_VERSION_PLACEHOLDER };
|
|
16
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sources":["../../../../src/mixins/descopeUiMixin/constants.ts"],"sourcesContent":["import { IS_LOCAL_STORAGE } from '../../constants';\n\nexport const DESCOPE_UI_SCRIPT_ID = 'load-descope-ui';\nexport const DESCOPE_UI_FALLBACK_SCRIPT_ID = 'load-descope-ui-fallback-script';\nexport const DESCOPE_UI_FALLBACK_2_SCRIPT_ID =\n 'load-descope-ui-fallback-script-2';\n\nexport const UI_COMPONENTS_URL_KEY = 'base.ui.components.url';\n\nexport const UI_COMPONENTS_URL =\n (IS_LOCAL_STORAGE && localStorage.getItem(UI_COMPONENTS_URL_KEY)) ||\n 'https://descopecdn.com/npm/@descope/web-components-ui@<version>/dist/umd/index.js';\n\nexport const UI_COMPONENTS_FALLBACK_URL =\n (IS_LOCAL_STORAGE && localStorage.getItem(UI_COMPONENTS_URL_KEY)) ||\n 'https://static.descope.com/npm/@descope/web-components-ui@<version>/dist/umd/index.js';\n\nexport const UI_COMPONENTS_FALLBACK_2_URL =\n (IS_LOCAL_STORAGE && localStorage.getItem(UI_COMPONENTS_URL_KEY)) ||\n 'https://cdn.jsdelivr.net/npm/@descope/web-components-ui@<version>/dist/umd/index.js';\n\nexport const UI_COMPONENTS_URL_VERSION_PLACEHOLDER = '<version>';\n"],"names":[],"mappings":";;AAEO,MAAM,oBAAoB,GAAG,kBAAkB;AAC/C,MAAM,6BAA6B,GAAG,kCAAkC;AACxE,MAAM,+BAA+B,GAC1C,oCAAoC;AAE/B,MAAM,qBAAqB,GAAG,yBAAyB;AAEvD,MAAM,iBAAiB,GAC5B,CAAC,gBAAgB,IAAI,YAAY,CAAC,OAAO,CAAC,qBAAqB,CAAC;AAChE,IAAA,oFAAoF;AAE/E,MAAM,0BAA0B,GACrC,CAAC,gBAAgB,IAAI,YAAY,CAAC,OAAO,CAAC,qBAAqB,CAAC;AAChE,IAAA,wFAAwF;AAEnF,MAAM,4BAA4B,GACvC,CAAC,gBAAgB,IAAI,YAAY,CAAC,OAAO,CAAC,qBAAqB,CAAC;AAChE,IAAA,sFAAsF;AAEjF,MAAM,qCAAqC,GAAG;;;;"}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
import { __classPrivateFieldGet, __classPrivateFieldSet } from 'tslib';
|
|
2
|
+
import { createSingletonMixin, compose } from '@descope/sdk-helpers';
|
|
3
|
+
import { configMixin } from '../configMixin/configMixin.js';
|
|
4
|
+
import { loggerMixin } from '../loggerMixin/loggerMixin.js';
|
|
5
|
+
import { DESCOPE_UI_SCRIPT_ID, UI_COMPONENTS_URL, DESCOPE_UI_FALLBACK_2_SCRIPT_ID, UI_COMPONENTS_FALLBACK_2_URL, DESCOPE_UI_FALLBACK_SCRIPT_ID, UI_COMPONENTS_FALLBACK_URL } from './constants.js';
|
|
6
|
+
import { getDescopeUiComponentsList, setupScript, generateScriptUrl } from './helpers.js';
|
|
7
|
+
|
|
8
|
+
const descopeUiMixin = createSingletonMixin((superclass) => {
|
|
9
|
+
var _DescopeUiMixinClass_instances, _DescopeUiMixinClass_errorCbsSym, _DescopeUiMixinClass_loadCbsSym, _DescopeUiMixinClass_getComponentsVersion, _DescopeUiMixinClass_exposeAlternateEvents, _DescopeUiMixinClass_handleFallbackScript, _DescopeUiMixinClass_registerEvents, _DescopeUiMixinClass_getDescopeUiLoadingScript, _DescopeUiMixinClass_descopeUi, _DescopeUiMixinClass_loadDescopeUiComponent, _DescopeUiMixinClass_getDescopeUi, _a;
|
|
10
|
+
const BaseClass = compose(loggerMixin, configMixin)(superclass);
|
|
11
|
+
return _a = class DescopeUiMixinClass extends BaseClass {
|
|
12
|
+
constructor() {
|
|
13
|
+
super(...arguments);
|
|
14
|
+
_DescopeUiMixinClass_instances.add(this);
|
|
15
|
+
_DescopeUiMixinClass_errorCbsSym.set(this, Symbol('errorCbs'));
|
|
16
|
+
_DescopeUiMixinClass_loadCbsSym.set(this, Symbol('loadCbs'));
|
|
17
|
+
_DescopeUiMixinClass_descopeUi.set(this, void 0);
|
|
18
|
+
}
|
|
19
|
+
get descopeUi() {
|
|
20
|
+
if (!__classPrivateFieldGet(this, _DescopeUiMixinClass_descopeUi, "f")) {
|
|
21
|
+
__classPrivateFieldSet(this, _DescopeUiMixinClass_descopeUi, __classPrivateFieldGet(this, _DescopeUiMixinClass_instances, "m", _DescopeUiMixinClass_getDescopeUi).call(this), "f");
|
|
22
|
+
}
|
|
23
|
+
return __classPrivateFieldGet(this, _DescopeUiMixinClass_descopeUi, "f");
|
|
24
|
+
}
|
|
25
|
+
async loadDescopeUiComponents(templateOrComponentNames) {
|
|
26
|
+
const descopeUiComponentsList = Array.isArray(templateOrComponentNames)
|
|
27
|
+
? templateOrComponentNames
|
|
28
|
+
: getDescopeUiComponentsList(templateOrComponentNames);
|
|
29
|
+
return Promise.all(descopeUiComponentsList.map((componentName) => __classPrivateFieldGet(this, _DescopeUiMixinClass_instances, "m", _DescopeUiMixinClass_loadDescopeUiComponent).call(this, componentName)));
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
_DescopeUiMixinClass_errorCbsSym = new WeakMap(),
|
|
33
|
+
_DescopeUiMixinClass_loadCbsSym = new WeakMap(),
|
|
34
|
+
_DescopeUiMixinClass_descopeUi = new WeakMap(),
|
|
35
|
+
_DescopeUiMixinClass_instances = new WeakSet(),
|
|
36
|
+
_DescopeUiMixinClass_getComponentsVersion =
|
|
37
|
+
// eslint-disable-next-line class-methods-use-this
|
|
38
|
+
async function _DescopeUiMixinClass_getComponentsVersion() {
|
|
39
|
+
var _b;
|
|
40
|
+
const config = await this.config;
|
|
41
|
+
const componentsVersion = (_b = config === null || config === void 0 ? void 0 : config.projectConfig) === null || _b === void 0 ? void 0 : _b.componentsVersion;
|
|
42
|
+
if (!componentsVersion) {
|
|
43
|
+
this.logger.error('Could not get components version');
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
this.logger.debug(`Got component version "${componentsVersion}"`);
|
|
47
|
+
}
|
|
48
|
+
return componentsVersion;
|
|
49
|
+
},
|
|
50
|
+
_DescopeUiMixinClass_exposeAlternateEvents = function _DescopeUiMixinClass_exposeAlternateEvents(scriptEle) {
|
|
51
|
+
const errorCbsSym = __classPrivateFieldGet(this, _DescopeUiMixinClass_errorCbsSym, "f");
|
|
52
|
+
const loadCbsSym = __classPrivateFieldGet(this, _DescopeUiMixinClass_loadCbsSym, "f");
|
|
53
|
+
// eslint-disable-next-line no-param-reassign
|
|
54
|
+
scriptEle[errorCbsSym] = [];
|
|
55
|
+
// eslint-disable-next-line no-param-reassign
|
|
56
|
+
scriptEle[loadCbsSym] = [];
|
|
57
|
+
Object.defineProperty(scriptEle, 'onerror', {
|
|
58
|
+
set(cb) {
|
|
59
|
+
scriptEle[errorCbsSym].push(cb);
|
|
60
|
+
},
|
|
61
|
+
});
|
|
62
|
+
Object.defineProperty(scriptEle, 'onload', {
|
|
63
|
+
set(cb) {
|
|
64
|
+
scriptEle[loadCbsSym].push(cb);
|
|
65
|
+
},
|
|
66
|
+
});
|
|
67
|
+
},
|
|
68
|
+
_DescopeUiMixinClass_handleFallbackScript = async function _DescopeUiMixinClass_handleFallbackScript(errorCbs, loadCbs, elemId, scriptUrl) {
|
|
69
|
+
this.logger.debug('Trying to load DescopeUI from a fallback URL');
|
|
70
|
+
const fallbackScriptEle = setupScript(elemId);
|
|
71
|
+
document.body.append(fallbackScriptEle);
|
|
72
|
+
fallbackScriptEle.addEventListener('error', () => {
|
|
73
|
+
errorCbs.forEach((cb) => cb(`Cannot load DescopeUI from fallback URL, Make sure this URL is valid and return the correct script: "${fallbackScriptEle.src}"`));
|
|
74
|
+
});
|
|
75
|
+
fallbackScriptEle.addEventListener('load', () => {
|
|
76
|
+
loadCbs.forEach((cb) => cb());
|
|
77
|
+
});
|
|
78
|
+
fallbackScriptEle.src = generateScriptUrl(scriptUrl, await __classPrivateFieldGet(this, _DescopeUiMixinClass_instances, "m", _DescopeUiMixinClass_getComponentsVersion).call(this));
|
|
79
|
+
},
|
|
80
|
+
_DescopeUiMixinClass_registerEvents = function _DescopeUiMixinClass_registerEvents(scriptEle) {
|
|
81
|
+
scriptEle.addEventListener('error', () => {
|
|
82
|
+
scriptEle[__classPrivateFieldGet(this, _DescopeUiMixinClass_errorCbsSym, "f")].forEach((cb) => cb(`Cannot load DescopeUI from main URL, Make sure this URL is valid and return the correct script: "${scriptEle.src}"`));
|
|
83
|
+
// in case we could not load DescopeUI from the main URL, we are trying to load it from a fallback URL
|
|
84
|
+
__classPrivateFieldGet(this, _DescopeUiMixinClass_instances, "m", _DescopeUiMixinClass_handleFallbackScript).call(this, [
|
|
85
|
+
// we are adding a second fallback
|
|
86
|
+
__classPrivateFieldGet(this, _DescopeUiMixinClass_instances, "m", _DescopeUiMixinClass_handleFallbackScript).bind(this, scriptEle[__classPrivateFieldGet(this, _DescopeUiMixinClass_errorCbsSym, "f")], scriptEle[__classPrivateFieldGet(this, _DescopeUiMixinClass_loadCbsSym, "f")], DESCOPE_UI_FALLBACK_2_SCRIPT_ID, UI_COMPONENTS_FALLBACK_2_URL),
|
|
87
|
+
...scriptEle[__classPrivateFieldGet(this, _DescopeUiMixinClass_errorCbsSym, "f")],
|
|
88
|
+
], scriptEle[__classPrivateFieldGet(this, _DescopeUiMixinClass_loadCbsSym, "f")], DESCOPE_UI_FALLBACK_SCRIPT_ID, UI_COMPONENTS_FALLBACK_URL);
|
|
89
|
+
});
|
|
90
|
+
scriptEle.addEventListener('load', () => {
|
|
91
|
+
scriptEle[__classPrivateFieldGet(this, _DescopeUiMixinClass_loadCbsSym, "f")].forEach((cb) => cb());
|
|
92
|
+
});
|
|
93
|
+
},
|
|
94
|
+
_DescopeUiMixinClass_getDescopeUiLoadingScript = async function _DescopeUiMixinClass_getDescopeUiLoadingScript() {
|
|
95
|
+
if (!document.querySelector(`script#${DESCOPE_UI_SCRIPT_ID}`)) {
|
|
96
|
+
this.logger.debug('DescopeUI loading script does not exist, creating it', this);
|
|
97
|
+
const scriptEle = setupScript(DESCOPE_UI_SCRIPT_ID);
|
|
98
|
+
document.body.append(scriptEle);
|
|
99
|
+
__classPrivateFieldGet(this, _DescopeUiMixinClass_instances, "m", _DescopeUiMixinClass_exposeAlternateEvents).call(this, scriptEle);
|
|
100
|
+
__classPrivateFieldGet(this, _DescopeUiMixinClass_instances, "m", _DescopeUiMixinClass_registerEvents).call(this, scriptEle);
|
|
101
|
+
scriptEle.src = generateScriptUrl(UI_COMPONENTS_URL, await __classPrivateFieldGet(this, _DescopeUiMixinClass_instances, "m", _DescopeUiMixinClass_getComponentsVersion).call(this));
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
this.logger.debug('DescopeUI loading script already exists', this);
|
|
105
|
+
}
|
|
106
|
+
return document.getElementById(DESCOPE_UI_SCRIPT_ID);
|
|
107
|
+
},
|
|
108
|
+
_DescopeUiMixinClass_loadDescopeUiComponent = async function _DescopeUiMixinClass_loadDescopeUiComponent(componentName) {
|
|
109
|
+
const isComponentAlreadyDefined = !!customElements.get(componentName);
|
|
110
|
+
if (isComponentAlreadyDefined) {
|
|
111
|
+
this.logger.debug(`Loading component "${componentName}" is skipped as it is already defined`);
|
|
112
|
+
return undefined;
|
|
113
|
+
}
|
|
114
|
+
const descopeUI = await this.descopeUi;
|
|
115
|
+
if (!descopeUI[componentName]) {
|
|
116
|
+
this.logger.error(`Cannot load UI component "${componentName}"`, `Descope UI does not have a component named "${componentName}", available components are: "${Object.keys(descopeUI).join(', ')}"`);
|
|
117
|
+
return undefined;
|
|
118
|
+
}
|
|
119
|
+
try {
|
|
120
|
+
// eslint-disable-next-line @typescript-eslint/return-await
|
|
121
|
+
return await descopeUI[componentName]();
|
|
122
|
+
}
|
|
123
|
+
catch (e) {
|
|
124
|
+
// this error is thrown when trying to register a component which is already registered
|
|
125
|
+
// when running 2 flows on the same page, it might happen that the register fn is called twice
|
|
126
|
+
// in case it happens, we are silently ignore the error
|
|
127
|
+
if (e.name === 'NotSupportedError') {
|
|
128
|
+
// eslint-disable-next-line no-console
|
|
129
|
+
console.debug(`Encountered an error while attempting to define the "${componentName}" component, it is likely that this component is already defined`);
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
throw e;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
return undefined;
|
|
136
|
+
},
|
|
137
|
+
_DescopeUiMixinClass_getDescopeUi = function _DescopeUiMixinClass_getDescopeUi() {
|
|
138
|
+
return new Promise((res) => {
|
|
139
|
+
if (globalThis.DescopeUI) {
|
|
140
|
+
res(globalThis.DescopeUI);
|
|
141
|
+
}
|
|
142
|
+
__classPrivateFieldGet(this, _DescopeUiMixinClass_instances, "m", _DescopeUiMixinClass_getDescopeUiLoadingScript).call(this).then((scriptEle) => {
|
|
143
|
+
// eslint-disable-next-line no-param-reassign
|
|
144
|
+
scriptEle.onerror = this.logger.error;
|
|
145
|
+
// eslint-disable-next-line no-param-reassign
|
|
146
|
+
scriptEle.onload = () => {
|
|
147
|
+
this.logger.debug('DescopeUI was loaded');
|
|
148
|
+
res(globalThis.DescopeUI);
|
|
149
|
+
};
|
|
150
|
+
// in case the load event was dispatched before we registered, we have a fallback
|
|
151
|
+
setTimeout(() => {
|
|
152
|
+
if (globalThis.DescopeUI) {
|
|
153
|
+
res(globalThis.DescopeUI);
|
|
154
|
+
}
|
|
155
|
+
});
|
|
156
|
+
});
|
|
157
|
+
});
|
|
158
|
+
},
|
|
159
|
+
_a;
|
|
160
|
+
});
|
|
161
|
+
|
|
162
|
+
export { descopeUiMixin };
|
|
163
|
+
//# sourceMappingURL=descopeUiMixin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"descopeUiMixin.js","sources":["../../../../src/mixins/descopeUiMixin/descopeUiMixin.ts"],"sourcesContent":["import { compose, createSingletonMixin } from '@descope/sdk-helpers';\nimport { configMixin } from '../configMixin';\nimport { loggerMixin } from '../loggerMixin';\nimport {\n DESCOPE_UI_FALLBACK_2_SCRIPT_ID,\n DESCOPE_UI_FALLBACK_SCRIPT_ID,\n DESCOPE_UI_SCRIPT_ID,\n UI_COMPONENTS_FALLBACK_2_URL,\n UI_COMPONENTS_FALLBACK_URL,\n UI_COMPONENTS_URL,\n} from './constants';\nimport {\n generateScriptUrl,\n getDescopeUiComponentsList,\n setupScript,\n} from './helpers';\n\ntype ErrorCb = (error: string) => void;\ntype LoadCb = () => void;\n\nexport const descopeUiMixin = createSingletonMixin(\n <T extends CustomElementConstructor>(superclass: T) => {\n const BaseClass = compose(loggerMixin, configMixin)(superclass);\n\n return class DescopeUiMixinClass extends BaseClass {\n #errorCbsSym = Symbol('errorCbs');\n\n #loadCbsSym = Symbol('loadCbs');\n\n // eslint-disable-next-line class-methods-use-this\n async #getComponentsVersion() {\n const config = await this.config;\n const componentsVersion = config?.projectConfig?.componentsVersion;\n\n if (!componentsVersion) {\n this.logger.error('Could not get components version');\n } else {\n this.logger.debug(`Got component version \"${componentsVersion}\"`);\n }\n\n return componentsVersion;\n }\n\n // in order to allow only single load of DescopeUI across different instances,\n // and also allow fallback in case the components cannot be loaded from descope domain\n // we are managing an alternative way to register to the script events\n #exposeAlternateEvents(scriptEle: HTMLScriptElement) {\n const errorCbsSym = this.#errorCbsSym;\n const loadCbsSym = this.#loadCbsSym;\n\n // eslint-disable-next-line no-param-reassign\n scriptEle[errorCbsSym] = [];\n // eslint-disable-next-line no-param-reassign\n scriptEle[loadCbsSym] = [];\n\n Object.defineProperty(scriptEle, 'onerror', {\n set(cb: ErrorCb) {\n scriptEle[errorCbsSym].push(cb);\n },\n });\n\n Object.defineProperty(scriptEle, 'onload', {\n set(cb: LoadCb) {\n scriptEle[loadCbsSym].push(cb);\n },\n });\n }\n\n async #handleFallbackScript(\n errorCbs: ErrorCb[],\n loadCbs: LoadCb[],\n elemId: string,\n scriptUrl: string,\n ) {\n this.logger.debug('Trying to load DescopeUI from a fallback URL');\n const fallbackScriptEle = setupScript(elemId);\n document.body.append(fallbackScriptEle);\n\n fallbackScriptEle.addEventListener('error', () => {\n errorCbs.forEach((cb: ErrorCb) =>\n cb(\n `Cannot load DescopeUI from fallback URL, Make sure this URL is valid and return the correct script: \"${fallbackScriptEle.src}\"`,\n ),\n );\n });\n\n fallbackScriptEle.addEventListener('load', () => {\n loadCbs.forEach((cb: LoadCb) => cb());\n });\n\n fallbackScriptEle.src = generateScriptUrl(\n scriptUrl,\n await this.#getComponentsVersion(),\n );\n }\n\n #registerEvents(scriptEle: HTMLScriptElement) {\n scriptEle.addEventListener('error', () => {\n scriptEle[this.#errorCbsSym].forEach((cb: ErrorCb) =>\n cb(\n `Cannot load DescopeUI from main URL, Make sure this URL is valid and return the correct script: \"${scriptEle.src}\"`,\n ),\n );\n\n // in case we could not load DescopeUI from the main URL, we are trying to load it from a fallback URL\n this.#handleFallbackScript(\n [\n // we are adding a second fallback\n this.#handleFallbackScript.bind(\n this,\n scriptEle[this.#errorCbsSym],\n scriptEle[this.#loadCbsSym],\n DESCOPE_UI_FALLBACK_2_SCRIPT_ID,\n UI_COMPONENTS_FALLBACK_2_URL,\n ),\n ...scriptEle[this.#errorCbsSym],\n ],\n scriptEle[this.#loadCbsSym],\n DESCOPE_UI_FALLBACK_SCRIPT_ID,\n UI_COMPONENTS_FALLBACK_URL,\n );\n });\n\n scriptEle.addEventListener('load', () => {\n scriptEle[this.#loadCbsSym].forEach((cb: LoadCb) => cb());\n });\n }\n\n async #getDescopeUiLoadingScript() {\n if (!document.querySelector(`script#${DESCOPE_UI_SCRIPT_ID}`)) {\n this.logger.debug(\n 'DescopeUI loading script does not exist, creating it',\n this,\n );\n\n const scriptEle = setupScript(DESCOPE_UI_SCRIPT_ID);\n\n document.body.append(scriptEle);\n\n this.#exposeAlternateEvents(scriptEle);\n this.#registerEvents(scriptEle);\n\n scriptEle.src = generateScriptUrl(\n UI_COMPONENTS_URL,\n await this.#getComponentsVersion(),\n );\n } else {\n this.logger.debug('DescopeUI loading script already exists', this);\n }\n\n return document.getElementById(DESCOPE_UI_SCRIPT_ID);\n }\n\n #descopeUi: Promise<any>;\n\n get descopeUi() {\n if (!this.#descopeUi) {\n this.#descopeUi = this.#getDescopeUi();\n }\n\n return this.#descopeUi;\n }\n\n async #loadDescopeUiComponent(componentName: string) {\n const isComponentAlreadyDefined = !!customElements.get(componentName);\n\n if (isComponentAlreadyDefined) {\n this.logger.debug(\n `Loading component \"${componentName}\" is skipped as it is already defined`,\n );\n return undefined;\n }\n\n const descopeUI = await this.descopeUi;\n\n if (!descopeUI[componentName]) {\n this.logger.error(\n `Cannot load UI component \"${componentName}\"`,\n `Descope UI does not have a component named \"${componentName}\", available components are: \"${Object.keys(\n descopeUI,\n ).join(', ')}\"`,\n );\n return undefined;\n }\n\n try {\n // eslint-disable-next-line @typescript-eslint/return-await\n return await descopeUI[componentName]();\n } catch (e) {\n // this error is thrown when trying to register a component which is already registered\n // when running 2 flows on the same page, it might happen that the register fn is called twice\n // in case it happens, we are silently ignore the error\n if (e.name === 'NotSupportedError') {\n // eslint-disable-next-line no-console\n console.debug(\n `Encountered an error while attempting to define the \"${componentName}\" component, it is likely that this component is already defined`,\n );\n } else {\n throw e;\n }\n }\n\n return undefined;\n }\n\n async loadDescopeUiComponents(\n templateOrComponentNames: HTMLTemplateElement | string[],\n ) {\n const descopeUiComponentsList = Array.isArray(templateOrComponentNames)\n ? templateOrComponentNames\n : getDescopeUiComponentsList(templateOrComponentNames);\n\n return Promise.all(\n descopeUiComponentsList.map((componentName: string) =>\n this.#loadDescopeUiComponent(componentName),\n ),\n );\n }\n\n #getDescopeUi() {\n return new Promise((res) => {\n if (globalThis.DescopeUI) {\n res(globalThis.DescopeUI);\n }\n\n this.#getDescopeUiLoadingScript().then((scriptEle) => {\n // eslint-disable-next-line no-param-reassign\n scriptEle!.onerror = this.logger.error;\n // eslint-disable-next-line no-param-reassign\n scriptEle!.onload = () => {\n this.logger.debug('DescopeUI was loaded');\n res(globalThis.DescopeUI);\n };\n\n // in case the load event was dispatched before we registered, we have a fallback\n setTimeout(() => {\n if (globalThis.DescopeUI) {\n res(globalThis.DescopeUI);\n }\n });\n });\n });\n }\n };\n },\n);\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { UI_COMPONENTS_URL_VERSION_PLACEHOLDER } from './constants.js';
|
|
2
|
+
|
|
3
|
+
const setupScript = (id) => {
|
|
4
|
+
const scriptEle = document.createElement('script');
|
|
5
|
+
scriptEle.id = id;
|
|
6
|
+
return scriptEle;
|
|
7
|
+
};
|
|
8
|
+
const generateScriptUrl = (urlTemplate, componentsVersion) => urlTemplate.replace(UI_COMPONENTS_URL_VERSION_PLACEHOLDER, componentsVersion);
|
|
9
|
+
const getDescopeUiComponentsList = (template) => [
|
|
10
|
+
...Array.from(template.content.querySelectorAll('*')).reduce((acc, el) => el.localName.startsWith('descope-') ? acc.add(el.localName) : acc, new Set()),
|
|
11
|
+
];
|
|
12
|
+
|
|
13
|
+
export { generateScriptUrl, getDescopeUiComponentsList, setupScript };
|
|
14
|
+
//# sourceMappingURL=helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.js","sources":["../../../../src/mixins/descopeUiMixin/helpers.ts"],"sourcesContent":["import { UI_COMPONENTS_URL_VERSION_PLACEHOLDER } from './constants';\n\nexport const setupScript = (id: string) => {\n const scriptEle = document.createElement('script');\n scriptEle.id = id;\n\n return scriptEle;\n};\n\nexport const generateScriptUrl = (\n urlTemplate: string,\n componentsVersion: string,\n) =>\n urlTemplate.replace(UI_COMPONENTS_URL_VERSION_PLACEHOLDER, componentsVersion);\n\nexport const getDescopeUiComponentsList = (template: HTMLTemplateElement) => [\n ...Array.from(template.content.querySelectorAll('*')).reduce<Set<string>>(\n (acc, el: Element) =>\n el.localName.startsWith('descope-') ? acc.add(el.localName) : acc,\n new Set(),\n ),\n];\n"],"names":[],"mappings":";;AAEa,MAAA,WAAW,GAAG,CAAC,EAAU,KAAI;IACxC,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AACnD,IAAA,SAAS,CAAC,EAAE,GAAG,EAAE,CAAC;AAElB,IAAA,OAAO,SAAS,CAAC;AACnB,EAAE;AAEW,MAAA,iBAAiB,GAAG,CAC/B,WAAmB,EACnB,iBAAyB,KAEzB,WAAW,CAAC,OAAO,CAAC,qCAAqC,EAAE,iBAAiB,EAAE;MAEnE,0BAA0B,GAAG,CAAC,QAA6B,KAAK;IAC3E,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAC1D,CAAC,GAAG,EAAE,EAAW,KACf,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,EACnE,IAAI,GAAG,EAAE,CACV;;;;;"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { createSingletonMixin } from '@descope/sdk-helpers';
|
|
2
|
+
import { loggerMixin } from './loggerMixin/loggerMixin.js';
|
|
3
|
+
|
|
4
|
+
const formMixin = createSingletonMixin((superclass) => class FormMixinClass extends loggerMixin(superclass) {
|
|
5
|
+
validateForm(rootEle) {
|
|
6
|
+
return this.getFormInputs(rootEle).every((input) => {
|
|
7
|
+
var _a, _b;
|
|
8
|
+
(_a = input.reportValidity) === null || _a === void 0 ? void 0 : _a.call(input);
|
|
9
|
+
return (_b = input.checkValidity) === null || _b === void 0 ? void 0 : _b.call(input);
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
// eslint-disable-next-line class-methods-use-this
|
|
13
|
+
getFormInputs(rootEle) {
|
|
14
|
+
if (!rootEle) {
|
|
15
|
+
this.logger.debug('cannot get form inputs, no root element was received');
|
|
16
|
+
return [];
|
|
17
|
+
}
|
|
18
|
+
return Array.from(rootEle.querySelectorAll('[name]'));
|
|
19
|
+
}
|
|
20
|
+
getFormData(rootEle) {
|
|
21
|
+
return this.getFormInputs(rootEle).reduce((acc, input) => Object.assign(acc, { [input.getAttribute('name')]: input.value }), {});
|
|
22
|
+
}
|
|
23
|
+
setFormData(rootEle, data) {
|
|
24
|
+
this.getFormInputs(rootEle).forEach((input) => {
|
|
25
|
+
// eslint-disable-next-line no-prototype-builtins
|
|
26
|
+
if (data.hasOwnProperty(input.getAttribute('name'))) {
|
|
27
|
+
// eslint-disable-next-line no-param-reassign
|
|
28
|
+
input.value = data[input.getAttribute('name')];
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
resetFormData(rootEle) {
|
|
33
|
+
this.getFormInputs(rootEle).forEach((input) => {
|
|
34
|
+
// eslint-disable-next-line no-param-reassign
|
|
35
|
+
input.value = '';
|
|
36
|
+
input.checked = false;
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
getFormFieldNames(rootEle) {
|
|
40
|
+
return this.getFormInputs(rootEle).map((ele) => ele.name);
|
|
41
|
+
}
|
|
42
|
+
disableFormField(rootEle, name) {
|
|
43
|
+
var _a;
|
|
44
|
+
(_a = this.getFormInputs(rootEle)
|
|
45
|
+
.find((input) => input.name === name)) === null || _a === void 0 ? void 0 : _a.setAttribute('disabled', 'true');
|
|
46
|
+
}
|
|
47
|
+
removeFormField(rootEle, name) {
|
|
48
|
+
var _a;
|
|
49
|
+
(_a = this.getFormInputs(rootEle)
|
|
50
|
+
.find((input) => input.name === name)) === null || _a === void 0 ? void 0 : _a.remove();
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
export { formMixin };
|
|
55
|
+
//# sourceMappingURL=formMixin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formMixin.js","sources":["../../../src/mixins/formMixin.ts"],"sourcesContent":["import { createSingletonMixin } from '@descope/sdk-helpers';\nimport { loggerMixin } from './loggerMixin';\n\ntype ElementOrEmpty = Element | null | undefined;\n\nexport const formMixin = createSingletonMixin(\n <T extends CustomElementConstructor>(superclass: T) =>\n class FormMixinClass extends loggerMixin(superclass) {\n validateForm(rootEle: ElementOrEmpty) {\n return this.getFormInputs(rootEle).every((input: HTMLInputElement) => {\n input.reportValidity?.();\n return input.checkValidity?.();\n });\n }\n\n // eslint-disable-next-line class-methods-use-this\n getFormInputs(rootEle: ElementOrEmpty): HTMLInputElement[] {\n if (!rootEle) {\n this.logger.debug(\n 'cannot get form inputs, no root element was received',\n );\n return [];\n }\n return Array.from(\n rootEle.querySelectorAll('[name]'),\n ) as HTMLInputElement[];\n }\n\n getFormData(rootEle: ElementOrEmpty): any {\n return this.getFormInputs(rootEle).reduce(\n (acc, input) =>\n Object.assign(acc, { [input.getAttribute('name')!]: input.value }),\n {},\n );\n }\n\n setFormData(rootEle: ElementOrEmpty, data: Record<string, any>) {\n this.getFormInputs(rootEle).forEach((input) => {\n // eslint-disable-next-line no-prototype-builtins\n if (data.hasOwnProperty(input.getAttribute('name')!)) {\n // eslint-disable-next-line no-param-reassign\n input.value = data[input.getAttribute('name')!];\n }\n });\n }\n\n resetFormData(rootEle: ElementOrEmpty) {\n this.getFormInputs(rootEle).forEach((input) => {\n // eslint-disable-next-line no-param-reassign\n input.value = '';\n input.checked = false;\n });\n }\n\n getFormFieldNames(rootEle: ElementOrEmpty) {\n return this.getFormInputs(rootEle).map((ele) => ele.name);\n }\n\n disableFormField(rootEle: ElementOrEmpty, name: string) {\n this.getFormInputs(rootEle)\n .find((input) => input.name === name)\n ?.setAttribute('disabled', 'true');\n }\n\n removeFormField(rootEle: ElementOrEmpty, name: string) {\n this.getFormInputs(rootEle)\n .find((input) => input.name === name)\n ?.remove();\n }\n },\n);\n"],"names":[],"mappings":";;;AAKa,MAAA,SAAS,GAAG,oBAAoB,CAC3C,CAAqC,UAAa,KAChD,MAAM,cAAe,SAAQ,WAAW,CAAC,UAAU,CAAC,CAAA;AAClD,IAAA,YAAY,CAAC,OAAuB,EAAA;AAClC,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,KAAuB,KAAI;;AACnE,YAAA,CAAA,EAAA,GAAA,KAAK,CAAC,cAAc,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,KAAA,CAAI,CAAC;AACzB,YAAA,OAAO,CAAA,EAAA,GAAA,KAAK,CAAC,aAAa,qDAAI,CAAC;AACjC,SAAC,CAAC,CAAC;KACJ;;AAGD,IAAA,aAAa,CAAC,OAAuB,EAAA;QACnC,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,sDAAsD,CACvD,CAAC;AACF,YAAA,OAAO,EAAE,CAAC;SACX;QACD,OAAO,KAAK,CAAC,IAAI,CACf,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CACb,CAAC;KACzB;AAED,IAAA,WAAW,CAAC,OAAuB,EAAA;AACjC,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,MAAM,CACvC,CAAC,GAAG,EAAE,KAAK,KACT,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAE,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,EACpE,EAAE,CACH,CAAC;KACH;IAED,WAAW,CAAC,OAAuB,EAAE,IAAyB,EAAA;QAC5D,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;;AAE5C,YAAA,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAE,CAAC,EAAE;;AAEpD,gBAAA,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAE,CAAC,CAAC;aACjD;AACH,SAAC,CAAC,CAAC;KACJ;AAED,IAAA,aAAa,CAAC,OAAuB,EAAA;QACnC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;;AAE5C,YAAA,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;AACjB,YAAA,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;AACxB,SAAC,CAAC,CAAC;KACJ;AAED,IAAA,iBAAiB,CAAC,OAAuB,EAAA;AACvC,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC;KAC3D;IAED,gBAAgB,CAAC,OAAuB,EAAE,IAAY,EAAA;;AACpD,QAAA,CAAA,EAAA,GAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;AACxB,aAAA,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,0CACnC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;KACtC;IAED,eAAe,CAAC,OAAuB,EAAE,IAAY,EAAA;;AACnD,QAAA,CAAA,EAAA,GAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;AACxB,aAAA,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,MACnC,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,EAAE,CAAC;KACd;AACF,CAAA;;;;"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { createSingletonMixin } from '@descope/sdk-helpers';
|
|
2
|
+
|
|
3
|
+
const CONTENT_ROOT_ID = 'content-root';
|
|
4
|
+
const ROOT_ID = 'root';
|
|
5
|
+
const initElementMixin = createSingletonMixin((superclass) => class InitElementMixinClass extends superclass {
|
|
6
|
+
constructor(...rest) {
|
|
7
|
+
var _a, _b;
|
|
8
|
+
super(...rest);
|
|
9
|
+
this.attachShadow({ mode: 'open' }).innerHTML = `
|
|
10
|
+
|
|
11
|
+
<style>
|
|
12
|
+
#${ROOT_ID}, #${CONTENT_ROOT_ID} {
|
|
13
|
+
height: 100%;
|
|
14
|
+
}
|
|
15
|
+
#${ROOT_ID} {
|
|
16
|
+
position: relative;
|
|
17
|
+
height: fit-content;
|
|
18
|
+
}
|
|
19
|
+
</style>
|
|
20
|
+
<div id="${ROOT_ID}">
|
|
21
|
+
<div id="${CONTENT_ROOT_ID}"></div>
|
|
22
|
+
</div>
|
|
23
|
+
`;
|
|
24
|
+
this.contentRootElement =
|
|
25
|
+
(_a = this.shadowRoot) === null || _a === void 0 ? void 0 : _a.getElementById(CONTENT_ROOT_ID);
|
|
26
|
+
this.rootElement = (_b = this.shadowRoot) === null || _b === void 0 ? void 0 : _b.getElementById(ROOT_ID);
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
export { initElementMixin };
|
|
31
|
+
//# sourceMappingURL=initElementMixin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"initElementMixin.js","sources":["../../../src/mixins/initElementMixin.ts"],"sourcesContent":["import { createSingletonMixin } from '@descope/sdk-helpers';\n\nconst CONTENT_ROOT_ID = 'content-root';\nconst ROOT_ID = 'root';\n\nexport const initElementMixin = createSingletonMixin(\n <T extends CustomElementConstructor>(superclass: T) =>\n class InitElementMixinClass extends superclass {\n // the content of contentRootElement is being replaced dynamically\n // do not place content which is not dynamic inside\n contentRootElement: HTMLElement;\n\n rootElement: HTMLElement;\n\n constructor(...rest) {\n super(...rest);\n\n this.attachShadow({ mode: 'open' }).innerHTML = `\n\n <style>\n #${ROOT_ID}, #${CONTENT_ROOT_ID} {\n height: 100%;\n }\n #${ROOT_ID} {\n position: relative;\n height: fit-content;\n }\n </style>\n <div id=\"${ROOT_ID}\">\n <div id=\"${CONTENT_ROOT_ID}\"></div>\n </div>\n `;\n\n this.contentRootElement =\n this.shadowRoot?.getElementById(CONTENT_ROOT_ID)!;\n this.rootElement = this.shadowRoot?.getElementById(ROOT_ID)!;\n }\n },\n);\n"],"names":[],"mappings":";;AAEA,MAAM,eAAe,GAAG,cAAc,CAAC;AACvC,MAAM,OAAO,GAAG,MAAM,CAAC;AAEhB,MAAM,gBAAgB,GAAG,oBAAoB,CAClD,CAAqC,UAAa,KAChD,MAAM,qBAAsB,SAAQ,UAAU,CAAA;AAO5C,IAAA,WAAA,CAAY,GAAG,IAAI,EAAA;;AACjB,QAAA,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;QAEf,IAAI,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,SAAS,GAAG,CAAA;;;AAGzC,aAAA,EAAA,OAAO,MAAM,eAAe,CAAA;;;eAG5B,OAAO,CAAA;;;;;qBAKD,OAAO,CAAA;uBACL,eAAe,CAAA;;WAE3B,CAAC;AAEJ,QAAA,IAAI,CAAC,kBAAkB;YACrB,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,cAAc,CAAC,eAAe,CAAE,CAAC;AACpD,QAAA,IAAI,CAAC,WAAW,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,cAAc,CAAC,OAAO,CAAE,CAAC;KAC9D;AACF,CAAA;;;;"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { __classPrivateFieldGet, __classPrivateFieldSet } from 'tslib';
|
|
2
|
+
import { createSingletonMixin } from '@descope/sdk-helpers';
|
|
3
|
+
|
|
4
|
+
const initLifecycleMixin = createSingletonMixin((superclass) => { var _InitLifecycleMixinClass_isInit, _a; return _a = class InitLifecycleMixinClass extends superclass {
|
|
5
|
+
constructor() {
|
|
6
|
+
super(...arguments);
|
|
7
|
+
_InitLifecycleMixinClass_isInit.set(this, true);
|
|
8
|
+
}
|
|
9
|
+
connectedCallback() {
|
|
10
|
+
var _b, _c;
|
|
11
|
+
(_b = super.connectedCallback) === null || _b === void 0 ? void 0 : _b.call(this);
|
|
12
|
+
if ((_c = this.shadowRoot) === null || _c === void 0 ? void 0 : _c.isConnected) {
|
|
13
|
+
// the init function is running once, on the first time the component is connected
|
|
14
|
+
if (__classPrivateFieldGet(this, _InitLifecycleMixinClass_isInit, "f")) {
|
|
15
|
+
__classPrivateFieldSet(this, _InitLifecycleMixinClass_isInit, false, "f");
|
|
16
|
+
this.init();
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
// eslint-disable-next-line class-methods-use-this, @typescript-eslint/no-empty-function
|
|
21
|
+
async init() { }
|
|
22
|
+
},
|
|
23
|
+
_InitLifecycleMixinClass_isInit = new WeakMap(),
|
|
24
|
+
_a; });
|
|
25
|
+
|
|
26
|
+
export { initLifecycleMixin };
|
|
27
|
+
//# sourceMappingURL=initLifecycleMixin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"initLifecycleMixin.js","sources":["../../../src/mixins/initLifecycleMixin.ts"],"sourcesContent":["import { createSingletonMixin } from '@descope/sdk-helpers';\n\nexport const initLifecycleMixin = createSingletonMixin(\n <T extends CustomElementConstructor>(superclass: T) =>\n class InitLifecycleMixinClass extends superclass {\n #isInit = true;\n\n connectedCallback() {\n super.connectedCallback?.();\n\n if (this.shadowRoot?.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 // eslint-disable-next-line class-methods-use-this, @typescript-eslint/no-empty-function\n async init() {}\n },\n);\n"],"names":[],"mappings":";;;AAEO,MAAM,kBAAkB,GAAG,oBAAoB,CACpD,CAAqC,UAAa,KAAI,EAAA,IAAA,+BAAA,EAAA,EAAA,CAAA,CAAA,OAAA,EAAA,GACpD,MAAM,uBAAwB,SAAQ,UAAU,CAAA;AAAhD,QAAA,WAAA,GAAA;;AACE,YAAA,+BAAA,CAAA,GAAA,CAAA,IAAA,EAAU,IAAI,CAAC,CAAA;SAgBhB;QAdC,iBAAiB,GAAA;;AACf,YAAA,CAAA,EAAA,GAAA,KAAK,CAAC,iBAAiB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,IAAA,CAAI,CAAC;AAE5B,YAAA,IAAI,MAAA,IAAI,CAAC,UAAU,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,WAAW,EAAE;;AAEhC,gBAAA,IAAI,sBAAA,CAAA,IAAI,EAAQ,+BAAA,EAAA,GAAA,CAAA,EAAE;AAChB,oBAAA,sBAAA,CAAA,IAAI,EAAA,+BAAA,EAAW,KAAK,EAAA,GAAA,CAAA,CAAC;oBACrB,IAAI,CAAC,IAAI,EAAE,CAAC;iBACb;aACF;SACF;;QAGD,MAAM,IAAI,GAAA,GAAK;AAChB,KAAA;;AAAA,IAAA,EAAA,CAAA,EAAA;;;;"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { __classPrivateFieldGet, __classPrivateFieldSet } from 'tslib';
|
|
2
|
+
import { createSingletonMixin } from '@descope/sdk-helpers';
|
|
3
|
+
|
|
4
|
+
const logLevels = ['error', 'warn', 'info', 'debug'];
|
|
5
|
+
const loggerMixin = createSingletonMixin((superclass) => { var _LoggerMixinClass_instances, _LoggerMixinClass_logger, _LoggerMixinClass_wrapLogger, _a; return _a = class LoggerMixinClass extends superclass {
|
|
6
|
+
constructor() {
|
|
7
|
+
super(...arguments);
|
|
8
|
+
_LoggerMixinClass_instances.add(this);
|
|
9
|
+
_LoggerMixinClass_logger.set(this, __classPrivateFieldGet(this, _LoggerMixinClass_instances, "m", _LoggerMixinClass_wrapLogger).call(this, console));
|
|
10
|
+
}
|
|
11
|
+
set logger(logger) {
|
|
12
|
+
__classPrivateFieldSet(this, _LoggerMixinClass_logger, __classPrivateFieldGet(this, _LoggerMixinClass_instances, "m", _LoggerMixinClass_wrapLogger).call(this, logger), "f");
|
|
13
|
+
}
|
|
14
|
+
get logger() {
|
|
15
|
+
return __classPrivateFieldGet(this, _LoggerMixinClass_logger, "f");
|
|
16
|
+
}
|
|
17
|
+
// eslint-disable-next-line class-methods-use-this, @typescript-eslint/no-unused-vars
|
|
18
|
+
onLogEvent(logLevel, data) { }
|
|
19
|
+
},
|
|
20
|
+
_LoggerMixinClass_logger = new WeakMap(),
|
|
21
|
+
_LoggerMixinClass_instances = new WeakSet(),
|
|
22
|
+
_LoggerMixinClass_wrapLogger = function _LoggerMixinClass_wrapLogger(logger) {
|
|
23
|
+
return logLevels.reduce((acc, logLevel) => {
|
|
24
|
+
acc[logLevel] = (...args) => {
|
|
25
|
+
var _b;
|
|
26
|
+
this.onLogEvent(logLevel, args);
|
|
27
|
+
(_b = logger[logLevel]) === null || _b === void 0 ? void 0 : _b.call(logger, ...args);
|
|
28
|
+
};
|
|
29
|
+
return acc;
|
|
30
|
+
}, {});
|
|
31
|
+
},
|
|
32
|
+
_a; });
|
|
33
|
+
|
|
34
|
+
export { loggerMixin };
|
|
35
|
+
//# sourceMappingURL=loggerMixin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loggerMixin.js","sources":["../../../../src/mixins/loggerMixin/loggerMixin.ts"],"sourcesContent":["import { createSingletonMixin } from '@descope/sdk-helpers';\nimport { Logger } from './types';\n\nconst logLevels = ['error', 'warn', 'info', 'debug'] as const;\n\nexport type LogLevel = (typeof logLevels)[number];\n\nexport const loggerMixin = createSingletonMixin(\n <T extends CustomElementConstructor>(superclass: T) =>\n class LoggerMixinClass extends superclass {\n #logger: Logger = this.#wrapLogger(console);\n\n #wrapLogger(logger: Partial<Logger>) {\n return logLevels.reduce((acc, logLevel) => {\n acc[logLevel] = (...args: any[]) => {\n this.onLogEvent(logLevel, args);\n logger[logLevel]?.(...args);\n };\n\n return acc;\n }, {}) as Logger;\n }\n\n set logger(logger: Partial<Logger>) {\n this.#logger = this.#wrapLogger(logger);\n }\n\n get logger(): Logger {\n return this.#logger;\n }\n\n // eslint-disable-next-line class-methods-use-this, @typescript-eslint/no-unused-vars\n onLogEvent(logLevel: LogLevel, data: any[]) {}\n },\n);\n"],"names":[],"mappings":";;;AAGA,MAAM,SAAS,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAU,CAAC;AAIvD,MAAM,WAAW,GAAG,oBAAoB,CAC7C,CAAqC,UAAa,KAAI,EAAA,IAAA,2BAAA,EAAA,wBAAA,EAAA,4BAAA,EAAA,EAAA,CAAA,CAAA,OAAA,EAAA,GACpD,MAAM,gBAAiB,SAAQ,UAAU,CAAA;AAAzC,QAAA,WAAA,GAAA;;;YACE,wBAAkB,CAAA,GAAA,CAAA,IAAA,EAAA,sBAAA,CAAA,IAAI,EAAY,2BAAA,EAAA,GAAA,EAAA,4BAAA,CAAA,CAAA,IAAA,CAAhB,IAAI,EAAa,OAAO,CAAC,CAAC,CAAA;SAuB7C;QAVC,IAAI,MAAM,CAAC,MAAuB,EAAA;YAChC,sBAAA,CAAA,IAAI,EAAW,wBAAA,EAAA,sBAAA,CAAA,IAAI,EAAA,2BAAA,EAAA,GAAA,EAAA,4BAAA,CAAY,CAAhB,IAAA,CAAA,IAAI,EAAa,MAAM,CAAC,EAAA,GAAA,CAAA,CAAC;SACzC;AAED,QAAA,IAAI,MAAM,GAAA;YACR,OAAO,sBAAA,CAAA,IAAI,EAAA,wBAAA,EAAA,GAAA,CAAQ,CAAC;SACrB;;AAGD,QAAA,UAAU,CAAC,QAAkB,EAAE,IAAW,KAAI;AAC/C,KAAA;;;yEArBa,MAAuB,EAAA;QACjC,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,QAAQ,KAAI;YACxC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,IAAW,KAAI;;AACjC,gBAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;gBAChC,CAAA,EAAA,GAAA,MAAM,CAAC,QAAQ,CAAC,uDAAG,GAAG,IAAI,CAAC,CAAC;AAC9B,aAAC,CAAC;AAEF,YAAA,OAAO,GAAG,CAAC;SACZ,EAAE,EAAE,CAAW,CAAC;KAClB;AAYF,IAAA,EAAA,CAAA,EAAA;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sources":["../../../../src/mixins/modalMixin/constants.ts"],"sourcesContent":["export const MODAL_ELE_TAG = 'descope-modal';\n"],"names":[],"mappings":"AAAO,MAAM,aAAa,GAAG;;;;"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { MODAL_ELE_TAG } from './constants.js';
|
|
2
|
+
|
|
3
|
+
const createModalEle = (config = {}) => {
|
|
4
|
+
const modal = document.createElement(MODAL_ELE_TAG);
|
|
5
|
+
Object.keys(config).forEach((key) => {
|
|
6
|
+
modal.setAttribute(key, config[key]);
|
|
7
|
+
});
|
|
8
|
+
return modal;
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
export { createModalEle };
|
|
12
|
+
//# sourceMappingURL=helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.js","sources":["../../../../src/mixins/modalMixin/helpers.ts"],"sourcesContent":["import { MODAL_ELE_TAG } from './constants';\n\nexport const createModalEle = (config = {}) => {\n const modal = document.createElement(MODAL_ELE_TAG);\n Object.keys(config).forEach((key) => {\n modal.setAttribute(key, config[key]);\n });\n\n return modal;\n};\n"],"names":[],"mappings":";;MAEa,cAAc,GAAG,CAAC,MAAM,GAAG,EAAE,KAAI;IAC5C,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;IACpD,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;QAClC,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AACvC,KAAC,CAAC,CAAC;AAEH,IAAA,OAAO,KAAK,CAAC;AACf;;;;"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { __classPrivateFieldGet } from 'tslib';
|
|
2
|
+
import { createSingletonMixin, compose } from '@descope/sdk-helpers';
|
|
3
|
+
import { initLifecycleMixin } from '../initLifecycleMixin.js';
|
|
4
|
+
import { initElementMixin } from '../initElementMixin.js';
|
|
5
|
+
import { descopeUiMixin } from '../descopeUiMixin/descopeUiMixin.js';
|
|
6
|
+
import { createModalEle } from './helpers.js';
|
|
7
|
+
import { MODAL_ELE_TAG } from './constants.js';
|
|
8
|
+
import { ModalDriver } from '@descope/sdk-component-drivers';
|
|
9
|
+
|
|
10
|
+
const modalMixin = createSingletonMixin((superclass) => {
|
|
11
|
+
var _ModalMixinClass_ModalDriverWrapper, _a;
|
|
12
|
+
const BaseClass = compose(initLifecycleMixin, initElementMixin, descopeUiMixin)(superclass);
|
|
13
|
+
return _a = class ModalMixinClass extends BaseClass {
|
|
14
|
+
constructor() {
|
|
15
|
+
super(...arguments);
|
|
16
|
+
_ModalMixinClass_ModalDriverWrapper.set(this, (() => {
|
|
17
|
+
const loadDescopeUiComponents = this.loadDescopeUiComponents.bind(this);
|
|
18
|
+
return class ModalDriverWrapper extends ModalDriver {
|
|
19
|
+
setContent(template) {
|
|
20
|
+
loadDescopeUiComponents(template);
|
|
21
|
+
super.setContent(template);
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
})());
|
|
25
|
+
}
|
|
26
|
+
createModal(config) {
|
|
27
|
+
const baseConfig = {};
|
|
28
|
+
const modal = createModalEle(Object.assign(Object.assign({}, baseConfig), config));
|
|
29
|
+
this.rootElement.append(modal);
|
|
30
|
+
return new (__classPrivateFieldGet(this, _ModalMixinClass_ModalDriverWrapper, "f"))(modal, {
|
|
31
|
+
logger: this.logger,
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
async init() {
|
|
35
|
+
var _b;
|
|
36
|
+
this.loadDescopeUiComponents([MODAL_ELE_TAG]);
|
|
37
|
+
await ((_b = super.init) === null || _b === void 0 ? void 0 : _b.call(this));
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
_ModalMixinClass_ModalDriverWrapper = new WeakMap(),
|
|
41
|
+
_a;
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
export { modalMixin };
|
|
45
|
+
//# sourceMappingURL=modalMixin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modalMixin.js","sources":["../../../../src/mixins/modalMixin/modalMixin.ts"],"sourcesContent":["// eslint-disable-next-line max-classes-per-file\nimport { createSingletonMixin, compose } from '@descope/sdk-helpers';\nimport { initLifecycleMixin } from '../initLifecycleMixin';\nimport { initElementMixin } from '../initElementMixin';\nimport { descopeUiMixin } from '../descopeUiMixin';\nimport { createModalEle } from './helpers';\nimport { MODAL_ELE_TAG } from './constants';\nimport { ModalDriver } from '@descope/sdk-component-drivers';\n\nexport const modalMixin = createSingletonMixin(\n <T extends CustomElementConstructor>(superclass: T) => {\n const BaseClass = compose(\n initLifecycleMixin,\n initElementMixin,\n descopeUiMixin,\n )(superclass);\n return class ModalMixinClass extends BaseClass {\n #ModalDriverWrapper = (() => {\n const loadDescopeUiComponents = this.loadDescopeUiComponents.bind(this);\n return class ModalDriverWrapper extends ModalDriver {\n setContent(template: HTMLTemplateElement) {\n loadDescopeUiComponents(template);\n super.setContent(template);\n }\n };\n })();\n\n createModal(config?: Record<string, string>) {\n const baseConfig = {};\n\n const modal = createModalEle({\n ...baseConfig,\n ...config,\n });\n\n this.rootElement.append(modal);\n\n return new this.#ModalDriverWrapper(modal, {\n logger: this.logger,\n }) as ModalDriver;\n }\n\n async init() {\n this.loadDescopeUiComponents([MODAL_ELE_TAG]);\n await super.init?.();\n }\n };\n },\n);\n"],"names":[],"mappings":";;;;;;;;;MASa,UAAU,GAAG,oBAAoB,CAC5C,CAAqC,UAAa,KAAI;;AACpD,IAAA,MAAM,SAAS,GAAG,OAAO,CACvB,kBAAkB,EAClB,gBAAgB,EAChB,cAAc,CACf,CAAC,UAAU,CAAC,CAAC;IACd,OAAO,EAAA,GAAA,MAAM,eAAgB,SAAQ,SAAS,CAAA;AAAvC,YAAA,WAAA,GAAA;;gBACL,mCAAsB,CAAA,GAAA,CAAA,IAAA,EAAA,CAAC,MAAK;oBAC1B,MAAM,uBAAuB,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACxE,OAAO,MAAM,kBAAmB,SAAQ,WAAW,CAAA;AACjD,wBAAA,UAAU,CAAC,QAA6B,EAAA;4BACtC,uBAAuB,CAAC,QAAQ,CAAC,CAAC;AAClC,4BAAA,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;yBAC5B;qBACF,CAAC;iBACH,GAAG,CAAC,CAAA;aAqBN;AAnBC,YAAA,WAAW,CAAC,MAA+B,EAAA;gBACzC,MAAM,UAAU,GAAG,EAAE,CAAC;gBAEtB,MAAM,KAAK,GAAG,cAAc,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACvB,UAAU,CACV,EAAA,MAAM,EACT,CAAC;AAEH,gBAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAE/B,gBAAA,OAAO,KAAI,sBAAA,CAAA,IAAI,EAAoB,mCAAA,EAAA,GAAA,CAAA,EAAC,KAAK,EAAE;oBACzC,MAAM,EAAE,IAAI,CAAC,MAAM;AACpB,iBAAA,CAAgB,CAAC;aACnB;AAED,YAAA,MAAM,IAAI,GAAA;;AACR,gBAAA,IAAI,CAAC,uBAAuB,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;AAC9C,gBAAA,OAAM,CAAA,EAAA,GAAA,KAAK,CAAC,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,IAAA,CAAI,CAAA,CAAC;aACtB;AACF,SAAA;;AAAC,QAAA,EAAA,CAAA;AACJ,CAAC;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sources":["../../../../src/mixins/notificationsMixin/constants.ts"],"sourcesContent":["export const NOTIFICATION_ELE_TAG = 'descope-notification';\n"],"names":[],"mappings":"AAAO,MAAM,oBAAoB,GAAG;;;;"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { NOTIFICATION_ELE_TAG } from './constants.js';
|
|
2
|
+
|
|
3
|
+
const createNotificationEle = (config = {}) => {
|
|
4
|
+
const notification = document.createElement(NOTIFICATION_ELE_TAG);
|
|
5
|
+
Object.keys(config).forEach((key) => {
|
|
6
|
+
notification.setAttribute(key, config[key]);
|
|
7
|
+
});
|
|
8
|
+
return notification;
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
export { createNotificationEle };
|
|
12
|
+
//# sourceMappingURL=helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.js","sources":["../../../../src/mixins/notificationsMixin/helpers.ts"],"sourcesContent":["import { NOTIFICATION_ELE_TAG } from './constants';\n\nexport const createNotificationEle = (config = {}) => {\n const notification = document.createElement(NOTIFICATION_ELE_TAG);\n Object.keys(config).forEach((key) => {\n notification.setAttribute(key, config[key]);\n });\n\n return notification;\n};\n"],"names":[],"mappings":";;MAEa,qBAAqB,GAAG,CAAC,MAAM,GAAG,EAAE,KAAI;IACnD,MAAM,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC;IAClE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;QAClC,YAAY,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9C,KAAC,CAAC,CAAC;AAEH,IAAA,OAAO,YAAY,CAAC;AACtB;;;;"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { __classPrivateFieldGet } from 'tslib';
|
|
2
|
+
import { createSingletonMixin, compose, createTemplate } from '@descope/sdk-helpers';
|
|
3
|
+
import { initLifecycleMixin } from '../initLifecycleMixin.js';
|
|
4
|
+
import { initElementMixin } from '../initElementMixin.js';
|
|
5
|
+
import { descopeUiMixin } from '../descopeUiMixin/descopeUiMixin.js';
|
|
6
|
+
import { createNotificationEle } from './helpers.js';
|
|
7
|
+
import { NOTIFICATION_ELE_TAG } from './constants.js';
|
|
8
|
+
import { NotificationDriver } from '@descope/sdk-component-drivers';
|
|
9
|
+
|
|
10
|
+
const notificationsMixin = createSingletonMixin((superclass) => {
|
|
11
|
+
var _NotificationsMixinClass_NotificationDriverWrapper, _a;
|
|
12
|
+
const BaseClass = compose(initLifecycleMixin, initElementMixin, descopeUiMixin)(superclass);
|
|
13
|
+
return _a = class NotificationsMixinClass extends BaseClass {
|
|
14
|
+
constructor() {
|
|
15
|
+
super(...arguments);
|
|
16
|
+
_NotificationsMixinClass_NotificationDriverWrapper.set(this, (() => {
|
|
17
|
+
const loadDescopeUiComponents = this.loadDescopeUiComponents.bind(this);
|
|
18
|
+
return class NotificationDriverWrapper extends NotificationDriver {
|
|
19
|
+
setContent(templateOrString) {
|
|
20
|
+
const template = typeof templateOrString === 'string'
|
|
21
|
+
? createTemplate(templateOrString)
|
|
22
|
+
: templateOrString;
|
|
23
|
+
loadDescopeUiComponents(template);
|
|
24
|
+
super.setContent(template);
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
})());
|
|
28
|
+
}
|
|
29
|
+
createNotification(config) {
|
|
30
|
+
const baseConfig = {};
|
|
31
|
+
const notification = createNotificationEle(Object.assign(Object.assign({}, baseConfig), config));
|
|
32
|
+
this.rootElement.append(notification);
|
|
33
|
+
return new (__classPrivateFieldGet(this, _NotificationsMixinClass_NotificationDriverWrapper, "f"))(notification, {
|
|
34
|
+
logger: this.logger,
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
async init() {
|
|
38
|
+
var _b;
|
|
39
|
+
await ((_b = super.init) === null || _b === void 0 ? void 0 : _b.call(this));
|
|
40
|
+
this.loadDescopeUiComponents([NOTIFICATION_ELE_TAG]);
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
_NotificationsMixinClass_NotificationDriverWrapper = new WeakMap(),
|
|
44
|
+
_a;
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
export { notificationsMixin };
|
|
48
|
+
//# sourceMappingURL=notificationsMixin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notificationsMixin.js","sources":["../../../../src/mixins/notificationsMixin/notificationsMixin.ts"],"sourcesContent":["// eslint-disable-next-line max-classes-per-file\nimport {\n createSingletonMixin,\n compose,\n createTemplate,\n} from '@descope/sdk-helpers';\nimport { initLifecycleMixin } from '../initLifecycleMixin';\nimport { initElementMixin } from '../initElementMixin';\nimport { descopeUiMixin } from '../descopeUiMixin';\nimport { createNotificationEle } from './helpers';\nimport { NOTIFICATION_ELE_TAG } from './constants';\nimport { NotificationDriver } from '@descope/sdk-component-drivers';\n\nexport const notificationsMixin = createSingletonMixin(\n <T extends CustomElementConstructor>(superclass: T) => {\n const BaseClass = compose(\n initLifecycleMixin,\n initElementMixin,\n descopeUiMixin,\n )(superclass);\n return class NotificationsMixinClass extends BaseClass {\n #NotificationDriverWrapper = (() => {\n const loadDescopeUiComponents = this.loadDescopeUiComponents.bind(this);\n return class NotificationDriverWrapper extends NotificationDriver {\n setContent(templateOrString: HTMLTemplateElement | string) {\n const template =\n typeof templateOrString === 'string'\n ? createTemplate(templateOrString)\n : templateOrString;\n\n loadDescopeUiComponents(template);\n super.setContent(template);\n }\n };\n })();\n\n createNotification(\n config?: {\n mode: 'success' | 'error';\n duration: number;\n 'has-close-button'?: boolean;\n position?:\n | 'top-stretch'\n | 'top-start'\n | 'top-center'\n | 'top-end'\n | 'middle'\n | 'bottom-start'\n | 'bottom-center'\n | 'bottom-end'\n | 'bottom-stretch';\n size: 'xs' | 'sm' | 'md' | 'lg';\n bordered?: boolean;\n } & {\n [key: string]: string | boolean | number;\n },\n ) {\n const baseConfig = {};\n\n const notification = createNotificationEle({\n ...baseConfig,\n ...config,\n });\n\n this.rootElement.append(notification);\n\n return new this.#NotificationDriverWrapper(notification, {\n logger: this.logger,\n });\n }\n\n async init() {\n await super.init?.();\n this.loadDescopeUiComponents([NOTIFICATION_ELE_TAG]);\n }\n };\n },\n);\n"],"names":[],"mappings":";;;;;;;;;MAaa,kBAAkB,GAAG,oBAAoB,CACpD,CAAqC,UAAa,KAAI;;AACpD,IAAA,MAAM,SAAS,GAAG,OAAO,CACvB,kBAAkB,EAClB,gBAAgB,EAChB,cAAc,CACf,CAAC,UAAU,CAAC,CAAC;IACd,OAAO,EAAA,GAAA,MAAM,uBAAwB,SAAQ,SAAS,CAAA;AAA/C,YAAA,WAAA,GAAA;;gBACL,kDAA6B,CAAA,GAAA,CAAA,IAAA,EAAA,CAAC,MAAK;oBACjC,MAAM,uBAAuB,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACxE,OAAO,MAAM,yBAA0B,SAAQ,kBAAkB,CAAA;AAC/D,wBAAA,UAAU,CAAC,gBAA8C,EAAA;AACvD,4BAAA,MAAM,QAAQ,GACZ,OAAO,gBAAgB,KAAK,QAAQ;AAClC,kCAAE,cAAc,CAAC,gBAAgB,CAAC;kCAChC,gBAAgB,CAAC;4BAEvB,uBAAuB,CAAC,QAAQ,CAAC,CAAC;AAClC,4BAAA,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;yBAC5B;qBACF,CAAC;iBACH,GAAG,CAAC,CAAA;aAyCN;AAvCC,YAAA,kBAAkB,CAChB,MAkBC,EAAA;gBAED,MAAM,UAAU,GAAG,EAAE,CAAC;gBAEtB,MAAM,YAAY,GAAG,qBAAqB,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACrC,UAAU,CACV,EAAA,MAAM,EACT,CAAC;AAEH,gBAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;AAEtC,gBAAA,OAAO,KAAI,sBAAA,CAAA,IAAI,EAA2B,kDAAA,EAAA,GAAA,CAAA,EAAC,YAAY,EAAE;oBACvD,MAAM,EAAE,IAAI,CAAC,MAAM;AACpB,iBAAA,CAAC,CAAC;aACJ;AAED,YAAA,MAAM,IAAI,GAAA;;AACR,gBAAA,OAAM,CAAA,EAAA,GAAA,KAAK,CAAC,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,IAAA,CAAI,CAAA,CAAC;AACrB,gBAAA,IAAI,CAAC,uBAAuB,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC;aACtD;AACF,SAAA;;AAAC,QAAA,EAAA,CAAA;AACJ,CAAC;;;;"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
const attributesObserver = (ele, callback) => {
|
|
2
|
+
// sync all attrs on init
|
|
3
|
+
Array.from(ele.attributes).forEach((attr) => callback(attr.name));
|
|
4
|
+
const observer = new MutationObserver((mutationsList) => {
|
|
5
|
+
mutationsList.forEach((mutation) => {
|
|
6
|
+
if (mutation.type === 'attributes') {
|
|
7
|
+
callback(mutation.attributeName);
|
|
8
|
+
}
|
|
9
|
+
});
|
|
10
|
+
});
|
|
11
|
+
observer.observe(ele, { attributes: true });
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
export { attributesObserver };
|
|
15
|
+
//# sourceMappingURL=helpers.js.map
|