@descope/sdk-mixins 0.0.0-next-94de8ba2-20260626 → 0.0.0-next-53b2ffc7-20260804

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 (35) hide show
  1. package/dist/cjs/mixins/debuggerMixin/debugger-wc.js +5 -1
  2. package/dist/cjs/mixins/debuggerMixin/debugger-wc.js.map +1 -1
  3. package/dist/cjs/mixins/themeMixin/themeMixin.js +1 -1
  4. package/dist/cjs/mixins/themeMixin/themeMixin.js.map +1 -1
  5. package/dist/esm/mixins/debuggerMixin/debugger-wc.js +5 -1
  6. package/dist/esm/mixins/debuggerMixin/debugger-wc.js.map +1 -1
  7. package/dist/esm/mixins/themeMixin/themeMixin.js +1 -1
  8. package/dist/esm/mixins/themeMixin/themeMixin.js.map +1 -1
  9. package/dist/index.d.ts +257 -255
  10. package/dist/types/mixins/configMixin/configMixin.d.ts +14 -14
  11. package/dist/types/mixins/createStateManagementMixin.d.ts +2 -2
  12. package/dist/types/mixins/createValidateAttributesMixin/createValidateAttributesMixin.d.ts +5 -5
  13. package/dist/types/mixins/cspNonceMixin.d.ts +5 -5
  14. package/dist/types/mixins/debuggerMixin/debugger-wc.d.ts +5 -5
  15. package/dist/types/mixins/debuggerMixin/debuggerMixin.d.ts +8 -8
  16. package/dist/types/mixins/descopeUiMixin/descopeUiMixin.d.ts +19 -19
  17. package/dist/types/mixins/fetchWidgetPagesMixin/createFetchWidgetPagesMixin.d.ts +15 -15
  18. package/dist/types/mixins/flowInputMixin/flowInputMixin.d.ts +41 -41
  19. package/dist/types/mixins/formMixin.d.ts +2 -2
  20. package/dist/types/mixins/initElementMixin.d.ts +5 -5
  21. package/dist/types/mixins/initLifecycleMixin.d.ts +1 -1
  22. package/dist/types/mixins/injectNpmLibMixin/injectNpmLibMixin.d.ts +2 -2
  23. package/dist/types/mixins/injectStyleMixin.d.ts +5 -5
  24. package/dist/types/mixins/loggerMixin/loggerMixin.d.ts +2 -2
  25. package/dist/types/mixins/modalMixin/modalMixin.d.ts +25 -23
  26. package/dist/types/mixins/notificationsMixin/notificationsMixin.d.ts +23 -23
  27. package/dist/types/mixins/observeAttributesMixin/observeAttributesMixin.d.ts +4 -4
  28. package/dist/types/mixins/projectIdMixin.d.ts +5 -5
  29. package/dist/types/mixins/resetMixin.d.ts +6 -6
  30. package/dist/types/mixins/staticResourcesMixin/staticResourcesMixin.d.ts +10 -10
  31. package/dist/types/mixins/tenantIdMixin.d.ts +5 -5
  32. package/dist/types/mixins/themeMixin/themeMixin.d.ts +40 -40
  33. package/dist/types/mixins/widgetConfigMixin/widgetConfigMixin.d.ts +14 -14
  34. package/dist/types/mixins/widgetIdMixin.d.ts +5 -5
  35. package/package.json +3 -3
@@ -14,7 +14,7 @@ const INITIAL_HEIGHT = 200;
14
14
  const MIN_SIZE = 200;
15
15
  const template = document.createElement('template');
