@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
package/README.md ADDED
@@ -0,0 +1,5 @@
1
+ # @nordcraft/runtime
2
+
3
+ [npm](https://www.npmjs.com/package/@nordcraft/runtime)
4
+
5
+ The runtime powers the client-side of a nordcraft application. It is responsible for rendering the application, handling events, and managing the state.
@@ -0,0 +1,20 @@
1
+ import type { LegacyComponentAPI } from '@nordcraft/core/dist/api/apiTypes';
2
+ import type { ComponentContext } from '../types';
3
+ export type ApiRequest = {
4
+ url: string;
5
+ method: 'GET' | 'POST' | 'DELETE' | 'PUT' | 'OPTION' | 'HEAD';
6
+ auth: {
7
+ type: string;
8
+ } | undefined;
9
+ headers: Record<string, string>;
10
+ body: any;
11
+ };
12
+ /**
13
+ * Set up an api for a component.
14
+ * API requests are either proxied through toddle's back-end
15
+ * or sent directly to the api endpoint (when api.proxy === false)
16
+ */
17
+ export declare function createLegacyAPI(api: LegacyComponentAPI, ctx: ComponentContext): {
18
+ fetch: Function;
19
+ destroy: Function;
20
+ };
@@ -0,0 +1,319 @@
1
+ import { applyFormula, isFormula } from '@nordcraft/core/dist/formula/formula';
2
+ import { mapValues } from '@nordcraft/core/dist/utils/collections';
3
+ import { parseJSONWithDate } from '@nordcraft/core/dist/utils/json';
4
+ import { handleAction } from '../events/handleAction';
5
+ /**
6
+ * Set up an api for a component.
7
+ * API requests are either proxied through toddle's back-end
8
+ * or sent directly to the api endpoint (when api.proxy === false)
9
+ */
10
+ export function createLegacyAPI(api, ctx) {
11
+ let timer = null;
12
+ // Create the payload we send to toddle's back-end
13
+ // This includes url, headers, and content, sent in the body of a post request to /_query/<ComponentName>.<QueryName>
14
+ function constructPayload(api, data) {
15
+ const formulaContext = {
16
+ data,
17
+ component: ctx.component,
18
+ formulaCache: ctx.formulaCache,
19
+ root: ctx.root,
20
+ package: ctx.package,
21
+ toddle: ctx.toddle,
22
+ env: ctx.env,
23
+ };
24
+ // construct the url
25
+ const baseUrl = applyFormula(api.url, formulaContext) ?? '';
26
+ const urlPath = api.path && api.path.length > 0
27
+ ? '/' +
28
+ api.path.map((p) => applyFormula(p.formula, formulaContext)).join('/')
29
+ : '';
30
+ // build querystring
31
+ const queryParams = Object.values(api.queryParams ?? {});
32
+ const queryString = queryParams.length > 0
33
+ ? '?' +
34
+ queryParams
35
+ .map((param) => `${param.name}=${encodeURIComponent(applyFormula(param.formula, formulaContext))}`)
36
+ .join('&')
37
+ : '';
38
+ const headers = isFormula(api.headers) // this is supporting a few legacy cases where the whole header object was set as a formula. This is no longer possible
39
+ ? applyFormula(api.headers, {
40
+ data,
41
+ component: ctx.component,
42
+ formulaCache: ctx.formulaCache,
43
+ root: ctx.root,
44
+ package: ctx.package,
45
+ toddle: ctx.toddle,
46
+ env: ctx.env,
47
+ })
48
+ : mapValues(api.headers ?? {}, (value) => applyFormula(value, {
49
+ data,
50
+ component: ctx.component,
51
+ formulaCache: ctx.formulaCache,
52
+ root: ctx.root,
53
+ package: ctx.package,
54
+ toddle: ctx.toddle,
55
+ env: ctx.env,
56
+ }));
57
+ const contentType = String(Object.entries(headers).find(([key]) => key.toLocaleLowerCase() === 'content-type')?.[1]);
58
+ const method = api.method ?? 'GET';
59
+ const body = api.body && ['POST', 'PUT', 'PATCH', 'DELETE'].includes(method)
60
+ ? encodeBody(applyFormula(api.body, {
61
+ data,
62
+ component: ctx.component,
63
+ formulaCache: ctx.formulaCache,
64
+ root: ctx.root,
65
+ package: ctx.package,
66
+ toddle: ctx.toddle,
67
+ env: ctx.env,
68
+ }), contentType)
69
+ : undefined;
70
+ return {
71
+ url: baseUrl + urlPath + queryString,
72
+ method,
73
+ auth: api.auth,
74
+ headers,
75
+ body,
76
+ };
77
+ }
78
+ // extract the response body
79
+ async function getBody(res) {
80
+ const textBody = await res.text();
81
+ try {
82
+ return parseJSONWithDate(textBody);
83
+ }
84
+ catch {
85
+ return textBody;
86
+ }
87
+ }
88
+ function encodeBody(body, contentType) {
89
+ switch (contentType) {
90
+ case 'application/x-www-form-urlencoded': {
91
+ if (typeof body === 'object' && body !== null) {
92
+ return Object.entries(body)
93
+ .map(([key, value]) => {
94
+ if (Array.isArray(value)) {
95
+ return value
96
+ .map((v) => `${encodeURIComponent(key)}=${encodeURIComponent(v)}`)
97
+ .join('&');
98
+ }
99
+ else {
100
+ return `${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`;
101
+ }
102
+ })
103
+ .join('&');
104
+ }
105
+ return '';
106
+ }
107
+ case 'multipart/form-data': {
108
+ const formData = new FormData();
109
+ if (typeof body === 'object' && body !== null) {
110
+ Object.entries(body).forEach(([key, value]) => {
111
+ formData.set(key, value);
112
+ });
113
+ }
114
+ return formData;
115
+ }
116
+ case 'text/plain':
117
+ return String(body);
118
+ default:
119
+ return JSON.stringify(body);
120
+ }
121
+ }
122
+ function apiSuccess(data) {
123
+ ctx.dataSignal.set({
124
+ ...ctx.dataSignal.get(),
125
+ Apis: {
126
+ ...ctx.dataSignal.get().Apis,
127
+ [api.name]: {
128
+ data,
129
+ error: null,
130
+ isLoading: false,
131
+ },
132
+ },
133
+ });
134
+ api.onCompleted?.actions?.forEach((action) => {
135
+ handleAction(action, ctx.dataSignal.get(), ctx);
136
+ });
137
+ }
138
+ function apiError(error) {
139
+ ctx.dataSignal.set({
140
+ ...ctx.dataSignal.get(),
141
+ Apis: {
142
+ ...ctx.dataSignal.get().Apis,
143
+ [api.name]: {
144
+ data: null,
145
+ isLoading: false,
146
+ error: error,
147
+ },
148
+ },
149
+ });
150
+ api.onFailed?.actions?.forEach((action) => {
151
+ handleAction(action, ctx.dataSignal.get(), ctx);
152
+ });
153
+ }
154
+ // Execute the request to the cloudflare Query proxy
155
+ async function execute(payload) {
156
+ ctx.dataSignal.set({
157
+ ...ctx.dataSignal.get(),
158
+ Apis: {
159
+ ...ctx.dataSignal.get().Apis,
160
+ [api.name]: {
161
+ data: ctx.dataSignal.get().Apis?.[api.name]?.data ?? null,
162
+ isLoading: true,
163
+ error: null,
164
+ },
165
+ },
166
+ });
167
+ let response;
168
+ try {
169
+ if (api.proxy === false) {
170
+ response = await fetch(payload.url, {
171
+ method: payload.method,
172
+ headers: payload.headers,
173
+ body: payload.body,
174
+ });
175
+ }
176
+ else {
177
+ response = await fetch(`/_query/${encodeURIComponent(ctx.component.name)}.${encodeURIComponent(api.name)}`, {
178
+ method: 'POST',
179
+ body: JSON.stringify(payload),
180
+ signal: ctx.abortSignal,
181
+ headers: {
182
+ 'Content-Type': 'application/json',
183
+ },
184
+ });
185
+ }
186
+ const data = await getBody(response);
187
+ if (response.ok) {
188
+ apiSuccess(data);
189
+ }
190
+ else {
191
+ throw data;
192
+ }
193
+ }
194
+ catch (error) {
195
+ apiError(error);
196
+ return Promise.reject(error);
197
+ }
198
+ }
199
+ // Handles throttle and debounce if set.
200
+ function trigger(body) {
201
+ if (typeof api.debounce === 'number') {
202
+ return new Promise((resolve, reject) => {
203
+ if (typeof timer === 'number') {
204
+ clearTimeout(timer);
205
+ }
206
+ timer = setTimeout(() => {
207
+ execute(body).then(resolve, reject);
208
+ }, api.debounce);
209
+ });
210
+ }
211
+ else if (typeof api.throttle === 'number') {
212
+ if (typeof timer === 'number') {
213
+ return new Promise(() => { });
214
+ }
215
+ timer = setTimeout(() => {
216
+ if (typeof timer === 'number') {
217
+ clearTimeout(timer);
218
+ }
219
+ }, api.throttle);
220
+ return execute(body);
221
+ }
222
+ else {
223
+ return execute(body);
224
+ }
225
+ }
226
+ let payloadSignal;
227
+ ctx.dataSignal.update((data) => {
228
+ return {
229
+ ...data,
230
+ Apis: {
231
+ ...(data.Apis ?? {}),
232
+ [api.name]: data.Apis?.[api.name] ?? {
233
+ data: null,
234
+ isLoading: api.autoFetch &&
235
+ applyFormula(api.autoFetch, {
236
+ data: ctx.dataSignal.get(),
237
+ component: ctx.component,
238
+ formulaCache: ctx.formulaCache,
239
+ root: ctx.root,
240
+ package: ctx.package,
241
+ toddle: ctx.toddle,
242
+ env: ctx.env,
243
+ })
244
+ ? true
245
+ : false,
246
+ error: null,
247
+ },
248
+ },
249
+ };
250
+ });
251
+ if (api.autoFetch) {
252
+ payloadSignal = ctx.dataSignal.map((data) => constructPayload(api, data));
253
+ let firstRun = true;
254
+ payloadSignal.subscribe((body) => {
255
+ if (api.autoFetch &&
256
+ applyFormula(api.autoFetch, {
257
+ data: ctx.dataSignal.get(),
258
+ component: ctx.component,
259
+ formulaCache: ctx.formulaCache,
260
+ root: ctx.root,
261
+ package: ctx.package,
262
+ toddle: ctx.toddle,
263
+ env: ctx.env,
264
+ })) {
265
+ // We should only lookup cached data for pages since
266
+ // we don't fetch data for component APIs during SSR
267
+ if (firstRun && ctx.isRootComponent) {
268
+ firstRun = false;
269
+ const cached = ctx.toddle?.pageState?.Apis?.[api.name];
270
+ if (cached && cached.data) {
271
+ if (typeof cached.data === 'string') {
272
+ // Mimic the behavior from getBody and parse
273
+ // the response to JSON if possible
274
+ apiSuccess(parseJSONWithDate(cached.data));
275
+ }
276
+ else {
277
+ apiSuccess(cached.data);
278
+ }
279
+ }
280
+ else {
281
+ trigger(body);
282
+ }
283
+ }
284
+ else {
285
+ trigger(body);
286
+ }
287
+ }
288
+ });
289
+ }
290
+ return {
291
+ fetch: (request) => {
292
+ const apiPayload = constructPayload(api, ctx.dataSignal.get());
293
+ let body = apiPayload.body;
294
+ // Use a Headers object since it's case insensitive
295
+ const headers = new Headers({
296
+ ...apiPayload.headers,
297
+ ...(request?.headers ?? {}),
298
+ });
299
+ if (request?.body) {
300
+ body = encodeBody(request.body, headers.get('Content-Type') ?? undefined);
301
+ }
302
+ if (body instanceof FormData) {
303
+ // Remove content type header if body is a FormData object
304
+ // Otherwise fetch won't do its magic when sending the request
305
+ headers.delete('Content-Type');
306
+ }
307
+ const payload = {
308
+ url: request?.url ?? apiPayload.url,
309
+ method: request?.method ?? apiPayload.method,
310
+ auth: request?.auth ?? apiPayload.auth,
311
+ headers: [...headers.entries()].reduce((acc, [key, value]) => ({ ...acc, [key]: value }), {}),
312
+ body,
313
+ };
314
+ return trigger(payload);
315
+ },
316
+ destroy: () => payloadSignal?.destroy(),
317
+ };
318
+ }
319
+ //# sourceMappingURL=createAPI.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createAPI.js","sourceRoot":"","sources":["../../src/api/createAPI.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAA;AAC9E,OAAO,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAA;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAYrD;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAC7B,GAAuB,EACvB,GAAqB;IAErB,IAAI,KAAK,GAAQ,IAAI,CAAA;IAErB,kDAAkD;IAClD,qHAAqH;IACrH,SAAS,gBAAgB,CACvB,GAAuB,EACvB,IAAmB;QAEnB,MAAM,cAAc,GAAG;YACrB,IAAI;YACJ,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,YAAY,EAAE,GAAG,CAAC,YAAY;YAC9B,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,GAAG,EAAE,GAAG,CAAC,GAAG;SACb,CAAA;QAED,oBAAoB;QACpB,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,cAAc,CAAC,IAAI,EAAE,CAAA;QAC3D,MAAM,OAAO,GACX,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC;YAC7B,CAAC,CAAC,GAAG;gBACH,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;YACxE,CAAC,CAAC,EAAE,CAAA;QAER,oBAAoB;QACpB,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,CAAA;QACxD,MAAM,WAAW,GACf,WAAW,CAAC,MAAM,GAAG,CAAC;YACpB,CAAC,CAAC,GAAG;gBACH,WAAW;qBACR,GAAG,CACF,CAAC,KAAK,EAAE,EAAE,CACR,GAAG,KAAK,CAAC,IAAI,IAAI,kBAAkB,CACjC,YAAY,CAAC,KAAK,CAAC,OAAO,EAAE,cAAc,CAAC,CAC5C,EAAE,CACN;qBACA,IAAI,CAAC,GAAG,CAAC;YACd,CAAC,CAAC,EAAE,CAAA;QACR,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,uHAAuH;YAC5J,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE;gBACxB,IAAI;gBACJ,SAAS,EAAE,GAAG,CAAC,SAAS;gBACxB,YAAY,EAAE,GAAG,CAAC,YAAY;gBAC9B,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,OAAO,EAAE,GAAG,CAAC,OAAO;gBACpB,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,GAAG,EAAE,GAAG,CAAC,GAAG;aACb,CAAC;YACJ,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC,KAAK,EAAE,EAAE,CACrC,YAAY,CAAC,KAAK,EAAE;gBAClB,IAAI;gBACJ,SAAS,EAAE,GAAG,CAAC,SAAS;gBACxB,YAAY,EAAE,GAAG,CAAC,YAAY;gBAC9B,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,OAAO,EAAE,GAAG,CAAC,OAAO;gBACpB,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,GAAG,EAAE,GAAG,CAAC,GAAG;aACb,CAAC,CACH,CAAA;QACL,MAAM,WAAW,GAAG,MAAM,CACxB,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAC1B,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,iBAAiB,EAAE,KAAK,cAAc,CACtD,EAAE,CAAC,CAAC,CAAC,CACP,CAAA;QACD,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,KAAK,CAAA;QAClC,MAAM,IAAI,GACR,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;YAC7D,CAAC,CAAC,UAAU,CACR,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE;gBACrB,IAAI;gBACJ,SAAS,EAAE,GAAG,CAAC,SAAS;gBACxB,YAAY,EAAE,GAAG,CAAC,YAAY;gBAC9B,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,OAAO,EAAE,GAAG,CAAC,OAAO;gBACpB,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,GAAG,EAAE,GAAG,CAAC,GAAG;aACb,CAAC,EACF,WAAW,CACZ;YACH,CAAC,CAAC,SAAS,CAAA;QACf,OAAO;YACL,GAAG,EAAE,OAAO,GAAG,OAAO,GAAG,WAAW;YACpC,MAAM;YACN,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,OAAO;YACP,IAAI;SACL,CAAA;IACH,CAAC;IAED,4BAA4B;IAC5B,KAAK,UAAU,OAAO,CAAC,GAAa;QAClC,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAA;QACjC,IAAI,CAAC;YACH,OAAO,iBAAiB,CAAC,QAAQ,CAAC,CAAA;QACpC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,QAAQ,CAAA;QACjB,CAAC;IACH,CAAC;IAED,SAAS,UAAU,CAAC,IAAS,EAAE,WAAoB;QACjD,QAAQ,WAAW,EAAE,CAAC;YACpB,KAAK,mCAAmC,CAAC,CAAC,CAAC;gBACzC,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;oBAC9C,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;yBACxB,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;wBACpB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;4BACzB,OAAO,KAAK;iCACT,GAAG,CACF,CAAC,CAAC,EAAE,EAAE,CACJ,GAAG,kBAAkB,CAAC,GAAG,CAAC,IAAI,kBAAkB,CAAC,CAAC,CAAC,EAAE,CACxD;iCACA,IAAI,CAAC,GAAG,CAAC,CAAA;wBACd,CAAC;6BAAM,CAAC;4BACN,OAAO,GAAG,kBAAkB,CAAC,GAAG,CAAC,IAAI,kBAAkB,CACrD,MAAM,CAAC,KAAK,CAAC,CACd,EAAE,CAAA;wBACL,CAAC;oBACH,CAAC,CAAC;yBACD,IAAI,CAAC,GAAG,CAAC,CAAA;gBACd,CAAC;gBACD,OAAO,EAAE,CAAA;YACX,CAAC;YACD,KAAK,qBAAqB,CAAC,CAAC,CAAC;gBAC3B,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAA;gBAC/B,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;oBAC9C,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;wBAC5C,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,KAAsB,CAAC,CAAA;oBAC3C,CAAC,CAAC,CAAA;gBACJ,CAAC;gBACD,OAAO,QAAQ,CAAA;YACjB,CAAC;YACD,KAAK,YAAY;gBACf,OAAO,MAAM,CAAC,IAAI,CAAC,CAAA;YACrB;gBACE,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;QAC/B,CAAC;IACH,CAAC;IAED,SAAS,UAAU,CAAC,IAAS;QAC3B,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC;YACjB,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE;YACvB,IAAI,EAAE;gBACJ,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI;gBAC5B,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;oBACV,IAAI;oBACJ,KAAK,EAAE,IAAI;oBACX,SAAS,EAAE,KAAK;iBACjB;aACF;SACF,CAAC,CAAA;QACF,GAAG,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YAC3C,YAAY,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,GAAG,CAAC,CAAA;QACjD,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,SAAS,QAAQ,CAAC,KAAU;QAC1B,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC;YACjB,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE;YACvB,IAAI,EAAE;gBACJ,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI;gBAC5B,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;oBACV,IAAI,EAAE,IAAI;oBACV,SAAS,EAAE,KAAK;oBAChB,KAAK,EAAE,KAAK;iBACb;aACF;SACF,CAAC,CAAA;QACF,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YACxC,YAAY,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,GAAG,CAAC,CAAA;QACjD,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,oDAAoD;IACpD,KAAK,UAAU,OAAO,CAAC,OAAmB;QACxC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC;YACjB,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE;YACvB,IAAI,EAAE;gBACJ,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI;gBAC5B,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;oBACV,IAAI,EAAE,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,IAAI;oBACzD,SAAS,EAAE,IAAI;oBACf,KAAK,EAAE,IAAI;iBACZ;aACF;SACF,CAAC,CAAA;QACF,IAAI,QAAQ,CAAA;QAEZ,IAAI,CAAC;YACH,IAAI,GAAG,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;gBACxB,QAAQ,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;oBAClC,MAAM,EAAE,OAAO,CAAC,MAAM;oBACtB,OAAO,EAAE,OAAO,CAAC,OAAO;oBACxB,IAAI,EAAE,OAAO,CAAC,IAAI;iBACnB,CAAC,CAAA;YACJ,CAAC;iBAAM,CAAC;gBACN,QAAQ,GAAG,MAAM,KAAK,CACpB,WAAW,kBAAkB,CAC3B,GAAG,CAAC,SAAS,CAAC,IAAI,CACnB,IAAI,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EACnC;oBACE,MAAM,EAAE,MAAM;oBACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;oBAC7B,MAAM,EAAE,GAAG,CAAC,WAAW;oBACvB,OAAO,EAAE;wBACP,cAAc,EAAE,kBAAkB;qBACnC;iBACF,CACF,CAAA;YACH,CAAC;YACD,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAA;YACpC,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;gBAChB,UAAU,CAAC,IAAI,CAAC,CAAA;YAClB,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,CAAA;YACZ,CAAC;QACH,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,QAAQ,CAAC,KAAK,CAAC,CAAA;YACf,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAC9B,CAAC;IACH,CAAC;IAED,wCAAwC;IACxC,SAAS,OAAO,CAAC,IAAgB;QAC/B,IAAI,OAAO,GAAG,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACrC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACrC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;oBAC9B,YAAY,CAAC,KAAK,CAAC,CAAA;gBACrB,CAAC;gBACD,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;oBACtB,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;gBACrC,CAAC,EAAE,GAAG,CAAC,QAAkB,CAAC,CAAA;YAC5B,CAAC,CAAC,CAAA;QACJ,CAAC;aAAM,IAAI,OAAO,GAAG,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC5C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC9B,OAAO,IAAI,OAAO,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;YAC9B,CAAC;YACD,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;gBACtB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;oBAC9B,YAAY,CAAC,KAAK,CAAC,CAAA;gBACrB,CAAC;YACH,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAA;YAChB,OAAO,OAAO,CAAC,IAAI,CAAC,CAAA;QACtB,CAAC;aAAM,CAAC;YACN,OAAO,OAAO,CAAC,IAAI,CAAC,CAAA;QACtB,CAAC;IACH,CAAC;IAED,IAAI,aAA6C,CAAA;IACjD,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;QAC7B,OAAO;YACL,GAAG,IAAI;YACP,IAAI,EAAE;gBACJ,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;gBACpB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI;oBACnC,IAAI,EAAE,IAAI;oBACV,SAAS,EACP,GAAG,CAAC,SAAS;wBACb,YAAY,CAAC,GAAG,CAAC,SAAS,EAAE;4BAC1B,IAAI,EAAE,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE;4BAC1B,SAAS,EAAE,GAAG,CAAC,SAAS;4BACxB,YAAY,EAAE,GAAG,CAAC,YAAY;4BAC9B,IAAI,EAAE,GAAG,CAAC,IAAI;4BACd,OAAO,EAAE,GAAG,CAAC,OAAO;4BACpB,MAAM,EAAE,GAAG,CAAC,MAAM;4BAClB,GAAG,EAAE,GAAG,CAAC,GAAG;yBACb,CAAC;wBACA,CAAC,CAAC,IAAI;wBACN,CAAC,CAAC,KAAK;oBACX,KAAK,EAAE,IAAI;iBACZ;aACF;SACF,CAAA;IACH,CAAC,CAAC,CAAA;IACF,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;QAClB,aAAa,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAA;QACzE,IAAI,QAAQ,GAAG,IAAI,CAAA;QACnB,aAAa,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE;YAC/B,IACE,GAAG,CAAC,SAAS;gBACb,YAAY,CAAC,GAAG,CAAC,SAAS,EAAE;oBAC1B,IAAI,EAAE,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE;oBAC1B,SAAS,EAAE,GAAG,CAAC,SAAS;oBACxB,YAAY,EAAE,GAAG,CAAC,YAAY;oBAC9B,IAAI,EAAE,GAAG,CAAC,IAAI;oBACd,OAAO,EAAE,GAAG,CAAC,OAAO;oBACpB,MAAM,EAAE,GAAG,CAAC,MAAM;oBAClB,GAAG,EAAE,GAAG,CAAC,GAAG;iBACb,CAAC,EACF,CAAC;gBACD,oDAAoD;gBACpD,oDAAoD;gBACpD,IAAI,QAAQ,IAAI,GAAG,CAAC,eAAe,EAAE,CAAC;oBACpC,QAAQ,GAAG,KAAK,CAAA;oBAChB,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;oBACtD,IAAI,MAAM,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;wBAC1B,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;4BACpC,4CAA4C;4BAC5C,mCAAmC;4BACnC,UAAU,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;wBAC5C,CAAC;6BAAM,CAAC;4BACN,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;wBACzB,CAAC;oBACH,CAAC;yBAAM,CAAC;wBACN,OAAO,CAAC,IAAI,CAAC,CAAA;oBACf,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,IAAI,CAAC,CAAA;gBACf,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;IACD,OAAO;QACL,KAAK,EAAE,CAAC,OAAoB,EAAE,EAAE;YAC9B,MAAM,UAAU,GAAG,gBAAgB,CAAC,GAAG,EAAE,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,CAAA;YAC9D,IAAI,IAAI,GAAG,UAAU,CAAC,IAAI,CAAA;YAC1B,mDAAmD;YACnD,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC;gBAC1B,GAAG,UAAU,CAAC,OAAO;gBACrB,GAAG,CAAC,OAAO,EAAE,OAAO,IAAI,EAAE,CAAC;aAC5B,CAAC,CAAA;YACF,IAAI,OAAO,EAAE,IAAI,EAAE,CAAC;gBAClB,IAAI,GAAG,UAAU,CACf,OAAO,CAAC,IAAI,EACZ,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,SAAS,CACzC,CAAA;YACH,CAAC;YACD,IAAI,IAAI,YAAY,QAAQ,EAAE,CAAC;gBAC7B,0DAA0D;gBAC1D,8DAA8D;gBAC9D,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,CAAA;YAChC,CAAC;YACD,MAAM,OAAO,GAAe;gBAC1B,GAAG,EAAE,OAAO,EAAE,GAAG,IAAI,UAAU,CAAC,GAAG;gBACnC,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,UAAU,CAAC,MAAM;gBAC5C,IAAI,EAAE,OAAO,EAAE,IAAI,IAAI,UAAU,CAAC,IAAI;gBACtC,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CACpC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,EACjD,EAAE,CACH;gBACD,IAAI;aACL,CAAA;YACD,OAAO,OAAO,CAAC,OAAO,CAAC,CAAA;QACzB,CAAC;QACD,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,EAAE,OAAO,EAAE;KACxC,CAAA;AACH,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { ApiRequest } from '@nordcraft/core/dist/api/apiTypes';
2
+ import type { RequireFields } from '@nordcraft/core/dist/types';
3
+ import type { ComponentContext, ContextApi } from '../types';
4
+ /**
5
+ * Set up an api v2 for a component.
6
+ */
7
+ export declare function createAPI(apiRequest: ApiRequest, ctx: ComponentContext): RequireFields<ContextApi, 'update' | 'triggerActions'>;