@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.
Files changed (188) hide show
  1. package/dist/cjs/constants.js +6 -0
  2. package/dist/cjs/constants.js.map +1 -0
  3. package/dist/cjs/index.js +41 -0
  4. package/dist/cjs/index.js.map +1 -0
  5. package/dist/cjs/mixins/baseStaticUrlMixin.js +14 -0
  6. package/dist/cjs/mixins/baseStaticUrlMixin.js.map +1 -0
  7. package/dist/cjs/mixins/baseUrlMixin.js +14 -0
  8. package/dist/cjs/mixins/baseUrlMixin.js.map +1 -0
  9. package/dist/cjs/mixins/configMixin/configMixin.js +42 -0
  10. package/dist/cjs/mixins/configMixin/configMixin.js.map +1 -0
  11. package/dist/cjs/mixins/configMixin/constants.js +6 -0
  12. package/dist/cjs/mixins/configMixin/constants.js.map +1 -0
  13. package/dist/cjs/mixins/createStateManagementMixin.js +47 -0
  14. package/dist/cjs/mixins/createStateManagementMixin.js.map +1 -0
  15. package/dist/cjs/mixins/createValidateAttributesMixin/commonValidators.js +7 -0
  16. package/dist/cjs/mixins/createValidateAttributesMixin/commonValidators.js.map +1 -0
  17. package/dist/cjs/mixins/createValidateAttributesMixin/createValidateAttributesMixin.js +40 -0
  18. package/dist/cjs/mixins/createValidateAttributesMixin/createValidateAttributesMixin.js.map +1 -0
  19. package/dist/cjs/mixins/debuggerMixin/debugger-wc.js +229 -0
  20. package/dist/cjs/mixins/debuggerMixin/debugger-wc.js.map +1 -0
  21. package/dist/cjs/mixins/debuggerMixin/debuggerMixin.js +73 -0
  22. package/dist/cjs/mixins/debuggerMixin/debuggerMixin.js.map +1 -0
  23. package/dist/cjs/mixins/debuggerMixin/helpers.js +76 -0
  24. package/dist/cjs/mixins/debuggerMixin/helpers.js.map +1 -0
  25. package/dist/cjs/mixins/descopeUiMixin/constants.js +25 -0
  26. package/dist/cjs/mixins/descopeUiMixin/constants.js.map +1 -0
  27. package/dist/cjs/mixins/descopeUiMixin/descopeUiMixin.js +165 -0
  28. package/dist/cjs/mixins/descopeUiMixin/descopeUiMixin.js.map +1 -0
  29. package/dist/cjs/mixins/descopeUiMixin/helpers.js +18 -0
  30. package/dist/cjs/mixins/descopeUiMixin/helpers.js.map +1 -0
  31. package/dist/cjs/mixins/formMixin.js +57 -0
  32. package/dist/cjs/mixins/formMixin.js.map +1 -0
  33. package/dist/cjs/mixins/initElementMixin.js +33 -0
  34. package/dist/cjs/mixins/initElementMixin.js.map +1 -0
  35. package/dist/cjs/mixins/initLifecycleMixin.js +29 -0
  36. package/dist/cjs/mixins/initLifecycleMixin.js.map +1 -0
  37. package/dist/cjs/mixins/loggerMixin/loggerMixin.js +37 -0
  38. package/dist/cjs/mixins/loggerMixin/loggerMixin.js.map +1 -0
  39. package/dist/cjs/mixins/modalMixin/constants.js +6 -0
  40. package/dist/cjs/mixins/modalMixin/constants.js.map +1 -0
  41. package/dist/cjs/mixins/modalMixin/helpers.js +14 -0
  42. package/dist/cjs/mixins/modalMixin/helpers.js.map +1 -0
  43. package/dist/cjs/mixins/modalMixin/modalMixin.js +47 -0
  44. package/dist/cjs/mixins/modalMixin/modalMixin.js.map +1 -0
  45. package/dist/cjs/mixins/notificationsMixin/constants.js +6 -0
  46. package/dist/cjs/mixins/notificationsMixin/constants.js.map +1 -0
  47. package/dist/cjs/mixins/notificationsMixin/helpers.js +14 -0
  48. package/dist/cjs/mixins/notificationsMixin/helpers.js.map +1 -0
  49. package/dist/cjs/mixins/notificationsMixin/notificationsMixin.js +50 -0
  50. package/dist/cjs/mixins/notificationsMixin/notificationsMixin.js.map +1 -0
  51. package/dist/cjs/mixins/observeAttributesMixin/helpers.js +17 -0
  52. package/dist/cjs/mixins/observeAttributesMixin/helpers.js.map +1 -0
  53. package/dist/cjs/mixins/observeAttributesMixin/observeAttributesMixin.js +47 -0
  54. package/dist/cjs/mixins/observeAttributesMixin/observeAttributesMixin.js.map +1 -0
  55. package/dist/cjs/mixins/projectIdMixin.js +17 -0
  56. package/dist/cjs/mixins/projectIdMixin.js.map +1 -0
  57. package/dist/cjs/mixins/staticResourcesMixin/constants.js +13 -0
  58. package/dist/cjs/mixins/staticResourcesMixin/constants.js.map +1 -0
  59. package/dist/cjs/mixins/staticResourcesMixin/staticResourcesMixin.js +40 -0
  60. package/dist/cjs/mixins/staticResourcesMixin/staticResourcesMixin.js.map +1 -0
  61. package/dist/cjs/mixins/themeMixin/constants.js +7 -0
  62. package/dist/cjs/mixins/themeMixin/constants.js.map +1 -0
  63. package/dist/cjs/mixins/themeMixin/helpers.js +34 -0
  64. package/dist/cjs/mixins/themeMixin/helpers.js.map +1 -0
  65. package/dist/cjs/mixins/themeMixin/index.js +8 -0
  66. package/dist/cjs/mixins/themeMixin/index.js.map +1 -0
  67. package/dist/cjs/mixins/themeMixin/themeMixin.js +176 -0
  68. package/dist/cjs/mixins/themeMixin/themeMixin.js.map +1 -0
  69. package/dist/esm/constants.js +4 -0
  70. package/dist/esm/constants.js.map +1 -0
  71. package/dist/esm/index.js +18 -0
  72. package/dist/esm/index.js.map +1 -0
  73. package/dist/esm/mixins/baseStaticUrlMixin.js +12 -0
  74. package/dist/esm/mixins/baseStaticUrlMixin.js.map +1 -0
  75. package/dist/esm/mixins/baseUrlMixin.js +12 -0
  76. package/dist/esm/mixins/baseUrlMixin.js.map +1 -0
  77. package/dist/esm/mixins/configMixin/configMixin.js +40 -0
  78. package/dist/esm/mixins/configMixin/configMixin.js.map +1 -0
  79. package/dist/esm/mixins/configMixin/constants.js +4 -0
  80. package/dist/esm/mixins/configMixin/constants.js.map +1 -0
  81. package/dist/esm/mixins/createStateManagementMixin.js +45 -0
  82. package/dist/esm/mixins/createStateManagementMixin.js.map +1 -0
  83. package/dist/esm/mixins/createValidateAttributesMixin/commonValidators.js +5 -0
  84. package/dist/esm/mixins/createValidateAttributesMixin/commonValidators.js.map +1 -0
  85. package/dist/esm/mixins/createValidateAttributesMixin/createValidateAttributesMixin.js +38 -0
  86. package/dist/esm/mixins/createValidateAttributesMixin/createValidateAttributesMixin.js.map +1 -0
  87. package/dist/esm/mixins/debuggerMixin/debugger-wc.js +225 -0
  88. package/dist/esm/mixins/debuggerMixin/debugger-wc.js.map +1 -0
  89. package/dist/esm/mixins/debuggerMixin/debuggerMixin.js +71 -0
  90. package/dist/esm/mixins/debuggerMixin/debuggerMixin.js.map +1 -0
  91. package/dist/esm/mixins/debuggerMixin/helpers.js +72 -0
  92. package/dist/esm/mixins/debuggerMixin/helpers.js.map +1 -0
  93. package/dist/esm/mixins/descopeUiMixin/constants.js +16 -0
  94. package/dist/esm/mixins/descopeUiMixin/constants.js.map +1 -0
  95. package/dist/esm/mixins/descopeUiMixin/descopeUiMixin.js +163 -0
  96. package/dist/esm/mixins/descopeUiMixin/descopeUiMixin.js.map +1 -0
  97. package/dist/esm/mixins/descopeUiMixin/helpers.js +14 -0
  98. package/dist/esm/mixins/descopeUiMixin/helpers.js.map +1 -0
  99. package/dist/esm/mixins/formMixin.js +55 -0
  100. package/dist/esm/mixins/formMixin.js.map +1 -0
  101. package/dist/esm/mixins/initElementMixin.js +31 -0
  102. package/dist/esm/mixins/initElementMixin.js.map +1 -0
  103. package/dist/esm/mixins/initLifecycleMixin.js +27 -0
  104. package/dist/esm/mixins/initLifecycleMixin.js.map +1 -0
  105. package/dist/esm/mixins/loggerMixin/loggerMixin.js +35 -0
  106. package/dist/esm/mixins/loggerMixin/loggerMixin.js.map +1 -0
  107. package/dist/esm/mixins/modalMixin/constants.js +4 -0
  108. package/dist/esm/mixins/modalMixin/constants.js.map +1 -0
  109. package/dist/esm/mixins/modalMixin/helpers.js +12 -0
  110. package/dist/esm/mixins/modalMixin/helpers.js.map +1 -0
  111. package/dist/esm/mixins/modalMixin/modalMixin.js +45 -0
  112. package/dist/esm/mixins/modalMixin/modalMixin.js.map +1 -0
  113. package/dist/esm/mixins/notificationsMixin/constants.js +4 -0
  114. package/dist/esm/mixins/notificationsMixin/constants.js.map +1 -0
  115. package/dist/esm/mixins/notificationsMixin/helpers.js +12 -0
  116. package/dist/esm/mixins/notificationsMixin/helpers.js.map +1 -0
  117. package/dist/esm/mixins/notificationsMixin/notificationsMixin.js +48 -0
  118. package/dist/esm/mixins/notificationsMixin/notificationsMixin.js.map +1 -0
  119. package/dist/esm/mixins/observeAttributesMixin/helpers.js +15 -0
  120. package/dist/esm/mixins/observeAttributesMixin/helpers.js.map +1 -0
  121. package/dist/esm/mixins/observeAttributesMixin/observeAttributesMixin.js +45 -0
  122. package/dist/esm/mixins/observeAttributesMixin/observeAttributesMixin.js.map +1 -0
  123. package/dist/esm/mixins/projectIdMixin.js +15 -0
  124. package/dist/esm/mixins/projectIdMixin.js.map +1 -0
  125. package/dist/esm/mixins/staticResourcesMixin/constants.js +9 -0
  126. package/dist/esm/mixins/staticResourcesMixin/constants.js.map +1 -0
  127. package/dist/esm/mixins/staticResourcesMixin/staticResourcesMixin.js +37 -0
  128. package/dist/esm/mixins/staticResourcesMixin/staticResourcesMixin.js.map +1 -0
  129. package/dist/esm/mixins/themeMixin/constants.js +5 -0
  130. package/dist/esm/mixins/themeMixin/constants.js.map +1 -0
  131. package/dist/esm/mixins/themeMixin/helpers.js +31 -0
  132. package/dist/esm/mixins/themeMixin/helpers.js.map +1 -0
  133. package/dist/esm/mixins/themeMixin/index.js +2 -0
  134. package/dist/esm/mixins/themeMixin/index.js.map +1 -0
  135. package/dist/esm/mixins/themeMixin/themeMixin.js +174 -0
  136. package/dist/esm/mixins/themeMixin/themeMixin.js.map +1 -0
  137. package/dist/index.d.ts +543 -543
  138. package/dist/types/constants.d.ts +1 -0
  139. package/dist/types/index.d.ts +23 -0
  140. package/dist/types/mixins/baseStaticUrlMixin.d.ts +331 -0
  141. package/dist/types/mixins/baseUrlMixin.d.ts +331 -0
  142. package/dist/types/mixins/configMixin/configMixin.d.ts +357 -0
  143. package/dist/types/mixins/configMixin/constants.d.ts +1 -0
  144. package/dist/types/mixins/configMixin/index.d.ts +2 -0
  145. package/dist/types/mixins/configMixin/types.d.ts +43 -0
  146. package/dist/types/mixins/createStateManagementMixin.d.ts +341 -0
  147. package/dist/types/mixins/createValidateAttributesMixin/commonValidators.d.ts +1 -0
  148. package/dist/types/mixins/createValidateAttributesMixin/createValidateAttributesMixin.d.ts +346 -0
  149. package/dist/types/mixins/createValidateAttributesMixin/index.d.ts +1 -0
  150. package/dist/types/mixins/debuggerMixin/debugger-wc.d.ts +9 -0
  151. package/dist/types/mixins/debuggerMixin/debuggerMixin.d.ts +347 -0
  152. package/dist/types/mixins/debuggerMixin/helpers.d.ts +4 -0
  153. package/dist/types/mixins/debuggerMixin/index.d.ts +1 -0
  154. package/dist/types/mixins/debuggerMixin/types.d.ts +12 -0
  155. package/dist/types/mixins/descopeUiMixin/constants.d.ts +8 -0
  156. package/dist/types/mixins/descopeUiMixin/descopeUiMixin.d.ts +371 -0
  157. package/dist/types/mixins/descopeUiMixin/helpers.d.ts +3 -0
  158. package/dist/types/mixins/descopeUiMixin/index.d.ts +1 -0
  159. package/dist/types/mixins/formMixin.d.ts +345 -0
  160. package/dist/types/mixins/initElementMixin.d.ts +332 -0
  161. package/dist/types/mixins/initLifecycleMixin.d.ts +332 -0
  162. package/dist/types/mixins/loggerMixin/index.d.ts +2 -0
  163. package/dist/types/mixins/loggerMixin/loggerMixin.d.ts +339 -0
  164. package/dist/types/mixins/loggerMixin/types.d.ts +6 -0
  165. package/dist/types/mixins/modalMixin/constants.d.ts +1 -0
  166. package/dist/types/mixins/modalMixin/helpers.d.ts +1 -0
  167. package/dist/types/mixins/modalMixin/index.d.ts +1 -0
  168. package/dist/types/mixins/modalMixin/modalMixin.d.ts +401 -0
  169. package/dist/types/mixins/notificationsMixin/constants.d.ts +1 -0
  170. package/dist/types/mixins/notificationsMixin/helpers.d.ts +1 -0
  171. package/dist/types/mixins/notificationsMixin/index.d.ts +1 -0
  172. package/dist/types/mixins/notificationsMixin/notificationsMixin.d.ts +420 -0
  173. package/dist/types/mixins/observeAttributesMixin/helpers.d.ts +1 -0
  174. package/dist/types/mixins/observeAttributesMixin/index.d.ts +1 -0
  175. package/dist/types/mixins/observeAttributesMixin/observeAttributesMixin.d.ts +342 -0
  176. package/dist/types/mixins/projectIdMixin.d.ts +342 -0
  177. package/dist/types/mixins/staticResourcesMixin/constants.d.ts +4 -0
  178. package/dist/types/mixins/staticResourcesMixin/index.d.ts +1 -0
  179. package/dist/types/mixins/staticResourcesMixin/staticResourcesMixin.d.ts +356 -0
  180. package/dist/types/mixins/themeMixin/constants.d.ts +2 -0
  181. package/dist/types/mixins/themeMixin/helpers.d.ts +5 -0
  182. package/dist/types/mixins/themeMixin/index.d.ts +1 -0
  183. package/dist/types/mixins/themeMixin/themeMixin.d.ts +398 -0
  184. package/package.json +24 -11
  185. package/dist/cjs/index.cjs.js +0 -1185
  186. package/dist/cjs/index.cjs.js.map +0 -1
  187. package/dist/index.esm.js +0 -1166
  188. package/dist/index.esm.js.map +0 -1