16
16
  template.innerHTML = `
17
- <div style="top:${INITIAL_POS_THRESHOLD}px; left:${window.innerWidth - INITIAL_WIDTH - INITIAL_POS_THRESHOLD}px;" class="debugger">
17
+ <div class="debugger">
18
18
  <div class="header">
19
19
  <span>Debugger messages</span>
20
20
  </div>
@@ -151,6 +151,10 @@ class Debugger extends BaseClass {
151
151
  (_a = this.shadowRoot) === null || _a === void 0 ? void 0 : _a.appendChild(template.content.cloneNode(true));
152
152
  this.injectStyle(style);
153
153
  tslib.__classPrivateFieldSet(this, _Debugger_rootEle, this.shadowRoot.querySelector('.debugger'), "f");
154
+ // Set initial position via CSSOM instead of an inline style attribute,
155
+ // which a strict CSP style-src (without 'unsafe-inline') would block.
156
+ tslib.__classPrivateFieldGet(this, _Debugger_rootEle, "f").style.top = `${INITIAL_POS_THRESHOLD}px`;
157
+ tslib.__classPrivateFieldGet(this, _Debugger_rootEle, "f").style.left = `${window.innerWidth - INITIAL_WIDTH - INITIAL_POS_THRESHOLD}px`;
154
158
  tslib.__classPrivateFieldSet(this, _Debugger_contentEle, tslib.__classPrivateFieldGet(this, _Debugger_rootEle, "f").querySelector('.content'), "f");
155
159
  tslib.__classPrivateFieldSet(this, _Debugger_headerEle, tslib.__classPrivateFieldGet(this, _Debugger_rootEle, "f").querySelector('.header'), "f");
156
160
  }
@@ -1 +1 @@
1
- {"version":3,"file":"debugger-wc.js","sources":["../../../../src/mixins/debuggerMixin/debugger-wc.ts"],"sourcesContent":["/* eslint-disable no-param-reassign */\nimport { compose, State } from '@descope/sdk-helpers';\nimport {\n addOnResize,\n dragElement,\n limitCoordinateToScreenBoundaries,\n} from './helpers';\nimport { DebuggerMessage } from './types';\nimport { injectStyleMixin } from '../injectStyleMixin';\n\nconst INITIAL_POS_THRESHOLD = 32;\nconst INITIAL_WIDTH = 300;\nconst INITIAL_HEIGHT = 200;\nconst MIN_SIZE = 200;\n\nconst template = document.createElement('template');\ntemplate.innerHTML = `\n<div style=\"top:${INITIAL_POS_THRESHOLD}px; left:${\n window.innerWidth - INITIAL_WIDTH - INITIAL_POS_THRESHOLD\n}px;\" class=\"debugger\">\n <div class=\"header\">\n <span>Debugger messages</span>\n </div>\n <div class=\"content\">\n <div class=\"empty-state\">\n No errors detected 👀\n </div>\n </div>\n</div>\n`;\n\nconst icon = `<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M5.99984 13.167L8.99984 10.167L11.9998 13.167L13.1665 12.0003L10.1665 9.00033L13.1665 6.00033L11.9998 4.83366L8.99984 7.83366L5.99984 4.83366L4.83317 6.00033L7.83317 9.00033L4.83317 12.0003L5.99984 13.167ZM8.99984 17.3337C7.84706 17.3337 6.76373 17.1148 5.74984 16.677C4.73595 16.2398 3.854 15.6462 3.104 14.8962C2.354 14.1462 1.76039 13.2642 1.32317 12.2503C0.885393 11.2364 0.666504 10.1531 0.666504 9.00033C0.666504 7.84755 0.885393 6.76421 1.32317 5.75033C1.76039 4.73644 2.354 3.85449 3.104 3.10449C3.854 2.35449 4.73595 1.7606 5.74984 1.32283C6.76373 0.885603 7.84706 0.666992 8.99984 0.666992C10.1526 0.666992 11.2359 0.885603 12.2498 1.32283C13.2637 1.7606 14.1457 2.35449 14.8957 3.10449C15.6457 3.85449 16.2393 4.73644 16.6765 5.75033C17.1143 6.76421 17.3332 7.84755 17.3332 9.00033C17.3332 10.1531 17.1143 11.2364 16.6765 12.2503C16.2393 13.2642 15.6457 14.1462 14.8957 14.8962C14.1457 15.6462 13.2637 16.2398 12.2498 16.677C11.2359 17.1148 10.1526 17.3337 8.99984 17.3337ZM8.99984 15.667C10.8609 15.667 12.4373 15.0212 13.729 13.7295C15.0207 12.4378 15.6665 10.8614 15.6665 9.00033C15.6665 7.13921 15.0207 5.56283 13.729 4.27116C12.4373 2.97949 10.8609 2.33366 8.99984 2.33366C7.13873 2.33366 5.56234 2.97949 4.27067 4.27116C2.979 5.56283 2.33317 7.13921 2.33317 9.00033C2.33317 10.8614 2.979 12.4378 4.27067 13.7295C5.56234 15.0212 7.13873 15.667 8.99984 15.667Z\" fill=\"#ED404A\"/>\n</svg>\n`;\n\nconst style = `\n.debugger {\n all: initial;\n width: ${INITIAL_WIDTH}px;\n height: ${INITIAL_HEIGHT}px;\n background-color: #FAFAFA;\n position: fixed;\n font-family: \"Helvetica Neue\", sans-serif;\n box-shadow: rgba(0, 0, 0, 0.1) 0px 5px 10px;\n border-radius: 8px;\n overflow: hidden;\n border: 1px solid lightgrey;\n pointer-events: initial;\n display: flex;\n flex-direction: column;\n min-width: ${MIN_SIZE}px;\n max-width: 600px;\n max-height: calc(100% - ${INITIAL_POS_THRESHOLD * 2}px);\n min-height: ${MIN_SIZE}px;\n resize: both;\n }\n\n .header {\n padding: 8px 16px;\n display: flex;\n align-items: center;\n background-color: #EEEEEE;\n cursor: move;\n border-bottom: 1px solid #e0e0e0;\n }\n\n .content {\n font-size: 14px;\n flex-grow: 1;\n overflow: auto;\n }\n\n .msg {\n border-bottom: 1px solid lightgrey;\n padding: 8px 16px;\n display: flex;\n gap: 5px;\n background-color: #FAFAFA;\n }\n\n .msg.collapsible {\n cursor: pointer;\n }\n\n .empty-state {\n padding: 8px 16px;\n background-color: #FAFAFA;\n }\n\n\n .msg.collapsible:not(.collapsed) {\n background-color: #F5F5F5;\n }\n\n .msg_title {\n padding-bottom: 5px;\n display: flex;\n gap: 8px;\n font-weight: 500;\n }\n\n .msg svg {\n padding: 1px;\n flex-shrink: 0;\n margin-top: -2px;\n }\n\n .msg_content {\n overflow: hidden;\n flex-grow: 1;\n margin-right:5px;\n }\n\n .msg_desc {\n color: #646464;\n cursor: initial;\n word-wrap: break-word;\n }\n\n .msg.collapsed .msg_desc {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .msg.collapsible.collapsed .chevron {\n transform: rotate(-45deg) translateX(-2px);\n }\n\n .msg.collapsible .chevron {\n content: \"\";\n width:6px;\n height:6px;\n border-bottom: 2px solid grey;\n border-right: 2px solid grey;\n transform: rotate(45deg) translateX(-1px);\n margin: 5px;\n flex-shrink:0;\n }\n`;\n\ntype MessagesState = { messages: DebuggerMessage[] };\n\nconst BaseClass = compose(injectStyleMixin)(HTMLElement);\n\nclass Debugger extends BaseClass {\n #messagesState = new State<MessagesState>({ messages: [] });\n\n #rootEle: HTMLDivElement;\n\n #contentEle: HTMLDivElement;\n\n #headerEle: HTMLDivElement;\n\n #eventsCbRefs = {\n resize: this.#onWindowResize.bind(this),\n };\n\n constructor() {\n super();\n\n this.attachShadow({ mode: 'open' });\n this.shadowRoot?.appendChild(template.content.cloneNode(true));\n this.injectStyle(style);\n\n this.#rootEle =\n this.shadowRoot!.querySelector<HTMLDivElement>('.debugger')!;\n this.#contentEle = this.#rootEle.querySelector<HTMLDivElement>('.content')!;\n this.#headerEle = this.#rootEle.querySelector<HTMLDivElement>('.header')!;\n }\n\n updateData(data: DebuggerMessage | DebuggerMessage[]) {\n this.#messagesState.update((state) => ({\n messages: state.messages.concat(data),\n }));\n }\n\n #onNewMessages(data: MessagesState) {\n this.#renderMessages(data);\n this.#setCollapsibleMessages();\n }\n\n #renderMessages(data: MessagesState) {\n this.#contentEle.innerHTML = data.messages\n .map(\n (message) => `\n <div class=\"msg\">\n ${icon}\n <div class=\"msg_content\">\n <div class=\"msg_title\">\n ${message.title}\n </div>\n <div class=\"msg_desc\">\n ${message.description || ''}\n </div>\n </div>\n <div class=\"chevron\"></div>\n </div>\n `,\n )\n .join('');\n }\n\n #setCollapsibleMessages() {\n this.#contentEle.querySelectorAll('.msg').forEach((element: Element) => {\n const ele = element as HTMLElement;\n const descEle = ele.querySelector('.msg_desc');\n const lineHeight = 20;\n const isScroll = descEle!.scrollWidth > descEle!.clientWidth;\n const isMultiLine = descEle!.clientHeight > lineHeight;\n const isCollapsible = isScroll || isMultiLine;\n\n if (isCollapsible) {\n ele.classList.add('collapsible');\n ele.onclick = (e: MouseEvent) => {\n // message description should not toggle collapse\n if (!(e.target as HTMLElement).classList.contains('msg_desc')) {\n ele.classList.toggle('collapsed');\n }\n };\n } else {\n ele.classList.remove('collapsible');\n ele.onclick = null;\n }\n });\n }\n\n #onWindowResize() {\n // when window is resizing we want to make sure debugger is still visible\n const [left, top] = limitCoordinateToScreenBoundaries(\n this.#rootEle,\n Number.parseInt(this.#rootEle.style.left, 10),\n Number.parseInt(this.#rootEle.style.top, 10),\n { top: 'all', bottom: 100, left: 100, right: 100 },\n );\n this.#rootEle.style.top = `${top}px`;\n this.#rootEle.style.left = `${left}px`;\n }\n\n connectedCallback() {\n dragElement(this.#rootEle, this.#headerEle, {\n top: 'all',\n bottom: 100,\n left: 100,\n right: 100,\n });\n\n window.addEventListener('resize', this.#eventsCbRefs.resize);\n\n addOnResize(this.#rootEle);\n this.#rootEle.onresize = this.#setCollapsibleMessages.bind(this);\n\n this.#messagesState.subscribe(this.#onNewMessages.bind(this));\n }\n\n disconnectedCallback() {\n this.#messagesState.unsubscribeAll();\n window.removeEventListener('resize', this.#eventsCbRefs.resize);\n }\n}\n\nif (!customElements.get('descope-debugger')) {\n customElements.define('descope-debugger', Debugger);\n}\n\nexport default Debugger;\n"],"names":["compose","injectStyleMixin","State","__classPrivateFieldGet","__classPrivateFieldSet","dragElement","addOnResize","limitCoordinateToScreenBoundaries"],"mappings":"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"}
1
+ {"version":3,"file":"debugger-wc.js","sources":["../../../../src/mixins/debuggerMixin/debugger-wc.ts"],"sourcesContent":["/* eslint-disable no-param-reassign */\nimport { compose, State } from '@descope/sdk-helpers';\nimport {\n addOnResize,\n dragElement,\n limitCoordinateToScreenBoundaries,\n} from './helpers';\nimport { DebuggerMessage } from './types';\nimport { injectStyleMixin } from '../injectStyleMixin';\n\nconst INITIAL_POS_THRESHOLD = 32;\nconst INITIAL_WIDTH = 300;\nconst INITIAL_HEIGHT = 200;\nconst MIN_SIZE = 200;\n\nconst template = document.createElement('template');\ntemplate.innerHTML = `\n<div class=\"debugger\">\n <div class=\"header\">\n <span>Debugger messages</span>\n </div>\n <div class=\"content\">\n <div class=\"empty-state\">\n No errors detected 👀\n </div>\n </div>\n</div>\n`;\n\nconst icon = `<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M5.99984 13.167L8.99984 10.167L11.9998 13.167L13.1665 12.0003L10.1665 9.00033L13.1665 6.00033L11.9998 4.83366L8.99984 7.83366L5.99984 4.83366L4.83317 6.00033L7.83317 9.00033L4.83317 12.0003L5.99984 13.167ZM8.99984 17.3337C7.84706 17.3337 6.76373 17.1148 5.74984 16.677C4.73595 16.2398 3.854 15.6462 3.104 14.8962C2.354 14.1462 1.76039 13.2642 1.32317 12.2503C0.885393 11.2364 0.666504 10.1531 0.666504 9.00033C0.666504 7.84755 0.885393 6.76421 1.32317 5.75033C1.76039 4.73644 2.354 3.85449 3.104 3.10449C3.854 2.35449 4.73595 1.7606 5.74984 1.32283C6.76373 0.885603 7.84706 0.666992 8.99984 0.666992C10.1526 0.666992 11.2359 0.885603 12.2498 1.32283C13.2637 1.7606 14.1457 2.35449 14.8957 3.10449C15.6457 3.85449 16.2393 4.73644 16.6765 5.75033C17.1143 6.76421 17.3332 7.84755 17.3332 9.00033C17.3332 10.1531 17.1143 11.2364 16.6765 12.2503C16.2393 13.2642 15.6457 14.1462 14.8957 14.8962C14.1457 15.6462 13.2637 16.2398 12.2498 16.677C11.2359 17.1148 10.1526 17.3337 8.99984 17.3337ZM8.99984 15.667C10.8609 15.667 12.4373 15.0212 13.729 13.7295C15.0207 12.4378 15.6665 10.8614 15.6665 9.00033C15.6665 7.13921 15.0207 5.56283 13.729 4.27116C12.4373 2.97949 10.8609 2.33366 8.99984 2.33366C7.13873 2.33366 5.56234 2.97949 4.27067 4.27116C2.979 5.56283 2.33317 7.13921 2.33317 9.00033C2.33317 10.8614 2.979 12.4378 4.27067 13.7295C5.56234 15.0212 7.13873 15.667 8.99984 15.667Z\" fill=\"#ED404A\"/>\n</svg>\n`;\n\nconst style = `\n.debugger {\n all: initial;\n width: ${INITIAL_WIDTH}px;\n height: ${INITIAL_HEIGHT}px;\n background-color: #FAFAFA;\n position: fixed;\n font-family: \"Helvetica Neue\", sans-serif;\n box-shadow: rgba(0, 0, 0, 0.1) 0px 5px 10px;\n border-radius: 8px;\n overflow: hidden;\n border: 1px solid lightgrey;\n pointer-events: initial;\n display: flex;\n flex-direction: column;\n min-width: ${MIN_SIZE}px;\n max-width: 600px;\n max-height: calc(100% - ${INITIAL_POS_THRESHOLD * 2}px);\n min-height: ${MIN_SIZE}px;\n resize: both;\n }\n\n .header {\n padding: 8px 16px;\n display: flex;\n align-items: center;\n background-color: #EEEEEE;\n cursor: move;\n border-bottom: 1px solid #e0e0e0;\n }\n\n .content {\n font-size: 14px;\n flex-grow: 1;\n overflow: auto;\n }\n\n .msg {\n border-bottom: 1px solid lightgrey;\n padding: 8px 16px;\n display: flex;\n gap: 5px;\n background-color: #FAFAFA;\n }\n\n .msg.collapsible {\n cursor: pointer;\n }\n\n .empty-state {\n padding: 8px 16px;\n background-color: #FAFAFA;\n }\n\n\n .msg.collapsible:not(.collapsed) {\n background-color: #F5F5F5;\n }\n\n .msg_title {\n padding-bottom: 5px;\n display: flex;\n gap: 8px;\n font-weight: 500;\n }\n\n .msg svg {\n padding: 1px;\n flex-shrink: 0;\n margin-top: -2px;\n }\n\n .msg_content {\n overflow: hidden;\n flex-grow: 1;\n margin-right:5px;\n }\n\n .msg_desc {\n color: #646464;\n cursor: initial;\n word-wrap: break-word;\n }\n\n .msg.collapsed .msg_desc {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .msg.collapsible.collapsed .chevron {\n transform: rotate(-45deg) translateX(-2px);\n }\n\n .msg.collapsible .chevron {\n content: \"\";\n width:6px;\n height:6px;\n border-bottom: 2px solid grey;\n border-right: 2px solid grey;\n transform: rotate(45deg) translateX(-1px);\n margin: 5px;\n flex-shrink:0;\n }\n`;\n\ntype MessagesState = { messages: DebuggerMessage[] };\n\nconst BaseClass = compose(injectStyleMixin)(HTMLElement);\n\nclass Debugger extends BaseClass {\n #messagesState = new State<MessagesState>({ messages: [] });\n\n #rootEle: HTMLDivElement;\n\n #contentEle: HTMLDivElement;\n\n #headerEle: HTMLDivElement;\n\n #eventsCbRefs = {\n resize: this.#onWindowResize.bind(this),\n };\n\n constructor() {\n super();\n\n this.attachShadow({ mode: 'open' });\n this.shadowRoot?.appendChild(template.content.cloneNode(true));\n this.injectStyle(style);\n\n this.#rootEle =\n this.shadowRoot!.querySelector<HTMLDivElement>('.debugger')!;\n\n // Set initial position via CSSOM instead of an inline style attribute,\n // which a strict CSP style-src (without 'unsafe-inline') would block.\n this.#rootEle.style.top = `${INITIAL_POS_THRESHOLD}px`;\n this.#rootEle.style.left = `${\n window.innerWidth - INITIAL_WIDTH - INITIAL_POS_THRESHOLD\n }px`;\n\n this.#contentEle = this.#rootEle.querySelector<HTMLDivElement>('.content')!;\n this.#headerEle = this.#rootEle.querySelector<HTMLDivElement>('.header')!;\n }\n\n updateData(data: DebuggerMessage | DebuggerMessage[]) {\n this.#messagesState.update((state) => ({\n messages: state.messages.concat(data),\n }));\n }\n\n #onNewMessages(data: MessagesState) {\n this.#renderMessages(data);\n this.#setCollapsibleMessages();\n }\n\n #renderMessages(data: MessagesState) {\n this.#contentEle.innerHTML = data.messages\n .map(\n (message) => `\n <div class=\"msg\">\n ${icon}\n <div class=\"msg_content\">\n <div class=\"msg_title\">\n ${message.title}\n </div>\n <div class=\"msg_desc\">\n ${message.description || ''}\n </div>\n </div>\n <div class=\"chevron\"></div>\n </div>\n `,\n )\n .join('');\n }\n\n #setCollapsibleMessages() {\n this.#contentEle.querySelectorAll('.msg').forEach((element: Element) => {\n const ele = element as HTMLElement;\n const descEle = ele.querySelector('.msg_desc');\n const lineHeight = 20;\n const isScroll = descEle!.scrollWidth > descEle!.clientWidth;\n const isMultiLine = descEle!.clientHeight > lineHeight;\n const isCollapsible = isScroll || isMultiLine;\n\n if (isCollapsible) {\n ele.classList.add('collapsible');\n ele.onclick = (e: MouseEvent) => {\n // message description should not toggle collapse\n if (!(e.target as HTMLElement).classList.contains('msg_desc')) {\n ele.classList.toggle('collapsed');\n }\n };\n } else {\n ele.classList.remove('collapsible');\n ele.onclick = null;\n }\n });\n }\n\n #onWindowResize() {\n // when window is resizing we want to make sure debugger is still visible\n const [left, top] = limitCoordinateToScreenBoundaries(\n this.#rootEle,\n Number.parseInt(this.#rootEle.style.left, 10),\n Number.parseInt(this.#rootEle.style.top, 10),\n { top: 'all', bottom: 100, left: 100, right: 100 },\n );\n this.#rootEle.style.top = `${top}px`;\n this.#rootEle.style.left = `${left}px`;\n }\n\n connectedCallback() {\n dragElement(this.#rootEle, this.#headerEle, {\n top: 'all',\n bottom: 100,\n left: 100,\n right: 100,\n });\n\n window.addEventListener('resize', this.#eventsCbRefs.resize);\n\n addOnResize(this.#rootEle);\n this.#rootEle.onresize = this.#setCollapsibleMessages.bind(this);\n\n this.#messagesState.subscribe(this.#onNewMessages.bind(this));\n }\n\n disconnectedCallback() {\n this.#messagesState.unsubscribeAll();\n window.removeEventListener('resize', this.#eventsCbRefs.resize);\n }\n}\n\nif (!customElements.get('descope-debugger')) {\n customElements.define('descope-debugger', Debugger);\n}\n\nexport default Debugger;\n"],"names":["compose","injectStyleMixin","State","__classPrivateFieldGet","__classPrivateFieldSet","dragElement","addOnResize","limitCoordinateToScreenBoundaries"],"mappings":"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"}
@@ -177,7 +177,7 @@ const themeMixin = sdkHelpers.createSingletonMixin((superclass) => {
177
177
  return fetchedTenantTheme;
178
178
  }
179
179
  catch (e) {
180
- this.logger.error('Cannot fetch tenant theme file', 'make sure that your tenantId, projectId & flowId are correct');
180
+ this.logger.warn('No tenant style exists, using project default theme.');
181
181
  }
182
182
  return undefined;
183
183
  },
