@nordcraft/runtime 1.0.0

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 (168) hide show
  1. package/README.md +5 -0
  2. package/dist/api/createAPI.d.ts +20 -0
  3. package/dist/api/createAPI.js +319 -0
  4. package/dist/api/createAPI.js.map +1 -0
  5. package/dist/api/createAPIv2.d.ts +7 -0
  6. package/dist/api/createAPIv2.js +686 -0
  7. package/dist/api/createAPIv2.js.map +1 -0
  8. package/dist/components/createComponent.d.ts +13 -0
  9. package/dist/components/createComponent.js +216 -0
  10. package/dist/components/createComponent.js.map +1 -0
  11. package/dist/components/createElement.d.ts +3 -0
  12. package/dist/components/createElement.js +208 -0
  13. package/dist/components/createElement.js.map +1 -0
  14. package/dist/components/createNode.d.ts +22 -0
  15. package/dist/components/createNode.js +272 -0
  16. package/dist/components/createNode.js.map +1 -0
  17. package/dist/components/createSlot.d.ts +3 -0
  18. package/dist/components/createSlot.js +49 -0
  19. package/dist/components/createSlot.js.map +1 -0
  20. package/dist/components/createText.d.ts +23 -0
  21. package/dist/components/createText.js +68 -0
  22. package/dist/components/createText.js.map +1 -0
  23. package/dist/components/createText.test.d.ts +1 -0
  24. package/dist/components/createText.test.js +113 -0
  25. package/dist/components/createText.test.js.map +1 -0
  26. package/dist/components/renderComponent.d.ts +34 -0
  27. package/dist/components/renderComponent.js +66 -0
  28. package/dist/components/renderComponent.js.map +1 -0
  29. package/dist/context/isContextProvider.d.ts +2 -0
  30. package/dist/context/isContextProvider.js +5 -0
  31. package/dist/context/isContextProvider.js.map +1 -0
  32. package/dist/context/subscribeToContext.d.ts +4 -0
  33. package/dist/context/subscribeToContext.js +93 -0
  34. package/dist/context/subscribeToContext.js.map +1 -0
  35. package/dist/custom-components/components.d.ts +1 -0
  36. package/dist/custom-components/components.js +2 -0
  37. package/dist/custom-components/components.js.map +1 -0
  38. package/dist/custom-components/toddle-portal.d.ts +6 -0
  39. package/dist/custom-components/toddle-portal.js +20 -0
  40. package/dist/custom-components/toddle-portal.js.map +1 -0
  41. package/dist/custom-element/ToddleComponent.d.ts +37 -0
  42. package/dist/custom-element/ToddleComponent.js +244 -0
  43. package/dist/custom-element/ToddleComponent.js.map +1 -0
  44. package/dist/custom-element/defineComponents.d.ts +26 -0
  45. package/dist/custom-element/defineComponents.js +42 -0
  46. package/dist/custom-element/defineComponents.js.map +1 -0
  47. package/dist/custom-element.main.d.ts +3 -0
  48. package/dist/custom-element.main.esm.js +266 -0
  49. package/dist/custom-element.main.esm.js.map +7 -0
  50. package/dist/custom-element.main.js +14 -0
  51. package/dist/custom-element.main.js.map +1 -0
  52. package/dist/debug/logState.d.ts +4 -0
  53. package/dist/debug/logState.js +19 -0
  54. package/dist/debug/logState.js.map +1 -0
  55. package/dist/editor/drag-drop/dragEnded.d.ts +2 -0
  56. package/dist/editor/drag-drop/dragEnded.js +56 -0
  57. package/dist/editor/drag-drop/dragEnded.js.map +1 -0
  58. package/dist/editor/drag-drop/dragMove.d.ts +3 -0
  59. package/dist/editor/drag-drop/dragMove.js +74 -0
  60. package/dist/editor/drag-drop/dragMove.js.map +1 -0
  61. package/dist/editor/drag-drop/dragReorder.d.ts +3 -0
  62. package/dist/editor/drag-drop/dragReorder.js +92 -0
  63. package/dist/editor/drag-drop/dragReorder.js.map +1 -0
  64. package/dist/editor/drag-drop/dragStarted.d.ts +9 -0
  65. package/dist/editor/drag-drop/dragStarted.js +100 -0
  66. package/dist/editor/drag-drop/dragStarted.js.map +1 -0
  67. package/dist/editor/drag-drop/dropHighlight.d.ts +16 -0
  68. package/dist/editor/drag-drop/dropHighlight.js +50 -0
  69. package/dist/editor/drag-drop/dropHighlight.js.map +1 -0
  70. package/dist/editor/drag-drop/getInsertAreas.d.ts +20 -0
  71. package/dist/editor/drag-drop/getInsertAreas.js +220 -0
  72. package/dist/editor/drag-drop/getInsertAreas.js.map +1 -0
  73. package/dist/editor-preview.main.d.ts +19 -0
  74. package/dist/editor-preview.main.js +1303 -0
  75. package/dist/editor-preview.main.js.map +1 -0
  76. package/dist/events/handleAction.d.ts +3 -0
  77. package/dist/events/handleAction.js +307 -0
  78. package/dist/events/handleAction.js.map +1 -0
  79. package/dist/page.main.d.ts +7 -0
  80. package/dist/page.main.esm.js +8 -0
  81. package/dist/page.main.esm.js.map +7 -0
  82. package/dist/page.main.js +395 -0
  83. package/dist/page.main.js.map +1 -0
  84. package/dist/signal/signal.d.ts +19 -0
  85. package/dist/signal/signal.js +65 -0
  86. package/dist/signal/signal.js.map +1 -0
  87. package/dist/styles/style.d.ts +4 -0
  88. package/dist/styles/style.js +196 -0
  89. package/dist/styles/style.js.map +1 -0
  90. package/dist/utils/BatchQueue.d.ts +10 -0
  91. package/dist/utils/BatchQueue.js +25 -0
  92. package/dist/utils/BatchQueue.js.map +1 -0
  93. package/dist/utils/createFormulaCache.d.ts +3 -0
  94. package/dist/utils/createFormulaCache.js +81 -0
  95. package/dist/utils/createFormulaCache.js.map +1 -0
  96. package/dist/utils/findNearestLine.d.ts +13 -0
  97. package/dist/utils/findNearestLine.js +74 -0
  98. package/dist/utils/findNearestLine.js.map +1 -0
  99. package/dist/utils/findNearestLine.test.d.ts +1 -0
  100. package/dist/utils/findNearestLine.test.js +59 -0
  101. package/dist/utils/findNearestLine.test.js.map +1 -0
  102. package/dist/utils/getDragData.d.ts +1 -0
  103. package/dist/utils/getDragData.js +10 -0
  104. package/dist/utils/getDragData.js.map +1 -0
  105. package/dist/utils/getElementTagName.d.ts +3 -0
  106. package/dist/utils/getElementTagName.js +7 -0
  107. package/dist/utils/getElementTagName.js.map +1 -0
  108. package/dist/utils/nodes.d.ts +21 -0
  109. package/dist/utils/nodes.js +89 -0
  110. package/dist/utils/nodes.js.map +1 -0
  111. package/dist/utils/omitStyle.d.ts +2 -0
  112. package/dist/utils/omitStyle.js +13 -0
  113. package/dist/utils/omitStyle.js.map +1 -0
  114. package/dist/utils/rectHasPoint.d.ts +2 -0
  115. package/dist/utils/rectHasPoint.js +4 -0
  116. package/dist/utils/rectHasPoint.js.map +1 -0
  117. package/dist/utils/setAttribute.d.ts +4 -0
  118. package/dist/utils/setAttribute.js +57 -0
  119. package/dist/utils/setAttribute.js.map +1 -0
  120. package/dist/utils/tryStartViewTransition.d.ts +5 -0
  121. package/dist/utils/tryStartViewTransition.js +14 -0
  122. package/dist/utils/tryStartViewTransition.js.map +1 -0
  123. package/dist/utils/url.d.ts +2 -0
  124. package/dist/utils/url.js +36 -0
  125. package/dist/utils/url.js.map +1 -0
  126. package/package.json +25 -0
  127. package/src/api/createAPI.ts +375 -0
  128. package/src/api/createAPIv2.ts +931 -0
  129. package/src/components/createComponent.ts +280 -0
  130. package/src/components/createElement.ts +240 -0
  131. package/src/components/createNode.ts +381 -0
  132. package/src/components/createSlot.ts +61 -0
  133. package/src/components/createText.test.ts +117 -0
  134. package/src/components/createText.ts +104 -0
  135. package/src/components/renderComponent.ts +145 -0
  136. package/src/context/isContextProvider.ts +12 -0
  137. package/src/context/subscribeToContext.ts +135 -0
  138. package/src/custom-components/components.ts +1 -0
  139. package/src/custom-components/toddle-portal.ts +19 -0
  140. package/src/custom-element/ToddleComponent.ts +315 -0
  141. package/src/custom-element/defineComponents.ts +65 -0
  142. package/src/custom-element.main.ts +24 -0
  143. package/src/debug/logState.ts +30 -0
  144. package/src/editor/drag-drop/dragEnded.ts +75 -0
  145. package/src/editor/drag-drop/dragMove.ts +95 -0
  146. package/src/editor/drag-drop/dragReorder.ts +137 -0
  147. package/src/editor/drag-drop/dragStarted.ts +145 -0
  148. package/src/editor/drag-drop/dropHighlight.ts +82 -0
  149. package/src/editor/drag-drop/getInsertAreas.ts +235 -0
  150. package/src/editor/types.d.ts +36 -0
  151. package/src/editor-preview.main.ts +1782 -0
  152. package/src/events/handleAction.ts +387 -0
  153. package/src/page.main.ts +489 -0
  154. package/src/signal/signal.ts +74 -0
  155. package/src/styles/style.ts +254 -0
  156. package/src/types.d.ts +93 -0
  157. package/src/utils/BatchQueue.ts +24 -0
  158. package/src/utils/createFormulaCache.ts +96 -0
  159. package/src/utils/findNearestLine.test.ts +65 -0
  160. package/src/utils/findNearestLine.ts +92 -0
  161. package/src/utils/getDragData.ts +11 -0
  162. package/src/utils/getElementTagName.ts +14 -0
  163. package/src/utils/nodes.ts +125 -0
  164. package/src/utils/omitStyle.ts +19 -0
  165. package/src/utils/rectHasPoint.ts +5 -0
  166. package/src/utils/setAttribute.ts +56 -0
  167. package/src/utils/tryStartViewTransition.ts +32 -0
  168. package/src/utils/url.ts +45 -0
