@descope/sdk-mixins 0.5.0 → 0.5.2
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 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.js","sources":["../../../../src/mixins/observeAttributesMixin/helpers.ts"],"sourcesContent":["export const attributesObserver = (\n ele: HTMLElement,\n callback: (attrName: string) => void,\n) => {\n // sync all attrs on init\n Array.from(ele.attributes).forEach((attr) => callback(attr.name));\n\n const observer = new MutationObserver((mutationsList) => {\n mutationsList.forEach((mutation) => {\n if (mutation.type === 'attributes') {\n callback(mutation.attributeName);\n }\n });\n });\n\n observer.observe(ele, { attributes: true });\n};\n"],"names":[],"mappings":"MAAa,kBAAkB,GAAG,CAChC,GAAgB,EAChB,QAAoC,KAClC;;IAEF,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAElE,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC,CAAC,aAAa,KAAI;AACtD,QAAA,aAAa,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAI;AACjC,YAAA,IAAI,QAAQ,CAAC,IAAI,KAAK,YAAY,EAAE;AAClC,gBAAA,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;aAClC;AACH,SAAC,CAAC,CAAC;AACL,KAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9C;;;;"}
|
|
@@ -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 { loggerMixin } from '../loggerMixin/loggerMixin.js';
|
|
5
|
+
import { attributesObserver } from './helpers.js';
|
|
6
|
+
|
|
7
|
+
const observeAttributesMixin = createSingletonMixin((superclass) => {
|
|
8
|
+
var _ObserveAttributesMixinClass_observeMappings, _a;
|
|
9
|
+
const BaseClass = compose(loggerMixin, initLifecycleMixin)(superclass);
|
|
10
|
+
return _a = class ObserveAttributesMixinClass extends BaseClass {
|
|
11
|
+
constructor() {
|
|
12
|
+
super(...arguments);
|
|
13
|
+
_ObserveAttributesMixinClass_observeMappings.set(this, {});
|
|
14
|
+
}
|
|
15
|
+
async init() {
|
|
16
|
+
var _b;
|
|
17
|
+
await ((_b = super.init) === null || _b === void 0 ? void 0 : _b.call(this));
|
|
18
|
+
attributesObserver(this, (attrName) => {
|
|
19
|
+
var _b;
|
|
20
|
+
(_b = __classPrivateFieldGet(this, _ObserveAttributesMixinClass_observeMappings, "f")[attrName]) === null || _b === void 0 ? void 0 : _b.forEach((cb) => {
|
|
21
|
+
cb(attrName, this.getAttribute(attrName));
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
observeAttribute(attrName, onAttrChange) {
|
|
26
|
+
if (!__classPrivateFieldGet(this, _ObserveAttributesMixinClass_observeMappings, "f")[attrName]) {
|
|
27
|
+
__classPrivateFieldGet(this, _ObserveAttributesMixinClass_observeMappings, "f")[attrName] = [];
|
|
28
|
+
}
|
|
29
|
+
const idx = __classPrivateFieldGet(this, _ObserveAttributesMixinClass_observeMappings, "f")[attrName].push(onAttrChange);
|
|
30
|
+
return () => __classPrivateFieldGet(this, _ObserveAttributesMixinClass_observeMappings, "f")[attrName].splice(idx, 1);
|
|
31
|
+
}
|
|
32
|
+
observeAttributes(attrs, cb) {
|
|
33
|
+
const unobserveList = attrs.reduce((acc, attrName) => {
|
|
34
|
+
acc.push(this.observeAttribute(attrName, cb));
|
|
35
|
+
return acc;
|
|
36
|
+
}, []);
|
|
37
|
+
return () => unobserveList.forEach((unobserve) => unobserve());
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
_ObserveAttributesMixinClass_observeMappings = new WeakMap(),
|
|
41
|
+
_a;
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
export { observeAttributesMixin };
|
|
45
|
+
//# sourceMappingURL=observeAttributesMixin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"observeAttributesMixin.js","sources":["../../../../src/mixins/observeAttributesMixin/observeAttributesMixin.ts"],"sourcesContent":["import { createSingletonMixin, compose } from '@descope/sdk-helpers';\nimport { initLifecycleMixin } from '../initLifecycleMixin';\nimport { loggerMixin } from '../loggerMixin';\nimport { attributesObserver } from './helpers';\n\ntype OnAttrChange = (attrName: string, value: string | null) => void;\n\nexport const observeAttributesMixin = createSingletonMixin(\n <T extends CustomElementConstructor>(superclass: T) => {\n const BaseClass = compose(loggerMixin, initLifecycleMixin)(superclass);\n return class ObserveAttributesMixinClass extends BaseClass {\n #observeMappings = {};\n\n async init() {\n await super.init?.();\n\n attributesObserver(this, (attrName: string) => {\n this.#observeMappings[attrName]?.forEach((cb: OnAttrChange) => {\n cb(attrName, this.getAttribute(attrName));\n });\n });\n }\n\n observeAttribute(attrName: string, onAttrChange: OnAttrChange) {\n if (!this.#observeMappings[attrName]) {\n this.#observeMappings[attrName] = [];\n }\n\n const idx = this.#observeMappings[attrName].push(onAttrChange);\n\n return () => this.#observeMappings[attrName].splice(idx, 1);\n }\n\n observeAttributes(attrs: string[], cb: OnAttrChange) {\n const unobserveList = attrs.reduce((acc, attrName) => {\n acc.push(this.observeAttribute(attrName, cb));\n\n return acc;\n }, []);\n\n return () => unobserveList.forEach((unobserve) => unobserve());\n }\n };\n },\n);\n"],"names":[],"mappings":";;;;;;MAOa,sBAAsB,GAAG,oBAAoB,CACxD,CAAqC,UAAa,KAAI;;IACpD,MAAM,SAAS,GAAG,OAAO,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC,UAAU,CAAC,CAAC;IACvE,OAAO,EAAA,GAAA,MAAM,2BAA4B,SAAQ,SAAS,CAAA;AAAnD,YAAA,WAAA,GAAA;;AACL,gBAAA,4CAAA,CAAA,GAAA,CAAA,IAAA,EAAmB,EAAE,CAAC,CAAA;aA+BvB;AA7BC,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;AAErB,gBAAA,kBAAkB,CAAC,IAAI,EAAE,CAAC,QAAgB,KAAI;;AAC5C,oBAAA,CAAA,EAAA,GAAA,sBAAA,CAAA,IAAI,EAAiB,4CAAA,EAAA,GAAA,CAAA,CAAC,QAAQ,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,CAAC,CAAC,EAAgB,KAAI;wBAC5D,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC5C,qBAAC,CAAC,CAAC;AACL,iBAAC,CAAC,CAAC;aACJ;YAED,gBAAgB,CAAC,QAAgB,EAAE,YAA0B,EAAA;gBAC3D,IAAI,CAAC,uBAAA,IAAI,EAAA,4CAAA,EAAA,GAAA,CAAiB,CAAC,QAAQ,CAAC,EAAE;AACpC,oBAAA,sBAAA,CAAA,IAAI,EAAiB,4CAAA,EAAA,GAAA,CAAA,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;iBACtC;AAED,gBAAA,MAAM,GAAG,GAAG,sBAAA,CAAA,IAAI,EAAiB,4CAAA,EAAA,GAAA,CAAA,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAE/D,gBAAA,OAAO,MAAM,sBAAA,CAAA,IAAI,oDAAiB,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;aAC7D;YAED,iBAAiB,CAAC,KAAe,EAAE,EAAgB,EAAA;gBACjD,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,QAAQ,KAAI;AACnD,oBAAA,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;AAE9C,oBAAA,OAAO,GAAG,CAAC;iBACZ,EAAE,EAAE,CAAC,CAAC;AAEP,gBAAA,OAAO,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC,CAAC;aAChE;AACF,SAAA;;AAAC,QAAA,EAAA,CAAA;AACJ,CAAC;;;;"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { createSingletonMixin, compose } from '@descope/sdk-helpers';
|
|
2
|
+
import { missingAttrValidator } from './createValidateAttributesMixin/commonValidators.js';
|
|
3
|
+
import { createValidateAttributesMixin } from './createValidateAttributesMixin/createValidateAttributesMixin.js';
|
|
4
|
+
|
|
5
|
+
const projectIdMixin = createSingletonMixin((superclass) => {
|
|
6
|
+
const BaseClass = compose(createValidateAttributesMixin({ 'project-id': missingAttrValidator }))(superclass);
|
|
7
|
+
return class ProjectIdMixinClass extends BaseClass {
|
|
8
|
+
get projectId() {
|
|
9
|
+
return this.getAttribute('project-id');
|
|
10
|
+
}
|
|
11
|
+
};
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
export { projectIdMixin };
|
|
15
|
+
//# sourceMappingURL=projectIdMixin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projectIdMixin.js","sources":["../../../src/mixins/projectIdMixin.ts"],"sourcesContent":["import { createSingletonMixin, compose } from '@descope/sdk-helpers';\nimport { missingAttrValidator } from './createValidateAttributesMixin/commonValidators';\nimport { createValidateAttributesMixin } from './createValidateAttributesMixin';\n\nexport const projectIdMixin = createSingletonMixin(\n <T extends CustomElementConstructor>(superclass: T) => {\n const BaseClass = compose(\n createValidateAttributesMixin({ 'project-id': missingAttrValidator }),\n )(superclass);\n\n return class ProjectIdMixinClass extends BaseClass {\n get projectId() {\n return this.getAttribute('project-id');\n }\n };\n },\n);\n"],"names":[],"mappings":";;;;MAIa,cAAc,GAAG,oBAAoB,CAChD,CAAqC,UAAa,KAAI;AACpD,IAAA,MAAM,SAAS,GAAG,OAAO,CACvB,6BAA6B,CAAC,EAAE,YAAY,EAAE,oBAAoB,EAAE,CAAC,CACtE,CAAC,UAAU,CAAC,CAAC;IAEd,OAAO,MAAM,mBAAoB,SAAQ,SAAS,CAAA;AAChD,QAAA,IAAI,SAAS,GAAA;AACX,YAAA,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;SACxC;KACF,CAAC;AACJ,CAAC;;;;"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { IS_LOCAL_STORAGE } from '../../constants.js';
|
|
2
|
+
|
|
3
|
+
const BASE_CONTENT_URL_KEY = 'base.content.url';
|
|
4
|
+
const BASE_CONTENT_URL = 'https://static.descope.com/pages';
|
|
5
|
+
const OVERRIDE_CONTENT_URL = (IS_LOCAL_STORAGE && localStorage.getItem(BASE_CONTENT_URL_KEY)) || '';
|
|
6
|
+
const ASSETS_FOLDER = 'v2-beta';
|
|
7
|
+
|
|
8
|
+
export { ASSETS_FOLDER, BASE_CONTENT_URL, OVERRIDE_CONTENT_URL };
|
|
9
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sources":["../../../../src/mixins/staticResourcesMixin/constants.ts"],"sourcesContent":["import { IS_LOCAL_STORAGE } from '../../constants';\n\nconst BASE_CONTENT_URL_KEY = 'base.content.url';\n\nexport const BASE_CONTENT_URL = 'https://static.descope.com/pages';\n\nexport const OVERRIDE_CONTENT_URL =\n (IS_LOCAL_STORAGE && localStorage.getItem(BASE_CONTENT_URL_KEY)) || '';\n\nexport const ASSETS_FOLDER = 'v2-beta';\nexport const PREV_VER_ASSETS_FOLDER = 'v2-alpha';\n"],"names":[],"mappings":";;AAEA,MAAM,oBAAoB,GAAG,kBAAkB,CAAC;AAEzC,MAAM,gBAAgB,GAAG,mCAAmC;AAEtD,MAAA,oBAAoB,GAC/B,CAAC,gBAAgB,IAAI,YAAY,CAAC,OAAO,CAAC,oBAAoB,CAAC,KAAK,GAAG;AAElE,MAAM,aAAa,GAAG;;;;"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { createSingletonMixin, compose, pathJoin } from '@descope/sdk-helpers';
|
|
2
|
+
import { loggerMixin } from '../loggerMixin/loggerMixin.js';
|
|
3
|
+
import { OVERRIDE_CONTENT_URL, BASE_CONTENT_URL, ASSETS_FOLDER } from './constants.js';
|
|
4
|
+
import { projectIdMixin } from '../projectIdMixin.js';
|
|
5
|
+
import { baseUrlMixin } from '../baseUrlMixin.js';
|
|
6
|
+
|
|
7
|
+
function getResourceUrl({ projectId, filename, assetsFolder = ASSETS_FOLDER, baseUrl, }) {
|
|
8
|
+
const url = new URL(OVERRIDE_CONTENT_URL || baseUrl || BASE_CONTENT_URL);
|
|
9
|
+
url.pathname = pathJoin(url.pathname, projectId, assetsFolder, filename);
|
|
10
|
+
return url.toString();
|
|
11
|
+
}
|
|
12
|
+
const staticResourcesMixin = createSingletonMixin((superclass) => {
|
|
13
|
+
const BaseClass = compose(loggerMixin, projectIdMixin, baseUrlMixin)(superclass);
|
|
14
|
+
return class StaticResourcesMixinClass extends BaseClass {
|
|
15
|
+
async fetchStaticResource(filename, format) {
|
|
16
|
+
const resourceUrl = getResourceUrl({
|
|
17
|
+
projectId: this.projectId,
|
|
18
|
+
filename,
|
|
19
|
+
baseUrl: this.baseStaticUrl,
|
|
20
|
+
});
|
|
21
|
+
const res = await fetch(resourceUrl, { cache: 'default' });
|
|
22
|
+
if (!res.ok) {
|
|
23
|
+
this.logger.error(`Error fetching URL ${resourceUrl} [${res.status}]`);
|
|
24
|
+
}
|
|
25
|
+
return {
|
|
26
|
+
body: await res[format](),
|
|
27
|
+
headers: Object.fromEntries(res.headers.entries()),
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
get baseStaticUrl() {
|
|
31
|
+
return this.getAttribute('base-static-url');
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
export { getResourceUrl, staticResourcesMixin };
|
|
37
|
+
//# sourceMappingURL=staticResourcesMixin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"staticResourcesMixin.js","sources":["../../../../src/mixins/staticResourcesMixin/staticResourcesMixin.ts"],"sourcesContent":["import { pathJoin, compose, createSingletonMixin } from '@descope/sdk-helpers';\nimport { loggerMixin } from '../loggerMixin';\nimport {\n ASSETS_FOLDER,\n BASE_CONTENT_URL,\n OVERRIDE_CONTENT_URL,\n} from './constants';\nimport { projectIdMixin } from '../projectIdMixin';\nimport { baseUrlMixin } from '../baseUrlMixin';\n\ntype Format = 'text' | 'json';\n\nexport function getResourceUrl({\n projectId,\n filename,\n assetsFolder = ASSETS_FOLDER,\n baseUrl,\n}: {\n projectId: string;\n filename: string;\n assetsFolder?: string;\n baseUrl?: string;\n}) {\n const url = new URL(OVERRIDE_CONTENT_URL || baseUrl || BASE_CONTENT_URL);\n url.pathname = pathJoin(url.pathname, projectId, assetsFolder, filename);\n\n return url.toString();\n}\n\nexport const staticResourcesMixin = createSingletonMixin(\n <T extends CustomElementConstructor>(superclass: T) => {\n const BaseClass = compose(\n loggerMixin,\n projectIdMixin,\n baseUrlMixin,\n )(superclass);\n\n return class StaticResourcesMixinClass extends BaseClass {\n async fetchStaticResource<F extends Format>(\n filename: string,\n format: F,\n ): Promise<{\n body: F extends 'json' ? Record<string, any> : string;\n headers: Record<string, string>;\n }> {\n const resourceUrl = getResourceUrl({\n projectId: this.projectId,\n filename,\n baseUrl: this.baseStaticUrl,\n });\n const res = await fetch(resourceUrl, { cache: 'default' });\n if (!res.ok) {\n this.logger.error(\n `Error fetching URL ${resourceUrl} [${res.status}]`,\n );\n }\n\n return {\n body: await res[format](),\n headers: Object.fromEntries(res.headers.entries()),\n };\n }\n\n get baseStaticUrl() {\n return this.getAttribute('base-static-url');\n }\n };\n },\n);\n"],"names":[],"mappings":";;;;;;AAYgB,SAAA,cAAc,CAAC,EAC7B,SAAS,EACT,QAAQ,EACR,YAAY,GAAG,aAAa,EAC5B,OAAO,GAMR,EAAA;IACC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,oBAAoB,IAAI,OAAO,IAAI,gBAAgB,CAAC,CAAC;AACzE,IAAA,GAAG,CAAC,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;AAEzE,IAAA,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;AACxB,CAAC;MAEY,oBAAoB,GAAG,oBAAoB,CACtD,CAAqC,UAAa,KAAI;AACpD,IAAA,MAAM,SAAS,GAAG,OAAO,CACvB,WAAW,EACX,cAAc,EACd,YAAY,CACb,CAAC,UAAU,CAAC,CAAC;IAEd,OAAO,MAAM,yBAA0B,SAAQ,SAAS,CAAA;AACtD,QAAA,MAAM,mBAAmB,CACvB,QAAgB,EAChB,MAAS,EAAA;YAKT,MAAM,WAAW,GAAG,cAAc,CAAC;gBACjC,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,QAAQ;gBACR,OAAO,EAAE,IAAI,CAAC,aAAa;AAC5B,aAAA,CAAC,CAAC;AACH,YAAA,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;AAC3D,YAAA,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE;AACX,gBAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,CAAA,mBAAA,EAAsB,WAAW,CAAA,EAAA,EAAK,GAAG,CAAC,MAAM,CAAA,CAAA,CAAG,CACpD,CAAC;aACH;YAED,OAAO;AACL,gBAAA,IAAI,EAAE,MAAM,GAAG,CAAC,MAAM,CAAC,EAAE;gBACzB,OAAO,EAAE,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;aACnD,CAAC;SACH;AAED,QAAA,IAAI,aAAa,GAAA;AACf,YAAA,OAAO,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC;SAC7C;KACF,CAAC;AACJ,CAAC;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sources":["../../../../src/mixins/themeMixin/constants.ts"],"sourcesContent":["// Those files are saved on a new folder to prevent breaking changes\nexport const DEFAULT_STYLE_ID = 'theme';\nexport const CONFIG_FILENAME = 'config.json';\n"],"names":[],"mappings":"AAAA;AACO,MAAM,gBAAgB,GAAG;;;;"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { UI_COMPONENTS_URL_KEY } from '../descopeUiMixin/constants.js';
|
|
2
|
+
|
|
3
|
+
const loadFont = (url) => {
|
|
4
|
+
const font = document.createElement('link');
|
|
5
|
+
font.href = url;
|
|
6
|
+
font.rel = 'stylesheet';
|
|
7
|
+
document.head.appendChild(font);
|
|
8
|
+
};
|
|
9
|
+
const loadDevTheme = async () => {
|
|
10
|
+
const componentsUrl = localStorage.getItem(UI_COMPONENTS_URL_KEY);
|
|
11
|
+
const descopeDevUrl = componentsUrl === null || componentsUrl === void 0 ? void 0 : componentsUrl.replace(/[^\/]+$/, 'DescopeDev.js');
|
|
12
|
+
// eslint-disable-next-line no-console
|
|
13
|
+
console.warn('Trying to load DescopeDev.js from', descopeDevUrl);
|
|
14
|
+
const scriptEle = document.createElement('script');
|
|
15
|
+
scriptEle.src = descopeDevUrl;
|
|
16
|
+
document.body.appendChild(scriptEle);
|
|
17
|
+
await new Promise((resolve, reject) => {
|
|
18
|
+
scriptEle.onload = resolve;
|
|
19
|
+
scriptEle.onerror = reject;
|
|
20
|
+
});
|
|
21
|
+
if (globalThis.DescopeDev) {
|
|
22
|
+
const { themeToStyle, defaultTheme, darkTheme } = globalThis.DescopeDev;
|
|
23
|
+
return {
|
|
24
|
+
light: themeToStyle(defaultTheme),
|
|
25
|
+
dark: themeToStyle(darkTheme),
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
export { loadDevTheme, loadFont };
|
|
31
|
+
//# sourceMappingURL=helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.js","sources":["../../../../src/mixins/themeMixin/helpers.ts"],"sourcesContent":["import { UI_COMPONENTS_URL_KEY } from '../descopeUiMixin/constants';\n\nexport const loadFont = (url: string) => {\n const font = document.createElement('link');\n font.href = url;\n font.rel = 'stylesheet';\n document.head.appendChild(font);\n};\n\nexport const loadDevTheme = async () => {\n const componentsUrl = localStorage.getItem(UI_COMPONENTS_URL_KEY);\n const descopeDevUrl = componentsUrl?.replace(/[^\\/]+$/, 'DescopeDev.js');\n\n // eslint-disable-next-line no-console\n console.warn('Trying to load DescopeDev.js from', descopeDevUrl);\n const scriptEle = document.createElement('script');\n scriptEle.src = descopeDevUrl;\n document.body.appendChild(scriptEle);\n\n await new Promise((resolve, reject) => {\n scriptEle.onload = resolve;\n scriptEle.onerror = reject;\n });\n\n if (globalThis.DescopeDev) {\n const { themeToStyle, defaultTheme, darkTheme } = globalThis.DescopeDev;\n\n return {\n light: themeToStyle(defaultTheme),\n dark: themeToStyle(darkTheme),\n };\n }\n};\n"],"names":[],"mappings":";;AAEa,MAAA,QAAQ,GAAG,CAAC,GAAW,KAAI;IACtC,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AAC5C,IAAA,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;AAChB,IAAA,IAAI,CAAC,GAAG,GAAG,YAAY,CAAC;AACxB,IAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AAClC,EAAE;AAEW,MAAA,YAAY,GAAG,YAAW;IACrC,MAAM,aAAa,GAAG,YAAY,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;AAClE,IAAA,MAAM,aAAa,GAAG,aAAa,KAAA,IAAA,IAAb,aAAa,KAAb,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,aAAa,CAAE,OAAO,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;;AAGzE,IAAA,OAAO,CAAC,IAAI,CAAC,mCAAmC,EAAE,aAAa,CAAC,CAAC;IACjE,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AACnD,IAAA,SAAS,CAAC,GAAG,GAAG,aAAa,CAAC;AAC9B,IAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IAErC,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AACpC,QAAA,SAAS,CAAC,MAAM,GAAG,OAAO,CAAC;AAC3B,QAAA,SAAS,CAAC,OAAO,GAAG,MAAM,CAAC;AAC7B,KAAC,CAAC,CAAC;AAEH,IAAA,IAAI,UAAU,CAAC,UAAU,EAAE;QACzB,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,GAAG,UAAU,CAAC,UAAU,CAAC;QAExE,OAAO;AACL,YAAA,KAAK,EAAE,YAAY,CAAC,YAAY,CAAC;AACjC,YAAA,IAAI,EAAE,YAAY,CAAC,SAAS,CAAC;SAC9B,CAAC;KACH;AACH;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
import { __classPrivateFieldGet, __classPrivateFieldSet } from 'tslib';
|
|
2
|
+
import { createSingletonMixin, compose } from '@descope/sdk-helpers';
|
|
3
|
+
import { configMixin } from '../configMixin/configMixin.js';
|
|
4
|
+
import { createValidateAttributesMixin } from '../createValidateAttributesMixin/createValidateAttributesMixin.js';
|
|
5
|
+
import { descopeUiMixin } from '../descopeUiMixin/descopeUiMixin.js';
|
|
6
|
+
import { initElementMixin } from '../initElementMixin.js';
|
|
7
|
+
import { initLifecycleMixin } from '../initLifecycleMixin.js';
|
|
8
|
+
import { staticResourcesMixin } from '../staticResourcesMixin/staticResourcesMixin.js';
|
|
9
|
+
import { DEFAULT_STYLE_ID } from './constants.js';
|
|
10
|
+
import { loadFont, loadDevTheme } from './helpers.js';
|
|
11
|
+
import { observeAttributesMixin } from '../observeAttributesMixin/observeAttributesMixin.js';
|
|
12
|
+
import { UI_COMPONENTS_URL_KEY } from '../descopeUiMixin/constants.js';
|
|
13
|
+
|
|
14
|
+
const themeValidation = (_, theme) => (theme || false) &&
|
|
15
|
+
theme !== 'light' &&
|
|
16
|
+
theme !== 'dark' &&
|
|
17
|
+
'Supported theme values are "light", "dark", or leave empty for using the OS theme';
|
|
18
|
+
const themeMixin = createSingletonMixin((superclass) => {
|
|
19
|
+
var _ThemeMixinClass_instances, _ThemeMixinClass_globalStyleTag, _ThemeMixinClass__themeResource, _ThemeMixinClass_fetchTheme, _ThemeMixinClass_themeResource_get, _ThemeMixinClass_loadGlobalStyle, _ThemeMixinClass_loadComponentsStyle, _ThemeMixinClass_getFontsConfig, _ThemeMixinClass_loadFonts, _ThemeMixinClass_applyTheme, _ThemeMixinClass_onThemeChange, _ThemeMixinClass_loadTheme, _ThemeMixinClass_toggleOsThemeChangeListener, _a;
|
|
20
|
+
const BaseClass = compose(createValidateAttributesMixin({ theme: themeValidation }), staticResourcesMixin, initLifecycleMixin, descopeUiMixin, configMixin, initElementMixin, observeAttributesMixin)(superclass);
|
|
21
|
+
return _a = class ThemeMixinClass extends BaseClass {
|
|
22
|
+
constructor() {
|
|
23
|
+
super(...arguments);
|
|
24
|
+
_ThemeMixinClass_instances.add(this);
|
|
25
|
+
_ThemeMixinClass_globalStyleTag.set(this, void 0);
|
|
26
|
+
_ThemeMixinClass__themeResource.set(this, void 0);
|
|
27
|
+
_ThemeMixinClass_onThemeChange.set(this, () => {
|
|
28
|
+
__classPrivateFieldGet(this, _ThemeMixinClass_instances, "m", _ThemeMixinClass_loadTheme).call(this);
|
|
29
|
+
__classPrivateFieldGet(this, _ThemeMixinClass_toggleOsThemeChangeListener, "f").call(this, this.getAttribute('theme') === 'os');
|
|
30
|
+
});
|
|
31
|
+
// add or remove os theme change listener
|
|
32
|
+
_ThemeMixinClass_toggleOsThemeChangeListener.set(this, (listen) => {
|
|
33
|
+
var _b, _c, _d;
|
|
34
|
+
const method = listen ? 'addEventListener' : 'removeEventListener';
|
|
35
|
+
(_d = (_c = (_b = window
|
|
36
|
+
.matchMedia) === null || _b === void 0 ? void 0 : _b.call(window, '(prefers-color-scheme: dark)')) === null || _c === void 0 ? void 0 : _c[method]) === null || _d === void 0 ? void 0 : _d.call(_c, 'change', () => __classPrivateFieldGet(this, _ThemeMixinClass_instances, "m", _ThemeMixinClass_loadTheme).call(this));
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
get theme() {
|
|
40
|
+
var _b, _c;
|
|
41
|
+
const theme = this.getAttribute('theme');
|
|
42
|
+
if (theme === 'os') {
|
|
43
|
+
const isOsDark = window.matchMedia &&
|
|
44
|
+
((_c = (_b = window.matchMedia) === null || _b === void 0 ? void 0 : _b.call(window, '(prefers-color-scheme: dark)')) === null || _c === void 0 ? void 0 : _c.matches);
|
|
45
|
+
return isOsDark ? 'dark' : 'light';
|
|
46
|
+
}
|
|
47
|
+
return theme || 'light';
|
|
48
|
+
}
|
|
49
|
+
get styleId() {
|
|
50
|
+
return this.getAttribute('style-id') || DEFAULT_STYLE_ID;
|
|
51
|
+
}
|
|
52
|
+
async init() {
|
|
53
|
+
var _b;
|
|
54
|
+
await ((_b = super.init) === null || _b === void 0 ? void 0 : _b.call(this));
|
|
55
|
+
__classPrivateFieldGet(this, _ThemeMixinClass_instances, "m", _ThemeMixinClass_loadGlobalStyle).call(this);
|
|
56
|
+
__classPrivateFieldGet(this, _ThemeMixinClass_instances, "m", _ThemeMixinClass_loadComponentsStyle).call(this);
|
|
57
|
+
__classPrivateFieldGet(this, _ThemeMixinClass_onThemeChange, "f").call(this);
|
|
58
|
+
this.observeAttributes(['theme'], __classPrivateFieldGet(this, _ThemeMixinClass_onThemeChange, "f"));
|
|
59
|
+
this.observeAttributes(['style-id'], () => {
|
|
60
|
+
__classPrivateFieldSet(this, _ThemeMixinClass__themeResource, null, "f");
|
|
61
|
+
__classPrivateFieldGet(this, _ThemeMixinClass_instances, "m", _ThemeMixinClass_loadFonts).call(this);
|
|
62
|
+
__classPrivateFieldGet(this, _ThemeMixinClass_instances, "m", _ThemeMixinClass_loadGlobalStyle).call(this);
|
|
63
|
+
__classPrivateFieldGet(this, _ThemeMixinClass_instances, "m", _ThemeMixinClass_loadComponentsStyle).call(this);
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
_ThemeMixinClass_globalStyleTag = new WeakMap(),
|
|
68
|
+
_ThemeMixinClass__themeResource = new WeakMap(),
|
|
69
|
+
_ThemeMixinClass_onThemeChange = new WeakMap(),
|
|
70
|
+
_ThemeMixinClass_toggleOsThemeChangeListener = new WeakMap(),
|
|
71
|
+
_ThemeMixinClass_instances = new WeakSet(),
|
|
72
|
+
_ThemeMixinClass_fetchTheme = async function _ThemeMixinClass_fetchTheme() {
|
|
73
|
+
try {
|
|
74
|
+
const { body: fetchedTheme } = await this.fetchStaticResource(`${this.styleId}.json`, 'json');
|
|
75
|
+
// In development mode, we sometimes want to override the UI components URL
|
|
76
|
+
// The override components might have a different theme, so we need to merge it with the project theme in order to see the components correctly
|
|
77
|
+
if (process.env.NODE_ENV === 'development') {
|
|
78
|
+
if (localStorage === null || localStorage === void 0 ? void 0 : localStorage.getItem(UI_COMPONENTS_URL_KEY)) {
|
|
79
|
+
try {
|
|
80
|
+
this.logger.warn('You are in DEV mode, and UI components override URL was found\ntrying to merge project theme with the default theme of the UI components');
|
|
81
|
+
const devTheme = await loadDevTheme();
|
|
82
|
+
if (devTheme) {
|
|
83
|
+
fetchedTheme.light.components = Object.assign(Object.assign({}, fetchedTheme.light.components), devTheme.light.components);
|
|
84
|
+
fetchedTheme.dark.components = Object.assign(Object.assign({}, fetchedTheme.dark.components), devTheme.dark.components);
|
|
85
|
+
this.logger.warn('Theme was merged successfully');
|
|
86
|
+
// eslint-disable-next-line no-console
|
|
87
|
+
console.log('%cNOTICE! This is not the theme that will be used in production!\n\nMake sure to test it without the override UI components URL!', 'color: black; background-color:yellow; font-size: x-large');
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
catch (e) {
|
|
91
|
+
this.logger.error('Failed to merge UI components theme\n', e);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return fetchedTheme;
|
|
96
|
+
}
|
|
97
|
+
catch (e) {
|
|
98
|
+
this.logger.error('Cannot fetch theme file', 'make sure that your projectId & flowId are correct');
|
|
99
|
+
}
|
|
100
|
+
return undefined;
|
|
101
|
+
},
|
|
102
|
+
_ThemeMixinClass_themeResource_get = function _ThemeMixinClass_themeResource_get() {
|
|
103
|
+
if (!__classPrivateFieldGet(this, _ThemeMixinClass__themeResource, "f")) {
|
|
104
|
+
__classPrivateFieldSet(this, _ThemeMixinClass__themeResource, __classPrivateFieldGet(this, _ThemeMixinClass_instances, "m", _ThemeMixinClass_fetchTheme).call(this), "f");
|
|
105
|
+
__classPrivateFieldGet(this, _ThemeMixinClass__themeResource, "f").then((theme) => this.logger.debug('Fetched theme', theme));
|
|
106
|
+
}
|
|
107
|
+
// eslint-disable-next-line no-underscore-dangle
|
|
108
|
+
return __classPrivateFieldGet(this, _ThemeMixinClass__themeResource, "f");
|
|
109
|
+
},
|
|
110
|
+
_ThemeMixinClass_loadGlobalStyle = async function _ThemeMixinClass_loadGlobalStyle() {
|
|
111
|
+
var _b, _c;
|
|
112
|
+
const theme = await __classPrivateFieldGet(this, _ThemeMixinClass_instances, "a", _ThemeMixinClass_themeResource_get);
|
|
113
|
+
if (!theme)
|
|
114
|
+
return;
|
|
115
|
+
if (!__classPrivateFieldGet(this, _ThemeMixinClass_globalStyleTag, "f")) {
|
|
116
|
+
__classPrivateFieldSet(this, _ThemeMixinClass_globalStyleTag, document.createElement('style'), "f");
|
|
117
|
+
__classPrivateFieldGet(this, _ThemeMixinClass_globalStyleTag, "f").id = 'global-style';
|
|
118
|
+
this.shadowRoot.appendChild(__classPrivateFieldGet(this, _ThemeMixinClass_globalStyleTag, "f"));
|
|
119
|
+
}
|
|
120
|
+
__classPrivateFieldGet(this, _ThemeMixinClass_globalStyleTag, "f").innerText =
|
|
121
|
+
(((_b = theme === null || theme === void 0 ? void 0 : theme.light) === null || _b === void 0 ? void 0 : _b.globals) || '') + (((_c = theme === null || theme === void 0 ? void 0 : theme.dark) === null || _c === void 0 ? void 0 : _c.globals) || '');
|
|
122
|
+
},
|
|
123
|
+
_ThemeMixinClass_loadComponentsStyle = async function _ThemeMixinClass_loadComponentsStyle() {
|
|
124
|
+
var _b, _c;
|
|
125
|
+
const theme = Object.assign({}, (await __classPrivateFieldGet(this, _ThemeMixinClass_instances, "a", _ThemeMixinClass_themeResource_get)));
|
|
126
|
+
if (!theme)
|
|
127
|
+
return;
|
|
128
|
+
const descopeUi = await this.descopeUi;
|
|
129
|
+
if (descopeUi === null || descopeUi === void 0 ? void 0 : descopeUi.componentsThemeManager) {
|
|
130
|
+
descopeUi.componentsThemeManager.themes = {
|
|
131
|
+
light: (_b = theme === null || theme === void 0 ? void 0 : theme.light) === null || _b === void 0 ? void 0 : _b.components,
|
|
132
|
+
dark: (_c = theme === null || theme === void 0 ? void 0 : theme.dark) === null || _c === void 0 ? void 0 : _c.components,
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
},
|
|
136
|
+
_ThemeMixinClass_getFontsConfig = async function _ThemeMixinClass_getFontsConfig() {
|
|
137
|
+
var _b, _c;
|
|
138
|
+
const { projectConfig } = (await this.config) || {};
|
|
139
|
+
const newConfig = (_b = projectConfig === null || projectConfig === void 0 ? void 0 : projectConfig.styles) === null || _b === void 0 ? void 0 : _b[this.styleId];
|
|
140
|
+
const oldConfig = projectConfig === null || projectConfig === void 0 ? void 0 : projectConfig.cssTemplate;
|
|
141
|
+
const config = newConfig || oldConfig;
|
|
142
|
+
const fonts = (_c = config === null || config === void 0 ? void 0 : config[this.theme]) === null || _c === void 0 ? void 0 : _c.fonts;
|
|
143
|
+
return fonts;
|
|
144
|
+
},
|
|
145
|
+
_ThemeMixinClass_loadFonts = async function _ThemeMixinClass_loadFonts() {
|
|
146
|
+
const fonts = await __classPrivateFieldGet(this, _ThemeMixinClass_instances, "m", _ThemeMixinClass_getFontsConfig).call(this);
|
|
147
|
+
if (fonts) {
|
|
148
|
+
Object.values(fonts).forEach((font) => {
|
|
149
|
+
if (font.url) {
|
|
150
|
+
this.logger.debug(`Loading font from URL "${font.url}"`);
|
|
151
|
+
loadFont(font.url);
|
|
152
|
+
}
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
this.logger.debug('No fonts to load');
|
|
157
|
+
}
|
|
158
|
+
},
|
|
159
|
+
_ThemeMixinClass_applyTheme = async function _ThemeMixinClass_applyTheme() {
|
|
160
|
+
this.rootElement.setAttribute('data-theme', this.theme);
|
|
161
|
+
const descopeUi = await this.descopeUi;
|
|
162
|
+
if (descopeUi === null || descopeUi === void 0 ? void 0 : descopeUi.componentsThemeManager) {
|
|
163
|
+
descopeUi.componentsThemeManager.currentThemeName = this.theme;
|
|
164
|
+
}
|
|
165
|
+
},
|
|
166
|
+
_ThemeMixinClass_loadTheme = function _ThemeMixinClass_loadTheme() {
|
|
167
|
+
__classPrivateFieldGet(this, _ThemeMixinClass_instances, "m", _ThemeMixinClass_loadFonts).call(this);
|
|
168
|
+
__classPrivateFieldGet(this, _ThemeMixinClass_instances, "m", _ThemeMixinClass_applyTheme).call(this);
|
|
169
|
+
},
|
|
170
|
+
_a;
|
|
171
|
+
});
|
|
172
|
+
|
|
173
|
+
export { themeMixin };
|
|
174
|
+
//# sourceMappingURL=themeMixin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"themeMixin.js","sources":["../../../../src/mixins/themeMixin/themeMixin.ts"],"sourcesContent":["/* eslint-disable no-underscore-dangle */\nimport { createSingletonMixin, compose } from '@descope/sdk-helpers';\nimport { configMixin } from '../configMixin';\nimport { createValidateAttributesMixin } from '../createValidateAttributesMixin';\nimport { descopeUiMixin } from '../descopeUiMixin';\nimport { initElementMixin } from '../initElementMixin';\nimport { initLifecycleMixin } from '../initLifecycleMixin';\nimport { staticResourcesMixin } from '../staticResourcesMixin';\nimport { DEFAULT_STYLE_ID } from './constants';\nimport { loadDevTheme, loadFont } from './helpers';\nimport { observeAttributesMixin } from '../observeAttributesMixin';\nimport { UI_COMPONENTS_URL_KEY } from '../descopeUiMixin/constants';\n\nconst themeValidation = (_: string, theme: string | null) =>\n (theme || false) &&\n theme !== 'light' &&\n theme !== 'dark' &&\n 'Supported theme values are \"light\", \"dark\", or leave empty for using the OS theme';\n\nexport type ThemeOptions = 'light' | 'dark' | 'os';\n\nexport const themeMixin = createSingletonMixin(\n <T extends CustomElementConstructor>(superclass: T) => {\n const BaseClass = compose(\n createValidateAttributesMixin({ theme: themeValidation }),\n staticResourcesMixin,\n initLifecycleMixin,\n descopeUiMixin,\n configMixin,\n initElementMixin,\n observeAttributesMixin,\n )(superclass);\n\n return class ThemeMixinClass extends BaseClass {\n #globalStyleTag: HTMLStyleElement;\n\n get theme(): ThemeOptions {\n const theme = this.getAttribute('theme') as ThemeOptions | null;\n\n if (theme === 'os') {\n const isOsDark =\n window.matchMedia &&\n window.matchMedia?.('(prefers-color-scheme: dark)')?.matches;\n\n return isOsDark ? 'dark' : 'light';\n }\n\n return theme || 'light';\n }\n\n get styleId(): string {\n return this.getAttribute('style-id') || DEFAULT_STYLE_ID;\n }\n\n #_themeResource: Promise<void | Record<string, any>>;\n\n async #fetchTheme() {\n try {\n const { body: fetchedTheme } = await this.fetchStaticResource(\n `${this.styleId}.json`,\n 'json',\n );\n\n // In development mode, we sometimes want to override the UI components URL\n // The override components might have a different theme, so we need to merge it with the project theme in order to see the components correctly\n if (process.env.NODE_ENV === 'development') {\n if (localStorage?.getItem(UI_COMPONENTS_URL_KEY)) {\n try {\n this.logger.warn(\n 'You are in DEV mode, and UI components override URL was found\\ntrying to merge project theme with the default theme of the UI components',\n );\n const devTheme = await loadDevTheme();\n\n if (devTheme) {\n fetchedTheme.light.components = {\n ...fetchedTheme.light.components,\n ...devTheme.light.components,\n };\n fetchedTheme.dark.components = {\n ...fetchedTheme.dark.components,\n ...devTheme.dark.components,\n };\n\n this.logger.warn('Theme was merged successfully');\n\n // eslint-disable-next-line no-console\n console.log(\n '%cNOTICE! This is not the theme that will be used in production!\\n\\nMake sure to test it without the override UI components URL!',\n 'color: black; background-color:yellow; font-size: x-large',\n );\n }\n } catch (e) {\n this.logger.error('Failed to merge UI components theme\\n', e);\n }\n }\n }\n\n return fetchedTheme;\n } catch (e) {\n this.logger.error(\n 'Cannot fetch theme file',\n 'make sure that your projectId & flowId are correct',\n );\n }\n\n return undefined;\n }\n\n get #themeResource() {\n if (!this.#_themeResource) {\n this.#_themeResource = this.#fetchTheme();\n this.#_themeResource.then((theme) =>\n this.logger.debug('Fetched theme', theme),\n );\n }\n\n // eslint-disable-next-line no-underscore-dangle\n return this.#_themeResource;\n }\n\n async #loadGlobalStyle() {\n const theme = await this.#themeResource;\n if (!theme) return;\n\n if (!this.#globalStyleTag) {\n this.#globalStyleTag = document.createElement('style');\n this.#globalStyleTag.id = 'global-style';\n this.shadowRoot!.appendChild(this.#globalStyleTag);\n }\n\n this.#globalStyleTag.innerText =\n (theme?.light?.globals || '') + (theme?.dark?.globals || '');\n }\n\n async #loadComponentsStyle() {\n const theme = { ...(await this.#themeResource) } as Record<string, any>;\n if (!theme) return;\n\n const descopeUi = await this.descopeUi;\n if (descopeUi?.componentsThemeManager) {\n descopeUi.componentsThemeManager.themes = {\n light: theme?.light?.components,\n dark: theme?.dark?.components,\n };\n }\n }\n\n async #getFontsConfig() {\n const { projectConfig } = (await this.config) || {};\n\n const newConfig = projectConfig?.styles?.[this.styleId];\n const oldConfig = projectConfig?.cssTemplate;\n\n const config = newConfig || oldConfig;\n\n const fonts: Record<string, { url?: string }> | undefined =\n config?.[this.theme]?.fonts;\n\n return fonts;\n }\n\n async #loadFonts() {\n const fonts = await this.#getFontsConfig();\n if (fonts) {\n Object.values(fonts).forEach((font) => {\n if (font.url) {\n this.logger.debug(`Loading font from URL \"${font.url}\"`);\n loadFont(font.url);\n }\n });\n } else {\n this.logger.debug('No fonts to load');\n }\n }\n\n async #applyTheme() {\n this.rootElement.setAttribute('data-theme', this.theme);\n const descopeUi = await this.descopeUi;\n if (descopeUi?.componentsThemeManager) {\n descopeUi.componentsThemeManager.currentThemeName = this.theme;\n }\n }\n\n #onThemeChange = () => {\n this.#loadTheme();\n this.#toggleOsThemeChangeListener(this.getAttribute('theme') === 'os');\n };\n\n #loadTheme() {\n this.#loadFonts();\n this.#applyTheme();\n }\n\n // add or remove os theme change listener\n #toggleOsThemeChangeListener = (listen: boolean) => {\n const method = listen ? 'addEventListener' : 'removeEventListener';\n window\n .matchMedia?.('(prefers-color-scheme: dark)')\n ?.[method]?.('change', () => this.#loadTheme());\n };\n\n async init() {\n await super.init?.();\n\n this.#loadGlobalStyle();\n this.#loadComponentsStyle();\n this.#onThemeChange();\n\n this.observeAttributes(['theme'], this.#onThemeChange);\n\n this.observeAttributes(['style-id'], () => {\n this.#_themeResource = null;\n this.#loadFonts();\n this.#loadGlobalStyle();\n this.#loadComponentsStyle();\n });\n }\n };\n },\n);\n"],"names":[],"mappings":"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"}
|