@@ -1 +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 {\n deepMergeNonEmpty,\n flattenToVars,\n loadDevTheme,\n loadFont,\n} from './helpers';\nimport { observeAttributesMixin } from '../observeAttributesMixin';\nimport { UI_COMPONENTS_URL_KEY } from '../descopeUiMixin/constants';\nimport { InjectedStyle, injectStyleMixin } from '../injectStyleMixin';\nimport { tenantIdMixin } from '../tenantIdMixin';\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 tenantIdMixin,\n staticResourcesMixin,\n initLifecycleMixin,\n descopeUiMixin,\n configMixin,\n initElementMixin,\n observeAttributesMixin,\n injectStyleMixin,\n )(superclass);\n\n return class ThemeMixinClass extends BaseClass {\n #globalStyle: InjectedStyle;\n #tenantStyle: InjectedStyle;\n #customStyle: InjectedStyle;\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 get themeOverride(): Record<string, any> | null {\n const raw = this.getAttribute('theme-override');\n if (!raw) return null;\n try {\n return JSON.parse(raw);\n } catch (e) {\n this.logger.error(\n 'Failed to parse theme-override attribute. error: ',\n e,\n );\n return null;\n }\n }\n\n #getThemeOverrideString(): string {\n const override = this.themeOverride;\n if (!override) return '';\n\n return (['light', 'dark'] as const)\n .map((theme) => {\n const primary = override[theme]?.globals?.colors?.primary;\n const secondary = override[theme]?.globals?.colors?.secondary;\n if (!primary && !secondary) return '';\n\n return `[data-theme=\"${theme}\"]{${flattenToVars(\n { colors: { primary, secondary } },\n (msg) => this.logger.error(msg),\n )}}`;\n })\n .join('');\n }\n\n #_themeResource: Promise<void | Record<string, any>>;\n #_tenantThemeResource: Promise<Record<string, any> | undefined>;\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 return this.#_themeResource;\n }\n\n async #loadGlobalStyle() {\n const theme = await this.#themeResource;\n if (!theme) {\n return;\n }\n const styles =\n (theme?.light?.globals || '') + (theme?.dark?.globals || '');\n if (!this.#globalStyle) {\n // Use prepend so project global style always precedes tenant style regardless of fetch order\n this.#globalStyle = this.injectStyle(styles, { prepend: true });\n } else {\n this.#globalStyle.replaceSync(styles);\n }\n }\n\n async #fetchTenantTheme() {\n const tenantId = this.tenantId;\n if (!tenantId) return undefined;\n try {\n const { body: fetchedTenantTheme } = await this.fetchStaticResource(\n `${tenantId}/theme.json`,\n 'json',\n );\n return fetchedTenantTheme;\n } catch (e) {\n this.logger.error(\n 'Cannot fetch tenant theme file',\n 'make sure that your tenantId, projectId & flowId are correct',\n );\n }\n return undefined;\n }\n\n get #tenantThemeResource(): Promise<Record<string, any> | undefined> {\n if (!this.#_tenantThemeResource) {\n this.#_tenantThemeResource = this.#fetchTenantTheme();\n }\n return this.#_tenantThemeResource;\n }\n\n async #loadTenantStyle() {\n if (!this.tenantId) {\n this.#tenantStyle?.replaceSync('');\n return;\n }\n const tenantTheme = await this.#tenantThemeResource;\n if (!tenantTheme) {\n this.#tenantStyle?.replaceSync('');\n return;\n }\n const styles =\n (tenantTheme.light?.globals || '') +\n (tenantTheme.dark?.globals || '');\n if (!this.#tenantStyle) {\n this.#tenantStyle = this.injectStyle(styles);\n } else {\n this.#tenantStyle.replaceSync(styles);\n }\n }\n\n async #loadCustomStyle() {\n if (!this.themeOverride) {\n this.#customStyle?.replaceSync('');\n return;\n }\n const overrideString = this.#getThemeOverrideString();\n if (!this.#customStyle) {\n this.#customStyle = this.injectStyle(overrideString);\n } else {\n this.#customStyle.replaceSync(overrideString);\n }\n }\n\n async #loadComponentsStyle() {\n const theme = await this.#themeResource;\n if (!theme) return;\n\n const descopeUi = await this.descopeUi;\n if (!descopeUi?.componentsThemeManager) return;\n\n const tenantTheme = await this.#tenantThemeResource;\n\n descopeUi.componentsThemeManager.themes = {\n light: deepMergeNonEmpty(\n theme?.light?.components || {},\n tenantTheme?.light?.components || {},\n ),\n dark: deepMergeNonEmpty(\n theme?.dark?.components || {},\n tenantTheme?.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.#onThemeChange();\n await Promise.all([\n this.#loadGlobalStyle(),\n this.#loadTenantStyle(),\n this.#loadComponentsStyle(),\n ]);\n this.#loadCustomStyle();\n\n this.observeAttributes(['theme'], this.#onThemeChange);\n\n this.observeAttributes(['theme-override'], () =>\n this.#loadCustomStyle(),\n );\n\n this.observeAttributes(['tenant'], () => {\n this.#_tenantThemeResource = null;\n this.#loadTenantStyle();\n this.#loadComponentsStyle();\n });\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","tenantIdMixin","staticResourcesMixin","initLifecycleMixin","descopeUiMixin","configMixin","initElementMixin","observeAttributesMixin","injectStyleMixin","__classPrivateFieldGet","DEFAULT_STYLE_ID","__classPrivateFieldSet","flattenToVars","UI_COMPONENTS_URL_KEY","loadDevTheme","deepMergeNonEmpty","loadFont"],"mappings":"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"}
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 {\n deepMergeNonEmpty,\n flattenToVars,\n loadDevTheme,\n loadFont,\n} from './helpers';\nimport { observeAttributesMixin } from '../observeAttributesMixin';\nimport { UI_COMPONENTS_URL_KEY } from '../descopeUiMixin/constants';\nimport { InjectedStyle, injectStyleMixin } from '../injectStyleMixin';\nimport { tenantIdMixin } from '../tenantIdMixin';\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 tenantIdMixin,\n staticResourcesMixin,\n initLifecycleMixin,\n descopeUiMixin,\n configMixin,\n initElementMixin,\n observeAttributesMixin,\n injectStyleMixin,\n )(superclass);\n\n return class ThemeMixinClass extends BaseClass {\n #globalStyle: InjectedStyle;\n #tenantStyle: InjectedStyle;\n #customStyle: InjectedStyle;\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 get themeOverride(): Record<string, any> | null {\n const raw = this.getAttribute('theme-override');\n if (!raw) return null;\n try {\n return JSON.parse(raw);\n } catch (e) {\n this.logger.error(\n 'Failed to parse theme-override attribute. error: ',\n e,\n );\n return null;\n }\n }\n\n #getThemeOverrideString(): string {\n const override = this.themeOverride;\n if (!override) return '';\n\n return (['light', 'dark'] as const)\n .map((theme) => {\n const primary = override[theme]?.globals?.colors?.primary;\n const secondary = override[theme]?.globals?.colors?.secondary;\n if (!primary && !secondary) return '';\n\n return `[data-theme=\"${theme}\"]{${flattenToVars(\n { colors: { primary, secondary } },\n (msg) => this.logger.error(msg),\n )}}`;\n })\n .join('');\n }\n\n #_themeResource: Promise<void | Record<string, any>>;\n #_tenantThemeResource: Promise<Record<string, any> | undefined>;\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 return this.#_themeResource;\n }\n\n async #loadGlobalStyle() {\n const theme = await this.#themeResource;\n if (!theme) {\n return;\n }\n const styles =\n (theme?.light?.globals || '') + (theme?.dark?.globals || '');\n if (!this.#globalStyle) {\n // Use prepend so project global style always precedes tenant style regardless of fetch order\n this.#globalStyle = this.injectStyle(styles, { prepend: true });\n } else {\n this.#globalStyle.replaceSync(styles);\n }\n }\n\n async #fetchTenantTheme() {\n const tenantId = this.tenantId;\n if (!tenantId) return undefined;\n try {\n const { body: fetchedTenantTheme } = await this.fetchStaticResource(\n `${tenantId}/theme.json`,\n 'json',\n );\n return fetchedTenantTheme;\n } catch (e) {\n this.logger.warn(\n 'No tenant style exists, using project default theme.',\n );\n }\n return undefined;\n }\n\n get #tenantThemeResource(): Promise<Record<string, any> | undefined> {\n if (!this.#_tenantThemeResource) {\n this.#_tenantThemeResource = this.#fetchTenantTheme();\n }\n return this.#_tenantThemeResource;\n }\n\n async #loadTenantStyle() {\n if (!this.tenantId) {\n this.#tenantStyle?.replaceSync('');\n return;\n }\n const tenantTheme = await this.#tenantThemeResource;\n if (!tenantTheme) {\n this.#tenantStyle?.replaceSync('');\n return;\n }\n const styles =\n (tenantTheme.light?.globals || '') +\n (tenantTheme.dark?.globals || '');\n if (!this.#tenantStyle) {\n this.#tenantStyle = this.injectStyle(styles);\n } else {\n this.#tenantStyle.replaceSync(styles);\n }\n }\n\n async #loadCustomStyle() {\n if (!this.themeOverride) {\n this.#customStyle?.replaceSync('');\n return;\n }\n const overrideString = this.#getThemeOverrideString();\n if (!this.#customStyle) {\n this.#customStyle = this.injectStyle(overrideString);\n } else {\n this.#customStyle.replaceSync(overrideString);\n }\n }\n\n async #loadComponentsStyle() {\n const theme = await this.#themeResource;\n if (!theme) return;\n\n const descopeUi = await this.descopeUi;\n if (!descopeUi?.componentsThemeManager) return;\n\n const tenantTheme = await this.#tenantThemeResource;\n\n descopeUi.componentsThemeManager.themes = {\n light: deepMergeNonEmpty(\n theme?.light?.components || {},\n tenantTheme?.light?.components || {},\n ),\n dark: deepMergeNonEmpty(\n theme?.dark?.components || {},\n tenantTheme?.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.#onThemeChange();\n await Promise.all([\n this.#loadGlobalStyle(),\n this.#loadTenantStyle(),\n this.#loadComponentsStyle(),\n ]);\n this.#loadCustomStyle();\n\n this.observeAttributes(['theme'], this.#onThemeChange);\n\n this.observeAttributes(['theme-override'], () =>\n this.#loadCustomStyle(),\n );\n\n this.observeAttributes(['tenant'], () => {\n this.#_tenantThemeResource = null;\n this.#loadTenantStyle();\n this.#loadComponentsStyle();\n });\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","tenantIdMixin","staticResourcesMixin","initLifecycleMixin","descopeUiMixin","configMixin","initElementMixin","observeAttributesMixin","injectStyleMixin","__classPrivateFieldGet","DEFAULT_STYLE_ID","__classPrivateFieldSet","flattenToVars","UI_COMPONENTS_URL_KEY","loadDevTheme","deepMergeNonEmpty","loadFont"],"mappings":"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"}
@@ -10,7 +10,7 @@ const INITIAL_HEIGHT = 200;
10
10
  const MIN_SIZE = 200;
11
11
  const template = document.createElement('template');
12
12
  template.innerHTML = `
13
- <div style="top:${INITIAL_POS_THRESHOLD}px; left:${window.innerWidth - INITIAL_WIDTH - INITIAL_POS_THRESHOLD}px;" class="debugger">
13
+ <div class="debugger">
14
14
  <div class="header">
15
15
  <span>Debugger messages</span>
16
16
  </div>
@@ -147,6 +147,10 @@ class Debugger extends BaseClass {
147
147
  (_a = this.shadowRoot) === null || _a === void 0 ? void 0 : _a.appendChild(template.content.cloneNode(true));
148
148
  this.injectStyle(style);
149
149
  __classPrivateFieldSet(this, _Debugger_rootEle, this.shadowRoot.querySelector('.debugger'), "f");
150
+ // Set initial position via CSSOM instead of an inline style attribute,
151
+ // which a strict CSP style-src (without 'unsafe-inline') would block.
152
+ __classPrivateFieldGet(this, _Debugger_rootEle, "f").style.top = `${INITIAL_POS_THRESHOLD}px`;
153
+ __classPrivateFieldGet(this, _Debugger_rootEle, "f").style.left = `${window.innerWidth - INITIAL_WIDTH - INITIAL_POS_THRESHOLD}px`;
150
154
  __classPrivateFieldSet(this, _Debugger_contentEle, __classPrivateFieldGet(this, _Debugger_rootEle, "f").querySelector('.content'), "f");
151
155
  __classPrivateFieldSet(this, _Debugger_headerEle, __classPrivateFieldGet(this, _Debugger_rootEle, "f").querySelector('.header'), "f");
152
156
  }
@@ -1 +1 @@
1
- {"version":3,"file":"debugger-wc.js","sources":["../../../../src/mixins/debuggerMixin/debugger-wc.ts"],"sourcesContent":["/* eslint-disable no-param-reassign */\nimport { compose, State } from '@descope/sdk-helpers';\nimport {\n addOnResize,\n dragElement,\n limitCoordinateToScreenBoundaries,\n} from './helpers';\nimport { DebuggerMessage } from './types';\nimport { injectStyleMixin } from '../injectStyleMixin';\n\nconst INITIAL_POS_THRESHOLD = 32;\nconst INITIAL_WIDTH = 300;\nconst INITIAL_HEIGHT = 200;\nconst MIN_SIZE = 200;\n\nconst template = document.createElement('template');\ntemplate.innerHTML = `\n<div style=\"top:${INITIAL_POS_THRESHOLD}px; left:${\n window.innerWidth - INITIAL_WIDTH - INITIAL_POS_THRESHOLD\n}px;\" class=\"debugger\">\n <div class=\"header\">\n <span>Debugger messages</span>\n </div>\n <div class=\"content\">\n <div class=\"empty-state\">\n No errors detected 👀\n </div>\n </div>\n</div>\n`;\n\nconst icon = `<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M5.99984 13.167L8.99984 10.167L11.9998 13.167L13.1665 12.0003L10.1665 9.00033L13.1665 6.00033L11.9998 4.83366L8.99984 7.83366L5.99984 4.83366L4.83317 6.00033L7.83317 9.00033L4.83317 12.0003L5.99984 13.167ZM8.99984 17.3337C7.84706 17.3337 6.76373 17.1148 5.74984 16.677C4.73595 16.2398 3.854 15.6462 3.104 14.8962C2.354 14.1462 1.76039 13.2642 1.32317 12.2503C0.885393 11.2364 0.666504 10.1531 0.666504 9.00033C0.666504 7.84755 0.885393 6.76421 1.32317 5.75033C1.76039 4.73644 2.354 3.85449 3.104 3.10449C3.854 2.35449 4.73595 1.7606 5.74984 1.32283C6.76373 0.885603 7.84706 0.666992 8.99984 0.666992C10.1526 0.666992 11.2359 0.885603 12.2498 1.32283C13.2637 1.7606 14.1457 2.35449 14.8957 3.10449C15.6457 3.85449 16.2393 4.73644 16.6765 5.75033C17.1143 6.76421 17.3332 7.84755 17.3332 9.00033C17.3332 10.1531 17.1143 11.2364 16.6765 12.2503C16.2393 13.2642 15.6457 14.1462 14.8957 14.8962C14.1457 15.6462 13.2637 16.2398 12.2498 16.677C11.2359 17.1148 10.1526 17.3337 8.99984 17.3337ZM8.99984 15.667C10.8609 15.667 12.4373 15.0212 13.729 13.7295C15.0207 12.4378 15.6665 10.8614 15.6665 9.00033C15.6665 7.13921 15.0207 5.56283 13.729 4.27116C12.4373 2.97949 10.8609 2.33366 8.99984 2.33366C7.13873 2.33366 5.56234 2.97949 4.27067 4.27116C2.979 5.56283 2.33317 7.13921 2.33317 9.00033C2.33317 10.8614 2.979 12.4378 4.27067 13.7295C5.56234 15.0212 7.13873 15.667 8.99984 15.667Z\" fill=\"#ED404A\"/>\n</svg>\n`;\n\nconst style = `\n.debugger {\n all: initial;\n width: ${INITIAL_WIDTH}px;\n height: ${INITIAL_HEIGHT}px;\n background-color: #FAFAFA;\n position: fixed;\n font-family: \"Helvetica Neue\", sans-serif;\n box-shadow: rgba(0, 0, 0, 0.1) 0px 5px 10px;\n border-radius: 8px;\n overflow: hidden;\n border: 1px solid lightgrey;\n pointer-events: initial;\n display: flex;\n flex-direction: column;\n min-width: ${MIN_SIZE}px;\n max-width: 600px;\n max-height: calc(100% - ${INITIAL_POS_THRESHOLD * 2}px);\n min-height: ${MIN_SIZE}px;\n resize: both;\n }\n\n .header {\n padding: 8px 16px;\n display: flex;\n align-items: center;\n background-color: #EEEEEE;\n cursor: move;\n border-bottom: 1px solid #e0e0e0;\n }\n\n .content {\n font-size: 14px;\n flex-grow: 1;\n overflow: auto;\n }\n\n .msg {\n border-bottom: 1px solid lightgrey;\n padding: 8px 16px;\n display: flex;\n gap: 5px;\n background-color: #FAFAFA;\n }\n\n .msg.collapsible {\n cursor: pointer;\n }\n\n .empty-state {\n padding: 8px 16px;\n background-color: #FAFAFA;\n }\n\n\n .msg.collapsible:not(.collapsed) {\n background-color: #F5F5F5;\n }\n\n .msg_title {\n padding-bottom: 5px;\n display: flex;\n gap: 8px;\n font-weight: 500;\n }\n\n .msg svg {\n padding: 1px;\n flex-shrink: 0;\n margin-top: -2px;\n }\n\n .msg_content {\n overflow: hidden;\n flex-grow: 1;\n margin-right:5px;\n }\n\n .msg_desc {\n color: #646464;\n cursor: initial;\n word-wrap: break-word;\n }\n\n .msg.collapsed .msg_desc {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .msg.collapsible.collapsed .chevron {\n transform: rotate(-45deg) translateX(-2px);\n }\n\n .msg.collapsible .chevron {\n content: \"\";\n width:6px;\n height:6px;\n border-bottom: 2px solid grey;\n border-right: 2px solid grey;\n transform: rotate(45deg) translateX(-1px);\n margin: 5px;\n flex-shrink:0;\n }\n`;\n\ntype MessagesState = { messages: DebuggerMessage[] };\n\nconst BaseClass = compose(injectStyleMixin)(HTMLElement);\n\nclass Debugger extends BaseClass {\n #messagesState = new State<MessagesState>({ messages: [] });\n\n #rootEle: HTMLDivElement;\n\n #contentEle: HTMLDivElement;\n\n #headerEle: HTMLDivElement;\n\n #eventsCbRefs = {\n resize: this.#onWindowResize.bind(this),\n };\n\n constructor() {\n super();\n\n this.attachShadow({ mode: 'open' });\n this.shadowRoot?.appendChild(template.content.cloneNode(true));\n this.injectStyle(style);\n\n this.#rootEle =\n this.shadowRoot!.querySelector<HTMLDivElement>('.debugger')!;\n this.#contentEle = this.#rootEle.querySelector<HTMLDivElement>('.content')!;\n this.#headerEle = this.#rootEle.querySelector<HTMLDivElement>('.header')!;\n }\n\n updateData(data: DebuggerMessage | DebuggerMessage[]) {\n this.#messagesState.update((state) => ({\n messages: state.messages.concat(data),\n }));\n }\n\n #onNewMessages(data: MessagesState) {\n this.#renderMessages(data);\n this.#setCollapsibleMessages();\n }\n\n #renderMessages(data: MessagesState) {\n this.#contentEle.innerHTML = data.messages\n .map(\n (message) => `\n <div class=\"msg\">\n ${icon}\n <div class=\"msg_content\">\n <div class=\"msg_title\">\n ${message.title}\n </div>\n <div class=\"msg_desc\">\n ${message.description || ''}\n </div>\n </div>\n <div class=\"chevron\"></div>\n </div>\n `,\n )\n .join('');\n }\n\n #setCollapsibleMessages() {\n this.#contentEle.querySelectorAll('.msg').forEach((element: Element) => {\n const ele = element as HTMLElement;\n const descEle = ele.querySelector('.msg_desc');\n const lineHeight = 20;\n const isScroll = descEle!.scrollWidth > descEle!.clientWidth;\n const isMultiLine = descEle!.clientHeight > lineHeight;\n const isCollapsible = isScroll || isMultiLine;\n\n if (isCollapsible) {\n ele.classList.add('collapsible');\n ele.onclick = (e: MouseEvent) => {\n // message description should not toggle collapse\n if (!(e.target as HTMLElement).classList.contains('msg_desc')) {\n ele.classList.toggle('collapsed');\n }\n };\n } else {\n ele.classList.remove('collapsible');\n ele.onclick = null;\n }\n });\n }\n\n #onWindowResize() {\n // when window is resizing we want to make sure debugger is still visible\n const [left, top] = limitCoordinateToScreenBoundaries(\n this.#rootEle,\n Number.parseInt(this.#rootEle.style.left, 10),\n Number.parseInt(this.#rootEle.style.top, 10),\n { top: 'all', bottom: 100, left: 100, right: 100 },\n );\n this.#rootEle.style.top = `${top}px`;\n this.#rootEle.style.left = `${left}px`;\n }\n\n connectedCallback() {\n dragElement(this.#rootEle, this.#headerEle, {\n top: 'all',\n bottom: 100,\n left: 100,\n right: 100,\n });\n\n window.addEventListener('resize', this.#eventsCbRefs.resize);\n\n addOnResize(this.#rootEle);\n this.#rootEle.onresize = this.#setCollapsibleMessages.bind(this);\n\n this.#messagesState.subscribe(this.#onNewMessages.bind(this));\n }\n\n disconnectedCallback() {\n this.#messagesState.unsubscribeAll();\n window.removeEventListener('resize', this.#eventsCbRefs.resize);\n }\n}\n\nif (!customElements.get('descope-debugger')) {\n customElements.define('descope-debugger', Debugger);\n}\n\nexport default Debugger;\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"debugger-wc.js","sources":["../../../../src/mixins/debuggerMixin/debugger-wc.ts"],"sourcesContent":["/* eslint-disable no-param-reassign */\nimport { compose, State } from '@descope/sdk-helpers';\nimport {\n addOnResize,\n dragElement,\n limitCoordinateToScreenBoundaries,\n} from './helpers';\nimport { DebuggerMessage } from './types';\nimport { injectStyleMixin } from '../injectStyleMixin';\n\nconst INITIAL_POS_THRESHOLD = 32;\nconst INITIAL_WIDTH = 300;\nconst INITIAL_HEIGHT = 200;\nconst MIN_SIZE = 200;\n\nconst template = document.createElement('template');\ntemplate.innerHTML = `\n<div class=\"debugger\">\n <div class=\"header\">\n <span>Debugger messages</span>\n </div>\n <div class=\"content\">\n <div class=\"empty-state\">\n No errors detected 👀\n </div>\n </div>\n</div>\n`;\n\nconst icon = `<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M5.99984 13.167L8.99984 10.167L11.9998 13.167L13.1665 12.0003L10.1665 9.00033L13.1665 6.00033L11.9998 4.83366L8.99984 7.83366L5.99984 4.83366L4.83317 6.00033L7.83317 9.00033L4.83317 12.0003L5.99984 13.167ZM8.99984 17.3337C7.84706 17.3337 6.76373 17.1148 5.74984 16.677C4.73595 16.2398 3.854 15.6462 3.104 14.8962C2.354 14.1462 1.76039 13.2642 1.32317 12.2503C0.885393 11.2364 0.666504 10.1531 0.666504 9.00033C0.666504 7.84755 0.885393 6.76421 1.32317 5.75033C1.76039 4.73644 2.354 3.85449 3.104 3.10449C3.854 2.35449 4.73595 1.7606 5.74984 1.32283C6.76373 0.885603 7.84706 0.666992 8.99984 0.666992C10.1526 0.666992 11.2359 0.885603 12.2498 1.32283C13.2637 1.7606 14.1457 2.35449 14.8957 3.10449C15.6457 3.85449 16.2393 4.73644 16.6765 5.75033C17.1143 6.76421 17.3332 7.84755 17.3332 9.00033C17.3332 10.1531 17.1143 11.2364 16.6765 12.2503C16.2393 13.2642 15.6457 14.1462 14.8957 14.8962C14.1457 15.6462 13.2637 16.2398 12.2498 16.677C11.2359 17.1148 10.1526 17.3337 8.99984 17.3337ZM8.99984 15.667C10.8609 15.667 12.4373 15.0212 13.729 13.7295C15.0207 12.4378 15.6665 10.8614 15.6665 9.00033C15.6665 7.13921 15.0207 5.56283 13.729 4.27116C12.4373 2.97949 10.8609 2.33366 8.99984 2.33366C7.13873 2.33366 5.56234 2.97949 4.27067 4.27116C2.979 5.56283 2.33317 7.13921 2.33317 9.00033C2.33317 10.8614 2.979 12.4378 4.27067 13.7295C5.56234 15.0212 7.13873 15.667 8.99984 15.667Z\" fill=\"#ED404A\"/>\n</svg>\n`;\n\nconst style = `\n.debugger {\n all: initial;\n width: ${INITIAL_WIDTH}px;\n height: ${INITIAL_HEIGHT}px;\n background-color: #FAFAFA;\n position: fixed;\n font-family: \"Helvetica Neue\", sans-serif;\n box-shadow: rgba(0, 0, 0, 0.1) 0px 5px 10px;\n border-radius: 8px;\n overflow: hidden;\n border: 1px solid lightgrey;\n pointer-events: initial;\n display: flex;\n flex-direction: column;\n min-width: ${MIN_SIZE}px;\n max-width: 600px;\n max-height: calc(100% - ${INITIAL_POS_THRESHOLD * 2}px);\n min-height: ${MIN_SIZE}px;\n resize: both;\n }\n\n .header {\n padding: 8px 16px;\n display: flex;\n align-items: center;\n background-color: #EEEEEE;\n cursor: move;\n border-bottom: 1px solid #e0e0e0;\n }\n\n .content {\n font-size: 14px;\n flex-grow: 1;\n overflow: auto;\n }\n\n .msg {\n border-bottom: 1px solid lightgrey;\n padding: 8px 16px;\n display: flex;\n gap: 5px;\n background-color: #FAFAFA;\n }\n\n .msg.collapsible {\n cursor: pointer;\n }\n\n .empty-state {\n padding: 8px 16px;\n background-color: #FAFAFA;\n }\n\n\n .msg.collapsible:not(.collapsed) {\n background-color: #F5F5F5;\n }\n\n .msg_title {\n padding-bottom: 5px;\n display: flex;\n gap: 8px;\n font-weight: 500;\n }\n\n .msg svg {\n padding: 1px;\n flex-shrink: 0;\n margin-top: -2px;\n }\n\n .msg_content {\n overflow: hidden;\n flex-grow: 1;\n margin-right:5px;\n }\n\n .msg_desc {\n color: #646464;\n cursor: initial;\n word-wrap: break-word;\n }\n\n .msg.collapsed .msg_desc {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .msg.collapsible.collapsed .chevron {\n transform: rotate(-45deg) translateX(-2px);\n }\n\n .msg.collapsible .chevron {\n content: \"\";\n width:6px;\n height:6px;\n border-bottom: 2px solid grey;\n border-right: 2px solid grey;\n transform: rotate(45deg) translateX(-1px);\n margin: 5px;\n flex-shrink:0;\n }\n`;\n\ntype MessagesState = { messages: DebuggerMessage[] };\n\nconst BaseClass = compose(injectStyleMixin)(HTMLElement);\n\nclass Debugger extends BaseClass {\n #messagesState = new State<MessagesState>({ messages: [] });\n\n #rootEle: HTMLDivElement;\n\n #contentEle: HTMLDivElement;\n\n #headerEle: HTMLDivElement;\n\n #eventsCbRefs = {\n resize: this.#onWindowResize.bind(this),\n };\n\n constructor() {\n super();\n\n this.attachShadow({ mode: 'open' });\n this.shadowRoot?.appendChild(template.content.cloneNode(true));\n this.injectStyle(style);\n\n this.#rootEle =\n this.shadowRoot!.querySelector<HTMLDivElement>('.debugger')!;\n\n // Set initial position via CSSOM instead of an inline style attribute,\n // which a strict CSP style-src (without 'unsafe-inline') would block.\n this.#rootEle.style.top = `${INITIAL_POS_THRESHOLD}px`;\n this.#rootEle.style.left = `${\n window.innerWidth - INITIAL_WIDTH - INITIAL_POS_THRESHOLD\n }px`;\n\n this.#contentEle = this.#rootEle.querySelector<HTMLDivElement>('.content')!;\n this.#headerEle = this.#rootEle.querySelector<HTMLDivElement>('.header')!;\n }\n\n updateData(data: DebuggerMessage | DebuggerMessage[]) {\n this.#messagesState.update((state) => ({\n messages: state.messages.concat(data),\n }));\n }\n\n #onNewMessages(data: MessagesState) {\n this.#renderMessages(data);\n this.#setCollapsibleMessages();\n }\n\n #renderMessages(data: MessagesState) {\n this.#contentEle.innerHTML = data.messages\n .map(\n (message) => `\n <div class=\"msg\">\n ${icon}\n <div class=\"msg_content\">\n <div class=\"msg_title\">\n ${message.title}\n </div>\n <div class=\"msg_desc\">\n ${message.description || ''}\n </div>\n </div>\n <div class=\"chevron\"></div>\n </div>\n `,\n )\n .join('');\n }\n\n #setCollapsibleMessages() {\n this.#contentEle.querySelectorAll('.msg').forEach((element: Element) => {\n const ele = element as HTMLElement;\n const descEle = ele.querySelector('.msg_desc');\n const lineHeight = 20;\n const isScroll = descEle!.scrollWidth > descEle!.clientWidth;\n const isMultiLine = descEle!.clientHeight > lineHeight;\n const isCollapsible = isScroll || isMultiLine;\n\n if (isCollapsible) {\n ele.classList.add('collapsible');\n ele.onclick = (e: MouseEvent) => {\n // message description should not toggle collapse\n if (!(e.target as HTMLElement).classList.contains('msg_desc')) {\n ele.classList.toggle('collapsed');\n }\n };\n } else {\n ele.classList.remove('collapsible');\n ele.onclick = null;\n }\n });\n }\n\n #onWindowResize() {\n // when window is resizing we want to make sure debugger is still visible\n const [left, top] = limitCoordinateToScreenBoundaries(\n this.#rootEle,\n Number.parseInt(this.#rootEle.style.left, 10),\n Number.parseInt(this.#rootEle.style.top, 10),\n { top: 'all', bottom: 100, left: 100, right: 100 },\n );\n this.#rootEle.style.top = `${top}px`;\n this.#rootEle.style.left = `${left}px`;\n }\n\n connectedCallback() {\n dragElement(this.#rootEle, this.#headerEle, {\n top: 'all',\n bottom: 100,\n left: 100,\n right: 100,\n });\n\n window.addEventListener('resize', this.#eventsCbRefs.resize);\n\n addOnResize(this.#rootEle);\n this.#rootEle.onresize = this.#setCollapsibleMessages.bind(this);\n\n this.#messagesState.subscribe(this.#onNewMessages.bind(this));\n }\n\n disconnectedCallback() {\n this.#messagesState.unsubscribeAll();\n window.removeEventListener('resize', this.#eventsCbRefs.resize);\n }\n}\n\nif (!customElements.get('descope-debugger')) {\n customElements.define('descope-debugger', Debugger);\n}\n\nexport default Debugger;\n"],"names":[],"mappings":"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"}
@@ -175,7 +175,7 @@ const themeMixin = createSingletonMixin((superclass) => {
175
175
  return fetchedTenantTheme;
176
176
  }
177
177
  catch (e) {
178
- this.logger.error('Cannot fetch tenant theme file', 'make sure that your tenantId, projectId & flowId are correct');
178
+ this.logger.warn('No tenant style exists, using project default theme.');
179
179
  }
180
180
  return undefined;
181
181
  },
@@ -1 +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 {\n deepMergeNonEmpty,\n flattenToVars,\n loadDevTheme,\n loadFont,\n} from './helpers';\nimport { observeAttributesMixin } from '../observeAttributesMixin';\nimport { UI_COMPONENTS_URL_KEY } from '../descopeUiMixin/constants';\nimport { InjectedStyle, injectStyleMixin } from '../injectStyleMixin';\nimport { tenantIdMixin } from '../tenantIdMixin';\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 tenantIdMixin,\n staticResourcesMixin,\n initLifecycleMixin,\n descopeUiMixin,\n configMixin,\n initElementMixin,\n observeAttributesMixin,\n injectStyleMixin,\n )(superclass);\n\n return class ThemeMixinClass extends BaseClass {\n #globalStyle: InjectedStyle;\n #tenantStyle: InjectedStyle;\n #customStyle: InjectedStyle;\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 get themeOverride(): Record<string, any> | null {\n const raw = this.getAttribute('theme-override');\n if (!raw) return null;\n try {\n return JSON.parse(raw);\n } catch (e) {\n this.logger.error(\n 'Failed to parse theme-override attribute. error: ',\n e,\n );\n return null;\n }\n }\n\n #getThemeOverrideString(): string {\n const override = this.themeOverride;\n if (!override) return '';\n\n return (['light', 'dark'] as const)\n .map((theme) => {\n const primary = override[theme]?.globals?.colors?.primary;\n const secondary = override[theme]?.globals?.colors?.secondary;\n if (!primary && !secondary) return '';\n\n return `[data-theme=\"${theme}\"]{${flattenToVars(\n { colors: { primary, secondary } },\n (msg) => this.logger.error(msg),\n )}}`;\n })\n .join('');\n }\n\n #_themeResource: Promise<void | Record<string, any>>;\n #_tenantThemeResource: Promise<Record<string, any> | undefined>;\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 return this.#_themeResource;\n }\n\n async #loadGlobalStyle() {\n const theme = await this.#themeResource;\n if (!theme) {\n return;\n }\n const styles =\n (theme?.light?.globals || '') + (theme?.dark?.globals || '');\n if (!this.#globalStyle) {\n // Use prepend so project global style always precedes tenant style regardless of fetch order\n this.#globalStyle = this.injectStyle(styles, { prepend: true });\n } else {\n this.#globalStyle.replaceSync(styles);\n }\n }\n\n async #fetchTenantTheme() {\n const tenantId = this.tenantId;\n if (!tenantId) return undefined;\n try {\n const { body: fetchedTenantTheme } = await this.fetchStaticResource(\n `${tenantId}/theme.json`,\n 'json',\n );\n return fetchedTenantTheme;\n } catch (e) {\n this.logger.error(\n 'Cannot fetch tenant theme file',\n 'make sure that your tenantId, projectId & flowId are correct',\n );\n }\n return undefined;\n }\n\n get #tenantThemeResource(): Promise<Record<string, any> | undefined> {\n if (!this.#_tenantThemeResource) {\n this.#_tenantThemeResource = this.#fetchTenantTheme();\n }\n return this.#_tenantThemeResource;\n }\n\n async #loadTenantStyle() {\n if (!this.tenantId) {\n this.#tenantStyle?.replaceSync('');\n return;\n }\n const tenantTheme = await this.#tenantThemeResource;\n if (!tenantTheme) {\n this.#tenantStyle?.replaceSync('');\n return;\n }\n const styles =\n (tenantTheme.light?.globals || '') +\n (tenantTheme.dark?.globals || '');\n if (!this.#tenantStyle) {\n this.#tenantStyle = this.injectStyle(styles);\n } else {\n this.#tenantStyle.replaceSync(styles);\n }\n }\n\n async #loadCustomStyle() {\n if (!this.themeOverride) {\n this.#customStyle?.replaceSync('');\n return;\n }\n const overrideString = this.#getThemeOverrideString();\n if (!this.#customStyle) {\n this.#customStyle = this.injectStyle(overrideString);\n } else {\n this.#customStyle.replaceSync(overrideString);\n }\n }\n\n async #loadComponentsStyle() {\n const theme = await this.#themeResource;\n if (!theme) return;\n\n const descopeUi = await this.descopeUi;\n if (!descopeUi?.componentsThemeManager) return;\n\n const tenantTheme = await this.#tenantThemeResource;\n\n descopeUi.componentsThemeManager.themes = {\n light: deepMergeNonEmpty(\n theme?.light?.components || {},\n tenantTheme?.light?.components || {},\n ),\n dark: deepMergeNonEmpty(\n theme?.dark?.components || {},\n tenantTheme?.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.#onThemeChange();\n await Promise.all([\n this.#loadGlobalStyle(),\n this.#loadTenantStyle(),\n this.#loadComponentsStyle(),\n ]);\n this.#loadCustomStyle();\n\n this.observeAttributes(['theme'], this.#onThemeChange);\n\n this.observeAttributes(['theme-override'], () =>\n this.#loadCustomStyle(),\n );\n\n this.observeAttributes(['tenant'], () => {\n this.#_tenantThemeResource = null;\n this.#loadTenantStyle();\n this.#loadComponentsStyle();\n });\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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"}
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 {\n deepMergeNonEmpty,\n flattenToVars,\n loadDevTheme,\n loadFont,\n} from './helpers';\nimport { observeAttributesMixin } from '../observeAttributesMixin';\nimport { UI_COMPONENTS_URL_KEY } from '../descopeUiMixin/constants';\nimport { InjectedStyle, injectStyleMixin } from '../injectStyleMixin';\nimport { tenantIdMixin } from '../tenantIdMixin';\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 tenantIdMixin,\n staticResourcesMixin,\n initLifecycleMixin,\n descopeUiMixin,\n configMixin,\n initElementMixin,\n observeAttributesMixin,\n injectStyleMixin,\n )(superclass);\n\n return class ThemeMixinClass extends BaseClass {\n #globalStyle: InjectedStyle;\n #tenantStyle: InjectedStyle;\n #customStyle: InjectedStyle;\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 get themeOverride(): Record<string, any> | null {\n const raw = this.getAttribute('theme-override');\n if (!raw) return null;\n try {\n return JSON.parse(raw);\n } catch (e) {\n this.logger.error(\n 'Failed to parse theme-override attribute. error: ',\n e,\n );\n return null;\n }\n }\n\n #getThemeOverrideString(): string {\n const override = this.themeOverride;\n if (!override) return '';\n\n return (['light', 'dark'] as const)\n .map((theme) => {\n const primary = override[theme]?.globals?.colors?.primary;\n const secondary = override[theme]?.globals?.colors?.secondary;\n if (!primary && !secondary) return '';\n\n return `[data-theme=\"${theme}\"]{${flattenToVars(\n { colors: { primary, secondary } },\n (msg) => this.logger.error(msg),\n )}}`;\n })\n .join('');\n }\n\n #_themeResource: Promise<void | Record<string, any>>;\n #_tenantThemeResource: Promise<Record<string, any> | undefined>;\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 return this.#_themeResource;\n }\n\n async #loadGlobalStyle() {\n const theme = await this.#themeResource;\n if (!theme) {\n return;\n }\n const styles =\n (theme?.light?.globals || '') + (theme?.dark?.globals || '');\n if (!this.#globalStyle) {\n // Use prepend so project global style always precedes tenant style regardless of fetch order\n this.#globalStyle = this.injectStyle(styles, { prepend: true });\n } else {\n this.#globalStyle.replaceSync(styles);\n }\n }\n\n async #fetchTenantTheme() {\n const tenantId = this.tenantId;\n if (!tenantId) return undefined;\n try {\n const { body: fetchedTenantTheme } = await this.fetchStaticResource(\n `${tenantId}/theme.json`,\n 'json',\n );\n return fetchedTenantTheme;\n } catch (e) {\n this.logger.warn(\n 'No tenant style exists, using project default theme.',\n );\n }\n return undefined;\n }\n\n get #tenantThemeResource(): Promise<Record<string, any> | undefined> {\n if (!this.#_tenantThemeResource) {\n this.#_tenantThemeResource = this.#fetchTenantTheme();\n }\n return this.#_tenantThemeResource;\n }\n\n async #loadTenantStyle() {\n if (!this.tenantId) {\n this.#tenantStyle?.replaceSync('');\n return;\n }\n const tenantTheme = await this.#tenantThemeResource;\n if (!tenantTheme) {\n this.#tenantStyle?.replaceSync('');\n return;\n }\n const styles =\n (tenantTheme.light?.globals || '') +\n (tenantTheme.dark?.globals || '');\n if (!this.#tenantStyle) {\n this.#tenantStyle = this.injectStyle(styles);\n } else {\n this.#tenantStyle.replaceSync(styles);\n }\n }\n\n async #loadCustomStyle() {\n if (!this.themeOverride) {\n this.#customStyle?.replaceSync('');\n return;\n }\n const overrideString = this.#getThemeOverrideString();\n if (!this.#customStyle) {\n this.#customStyle = this.injectStyle(overrideString);\n } else {\n this.#customStyle.replaceSync(overrideString);\n }\n }\n\n async #loadComponentsStyle() {\n const theme = await this.#themeResource;\n if (!theme) return;\n\n const descopeUi = await this.descopeUi;\n if (!descopeUi?.componentsThemeManager) return;\n\n const tenantTheme = await this.#tenantThemeResource;\n\n descopeUi.componentsThemeManager.themes = {\n light: deepMergeNonEmpty(\n theme?.light?.components || {},\n tenantTheme?.light?.components || {},\n ),\n dark: deepMergeNonEmpty(\n theme?.dark?.components || {},\n tenantTheme?.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.#onThemeChange();\n await Promise.all([\n this.#loadGlobalStyle(),\n this.#loadTenantStyle(),\n this.#loadComponentsStyle(),\n ]);\n this.#loadCustomStyle();\n\n this.observeAttributes(['theme'], this.#onThemeChange);\n\n this.observeAttributes(['theme-override'], () =>\n this.#loadCustomStyle(),\n );\n\n this.observeAttributes(['tenant'], () => {\n this.#_tenantThemeResource = null;\n this.#loadTenantStyle();\n this.#loadComponentsStyle();\n });\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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"}