@finsweet/webflow-apps-utils 1.0.1 → 1.0.3

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 (230) hide show
  1. package/README.md +162 -1
  2. package/dist/index.d.ts +1 -0
  3. package/dist/index.js +1 -0
  4. package/dist/providers/GlobalProvider.mdx +322 -0
  5. package/dist/providers/GlobalProvider.svelte +58 -0
  6. package/dist/providers/GlobalProvider.svelte.d.ts +4 -0
  7. package/dist/providers/configuratorUtils.d.ts +37 -0
  8. package/dist/providers/configuratorUtils.js +219 -0
  9. package/dist/providers/globalContext.svelte.d.ts +18 -0
  10. package/dist/providers/globalContext.svelte.js +439 -0
  11. package/dist/providers/index.d.ts +5 -0
  12. package/dist/providers/index.js +7 -0
  13. package/dist/providers/types.d.ts +103 -0
  14. package/dist/providers/types.js +6 -0
  15. package/dist/router/README.md +2 -2
  16. package/dist/stores/index.d.ts +0 -1
  17. package/dist/stores/index.js +0 -1
  18. package/dist/types/webflow.d.ts +31 -47
  19. package/dist/ui/components/LoadingScreen.svelte +2 -1
  20. package/dist/ui/components/button/Button.svelte +4 -1
  21. package/dist/ui/components/button-group/ButtonGroup.stories.js +112 -0
  22. package/dist/ui/components/{ButtonGroup.svelte → button-group/ButtonGroup.svelte} +20 -33
  23. package/dist/ui/components/button-group/ButtonGroup.svelte.d.ts +13 -0
  24. package/dist/ui/components/button-group/index.d.ts +2 -0
  25. package/dist/ui/components/button-group/index.js +1 -0
  26. package/dist/ui/components/button-group/types.d.ts +32 -0
  27. package/dist/ui/components/checkbox/Checkbox.stories.d.ts +55 -0
  28. package/dist/ui/components/checkbox/Checkbox.stories.js +162 -0
  29. package/dist/ui/components/checkbox/Checkbox.svelte +141 -0
  30. package/dist/ui/components/checkbox/Checkbox.svelte.d.ts +4 -0
  31. package/dist/ui/components/checkbox/index.d.ts +2 -0
  32. package/dist/ui/components/checkbox/index.js +1 -0
  33. package/dist/ui/components/checkbox/types.d.ts +32 -0
  34. package/dist/ui/components/controlled-buttons/ControlledButtons.stories.d.ts +32 -0
  35. package/dist/ui/components/controlled-buttons/ControlledButtons.stories.js +152 -0
  36. package/dist/ui/components/{buttons/FooterButton.svelte → controlled-buttons/ControlledButtons.svelte} +18 -67
  37. package/dist/ui/components/controlled-buttons/ControlledButtons.svelte.d.ts +4 -0
  38. package/dist/ui/components/controlled-buttons/index.d.ts +2 -0
  39. package/dist/ui/components/controlled-buttons/index.js +1 -0
  40. package/dist/ui/components/{buttons → controlled-buttons}/types.d.ts +11 -4
  41. package/dist/ui/components/divider/Divider.stories.svelte +134 -0
  42. package/dist/ui/components/{clickable/Clickable.stories.svelte.d.ts → divider/Divider.stories.svelte.d.ts} +4 -4
  43. package/dist/ui/components/divider/Divider.svelte +30 -0
  44. package/dist/ui/components/divider/Divider.svelte.d.ts +4 -0
  45. package/dist/ui/components/divider/index.d.ts +2 -0
  46. package/dist/ui/components/divider/index.js +1 -0
  47. package/dist/ui/components/divider/types.d.ts +23 -0
  48. package/dist/ui/components/divider/types.js +1 -0
  49. package/dist/ui/components/iframe/Iframe.stories.svelte +122 -0
  50. package/dist/ui/components/{ToggleItem.svelte.d.ts → iframe/Iframe.stories.svelte.d.ts} +7 -8
  51. package/dist/ui/components/iframe/Iframe.svelte +75 -0
  52. package/dist/ui/components/iframe/Iframe.svelte.d.ts +4 -0
  53. package/dist/ui/components/iframe/index.d.ts +2 -0
  54. package/dist/ui/components/iframe/index.js +1 -0
  55. package/dist/ui/components/iframe/types.d.ts +38 -0
  56. package/dist/ui/components/iframe/types.js +1 -0
  57. package/dist/ui/components/index.d.ts +12 -39
  58. package/dist/ui/components/index.js +12 -39
  59. package/dist/ui/components/input/Input.stories.d.ts +24 -0
  60. package/dist/ui/components/input/Input.stories.js +98 -0
  61. package/dist/ui/components/input/Input.svelte +321 -80
  62. package/dist/ui/components/input/types.d.ts +27 -1
  63. package/dist/ui/components/layout/Layout.stories.svelte +3 -3
  64. package/dist/ui/components/layout/Layout.svelte +3 -5
  65. package/dist/ui/components/layout/common/EditModeMessage.svelte +24 -12
  66. package/dist/ui/components/layout/{ExampleLayout.svelte → examples/ExampleLayout.svelte} +34 -22
  67. package/dist/ui/components/layout/examples/Wrapper.svelte +9 -0
  68. package/dist/ui/components/{NoSettingsNeeded.svelte.d.ts → layout/examples/Wrapper.svelte.d.ts} +3 -3
  69. package/dist/ui/components/layout/examples/index.d.ts +2 -0
  70. package/dist/ui/components/layout/examples/index.js +2 -0
  71. package/dist/ui/components/layout/index.d.ts +2 -1
  72. package/dist/ui/components/layout/index.js +2 -1
  73. package/dist/ui/components/modal/Example.svelte +320 -0
  74. package/dist/ui/components/modal/Example.svelte.d.ts +3 -0
  75. package/dist/ui/components/modal/Modal.stories.svelte +18 -0
  76. package/dist/ui/components/modal/Modal.stories.svelte.d.ts +26 -0
  77. package/dist/ui/components/modal/Modal.svelte +490 -0
  78. package/dist/ui/components/modal/Modal.svelte.d.ts +130 -0
  79. package/dist/ui/components/modal/index.d.ts +2 -0
  80. package/dist/ui/components/modal/index.js +1 -0
  81. package/dist/ui/components/modal/types.d.ts +75 -0
  82. package/dist/ui/components/modal/types.js +1 -0
  83. package/dist/ui/components/notification/Notification.stories.svelte +228 -0
  84. package/dist/ui/components/{ToggleList.svelte.d.ts → notification/Notification.stories.svelte.d.ts} +9 -21
  85. package/dist/ui/components/notification/Notification.svelte +289 -0
  86. package/dist/ui/components/notification/Notification.svelte.d.ts +67 -0
  87. package/dist/ui/components/notification/index.d.ts +2 -0
  88. package/dist/ui/components/notification/index.js +1 -0
  89. package/dist/ui/components/notification/types.d.ts +68 -0
  90. package/dist/ui/components/notification/types.js +1 -0
  91. package/dist/ui/components/section/Section.stories.svelte +263 -0
  92. package/dist/ui/components/section/Section.stories.svelte.d.ts +27 -0
  93. package/dist/ui/components/section/Section.svelte +324 -0
  94. package/dist/ui/components/section/Section.svelte.d.ts +5 -0
  95. package/dist/ui/components/section/index.d.ts +2 -0
  96. package/dist/ui/components/section/index.js +1 -0
  97. package/dist/ui/components/section/types.d.ts +106 -0
  98. package/dist/ui/components/section/types.js +1 -0
  99. package/dist/ui/components/{ImageUpload.svelte → shared/ImageUpload.svelte} +3 -3
  100. package/dist/ui/components/{SelectBodyOrDivBlock.svelte → shared/SelectBodyOrDivBlock.svelte} +1 -1
  101. package/dist/ui/components/shared/index.d.ts +2 -0
  102. package/dist/ui/components/shared/index.js +2 -0
  103. package/dist/ui/icons/LineChartIcon.svelte +8 -0
  104. package/dist/ui/icons/LineChartIcon.svelte.d.ts +26 -0
  105. package/dist/ui/icons/index.d.ts +2 -1
  106. package/dist/ui/icons/index.js +2 -1
  107. package/dist/ui/index.css +33 -5
  108. package/dist/utils/api/checkIfAppModeIsDesign.d.ts +1 -2
  109. package/dist/utils/api/checkIfAppModeIsDesign.js +1 -2
  110. package/dist/utils/api/clipboard/handlePaste.d.ts +6 -37
  111. package/dist/utils/api/clipboard/handlePaste.js +2 -6
  112. package/dist/utils/api/getAllAssets.d.ts +1 -2
  113. package/dist/utils/api/getAllAssets.js +1 -2
  114. package/dist/utils/api/getFinsweetComponentsEnvironment.d.ts +1 -2
  115. package/dist/utils/api/getFinsweetComponentsEnvironment.js +3 -6
  116. package/dist/utils/api/index.d.ts +0 -1
  117. package/dist/utils/api/index.js +0 -1
  118. package/dist/utils/api/insertWithXSCP.d.ts +1 -2
  119. package/dist/utils/api/insertWithXSCP.js +1 -2
  120. package/dist/utils/auth/crossWindowLogin.d.ts +3 -0
  121. package/dist/utils/auth/crossWindowLogin.js +3 -0
  122. package/dist/utils/auth/index.d.ts +9 -25
  123. package/dist/utils/auth/index.js +9 -25
  124. package/dist/utils/browser-storage/localStorage.d.ts +4 -12
  125. package/dist/utils/browser-storage/localStorage.js +4 -12
  126. package/dist/utils/browser-storage/sessionStorage.d.ts +4 -12
  127. package/dist/utils/browser-storage/sessionStorage.js +4 -12
  128. package/dist/utils/custom-code/api.d.ts +3 -7
  129. package/dist/utils/custom-code/api.js +3 -7
  130. package/dist/utils/helpers/cleanupTooltipMessage.d.ts +1 -2
  131. package/dist/utils/helpers/cleanupTooltipMessage.js +1 -2
  132. package/dist/utils/helpers/goto.d.ts +1 -4
  133. package/dist/utils/helpers/goto.js +2 -7
  134. package/dist/utils/helpers/index.d.ts +1 -0
  135. package/dist/utils/helpers/index.js +1 -0
  136. package/dist/utils/helpers/noop.d.ts +1 -1
  137. package/dist/utils/helpers/noop.js +1 -1
  138. package/dist/utils/helpers/numbers.d.ts +4 -14
  139. package/dist/utils/helpers/numbers.js +4 -14
  140. package/dist/utils/helpers/objectsToModuleExports.d.ts +1 -3
  141. package/dist/utils/helpers/objectsToModuleExports.js +1 -3
  142. package/dist/utils/helpers/trimText.d.ts +1 -8
  143. package/dist/utils/helpers/trimText.js +1 -8
  144. package/dist/utils/index.d.ts +4 -0
  145. package/dist/utils/index.js +4 -0
  146. package/dist/utils/logger/index.d.ts +0 -2
  147. package/dist/utils/logger/index.js +0 -2
  148. package/dist/utils/webflow-canvas/attributes/getAllWebflowElementAttributes.d.ts +1 -3
  149. package/dist/utils/webflow-canvas/attributes/getAllWebflowElementAttributes.js +1 -3
  150. package/dist/utils/webflow-canvas/attributes/getInstanceNamesFromObject.d.ts +1 -5
  151. package/dist/utils/webflow-canvas/attributes/getInstanceNamesFromObject.js +1 -5
  152. package/dist/utils/webflow-canvas/attributes/getWebflowElementAttribute.d.ts +1 -4
  153. package/dist/utils/webflow-canvas/attributes/getWebflowElementAttribute.js +1 -4
  154. package/dist/utils/webflow-canvas/attributes/getWebflowElementTextContent.d.ts +1 -3
  155. package/dist/utils/webflow-canvas/attributes/getWebflowElementTextContent.js +1 -3
  156. package/dist/utils/webflow-canvas/attributes/removeWebflowElementAttribute.d.ts +1 -4
  157. package/dist/utils/webflow-canvas/attributes/removeWebflowElementAttribute.js +1 -4
  158. package/dist/utils/webflow-canvas/attributes/setStyles.d.ts +1 -3
  159. package/dist/utils/webflow-canvas/attributes/setStyles.js +1 -3
  160. package/dist/utils/webflow-canvas/attributes/setWebflowElementAttribute.d.ts +1 -8
  161. package/dist/utils/webflow-canvas/attributes/setWebflowElementAttribute.js +1 -13
  162. package/dist/utils/webflow-canvas/findInstanceElement.d.ts +0 -6
  163. package/dist/utils/webflow-canvas/findInstanceElement.js +1 -7
  164. package/dist/utils/webflow-canvas/getAllPages.d.ts +3 -10
  165. package/dist/utils/webflow-canvas/getAllPages.js +3 -10
  166. package/dist/utils/webflow-canvas/getSiteStagingUrl.d.ts +1 -4
  167. package/dist/utils/webflow-canvas/getSiteStagingUrl.js +1 -4
  168. package/dist/utils/webflow-canvas/index.d.ts +1 -0
  169. package/dist/utils/webflow-canvas/index.js +1 -0
  170. package/package.json +9 -2
  171. package/dist/stores/globalStore.d.ts +0 -10
  172. package/dist/stores/globalStore.js +0 -10
  173. package/dist/ui/components/ButtonGroup.svelte.d.ts +0 -28
  174. package/dist/ui/components/Checkbox.svelte +0 -94
  175. package/dist/ui/components/Checkbox.svelte.d.ts +0 -36
  176. package/dist/ui/components/Copy.svelte +0 -329
  177. package/dist/ui/components/Copy.svelte.d.ts +0 -35
  178. package/dist/ui/components/CustomModal.svelte +0 -192
  179. package/dist/ui/components/CustomModal.svelte.d.ts +0 -45
  180. package/dist/ui/components/DisableInEditMode.svelte +0 -66
  181. package/dist/ui/components/DisableInEditMode.svelte.d.ts +0 -33
  182. package/dist/ui/components/Divider.svelte +0 -31
  183. package/dist/ui/components/Divider.svelte.d.ts +0 -31
  184. package/dist/ui/components/Header.svelte +0 -30
  185. package/dist/ui/components/Header.svelte.d.ts +0 -20
  186. package/dist/ui/components/Iframe.svelte +0 -89
  187. package/dist/ui/components/Iframe.svelte.d.ts +0 -40
  188. package/dist/ui/components/InjectComponent.svelte +0 -297
  189. package/dist/ui/components/InjectComponent.svelte.d.ts +0 -27
  190. package/dist/ui/components/Modal.svelte +0 -139
  191. package/dist/ui/components/Modal.svelte.d.ts +0 -42
  192. package/dist/ui/components/Navbar.svelte +0 -132
  193. package/dist/ui/components/Navbar.svelte.d.ts +0 -29
  194. package/dist/ui/components/NoSettingsNeeded.svelte +0 -31
  195. package/dist/ui/components/Notification.svelte +0 -193
  196. package/dist/ui/components/Notification.svelte.d.ts +0 -64
  197. package/dist/ui/components/PlusMinusButton.svelte +0 -91
  198. package/dist/ui/components/PlusMinusButton.svelte.d.ts +0 -22
  199. package/dist/ui/components/PreviewBar.svelte +0 -40
  200. package/dist/ui/components/PreviewBar.svelte.d.ts +0 -20
  201. package/dist/ui/components/ScrollableContent.svelte +0 -18
  202. package/dist/ui/components/ScrollableContent.svelte.d.ts +0 -31
  203. package/dist/ui/components/Section.svelte +0 -97
  204. package/dist/ui/components/Section.svelte.d.ts +0 -50
  205. package/dist/ui/components/Spacer.svelte +0 -9
  206. package/dist/ui/components/Spacer.svelte.d.ts +0 -22
  207. package/dist/ui/components/SpinnerPlusMinus.svelte +0 -75
  208. package/dist/ui/components/SpinnerPlusMinus.svelte.d.ts +0 -23
  209. package/dist/ui/components/SpinnerUpDown.svelte +0 -194
  210. package/dist/ui/components/SpinnerUpDown.svelte.d.ts +0 -31
  211. package/dist/ui/components/Tabs.svelte +0 -71
  212. package/dist/ui/components/Tabs.svelte.d.ts +0 -26
  213. package/dist/ui/components/ToggleItem.svelte +0 -29
  214. package/dist/ui/components/ToggleList.svelte +0 -57
  215. package/dist/ui/components/buttons/FooterButton.svelte.d.ts +0 -10
  216. package/dist/ui/components/buttons/index.d.ts +0 -5
  217. package/dist/ui/components/buttons/index.js +0 -5
  218. package/dist/ui/components/clickable/Clickable.stories.svelte +0 -213
  219. package/dist/ui/components/clickable/Clickable.svelte +0 -93
  220. package/dist/ui/components/clickable/Clickable.svelte.d.ts +0 -4
  221. package/dist/ui/components/clickable/index.d.ts +0 -2
  222. package/dist/ui/components/clickable/index.js +0 -1
  223. package/dist/ui/components/clickable/types.d.ts +0 -17
  224. package/dist/utils/api/copyPaste/index.d.ts +0 -18
  225. /package/dist/ui/components/{buttons → button-group}/types.js +0 -0
  226. /package/dist/ui/components/{clickable → checkbox}/types.js +0 -0
  227. /package/dist/{utils/api/copyPaste/index.js → ui/components/controlled-buttons/types.js} +0 -0
  228. /package/dist/ui/components/layout/{ExampleLayout.svelte.d.ts → examples/ExampleLayout.svelte.d.ts} +0 -0
  229. /package/dist/ui/components/{ImageUpload.svelte.d.ts → shared/ImageUpload.svelte.d.ts} +0 -0
  230. /package/dist/ui/components/{SelectBodyOrDivBlock.svelte.d.ts → shared/SelectBodyOrDivBlock.svelte.d.ts} +0 -0