@@ -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":["createSingletonMixin","compose","initLifecycleMixin","initElementMixin","descopeUiMixin","ModalDriver","createModalEle","__classPrivateFieldGet","MODAL_ELE_TAG"],"mappings":";;;;;;;;;;;MASa,UAAU,GAAGA,+BAAoB,CAC5C,CAAqC,UAAa,KAAI;;AACpD,IAAA,MAAM,SAAS,GAAGC,kBAAO,CACvBC,qCAAkB,EAClBC,iCAAgB,EAChBC,6BAAc,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,SAAQC,+BAAW,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,GAAGC,sBAAc,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,KAAIC,4BAAA,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,CAACC,uBAAa,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,6 @@
1
+ 'use strict';
2
+
3
+ const NOTIFICATION_ELE_TAG = 'descope-notification';
4
+
5
+ exports.NOTIFICATION_ELE_TAG = NOTIFICATION_ELE_TAG;
6
+ //# sourceMappingURL=constants.js.map
@@ -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,14 @@
1
+ 'use strict';
2
+
3
+ var constants = require('./constants.js');
4
+
5
+ const createNotificationEle = (config = {}) => {
6
+ const notification = document.createElement(constants.NOTIFICATION_ELE_TAG);
7
+ Object.keys(config).forEach((key) => {
8
+ notification.setAttribute(key, config[key]);
9
+ });
10
+ return notification;
11
+ };
12
+
13
+ exports.createNotificationEle = createNotificationEle;
14
+ //# 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":["NOTIFICATION_ELE_TAG"],"mappings":";;;;MAEa,qBAAqB,GAAG,CAAC,MAAM,GAAG,EAAE,KAAI;IACnD,MAAM,YAAY,GAAG,QAAQ,CAAC,aAAa,CAACA,8BAAoB,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,50 @@
1
+ 'use strict';
2
+
3
+ var tslib = require('tslib');
4
+ var sdkHelpers = require('@descope/sdk-helpers');
5
+ var initLifecycleMixin = require('../initLifecycleMixin.js');
6
+ var initElementMixin = require('../initElementMixin.js');
7
+ var descopeUiMixin = require('../descopeUiMixin/descopeUiMixin.js');
8
+ var helpers = require('./helpers.js');
9
+ var constants = require('./constants.js');
10
+ var sdkComponentDrivers = require('@descope/sdk-component-drivers');
11
+
12
+ const notificationsMixin = sdkHelpers.createSingletonMixin((superclass) => {
13
+ var _NotificationsMixinClass_NotificationDriverWrapper, _a;
14
+ const BaseClass = sdkHelpers.compose(initLifecycleMixin.initLifecycleMixin, initElementMixin.initElementMixin, descopeUiMixin.descopeUiMixin)(superclass);
15
+ return _a = class NotificationsMixinClass extends BaseClass {
16
+ constructor() {
17
+ super(...arguments);
18
+ _NotificationsMixinClass_NotificationDriverWrapper.set(this, (() => {
19
+ const loadDescopeUiComponents = this.loadDescopeUiComponents.bind(this);
20
+ return class NotificationDriverWrapper extends sdkComponentDrivers.NotificationDriver {
21
+ setContent(templateOrString) {
22
+ const template = typeof templateOrString === 'string'
23
+ ? sdkHelpers.createTemplate(templateOrString)
24
+ : templateOrString;
25
+ loadDescopeUiComponents(template);
26
+ super.setContent(template);
27
+ }
28
+ };
29
+ })());
30
+ }
31
+ createNotification(config) {
32
+ const baseConfig = {};
33
+ const notification = helpers.createNotificationEle(Object.assign(Object.assign({}, baseConfig), config));
34
+ this.rootElement.append(notification);
35
+ return new (tslib.__classPrivateFieldGet(this, _NotificationsMixinClass_NotificationDriverWrapper, "f"))(notification, {
36
+ logger: this.logger,
37
+ });
38
+ }
39
+ async init() {
40
+ var _b;
41
+ await ((_b = super.init) === null || _b === void 0 ? void 0 : _b.call(this));
42
+ this.loadDescopeUiComponents([constants.NOTIFICATION_ELE_TAG]);
43
+ }
44
+ },
45
+ _NotificationsMixinClass_NotificationDriverWrapper = new WeakMap(),
46
+ _a;
47
+ });
48
+
49
+ exports.notificationsMixin = notificationsMixin;
50
+ //# 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":["createSingletonMixin","compose","initLifecycleMixin","initElementMixin","descopeUiMixin","NotificationDriver","createTemplate","createNotificationEle","__classPrivateFieldGet","NOTIFICATION_ELE_TAG"],"mappings":";;;;;;;;;;;MAaa,kBAAkB,GAAGA,+BAAoB,CACpD,CAAqC,UAAa,KAAI;;AACpD,IAAA,MAAM,SAAS,GAAGC,kBAAO,CACvBC,qCAAkB,EAClBC,iCAAgB,EAChBC,6BAAc,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,SAAQC,sCAAkB,CAAA;AAC/D,wBAAA,UAAU,CAAC,gBAA8C,EAAA;AACvD,4BAAA,MAAM,QAAQ,GACZ,OAAO,gBAAgB,KAAK,QAAQ;AAClC,kCAAEC,yBAAc,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,GAAGC,6BAAqB,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,KAAIC,4BAAA,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,CAACC,8BAAoB,CAAC,CAAC,CAAC;aACtD;AACF,SAAA;;AAAC,QAAA,EAAA,CAAA;AACJ,CAAC;;;;"}
@@ -0,0 +1,17 @@
1
+ 'use strict';
2
+
3
+ const attributesObserver = (ele, callback) => {
4
+ // sync all attrs on init
5
+ Array.from(ele.attributes).forEach((attr) => callback(attr.name));
6
+ const observer = new MutationObserver((mutationsList) => {
7
+ mutationsList.forEach((mutation) => {
8
+ if (mutation.type === 'attributes') {
9
+ callback(mutation.attributeName);
10
+ }
11
+ });
12
+ });
13
+ observer.observe(ele, { attributes: true });
14
+ };
15
+
16
+ exports.attributesObserver = attributesObserver;
17
+ //# sourceMappingURL=helpers.js.map
@@ -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,47 @@
1
+ 'use strict';
2
+
3
+ var tslib = require('tslib');
4
+ var sdkHelpers = require('@descope/sdk-helpers');
5
+ var initLifecycleMixin = require('../initLifecycleMixin.js');
6
+ var loggerMixin = require('../loggerMixin/loggerMixin.js');
7
+ var helpers = require('./helpers.js');
8
+
9
+ const observeAttributesMixin = sdkHelpers.createSingletonMixin((superclass) => {
10
+ var _ObserveAttributesMixinClass_observeMappings, _a;
11
+ const BaseClass = sdkHelpers.compose(loggerMixin.loggerMixin, initLifecycleMixin.initLifecycleMixin)(superclass);
12
+ return _a = class ObserveAttributesMixinClass extends BaseClass {
13
+ constructor() {
14
+ super(...arguments);
15
+ _ObserveAttributesMixinClass_observeMappings.set(this, {});
16
+ }
17
+ async init() {
18
+ var _b;
19
+ await ((_b = super.init) === null || _b === void 0 ? void 0 : _b.call(this));
20
+ helpers.attributesObserver(this, (attrName) => {
21
+ var _b;
22
+ (_b = tslib.__classPrivateFieldGet(this, _ObserveAttributesMixinClass_observeMappings, "f")[attrName]) === null || _b === void 0 ? void 0 : _b.forEach((cb) => {
23
+ cb(attrName, this.getAttribute(attrName));
24
+ });
25
+ });
26
+ }
27
+ observeAttribute(attrName, onAttrChange) {
28
+ if (!tslib.__classPrivateFieldGet(this, _ObserveAttributesMixinClass_observeMappings, "f")[attrName]) {
29
+ tslib.__classPrivateFieldGet(this, _ObserveAttributesMixinClass_observeMappings, "f")[attrName] = [];
30
+ }
31
+ const idx = tslib.__classPrivateFieldGet(this, _ObserveAttributesMixinClass_observeMappings, "f")[attrName].push(onAttrChange);
32
+ return () => tslib.__classPrivateFieldGet(this, _ObserveAttributesMixinClass_observeMappings, "f")[attrName].splice(idx, 1);
33
+ }
34
+ observeAttributes(attrs, cb) {
35
+ const unobserveList = attrs.reduce((acc, attrName) => {
36
+ acc.push(this.observeAttribute(attrName, cb));
37
+ return acc;
38
+ }, []);
39
+ return () => unobserveList.forEach((unobserve) => unobserve());
40
+ }
41
+ },
42
+ _ObserveAttributesMixinClass_observeMappings = new WeakMap(),
43
+ _a;
44
+ });
45
+
46
+ exports.observeAttributesMixin = observeAttributesMixin;
47
+ //# 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":["createSingletonMixin","compose","loggerMixin","initLifecycleMixin","attributesObserver","__classPrivateFieldGet"],"mappings":";;;;;;;;MAOa,sBAAsB,GAAGA,+BAAoB,CACxD,CAAqC,UAAa,KAAI;;IACpD,MAAM,SAAS,GAAGC,kBAAO,CAACC,uBAAW,EAAEC,qCAAkB,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,gBAAAC,0BAAkB,CAAC,IAAI,EAAE,CAAC,QAAgB,KAAI;;AAC5C,oBAAA,CAAA,EAAA,GAAAC,4BAAA,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,CAACA,6BAAA,IAAI,EAAA,4CAAA,EAAA,GAAA,CAAiB,CAAC,QAAQ,CAAC,EAAE;AACpC,oBAAAA,4BAAA,CAAA,IAAI,EAAiB,4CAAA,EAAA,GAAA,CAAA,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;iBACtC;AAED,gBAAA,MAAM,GAAG,GAAGA,4BAAA,CAAA,IAAI,EAAiB,4CAAA,EAAA,GAAA,CAAA,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAE/D,gBAAA,OAAO,MAAMA,4BAAA,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,17 @@
1
+ 'use strict';
2
+
3
+ var sdkHelpers = require('@descope/sdk-helpers');
4
+ var commonValidators = require('./createValidateAttributesMixin/commonValidators.js');
5
+ var createValidateAttributesMixin = require('./createValidateAttributesMixin/createValidateAttributesMixin.js');
6
+
7
+ const projectIdMixin = sdkHelpers.createSingletonMixin((superclass) => {
8
+ const BaseClass = sdkHelpers.compose(createValidateAttributesMixin.createValidateAttributesMixin({ 'project-id': commonValidators.missingAttrValidator }))(superclass);
9
+ return class ProjectIdMixinClass extends BaseClass {
10
+ get projectId() {
11
+ return this.getAttribute('project-id');
12
+ }
13
+ };
14
+ });
15
+
16
+ exports.projectIdMixin = projectIdMixin;
17
+ //# 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":["createSingletonMixin","compose","createValidateAttributesMixin","missingAttrValidator"],"mappings":";;;;;;MAIa,cAAc,GAAGA,+BAAoB,CAChD,CAAqC,UAAa,KAAI;AACpD,IAAA,MAAM,SAAS,GAAGC,kBAAO,CACvBC,2DAA6B,CAAC,EAAE,YAAY,EAAEC,qCAAoB,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,13 @@
1
+ 'use strict';
2
+
3
+ var constants = require('../../constants.js');
4
+
5
+ const BASE_CONTENT_URL_KEY = 'base.content.url';
6
+ const BASE_CONTENT_URL = 'https://static.descope.com/pages';
7
+ const OVERRIDE_CONTENT_URL = (constants.IS_LOCAL_STORAGE && localStorage.getItem(BASE_CONTENT_URL_KEY)) || '';
8
+ const ASSETS_FOLDER = 'v2-beta';
9
+
10
+ exports.ASSETS_FOLDER = ASSETS_FOLDER;
11
+ exports.BASE_CONTENT_URL = BASE_CONTENT_URL;
12
+ exports.OVERRIDE_CONTENT_URL = OVERRIDE_CONTENT_URL;
13
+ //# 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":["IS_LOCAL_STORAGE"],"mappings":";;;;AAEA,MAAM,oBAAoB,GAAG,kBAAkB,CAAC;AAEzC,MAAM,gBAAgB,GAAG,mCAAmC;AAEtD,MAAA,oBAAoB,GAC/B,CAACA,0BAAgB,IAAI,YAAY,CAAC,OAAO,CAAC,oBAAoB,CAAC,KAAK,GAAG;AAElE,MAAM,aAAa,GAAG;;;;;;"}
@@ -0,0 +1,40 @@
1
+ 'use strict';
2
+
3
+ var sdkHelpers = require('@descope/sdk-helpers');
4
+ var loggerMixin = require('../loggerMixin/loggerMixin.js');
5
+ var constants = require('./constants.js');
6
+ var projectIdMixin = require('../projectIdMixin.js');
7
+ var baseUrlMixin = require('../baseUrlMixin.js');
8
+
9
+ function getResourceUrl({ projectId, filename, assetsFolder = constants.ASSETS_FOLDER, baseUrl, }) {
10
+ const url = new URL(constants.OVERRIDE_CONTENT_URL || baseUrl || constants.BASE_CONTENT_URL);
11
+ url.pathname = sdkHelpers.pathJoin(url.pathname, projectId, assetsFolder, filename);
12
+ return url.toString();
13
+ }
14
+ const staticResourcesMixin = sdkHelpers.createSingletonMixin((superclass) => {
15
+ const BaseClass = sdkHelpers.compose(loggerMixin.loggerMixin, projectIdMixin.projectIdMixin, baseUrlMixin.baseUrlMixin)(superclass);
16
+ return class StaticResourcesMixinClass extends BaseClass {
17
+ async fetchStaticResource(filename, format) {
18
+ const resourceUrl = getResourceUrl({
19
+ projectId: this.projectId,
20
+ filename,
21
+ baseUrl: this.baseStaticUrl,
22
+ });
23
+ const res = await fetch(resourceUrl, { cache: 'default' });
24
+ if (!res.ok) {
25
+ this.logger.error(`Error fetching URL ${resourceUrl} [${res.status}]`);
26
+ }
27
+ return {
28
+ body: await res[format](),
29
+ headers: Object.fromEntries(res.headers.entries()),
30
+ };
31
+ }
32
+ get baseStaticUrl() {
33
+ return this.getAttribute('base-static-url');
34
+ }
35
+ };
36
+ });
37
+
38
+ exports.getResourceUrl = getResourceUrl;
39
+ exports.staticResourcesMixin = staticResourcesMixin;
40
+ //# 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":["ASSETS_FOLDER","OVERRIDE_CONTENT_URL","BASE_CONTENT_URL","pathJoin","createSingletonMixin","compose","loggerMixin","projectIdMixin","baseUrlMixin"],"mappings":";;;;;;;;AAYgB,SAAA,cAAc,CAAC,EAC7B,SAAS,EACT,QAAQ,EACR,YAAY,GAAGA,uBAAa,EAC5B,OAAO,GAMR,EAAA;IACC,MAAM,GAAG,GAAG,IAAI,GAAG,CAACC,8BAAoB,IAAI,OAAO,IAAIC,0BAAgB,CAAC,CAAC;AACzE,IAAA,GAAG,CAAC,QAAQ,GAAGC,mBAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;AAEzE,IAAA,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;AACxB,CAAC;MAEY,oBAAoB,GAAGC,+BAAoB,CACtD,CAAqC,UAAa,KAAI;AACpD,IAAA,MAAM,SAAS,GAAGC,kBAAO,CACvBC,uBAAW,EACXC,6BAAc,EACdC,yBAAY,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,7 @@
1
+ 'use strict';
2
+
3
+ // Those files are saved on a new folder to prevent breaking changes
4
+ const DEFAULT_STYLE_ID = 'theme';
5
+
6
+ exports.DEFAULT_STYLE_ID = DEFAULT_STYLE_ID;
7
+ //# sourceMappingURL=constants.js.map
@@ -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,34 @@
1
+ 'use strict';
2
+
3
+ var constants = require('../descopeUiMixin/constants.js');
4
+
5
+ const loadFont = (url) => {
6
+ const font = document.createElement('link');
7
+ font.href = url;
8
+ font.rel = 'stylesheet';
9
+ document.head.appendChild(font);
10
+ };
11
+ const loadDevTheme = async () => {
12
+ const componentsUrl = localStorage.getItem(constants.UI_COMPONENTS_URL_KEY);
13
+ const descopeDevUrl = componentsUrl === null || componentsUrl === void 0 ? void 0 : componentsUrl.replace(/[^\/]+$/, 'DescopeDev.js');
14
+ // eslint-disable-next-line no-console
15
+ console.warn('Trying to load DescopeDev.js from', descopeDevUrl);
16
+ const scriptEle = document.createElement('script');
17
+ scriptEle.src = descopeDevUrl;
18
+ document.body.appendChild(scriptEle);
19
+ await new Promise((resolve, reject) => {
20
+ scriptEle.onload = resolve;
21
+ scriptEle.onerror = reject;
22
+ });
23
+ if (globalThis.DescopeDev) {
24
+ const { themeToStyle, defaultTheme, darkTheme } = globalThis.DescopeDev;
25
+ return {
26
+ light: themeToStyle(defaultTheme),
27
+ dark: themeToStyle(darkTheme),
28
+ };
29
+ }
30
+ };
31
+
32
+ exports.loadDevTheme = loadDevTheme;
33
+ exports.loadFont = loadFont;
34
+ //# 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":["UI_COMPONENTS_URL_KEY"],"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,CAACA,+BAAqB,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,8 @@
1
+ 'use strict';
2
+
3
+ var themeMixin = require('./themeMixin.js');
4
+
5
+
6
+
7
+ exports.themeMixin = themeMixin.themeMixin;
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -0,0 +1,176 @@
1
+ 'use strict';
2
+
3
+ var tslib = require('tslib');
4
+ var sdkHelpers = require('@descope/sdk-helpers');
5
+ var configMixin = require('../configMixin/configMixin.js');
6
+ var createValidateAttributesMixin = require('../createValidateAttributesMixin/createValidateAttributesMixin.js');
7
+ var descopeUiMixin = require('../descopeUiMixin/descopeUiMixin.js');
8
+ var initElementMixin = require('../initElementMixin.js');
9
+ var initLifecycleMixin = require('../initLifecycleMixin.js');
10
+ var staticResourcesMixin = require('../staticResourcesMixin/staticResourcesMixin.js');
11
+ var constants = require('./constants.js');
12
+ var helpers = require('./helpers.js');
13
+ var observeAttributesMixin = require('../observeAttributesMixin/observeAttributesMixin.js');
14
+ var constants$1 = require('../descopeUiMixin/constants.js');
15
+
16
+ const themeValidation = (_, theme) => (theme || false) &&
17
+ theme !== 'light' &&
18
+ theme !== 'dark' &&
19
+ 'Supported theme values are "light", "dark", or leave empty for using the OS theme';
20
+ const themeMixin = sdkHelpers.createSingletonMixin((superclass) => {
21
+ 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;
22
+ const BaseClass = sdkHelpers.compose(createValidateAttributesMixin.createValidateAttributesMixin({ theme: themeValidation }), staticResourcesMixin.staticResourcesMixin, initLifecycleMixin.initLifecycleMixin, descopeUiMixin.descopeUiMixin, configMixin.configMixin, initElementMixin.initElementMixin, observeAttributesMixin.observeAttributesMixin)(superclass);
23
+ return _a = class ThemeMixinClass extends BaseClass {
24
+ constructor() {
25
+ super(...arguments);
26
+ _ThemeMixinClass_instances.add(this);
27
+ _ThemeMixinClass_globalStyleTag.set(this, void 0);
28
+ _ThemeMixinClass__themeResource.set(this, void 0);
29
+ _ThemeMixinClass_onThemeChange.set(this, () => {
30
+ tslib.__classPrivateFieldGet(this, _ThemeMixinClass_instances, "m", _ThemeMixinClass_loadTheme).call(this);
31
+ tslib.__classPrivateFieldGet(this, _ThemeMixinClass_toggleOsThemeChangeListener, "f").call(this, this.getAttribute('theme') === 'os');
32
+ });
33
+ // add or remove os theme change listener
34
+ _ThemeMixinClass_toggleOsThemeChangeListener.set(this, (listen) => {
35
+ var _b, _c, _d;
36
+ const method = listen ? 'addEventListener' : 'removeEventListener';
37
+ (_d = (_c = (_b = window
38
+ .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', () => tslib.__classPrivateFieldGet(this, _ThemeMixinClass_instances, "m", _ThemeMixinClass_loadTheme).call(this));
39
+ });
40
+ }
41
+ get theme() {
42
+ var _b, _c;
43
+ const theme = this.getAttribute('theme');
44
+ if (theme === 'os') {
45
+ const isOsDark = window.matchMedia &&
46
+ ((_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);
47
+ return isOsDark ? 'dark' : 'light';
48
+ }
49
+ return theme || 'light';
50
+ }
51
+ get styleId() {
52
+ return this.getAttribute('style-id') || constants.DEFAULT_STYLE_ID;
53
+ }
54
+ async init() {
55
+ var _b;
56
+ await ((_b = super.init) === null || _b === void 0 ? void 0 : _b.call(this));
57
+ tslib.__classPrivateFieldGet(this, _ThemeMixinClass_instances, "m", _ThemeMixinClass_loadGlobalStyle).call(this);
58
+ tslib.__classPrivateFieldGet(this, _ThemeMixinClass_instances, "m", _ThemeMixinClass_loadComponentsStyle).call(this);
59
+ tslib.__classPrivateFieldGet(this, _ThemeMixinClass_onThemeChange, "f").call(this);
60
+ this.observeAttributes(['theme'], tslib.__classPrivateFieldGet(this, _ThemeMixinClass_onThemeChange, "f"));
61
+ this.observeAttributes(['style-id'], () => {
62
+ tslib.__classPrivateFieldSet(this, _ThemeMixinClass__themeResource, null, "f");
63
+ tslib.__classPrivateFieldGet(this, _ThemeMixinClass_instances, "m", _ThemeMixinClass_loadFonts).call(this);
64
+ tslib.__classPrivateFieldGet(this, _ThemeMixinClass_instances, "m", _ThemeMixinClass_loadGlobalStyle).call(this);
65
+ tslib.__classPrivateFieldGet(this, _ThemeMixinClass_instances, "m", _ThemeMixinClass_loadComponentsStyle).call(this);
66
+ });
67
+ }
68
+ },
69
+ _ThemeMixinClass_globalStyleTag = new WeakMap(),
70
+ _ThemeMixinClass__themeResource = new WeakMap(),
71
+ _ThemeMixinClass_onThemeChange = new WeakMap(),
72
+ _ThemeMixinClass_toggleOsThemeChangeListener = new WeakMap(),
73
+ _ThemeMixinClass_instances = new WeakSet(),
74
+ _ThemeMixinClass_fetchTheme = async function _ThemeMixinClass_fetchTheme() {
75
+ try {
76
+ const { body: fetchedTheme } = await this.fetchStaticResource(`${this.styleId}.json`, 'json');
77
+ // In development mode, we sometimes want to override the UI components URL
78
+ // 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
79
+ if (process.env.NODE_ENV === 'development') {
80
+ if (localStorage === null || localStorage === void 0 ? void 0 : localStorage.getItem(constants$1.UI_COMPONENTS_URL_KEY)) {
81
+ try {
82
+ 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');
83
+ const devTheme = await helpers.loadDevTheme();
84
+ if (devTheme) {
85
+ fetchedTheme.light.components = Object.assign(Object.assign({}, fetchedTheme.light.components), devTheme.light.components);
86
+ fetchedTheme.dark.components = Object.assign(Object.assign({}, fetchedTheme.dark.components), devTheme.dark.components);
87
+ this.logger.warn('Theme was merged successfully');
88
+ // eslint-disable-next-line no-console
89
+ 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');
90
+ }
91
+ }
92
+ catch (e) {
93
+ this.logger.error('Failed to merge UI components theme\n', e);
94
+ }
95
+ }
96
+ }
97
+ return fetchedTheme;
98
+ }
99
+ catch (e) {
100
+ this.logger.error('Cannot fetch theme file', 'make sure that your projectId & flowId are correct');
101
+ }
102
+ return undefined;
103
+ },
104
+ _ThemeMixinClass_themeResource_get = function _ThemeMixinClass_themeResource_get() {
105
+ if (!tslib.__classPrivateFieldGet(this, _ThemeMixinClass__themeResource, "f")) {
106
+ tslib.__classPrivateFieldSet(this, _ThemeMixinClass__themeResource, tslib.__classPrivateFieldGet(this, _ThemeMixinClass_instances, "m", _ThemeMixinClass_fetchTheme).call(this), "f");
107
+ tslib.__classPrivateFieldGet(this, _ThemeMixinClass__themeResource, "f").then((theme) => this.logger.debug('Fetched theme', theme));
108
+ }
109
+ // eslint-disable-next-line no-underscore-dangle
110
+ return tslib.__classPrivateFieldGet(this, _ThemeMixinClass__themeResource, "f");
111
+ },
112
+ _ThemeMixinClass_loadGlobalStyle = async function _ThemeMixinClass_loadGlobalStyle() {
113
+ var _b, _c;
114
+ const theme = await tslib.__classPrivateFieldGet(this, _ThemeMixinClass_instances, "a", _ThemeMixinClass_themeResource_get);
115
+ if (!theme)
116
+ return;
117
+ if (!tslib.__classPrivateFieldGet(this, _ThemeMixinClass_globalStyleTag, "f")) {
118
+ tslib.__classPrivateFieldSet(this, _ThemeMixinClass_globalStyleTag, document.createElement('style'), "f");
119
+ tslib.__classPrivateFieldGet(this, _ThemeMixinClass_globalStyleTag, "f").id = 'global-style';
120
+ this.shadowRoot.appendChild(tslib.__classPrivateFieldGet(this, _ThemeMixinClass_globalStyleTag, "f"));
121
+ }
122
+ tslib.__classPrivateFieldGet(this, _ThemeMixinClass_globalStyleTag, "f").innerText =
123
+ (((_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) || '');
124
+ },
125
+ _ThemeMixinClass_loadComponentsStyle = async function _ThemeMixinClass_loadComponentsStyle() {
126
+ var _b, _c;
127
+ const theme = Object.assign({}, (await tslib.__classPrivateFieldGet(this, _ThemeMixinClass_instances, "a", _ThemeMixinClass_themeResource_get)));
128
+ if (!theme)
129
+ return;
130
+ const descopeUi = await this.descopeUi;
131
+ if (descopeUi === null || descopeUi === void 0 ? void 0 : descopeUi.componentsThemeManager) {
132
+ descopeUi.componentsThemeManager.themes = {
133
+ light: (_b = theme === null || theme === void 0 ? void 0 : theme.light) === null || _b === void 0 ? void 0 : _b.components,
134
+ dark: (_c = theme === null || theme === void 0 ? void 0 : theme.dark) === null || _c === void 0 ? void 0 : _c.components,
135
+ };
136
+ }
137
+ },
138
+ _ThemeMixinClass_getFontsConfig = async function _ThemeMixinClass_getFontsConfig() {
139
+ var _b, _c;
140
+ const { projectConfig } = (await this.config) || {};
141
+ const newConfig = (_b = projectConfig === null || projectConfig === void 0 ? void 0 : projectConfig.styles) === null || _b === void 0 ? void 0 : _b[this.styleId];
142
+ const oldConfig = projectConfig === null || projectConfig === void 0 ? void 0 : projectConfig.cssTemplate;
143
+ const config = newConfig || oldConfig;
144
+ const fonts = (_c = config === null || config === void 0 ? void 0 : config[this.theme]) === null || _c === void 0 ? void 0 : _c.fonts;
145
+ return fonts;
146
+ },
147
+ _ThemeMixinClass_loadFonts = async function _ThemeMixinClass_loadFonts() {
148
+ const fonts = await tslib.__classPrivateFieldGet(this, _ThemeMixinClass_instances, "m", _ThemeMixinClass_getFontsConfig).call(this);
149
+ if (fonts) {
150
+ Object.values(fonts).forEach((font) => {
151
+ if (font.url) {
152
+ this.logger.debug(`Loading font from URL "${font.url}"`);
153
+ helpers.loadFont(font.url);
154
+ }
155
+ });
156
+ }
157
+ else {
158
+ this.logger.debug('No fonts to load');
159
+ }
160
+ },
161
+ _ThemeMixinClass_applyTheme = async function _ThemeMixinClass_applyTheme() {
162
+ this.rootElement.setAttribute('data-theme', this.theme);
163
+ const descopeUi = await this.descopeUi;
164
+ if (descopeUi === null || descopeUi === void 0 ? void 0 : descopeUi.componentsThemeManager) {
165
+ descopeUi.componentsThemeManager.currentThemeName = this.theme;
166
+ }
167
+ },
168
+ _ThemeMixinClass_loadTheme = function _ThemeMixinClass_loadTheme() {
169
+ tslib.__classPrivateFieldGet(this, _ThemeMixinClass_instances, "m", _ThemeMixinClass_loadFonts).call(this);
170
+ tslib.__classPrivateFieldGet(this, _ThemeMixinClass_instances, "m", _ThemeMixinClass_applyTheme).call(this);
171
+ },
172
+ _a;
173
+ });
174
+
175
+ exports.themeMixin = themeMixin;
176
+ //# 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":["createSingletonMixin","compose","createValidateAttributesMixin","staticResourcesMixin","initLifecycleMixin","descopeUiMixin","configMixin","initElementMixin","observeAttributesMixin","__classPrivateFieldGet","DEFAULT_STYLE_ID","__classPrivateFieldSet","UI_COMPONENTS_URL_KEY","loadDevTheme","loadFont"],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ const IS_LOCAL_STORAGE = typeof localStorage !== 'undefined';
2
+
3
+ export { IS_LOCAL_STORAGE };
4
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sources":["../../src/constants.ts"],"sourcesContent":["export const IS_LOCAL_STORAGE = typeof localStorage !== 'undefined';\n"],"names":[],"mappings":"MAAa,gBAAgB,GAAG,OAAO,YAAY,KAAK;;;;"}
@@ -0,0 +1,18 @@
1
+ export { configMixin } from './mixins/configMixin/configMixin.js';
2
+ export { createValidateAttributesMixin } from './mixins/createValidateAttributesMixin/createValidateAttributesMixin.js';
3
+ export { debuggerMixin } from './mixins/debuggerMixin/debuggerMixin.js';
4
+ export { descopeUiMixin } from './mixins/descopeUiMixin/descopeUiMixin.js';
5
+ export { loggerMixin } from './mixins/loggerMixin/loggerMixin.js';
6
+ export { modalMixin } from './mixins/modalMixin/modalMixin.js';
7
+ export { notificationsMixin } from './mixins/notificationsMixin/notificationsMixin.js';
8
+ export { observeAttributesMixin } from './mixins/observeAttributesMixin/observeAttributesMixin.js';
9
+ export { getResourceUrl, staticResourcesMixin } from './mixins/staticResourcesMixin/staticResourcesMixin.js';
10
+ export { themeMixin } from './mixins/themeMixin/themeMixin.js';
11
+ export { createStateManagementMixin } from './mixins/createStateManagementMixin.js';
12
+ export { formMixin } from './mixins/formMixin.js';
13
+ export { initElementMixin } from './mixins/initElementMixin.js';
14
+ export { initLifecycleMixin } from './mixins/initLifecycleMixin.js';
15
+ export { projectIdMixin } from './mixins/projectIdMixin.js';
16
+ export { baseUrlMixin } from './mixins/baseUrlMixin.js';
17
+ export { baseStaticUrlMixin } from './mixins/baseStaticUrlMixin.js';
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;"}
@@ -0,0 +1,12 @@
1
+ import { createSingletonMixin } from '@descope/sdk-helpers';
2
+
3
+ const baseStaticUrlMixin = createSingletonMixin((superclass) => {
4
+ return class BaseStaticUrlMixinClass extends superclass {
5
+ get baseStaticUrl() {
6
+ return this.getAttribute('base-static-url') || '';
7
+ }
8
+ };
9
+ });
10
+
11
+ export { baseStaticUrlMixin };
12
+ //# sourceMappingURL=baseStaticUrlMixin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"baseStaticUrlMixin.js","sources":["../../../src/mixins/baseStaticUrlMixin.ts"],"sourcesContent":["import { createSingletonMixin } from '@descope/sdk-helpers';\n\nexport const baseStaticUrlMixin = createSingletonMixin(\n <T extends CustomElementConstructor>(superclass: T) => {\n return class BaseStaticUrlMixinClass extends superclass {\n get baseStaticUrl() {\n return this.getAttribute('base-static-url') || '';\n }\n };\n },\n);\n"],"names":[],"mappings":";;MAEa,kBAAkB,GAAG,oBAAoB,CACpD,CAAqC,UAAa,KAAI;IACpD,OAAO,MAAM,uBAAwB,SAAQ,UAAU,CAAA;AACrD,QAAA,IAAI,aAAa,GAAA;YACf,OAAO,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;SACnD;KACF,CAAC;AACJ,CAAC;;;;"}