@@ -0,0 +1,395 @@
1
+ import { isLegacyApi, sortApiObjects } from '@nordcraft/core/dist/api/api';
2
+ import { applyFormula } from '@nordcraft/core/dist/formula/formula';
3
+ import { mapObject } from '@nordcraft/core/dist/utils/collections';
4
+ import { isDefined } from '@nordcraft/core/dist/utils/util';
5
+ import * as libActions from '@nordcraft/std-lib/dist/actions';
6
+ import * as libFormulas from '@nordcraft/std-lib/dist/formulas';
7
+ import fastDeepEqual from 'fast-deep-equal';
8
+ import { match } from 'path-to-regexp';
9
+ import { createLegacyAPI } from './api/createAPI';
10
+ import { createAPI } from './api/createAPIv2';
11
+ import { renderComponent } from './components/renderComponent';
12
+ import { isContextProvider } from './context/isContextProvider';
13
+ import { initLogState, registerComponentToLogState } from './debug/logState';
14
+ import { signal } from './signal/signal';
15
+ initLogState();
16
+ let env;
17
+ export const initGlobalObject = (code) => {
18
+ const component = window.__toddle.component;
19
+ const { params, hash, query } = parseUrl(component);
20
+ env = {
21
+ isServer: false,
22
+ branchName: window.__toddle.branch,
23
+ request: undefined,
24
+ runtime: 'page',
25
+ logErrors: true,
26
+ };
27
+ window.toddle = (() => {
28
+ const legacyActions = {};
29
+ const legacyFormulas = {};
30
+ const argumentInputDataList = {};
31
+ const toddle = {
32
+ isEqual: fastDeepEqual,
33
+ errors: [],
34
+ project: window.__toddle.project,
35
+ branch: window.__toddle.branch,
36
+ commit: window.__toddle.commit,
37
+ components: window.__toddle.components,
38
+ formulas: code?.formulas ?? {},
39
+ actions: code?.actions ?? {},
40
+ registerAction: (name, handler) => {
41
+ if (legacyActions[name]) {
42
+ // eslint-disable-next-line no-console
43
+ console.error('There already exists an action with the name ', name);
44
+ return;
45
+ }
46
+ legacyActions[name] = handler;
47
+ },
48
+ getAction: (name) => legacyActions[name],
49
+ registerFormula: (name, handler, getArgumentInputData) => {
50
+ if (legacyFormulas[name]) {
51
+ // eslint-disable-next-line no-console
52
+ console.error('There already exists a formula with the name ', name);
53
+ return;
54
+ }
55
+ legacyFormulas[name] = handler;
56
+ if (getArgumentInputData) {
57
+ argumentInputDataList[name] = getArgumentInputData;
58
+ }
59
+ },
60
+ getFormula: (name) => legacyFormulas[name],
61
+ getCustomAction: (name, packageName) => {
62
+ return (toddle.actions[packageName ?? window.__toddle.project]?.[name] ??
63
+ toddle.actions[window.__toddle.project]?.[name]);
64
+ },
65
+ getCustomFormula: (name, packageName) => {
66
+ return (toddle.formulas[packageName ?? window.__toddle.project]?.[name] ??
67
+ toddle.formulas[window.__toddle.project]?.[name]);
68
+ },
69
+ // eslint-disable-next-line max-params
70
+ getArgumentInputData: (formulaName, args, argIndex, data) => argumentInputDataList[formulaName]?.(args, argIndex, data) || data,
71
+ data: {},
72
+ locationSignal: signal({
73
+ route: component.route,
74
+ page: component.page,
75
+ path: window.location.pathname,
76
+ params,
77
+ query,
78
+ hash,
79
+ }),
80
+ eventLog: [],
81
+ pageState: window.__toddle.pageState,
82
+ env,
83
+ };
84
+ return toddle;
85
+ })();
86
+ // load default formulas and actions
87
+ Object.entries(libFormulas).forEach(([name, module]) => window.toddle.registerFormula('@toddle/' + name, module.default, 'getArgumentInputData' in module
88
+ ? module.getArgumentInputData
89
+ : undefined));
90
+ Object.entries(libActions).forEach(([name, module]) => window.toddle.registerAction('@toddle/' + name, module.default));
91
+ };
92
+ export const createRoot = (domNode) => {
93
+ const component = window.__toddle.component;
94
+ if (!domNode) {
95
+ throw new Error('Cant find root domNode');
96
+ }
97
+ if (!window.toddle.components) {
98
+ throw new Error('Missing components');
99
+ }
100
+ window.addEventListener('popstate', () => {
101
+ if (!component) {
102
+ return;
103
+ }
104
+ const { params, hash, query } = parseUrl(component);
105
+ window.toddle.locationSignal.update(() => {
106
+ return {
107
+ route: component?.route,
108
+ page: component.page,
109
+ path: window.location.pathname,
110
+ params,
111
+ query,
112
+ hash,
113
+ };
114
+ });
115
+ });
116
+ const routeSignal = window.toddle.locationSignal.map(({ query, params }) => {
117
+ return { ...query, ...params };
118
+ });
119
+ const dataSignal = signal({
120
+ ...window.toddle.pageState,
121
+ // Re-initialize variables since some of them might rely on client-side
122
+ // state (e.g. localStorage, sensors etc.)
123
+ Variables: mapObject(component.variables, ([name, variable]) => [
124
+ name,
125
+ applyFormula(variable.initialValue, {
126
+ data: window.toddle.pageState,
127
+ component,
128
+ formulaCache: {},
129
+ root: document,
130
+ package: undefined,
131
+ toddle: window.toddle,
132
+ env,
133
+ }),
134
+ ]),
135
+ });
136
+ // Handle dynamic updates of <head> elements (title, og:image etc.)
137
+ const titleFormula = component.route?.info?.title?.formula;
138
+ const dynamicTitle = titleFormula && titleFormula.type !== 'value';
139
+ if (dynamicTitle) {
140
+ dataSignal
141
+ .map(() => component
142
+ ? applyFormula(titleFormula, {
143
+ data: dataSignal.get(),
144
+ component,
145
+ root: document,
146
+ package: undefined,
147
+ toddle: window.toddle,
148
+ env,
149
+ })
150
+ : null)
151
+ .subscribe((newTitle) => {
152
+ if (isDefined(newTitle) && document.title !== newTitle) {
153
+ document.title = newTitle;
154
+ }
155
+ });
156
+ }
157
+ const descriptionFormula = component.route?.info?.description?.formula;
158
+ const meta = component.route?.info?.meta;
159
+ const dynamicDescription = descriptionFormula && descriptionFormula.type !== 'value';
160
+ const dynamicMetaFormulas = Object.values(meta ?? {}).some((r) => Object.values(r.attrs ?? {}).some((a) => a.type !== 'value'));
161
+ if (dynamicDescription || dynamicMetaFormulas) {
162
+ const findMetaElement = (name) => [...document.getElementsByTagName('meta')].find((el) => el.name === name || el.getAttribute('property') === name) ?? null;
163
+ const updateMetaElement = (entry, id) => {
164
+ let existingElement = null;
165
+ if (isDefined(id)) {
166
+ existingElement = document.querySelector(`[data-toddle-id="${id}"]`);
167
+ }
168
+ else {
169
+ const identifier = Object.entries(entry.attrs ?? {}).find(([key]) => ['property', 'name'].includes(key.toLowerCase()))?.[1];
170
+ if (isDefined(identifier)) {
171
+ existingElement = findMetaElement(identifier);
172
+ }
173
+ }
174
+ if (!existingElement) {
175
+ // If the element didn't already exist, create it
176
+ existingElement = document.createElement(entry.tag);
177
+ if (isDefined(id)) {
178
+ existingElement.setAttribute('data-toddle-id', id);
179
+ }
180
+ document.getElementsByTagName('head')[0].appendChild(existingElement);
181
+ }
182
+ // Apply all attributes to the element
183
+ Object.entries(entry.attrs ?? {}).forEach(([key, value]) => {
184
+ if (!component) {
185
+ return;
186
+ }
187
+ existingElement.setAttribute(key, value);
188
+ });
189
+ };
190
+ if (dynamicDescription) {
191
+ dataSignal
192
+ .map((data) => component
193
+ ? applyFormula(descriptionFormula, {
194
+ data,
195
+ component,
196
+ root: document,
197
+ package: undefined,
198
+ toddle: window.toddle,
199
+ env,
200
+ })
201
+ : null)
202
+ .subscribe((newDescription) => {
203
+ if (isDefined(newDescription)) {
204
+ let descriptionElement = document
205
+ .getElementsByTagName('meta')
206
+ .namedItem('description');
207
+ if (!descriptionElement) {
208
+ descriptionElement = document.createElement('meta');
209
+ descriptionElement.name = 'description';
210
+ }
211
+ descriptionElement.content = newDescription;
212
+ document
213
+ .getElementsByTagName('head')[0]
214
+ .appendChild(descriptionElement);
215
+ if (meta &&
216
+ !Object.values(meta).some((m) => Object.entries(m.attrs ?? {}).some(([k, value]) => k.toLowerCase() === 'property' &&
217
+ value.type === 'value' &&
218
+ typeof value.value === 'string' &&
219
+ value.value.toLowerCase() === 'og:description'))) {
220
+ // If there is no formula for the og:description meta tag,
221
+ // add it with the same value as the description meta tag
222
+ // this mimics the behavior from our SSR
223
+ updateMetaElement({
224
+ tag: 'meta',
225
+ attrs: {
226
+ property: 'og:description',
227
+ content: newDescription,
228
+ },
229
+ });
230
+ }
231
+ }
232
+ });
233
+ }
234
+ if (dynamicMetaFormulas) {
235
+ Object.entries(meta ?? {})
236
+ // Filter out meta tags that have no dynamic formulas
237
+ .filter(([_, entry]) =>
238
+ // fallback to make sure we don't crash on legacy values.
239
+ Object.values(entry.attrs ?? {}).some((a) => a.type !== 'value'))
240
+ .forEach(([id, entry]) => {
241
+ dataSignal
242
+ .map((data) => {
243
+ // Return the new values for all attributes (we assume they're strings)
244
+ const values = Object.entries(entry.attrs ?? {}).reduce((agg, [key, formula]) => component
245
+ ? {
246
+ ...agg,
247
+ [key]: applyFormula(formula, {
248
+ data,
249
+ component,
250
+ root: document,
251
+ package: undefined,
252
+ toddle: window.toddle,
253
+ env,
254
+ }),
255
+ }
256
+ : agg, {});
257
+ return values;
258
+ })
259
+ .subscribe((attrs) =>
260
+ // Update the meta tags with the new values
261
+ updateMetaElement({ tag: entry.tag, attrs }, id));
262
+ });
263
+ }
264
+ }
265
+ registerComponentToLogState(component, dataSignal);
266
+ routeSignal.subscribe((route) => dataSignal.update((data) => ({
267
+ ...data,
268
+ 'URL parameters': route,
269
+ Attributes: route,
270
+ })));
271
+ // Call the abort signal if the component's datasignal is destroyed (component unmounted) to cancel any pending requests
272
+ const abortController = new AbortController();
273
+ dataSignal.subscribe(() => { }, {
274
+ destroy: () => abortController.abort(`Component ${component.name} unmounted`),
275
+ });
276
+ const ctx = {
277
+ component,
278
+ components: window.toddle.components,
279
+ root: document,
280
+ isRootComponent: true,
281
+ dataSignal,
282
+ abortSignal: abortController.signal,
283
+ children: {},
284
+ formulaCache: {},
285
+ providers: {},
286
+ apis: {},
287
+ toddle: window.toddle,
288
+ triggerEvent: (event, data) =>
289
+ // eslint-disable-next-line no-console
290
+ console.info('EVENT FIRED', event, data),
291
+ package: undefined,
292
+ env,
293
+ };
294
+ // Note: this function must run procedurally to ensure apis (which are in correct order) can reference each other
295
+ sortApiObjects(Object.entries(component.apis)).forEach(([name, api]) => {
296
+ if (isLegacyApi(api)) {
297
+ ctx.apis[name] = createLegacyAPI(api, ctx);
298
+ }
299
+ else {
300
+ ctx.apis[name] = createAPI(api, ctx);
301
+ }
302
+ });
303
+ // Trigger actions for all APIs after all of them are created.
304
+ Object.values(ctx.apis)
305
+ .filter((api) => api.triggerActions !== undefined)
306
+ .forEach((api) => {
307
+ api.triggerActions();
308
+ });
309
+ let providers = ctx.providers;
310
+ if (isContextProvider(component)) {
311
+ // Subscribe to exposed formulas and update the component's data signal
312
+ const formulaDataSignals = Object.fromEntries(Object.entries(component.formulas ?? {})
313
+ .filter(([, formula]) => formula.exposeInContext)
314
+ .map(([name, formula]) => [
315
+ name,
316
+ dataSignal.map((data) => applyFormula(formula.formula, {
317
+ data,
318
+ component,
319
+ formulaCache: ctx.formulaCache,
320
+ root: ctx.root,
321
+ package: ctx.package,
322
+ toddle: window.toddle,
323
+ env,
324
+ })),
325
+ ]));
326
+ providers = {
327
+ ...providers,
328
+ [component.name]: {
329
+ component,
330
+ formulaDataSignals,
331
+ ctx,
332
+ },
333
+ };
334
+ }
335
+ const elements = renderComponent({
336
+ ...ctx,
337
+ providers,
338
+ path: '0',
339
+ package: undefined,
340
+ onEvent: ctx.triggerEvent,
341
+ parentElement: domNode,
342
+ instance: {},
343
+ });
344
+ domNode.innerText = '';
345
+ elements.forEach((elem) => {
346
+ domNode.appendChild(elem);
347
+ });
348
+ window.__toddle.isPageLoaded = true;
349
+ };
350
+ function parseUrl(component) {
351
+ const path = window.location.pathname.split('/').slice(1);
352
+ let params = {};
353
+ if (component.route) {
354
+ component.route.path.forEach((segment, i) => {
355
+ if (segment.type === 'param') {
356
+ if (isDefined(path[i]) && path[i] !== '') {
357
+ params[segment.name] = decodeURIComponent(path[i]);
358
+ }
359
+ else {
360
+ params[segment.name] = null;
361
+ }
362
+ }
363
+ else {
364
+ params[segment.name] = segment.name;
365
+ }
366
+ });
367
+ }
368
+ else {
369
+ const urlPattern = match(component.page ?? '', {
370
+ decode: decodeURIComponent,
371
+ });
372
+ const res = urlPattern(window.location.pathname) || {
373
+ params: {},
374
+ };
375
+ params = res.params;
376
+ }
377
+ const [hash] = window.location.hash.split('?');
378
+ const query = parseQuery(window.location.search);
379
+ // Explicitly set all query params to null by default
380
+ // to avoid undefined values in the runtime
381
+ const defaultQueryParams = Object.keys(component.route?.query ?? {}).reduce((params, key) => ({ ...params, [key]: null }), {});
382
+ return {
383
+ params,
384
+ hash: hash?.slice(1),
385
+ query: { ...defaultQueryParams, ...query },
386
+ };
387
+ }
388
+ const parseQuery = (queryString) => Object.fromEntries(queryString
389
+ .replace('?', '')
390
+ .split('&')
391
+ .filter((pair) => pair !== '')
392
+ .map((pair) => {
393
+ return pair.split('=').map(decodeURIComponent);
394
+ }));
395
+ //# sourceMappingURL=page.main.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page.main.js","sourceRoot":"","sources":["../src/page.main.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ export declare class Signal<T> {
2
+ value: T;
3
+ subscribers: Set<{
4
+ notify: (value: T) => void;
5
+ destroy?: () => void;
6
+ }>;
7
+ subscriptions: Array<() => void>;
8
+ constructor(value: T);
9
+ get(): T;
10
+ set(value: T): void;
11
+ update(f: (current: T) => T): void;
12
+ subscribe(notify: (value: T) => void, config?: {
13
+ destroy?: () => void;
14
+ }): () => void;
15
+ destroy(): void;
16
+ cleanSubscribers(): void;
17
+ map<T2>(f: (value: T) => T2): Signal<T2>;
18
+ }
19
+ export declare function signal<T>(value: T): Signal<T>;
@@ -0,0 +1,65 @@
1
+ import deepEqual from 'fast-deep-equal';
2
+ export class Signal {
3
+ value;
4
+ subscribers;
5
+ subscriptions;
6
+ constructor(value) {
7
+ this.value = value;
8
+ this.subscribers = new Set();
9
+ this.subscriptions = [];
10
+ }
11
+ get() {
12
+ return this.value;
13
+ }
14
+ set(value) {
15
+ // Short circuit and skip expensive `deepEqual` if there are not currently any subscribers
16
+ if (this.subscribers.size === 0) {
17
+ this.value = value;
18
+ return;
19
+ }
20
+ if (deepEqual(value, this.value) === false) {
21
+ this.value = value;
22
+ this.subscribers.forEach(({ notify }) => notify(this.value));
23
+ }
24
+ }
25
+ update(f) {
26
+ this.set(f(this.value));
27
+ }
28
+ subscribe(notify, config) {
29
+ const subscriber = { notify, destroy: config?.destroy };
30
+ this.subscribers.add(subscriber);
31
+ notify(this.value);
32
+ return () => {
33
+ this.subscribers.delete(subscriber);
34
+ };
35
+ }
36
+ destroy() {
37
+ this.subscribers.forEach(({ destroy }) => {
38
+ destroy?.();
39
+ });
40
+ this.subscribers.clear();
41
+ this.subscriptions?.forEach((f) => f());
42
+ }
43
+ cleanSubscribers() {
44
+ this.subscribers.forEach(({ destroy }) => {
45
+ destroy?.();
46
+ });
47
+ this.subscribers.clear();
48
+ }
49
+ map(f) {
50
+ const signal2 = signal(f(this.value));
51
+ signal2.subscriptions.push(this.subscribe((value) => signal2.set(f(value)), {
52
+ destroy: () => signal2.destroy(),
53
+ }));
54
+ return signal2;
55
+ }
56
+ }
57
+ export function signal(value) {
58
+ return new Signal(value);
59
+ }
60
+ if (typeof window !== 'undefined') {
61
+ ;
62
+ window.signal = signal;
63
+ window.deepEqual = deepEqual;
64
+ }
65
+ //# sourceMappingURL=signal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signal.js","sourceRoot":"","sources":["../../src/signal/signal.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { Component, NodeStyleModel } from '@nordcraft/core/dist/component/component.types';
2
+ export declare const SIZE_PROPERTIES: Set<string>;
3
+ export declare const insertStyles: (parent: HTMLElement, root: Component, components: Component[]) => void;
4
+ export declare const styleToCss: (style: NodeStyleModel) => string;