@@ -1,297 +0,0 @@
1
- <script lang="ts">
2
- import { createEventDispatcher, onMount } from 'svelte';
3
- import { writable } from 'svelte/store';
4
-
5
- import { componentInjectErrors } from '../../stores';
6
- import { FINSWEET_REVERSE_PROXY_URL } from '../../utils';
7
-
8
- import LoadingScreen from './LoadingScreen.svelte';
9
-
10
- export let sourceUrl: string;
11
- export let elementId: string;
12
- const targetId = 'target-content';
13
-
14
- const loadingStore = writable(true);
15
- const dispatch = createEventDispatcher<{
16
- error: { message: string; error: unknown };
17
- ready: boolean;
18
- }>();
19
-
20
- let errorMessage = '';
21
-
22
- /**
23
- * Handle errors when injecting a component
24
- */
25
- function handleError(message: string, error: unknown, consoleDetails?: unknown) {
26
- componentInjectErrors.set(true);
27
-
28
- dispatch('error', {
29
- message,
30
- error
31
- });
32
-
33
- // Update local state
34
- errorMessage = message;
35
- loadingStore.set(false);
36
-
37
- // Dispatch ready event with false to indicate error state
38
- dispatch('ready', false);
39
-
40
- throw new Error('Failed to load Component preview, please try again or contact support');
41
- }
42
-
43
- /**
44
- * Imports and renders a component from Webflow
45
- */
46
- async function importFromWebflow() {
47
- try {
48
- const url = `${FINSWEET_REVERSE_PROXY_URL}${sourceUrl}`;
49
- const response = await fetch(url);
50
- if (!response.ok) {
51
- handleError(
52
- `Failed to fetch: ${response.statusText}`,
53
- new Error(`Failed to fetch: ${response.statusText}`),
54
- response
55
- );
56
- return;
57
- }
58
- const html = await response.text();
59
-
60
- const parser = new DOMParser();
61
- const doc = parser.parseFromString(html, 'text/html');
62
-
63
- const sourceElement = doc.getElementById(elementId);
64
- if (!sourceElement) {
65
- handleError(
66
- `Element with ID "${elementId}" not found`,
67
- new Error(`Element with ID "${elementId}" not found`)
68
- );
69
- return;
70
- }
71
-
72
- const styles = Array.from(doc.querySelectorAll('style, link[rel="stylesheet"]'))
73
- .map((el) => el.outerHTML)
74
- .join('\n');
75
-
76
- const headScripts = Array.from(doc.head.querySelectorAll('script'))
77
- .map((el) => el.outerHTML)
78
- .join('\n');
79
-
80
- const bodyScripts = Array.from(doc.body.querySelectorAll('script'))
81
- .map((el) => el.outerHTML)
82
- .join('\n');
83
-
84
- const targetElement = document.getElementById(targetId);
85
- if (!targetElement) {
86
- handleError(
87
- `Target element with ID "${targetId}" not found`,
88
- new Error(`Target element with ID "${targetId}" not found`)
89
- );
90
- return;
91
- }
92
-
93
- targetElement.innerHTML = '';
94
-
95
- const shadowContainer = document.createElement('div');
96
- shadowContainer.style.display = 'contents';
97
- const shadowRoot = shadowContainer.attachShadow({ mode: 'open' });
98
-
99
- const iframe = document.createElement('iframe');
100
- iframe.style.width = '1280px';
101
- iframe.style.height = '720px';
102
- iframe.style.border = 'none';
103
- iframe.style.display = 'block';
104
- iframe.style.transform = 'scale(calc(100% / 1280))';
105
- iframe.style.transformOrigin = 'top left';
106
- iframe.setAttribute('scrolling', 'no');
107
-
108
- const iframeWrapper = document.createElement('div');
109
- iframeWrapper.style.width = '100%';
110
- iframeWrapper.style.height = '100%';
111
- iframeWrapper.style.overflow = 'hidden';
112
- iframeWrapper.style.position = 'relative';
113
- iframeWrapper.appendChild(iframe);
114
-
115
- shadowRoot.appendChild(iframeWrapper);
116
-
117
- let lastWidth = 0;
118
- const updateIframeScale = () => {
119
- const containerWidth = iframeWrapper.clientWidth;
120
- if (containerWidth === lastWidth || containerWidth === 0) return;
121
- lastWidth = containerWidth;
122
-
123
- const scale = containerWidth / 1280;
124
- iframe.style.transform = `scale(${scale})`;
125
-
126
- const scaledHeight = Math.ceil(720 * scale);
127
- iframeWrapper.style.height = `${scaledHeight}px`;
128
- };
129
-
130
- window.addEventListener('resize', () => {
131
- requestAnimationFrame(updateIframeScale);
132
- });
133
-
134
- setTimeout(updateIframeScale, 100);
135
-
136
- const htmlAttrs = Array.from(doc.documentElement.attributes)
137
- .map((attr) => `${attr.name}="${attr.value}"`)
138
- .join(' ');
139
-
140
- const bodyAttrs = Array.from(doc.body.attributes)
141
- .map((attr) => `${attr.name}="${attr.value}"`)
142
- .join(' ');
143
-
144
- const iframeContent = `
145
- <!DOCTYPE html>
146
- <html ${htmlAttrs}>
147
- <head>
148
- <meta charset="UTF-8">
149
- <meta name="viewport" content="width=1280, height=720, initial-scale=1.0">
150
- <base href="${new URL('/', sourceUrl).href}">
151
- ${styles}
152
- ${headScripts}
153
- <style>
154
- html, body {
155
- width: 1280px;
156
- height: 720px;
157
- margin: 0;
158
- padding: 0;
159
- border-radius: 4px;
160
- overflow: hidden;
161
- background-color: #353535;
162
- }
163
- </style>
164
- </head>
165
- <body ${bodyAttrs} data-source-url="${sourceUrl}" data-element-id="${elementId}">
166
- ${sourceElement.outerHTML}
167
- ${bodyScripts}
168
- </body>
169
- </html>
170
- `;
171
-
172
- iframe.srcdoc = iframeContent;
173
-
174
- iframe.onload = () => {
175
- updateIframeScale();
176
-
177
- try {
178
- const iframeDoc = iframe.contentDocument || iframe.contentWindow?.document;
179
-
180
- if (!iframeDoc) return;
181
-
182
- const existingBadges = iframeDoc.querySelectorAll('a.w-webflow-badge');
183
- existingBadges.forEach((badge) => badge.remove());
184
-
185
- const script = iframeDoc.createElement('script');
186
- script.textContent = `
187
- (function() {
188
-
189
- function removeBadge() {
190
- const badges = document.querySelectorAll('a.w-webflow-badge');
191
- if (badges.length > 0) {
192
- badges.forEach(badge => badge.remove());
193
- }
194
- }
195
-
196
- removeBadge();
197
-
198
- const observer = new MutationObserver(mutations => {
199
- mutations.forEach(mutation => {
200
- if (mutation.addedNodes && mutation.addedNodes.length > 0) {
201
- for (let i = 0; i < mutation.addedNodes.length; i++) {
202
- const node = mutation.addedNodes[i];
203
-
204
- if (node.nodeType === 1) {
205
- if (node.matches && node.matches('a.w-webflow-badge')) {
206
- node.remove();
207
- } else if (node.querySelectorAll) {
208
- const badges = node.querySelectorAll('a.w-webflow-badge');
209
- badges.forEach(badge => badge.remove());
210
- }
211
- }
212
- }
213
- }
214
- });
215
- });
216
-
217
- observer.observe(document.body, {
218
- childList: true,
219
- subtree: true
220
- });
221
-
222
- setInterval(removeBadge, 1000);
223
- })();
224
- `;
225
-
226
- iframeDoc.body.appendChild(script);
227
- } catch (err) {
228
- handleError('Failed to inject badge removal script', err);
229
- }
230
- };
231
-
232
- targetElement.appendChild(shadowContainer);
233
-
234
- await new Promise((resolve) => setTimeout(resolve, 2000));
235
-
236
- loadingStore.set(false);
237
-
238
- // Dispatch ready event with true to indicate successful loading
239
- dispatch('ready', true);
240
- } catch (error) {
241
- const message = error instanceof Error ? error.message : 'Unknown error occurred';
242
- handleError(`Import failed: ${message}`, error);
243
- }
244
- }
245
-
246
- onMount(() => {
247
- importFromWebflow();
248
- });
249
- </script>
250
-
251
- <div class="inject-wrapper">
252
- <LoadingScreen
253
- backgroundColor="var(--background1)"
254
- active={$loadingStore || !!errorMessage}
255
- spinnerSize={30}
256
- message={errorMessage ? errorMessage : 'Loading Component preview...'}
257
- position="absolute"
258
- error={!!errorMessage}
259
- />
260
-
261
- <div
262
- class="inject-target"
263
- id={targetId}
264
- data-target-href={sourceUrl}
265
- data-target-id={elementId}
266
- ></div>
267
- </div>
268
-
269
- <style>
270
- .inject-wrapper {
271
- width: 100%;
272
- position: relative;
273
- overflow: hidden;
274
- height: 420px;
275
- background-color: var(--background1);
276
- }
277
-
278
- .inject-target {
279
- height: 420px;
280
- background-color: var(--background1);
281
- width: 100%;
282
- border-radius: 4px;
283
- overflow: hidden;
284
- }
285
-
286
- #target-content {
287
- width: 100%;
288
- height: 100%;
289
- transition: all 0.3s ease;
290
- }
291
-
292
- @keyframes spin {
293
- to {
294
- transform: rotate(360deg);
295
- }
296
- }
297
- </style>
@@ -1,27 +0,0 @@
1
- interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
2
- new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
3
- $$bindings?: Bindings;
4
- } & Exports;
5
- (internal: unknown, props: Props & {
6
- $$events?: Events;
7
- $$slots?: Slots;
8
- }): Exports & {
9
- $set?: any;
10
- $on?: any;
11
- };
12
- z_$$bindings?: Bindings;
13
- }
14
- declare const InjectComponent: $$__sveltets_2_IsomorphicComponent<{
15
- sourceUrl: string;
16
- elementId: string;
17
- }, {
18
- error: CustomEvent<{
19
- message: string;
20
- error: unknown;
21
- }>;
22
- ready: CustomEvent<boolean>;
23
- } & {
24
- [evt: string]: CustomEvent<any>;
25
- }, {}, {}, string>;
26
- type InjectComponent = InstanceType<typeof InjectComponent>;
27
- export default InjectComponent;
@@ -1,139 +0,0 @@
1
- <!--
2
- NOTE: There is a custom Modal that uses DIVs only, checkout ./CustomModal.svelte
3
- This CustomModal was made with the purpose of overcoming the z-index property of dialog element
4
- It uses the same APIs made available as this
5
- -->
6
- <script lang="ts">
7
- import { onMount } from 'svelte';
8
-
9
- import { CloseIcon } from '../icons';
10
-
11
- // Example Use: https://svelte.dev/examples/modal
12
- export let showModal: boolean;
13
- /**
14
- * If true, the header bar will not be shown.
15
- */
16
- export let showHeader: boolean = true;
17
- export let padding: string = 'var(--padding-regular)';
18
- let dialog: HTMLDialogElement;
19
- let button: HTMLButtonElement;
20
-
21
- onMount(() => {
22
- button.focus();
23
- });
24
-
25
- $: {
26
- if (dialog) {
27
- if (showModal) {
28
- dialog.showModal();
29
- } else {
30
- dialog.close();
31
- }
32
- }
33
- }
34
-
35
- /**
36
- * Handles the keydown event on the dialog element.
37
- * @param event
38
- */
39
- const handleKeyDown = (e: KeyboardEvent) => {
40
- if (e.key === 'Escape') dialog.close();
41
- };
42
- </script>
43
-
44
- <dialog
45
- bind:this={dialog}
46
- on:close={() => {
47
- showModal = false;
48
- }}
49
- on:click|self={() => dialog.close()}
50
- on:keydown|self={handleKeyDown}
51
- >
52
- <div
53
- on:click|stopPropagation
54
- on:keydown|stopPropagation
55
- tabindex="0"
56
- role="button"
57
- style="padding:{padding};"
58
- >
59
- <div class="header-bar" style="display: {showHeader ? 'flex' : 'none'}">
60
- <slot class="flex-grow" name="header" />
61
- <button on:click={() => dialog.close()} bind:this={button}><CloseIcon /></button>
62
- </div>
63
- <slot />
64
- </div>
65
- </dialog>
66
-
67
- <style>
68
- dialog {
69
- max-width: 42em;
70
- border-radius: var(--border-radius);
71
- border: none;
72
- padding: 0;
73
- background: var(--background1);
74
- color: var(--text1);
75
- }
76
- dialog::backdrop {
77
- z-index: 9999990;
78
- background: rgba(0, 0, 0, 0.4);
79
- }
80
-
81
- dialog[open] {
82
- animation: zoom 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
83
- }
84
- @keyframes zoom {
85
- from {
86
- transform: scale(0.95);
87
- }
88
- to {
89
- transform: scale(1);
90
- }
91
- }
92
- dialog[open]::backdrop {
93
- animation: fade 0.2s ease-out;
94
- }
95
- @keyframes fade {
96
- from {
97
- opacity: 0;
98
- }
99
- to {
100
- opacity: 1;
101
- }
102
- }
103
- button {
104
- border: none;
105
- cursor: default;
106
- user-select: none;
107
- width: 24px;
108
- padding: 0px 4px;
109
- font-family: inherit;
110
- font-size: inherit;
111
- position: relative;
112
- display: flex;
113
- align-items: center;
114
- justify-content: center;
115
- height: 24px;
116
- border-radius: 4px;
117
- color: rgb(171, 171, 171);
118
- background: transparent;
119
- box-sizing: border-box;
120
- box-shadow: none;
121
- align-self: center;
122
- }
123
-
124
- button:hover {
125
- color: var(--text1);
126
- background: var(--hoverColor);
127
- }
128
-
129
- .header-bar {
130
- display: flex;
131
- align-items: center;
132
- justify-content: space-between;
133
- padding-bottom: var(--padding-small);
134
- border-bottom: 1px solid var(--border1);
135
- gap: 4px;
136
- width: 100%;
137
- margin-bottom: var(--padding-regular);
138
- }
139
- </style>
@@ -1,42 +0,0 @@
1
- interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
2
- new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
3
- $$bindings?: Bindings;
4
- } & Exports;
5
- (internal: unknown, props: Props & {
6
- $$events?: Events;
7
- $$slots?: Slots;
8
- }): Exports & {
9
- $set?: any;
10
- $on?: any;
11
- };
12
- z_$$bindings?: Bindings;
13
- }
14
- type $$__sveltets_2_PropsWithChildren<Props, Slots> = Props & (Slots extends {
15
- default: any;
16
- } ? Props extends Record<string, never> ? any : {
17
- children?: any;
18
- } : {});
19
- declare const Modal: $$__sveltets_2_IsomorphicComponent<$$__sveltets_2_PropsWithChildren<{
20
- showModal: boolean;
21
- /**
22
- * If true, the header bar will not be shown.
23
- */ showHeader?: boolean;
24
- padding?: string;
25
- }, {
26
- header: {
27
- class: string;
28
- };
29
- default: {};
30
- }>, {
31
- click: MouseEvent;
32
- keydown: KeyboardEvent;
33
- } & {
34
- [evt: string]: CustomEvent<any>;
35
- }, {
36
- header: {
37
- class: string;
38
- };
39
- default: {};
40
- }, {}, string>;
41
- type Modal = InstanceType<typeof Modal>;
42
- export default Modal;
@@ -1,132 +0,0 @@
1
- <script lang="ts">
2
- import { type Component } from 'svelte';
3
-
4
- import { routerStore } from '../../stores';
5
-
6
- interface NavLink {
7
- title: string;
8
- link: string;
9
- key: string;
10
- icon: Component;
11
- alignRight?: boolean;
12
- disabled?: boolean;
13
- showTitle?: boolean;
14
- }
15
-
16
- export let items: NavLink[] = [];
17
-
18
- let leftMenus: NavLink[] = [];
19
- let rightMenus: NavLink[] = [];
20
-
21
- $: {
22
- leftMenus = items.filter((item) => !item.alignRight);
23
- rightMenus = items.filter((item) => item.alignRight);
24
- }
25
-
26
- /**
27
- * Returns true if the current path matches the link.
28
- */
29
- const isPathMatching = (curr: string): boolean => {
30
- const current = $routerStore?.url?.pathname;
31
- const link = new URL(curr, $routerStore?.url?.origin).pathname;
32
-
33
- return current === link;
34
- };
35
- </script>
36
-
37
- <nav class="navbar">
38
- {#each [leftMenus, rightMenus] as menus, index (index)}
39
- <div class={index === 0 ? 'left' : 'right'} role="tablist">
40
- {#each menus as item, index (index)}
41
- {@const matches = isPathMatching(item?.link)}
42
- <a
43
- role="tab"
44
- href={item.link}
45
- title={item.title}
46
- class:active={matches}
47
- class:disabled={item.disabled}
48
- on:click={() => {
49
- routerStore.update((state) => {
50
- return {
51
- ...state,
52
- url: new URL(item.link, state?.url?.origin)
53
- };
54
- });
55
- }}
56
- aria-label="Opens {item.title} tab."
57
- >
58
- <svelte:component this={item.icon} />
59
- {#if item.showTitle}
60
- <span>{item.title}</span>
61
- {/if}
62
- </a>
63
- {/each}
64
- </div>
65
- {/each}
66
- </nav>
67
-
68
- <style>
69
- .navbar {
70
- display: flex;
71
- justify-content: space-between;
72
- align-items: flex-start;
73
- align-self: stretch;
74
- background: var(--background1, #1e1e1e);
75
- padding: 0px var(--spacing-8, 8px);
76
- border-bottom: 1px solid var(--border1, rgba(255, 255, 255, 0.13));
77
- }
78
-
79
- .navbar .left {
80
- display: flex;
81
- width: max-content;
82
- align-items: flex-start;
83
- }
84
-
85
- .left,
86
- .right {
87
- gap: 8px;
88
- }
89
-
90
- .navbar a {
91
- display: flex;
92
- padding: var(--spacing-12, 12px) 4px;
93
- justify-content: center;
94
- align-items: center;
95
- gap: var(--space-space-1, 4px);
96
- color: var(--text1, #f5f5f5);
97
- text-decoration: none;
98
- text-align: center;
99
- font-family: Inter;
100
- font-size: 11.5px;
101
- font-style: normal;
102
- font-weight: 400;
103
- line-height: 16px;
104
- letter-spacing: -0.115px;
105
- margin-bottom: -1px;
106
- border-bottom: 1px solid var(--background5); /* prevents annoying layout shift on hover*/
107
- }
108
-
109
- .navbar .right {
110
- display: flex;
111
- width: max-content;
112
- align-items: flex-end;
113
- }
114
-
115
- .navbar a.active {
116
- border-bottom: 1px solid var(--text1, #f5f5f5);
117
- }
118
-
119
- .navbar a.disabled {
120
- opacity: 0.75;
121
- cursor: not-allowed;
122
- }
123
-
124
- .navbar a :global(svg) {
125
- width: 16px;
126
- height: 16px;
127
- }
128
- .navbar a:hover:not(.active) {
129
- /* background-color: var(--hoverColor); */
130
- border-bottom: 1px solid var(--text1, #f5f5f5);
131
- }
132
- </style>
@@ -1,29 +0,0 @@
1
- import { type Component } from 'svelte';
2
- interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
3
- new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
4
- $$bindings?: Bindings;
5
- } & Exports;
6
- (internal: unknown, props: Props & {
7
- $$events?: Events;
8
- $$slots?: Slots;
9
- }): Exports & {
10
- $set?: any;
11
- $on?: any;
12
- };
13
- z_$$bindings?: Bindings;
14
- }
15
- declare const Navbar: $$__sveltets_2_IsomorphicComponent<{
16
- items?: {
17
- title: string;
18
- link: string;
19
- key: string;
20
- icon: Component;
21
- alignRight?: boolean;
22
- disabled?: boolean;
23
- showTitle?: boolean;
24
- }[];
25
- }, {
26
- [evt: string]: CustomEvent<any>;
27
- }, {}, {}, string>;
28
- type Navbar = InstanceType<typeof Navbar>;
29
- export default Navbar;
@@ -1,31 +0,0 @@
1
- <script lang="ts">
2
- import PinIcon from '../icons/PinIcon.svelte';
3
- </script>
4
-
5
- <div class="no-settings-wrap">
6
- <h2 class="heading">Script settings</h2>
7
- <div class="no-settings-card">
8
- <PinIcon />
9
- <p>No script settings needed</p>
10
- </div>
11
- </div>
12
-
13
- <style>
14
- .heading {
15
- margin-bottom: var(--padding-regular);
16
- }
17
-
18
- .no-settings-wrap {
19
- padding: var(--padding-regular);
20
- }
21
-
22
- .no-settings-card {
23
- display: flex;
24
- flex-direction: column;
25
- align-items: center;
26
- justify-content: center;
27
- background: var(--background2);
28
- border-radius: var(--border-radius);
29
- padding: var(--padding-large);
30
- }
31
- </style>