@sitecore-feaas/clientside 0.1.15 → 0.1.17

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 (94) hide show
  1. package/README.md +5 -5
  2. package/build/basic.js +10 -0
  3. package/build/basic.js.map +1 -0
  4. package/build/cloud.js +22 -0
  5. package/build/cloud.js.map +1 -0
  6. package/build/components/FEAASBase.js +229 -0
  7. package/build/components/FEAASBase.js.map +1 -0
  8. package/build/components/FEAASComponent.js +84 -0
  9. package/build/components/FEAASComponent.js.map +1 -0
  10. package/build/components/FEAASLoader.js +100 -0
  11. package/build/components/FEAASLoader.js.map +1 -0
  12. package/build/components/FEAASStylesheet.js +31 -0
  13. package/build/components/FEAASStylesheet.js.map +1 -0
  14. package/build/dom.js +301 -0
  15. package/build/dom.js.map +1 -0
  16. package/build/fetch.js +56 -0
  17. package/build/fetch.js.map +1 -0
  18. package/build/ui/FEAASContext.js +68 -0
  19. package/build/ui/FEAASContext.js.map +1 -0
  20. package/build/ui/FEAASEditor.js +180 -0
  21. package/build/ui/FEAASEditor.js.map +1 -0
  22. package/build/ui/FEAASPicker.js +81 -0
  23. package/build/ui/FEAASPicker.js.map +1 -0
  24. package/build/ui/index.js +5 -0
  25. package/build/ui/index.js.map +1 -0
  26. package/dist/browser/basic.esm.js +68 -0
  27. package/dist/browser/basic.esm.js.map +1 -0
  28. package/dist/browser/basic.js +5 -4
  29. package/dist/browser/basic.js.map +1 -0
  30. package/dist/browser/index.esm.js +73 -0
  31. package/dist/browser/index.esm.js.map +1 -0
  32. package/dist/browser/index.js +8 -7
  33. package/dist/browser/index.js.map +1 -0
  34. package/dist/node/basic.esm.js +66 -0
  35. package/dist/node/basic.esm.js.map +1 -0
  36. package/dist/node/basic.js +4 -1458
  37. package/dist/node/basic.js.map +1 -0
  38. package/dist/node/index.esm.js +71 -0
  39. package/dist/node/index.esm.js.map +1 -0
  40. package/dist/node/index.js +7 -1858
  41. package/dist/node/index.js.map +1 -0
  42. package/package.json +25 -36
  43. package/scripts/build.js +77 -0
  44. package/src/basic.ts +10 -1
  45. package/src/components/FEAASBase.tsx +4 -2
  46. package/src/components/FEAASComponent.ts +7 -2
  47. package/src/components/FEAASLoader.ts +2 -0
  48. package/src/components/FEAASStylesheet.ts +2 -1
  49. package/src/dom.ts +9 -2
  50. package/src/{components → ui}/FEAASContext.tsx +3 -5
  51. package/src/{components → ui}/FEAASEditor.tsx +4 -4
  52. package/src/{components → ui}/FEAASPicker.tsx +3 -4
  53. package/src/ui/index.ts +4 -0
  54. package/src/ui/tsconfig.json +22 -0
  55. package/test/render.ts +35 -1
  56. package/test/tsconfig.json +10 -0
  57. package/tsconfig.json +3 -3
  58. package/tsconfig.test.json +0 -0
  59. package/types/basic.d.ts +8 -1
  60. package/types/basic.d.ts.map +1 -0
  61. package/types/cloud.d.ts +1 -0
  62. package/types/cloud.d.ts.map +1 -0
  63. package/types/components/FEAASBase.d.ts +7 -1
  64. package/types/components/FEAASBase.d.ts.map +1 -0
  65. package/types/components/FEAASComponent.d.ts +7 -1
  66. package/types/components/FEAASComponent.d.ts.map +1 -0
  67. package/types/components/FEAASLoader.d.ts +2 -1
  68. package/types/components/FEAASLoader.d.ts.map +1 -0
  69. package/types/components/FEAASStylesheet.d.ts +7 -3
  70. package/types/components/FEAASStylesheet.d.ts.map +1 -0
  71. package/types/dom.d.ts +1 -0
  72. package/types/dom.d.ts.map +1 -0
  73. package/types/fetch.d.ts +1 -0
  74. package/types/fetch.d.ts.map +1 -0
  75. package/types/tsbuildinfo +1 -1
  76. package/types/tsbuildinfo_ui +1 -0
  77. package/types/{components → ui}/FEAASContext.d.ts +3 -2
  78. package/types/ui/FEAASContext.d.ts.map +1 -0
  79. package/types/{components → ui}/FEAASEditor.d.ts +3 -2
  80. package/types/ui/FEAASEditor.d.ts.map +1 -0
  81. package/types/{components → ui}/FEAASPicker.d.ts +3 -2
  82. package/types/ui/FEAASPicker.d.ts.map +1 -0
  83. package/types/ui/index.d.ts +5 -0
  84. package/types/ui/index.d.ts.map +1 -0
  85. package/dist/browser/basic.cjs +0 -67
  86. package/dist/browser/index.cjs +0 -72
  87. package/dist/node/basic.cjs +0 -1539
  88. package/dist/node/index.cjs +0 -1941
  89. package/src/components/index.tsx +0 -7
  90. package/src/index.ts +0 -4
  91. package/test/components.js +0 -11
  92. package/test/render.js +0 -688
  93. package/types/components/index.d.ts +0 -7
  94. package/types/index.d.ts +0 -4
package/build/dom.js ADDED
@@ -0,0 +1,301 @@
1
+ import { JSONPath } from 'jsonpath-plus';
2
+ import { fetchComponent, fetchStylesheet } from './cloud.js';
3
+ export function renderComponentElement(content, datasources) {
4
+ const wrapper = document.createElement('div');
5
+ wrapper.innerHTML = content;
6
+ const fragment = document.createDocumentFragment();
7
+ while (wrapper.firstChild) {
8
+ fragment.appendChild(wrapper.firstChild);
9
+ }
10
+ renderDOMElement(fragment, datasources);
11
+ return wrapper;
12
+ }
13
+ export function cleanCollectionBit(path) {
14
+ return path.replace(/(\[[^\]\[]+\]|\.\*)$/g, '');
15
+ }
16
+ export function normalizeCollectionScope(path) {
17
+ return cleanCollectionBit(path) + '.*';
18
+ }
19
+ function getDOMCollectionIndex(element) {
20
+ const datascope = element.getAttribute('data-path-scope');
21
+ var index = 0;
22
+ for (var p = element; (p = p.previousElementSibling);) {
23
+ if (p.getAttribute('data-path-scope') == datascope) {
24
+ index++;
25
+ }
26
+ }
27
+ return index;
28
+ }
29
+ function updateDOMClones(element, targetCount, config) {
30
+ const datascope = element.getAttribute('data-path-scope');
31
+ if (datascope == null) {
32
+ return;
33
+ }
34
+ var index = getDOMCollectionIndex(element);
35
+ if (index != 0) {
36
+ return;
37
+ }
38
+ const parentElement = element.parentElement;
39
+ if (parentElement == null) {
40
+ return;
41
+ }
42
+ /*dont remove first element, just hide it*/
43
+ if (targetCount == 0) {
44
+ element.style.display = 'none';
45
+ }
46
+ else if (element.style.display) {
47
+ element.style.display = '';
48
+ if (element.getAttribute('style') == '')
49
+ element.removeAttribute('style');
50
+ }
51
+ var count = index + 1;
52
+ var last = element;
53
+ for (var n = element; (n = n.nextElementSibling);) {
54
+ if (n.getAttribute('data-path-scope') == datascope) {
55
+ count++;
56
+ last = n;
57
+ }
58
+ }
59
+ /* add missing clones */
60
+ for (var i = count; i < targetCount; i++) {
61
+ parentElement.insertBefore(last.cloneNode(true), last.nextElementSibling);
62
+ }
63
+ /* remove excessive clones fron previous renders */
64
+ for (var i = Math.max(1, targetCount); i < count; i++) {
65
+ last = last.previousElementSibling;
66
+ parentElement.removeChild(last.nextElementSibling);
67
+ }
68
+ }
69
+ export function queryScopes(scopes, datapath, singleValue = false, json = scopes) {
70
+ var path = datapath;
71
+ /* find closest parent scope */
72
+ const keys = Object.keys(scopes).sort((b, a) => a.length - b.length);
73
+ for (const scope of keys) {
74
+ if (datapath.startsWith(scope) && 'ends with it') {
75
+ if (scope == datapath) {
76
+ if (singleValue) {
77
+ return scopes[scope];
78
+ }
79
+ else {
80
+ continue;
81
+ }
82
+ }
83
+ path = datapath.substring(scope.length + 1);
84
+ json = scopes[scope];
85
+ break;
86
+ }
87
+ }
88
+ var collection = JSONPath({
89
+ path: path,
90
+ json: json
91
+ });
92
+ // Try finding the value in catch-all scope identified by `_` key
93
+ if ((scopes === null || scopes === void 0 ? void 0 : scopes._) && Array.isArray(collection) && (collection === null || collection === void 0 ? void 0 : collection.length) == 0) {
94
+ collection = JSONPath({
95
+ path: path.replace(/^.*?\./, '_.'),
96
+ json: scopes
97
+ });
98
+ }
99
+ if (singleValue && Array.isArray(collection)) {
100
+ return collection[0];
101
+ }
102
+ else {
103
+ return collection;
104
+ }
105
+ }
106
+ export function setDOMAttribute(element, attribute, value, config) {
107
+ var _a;
108
+ if (!element)
109
+ return;
110
+ var target = element;
111
+ if (config === null || config === void 0 ? void 0 : config.processValue) {
112
+ value = config === null || config === void 0 ? void 0 : config.processValue(element, attribute, value);
113
+ }
114
+ var prop = attribute.replace('data-path-', '');
115
+ if (attribute == 'data-path-src') {
116
+ target = element.tagName == 'IMG' ? element : element.querySelector('img, video');
117
+ }
118
+ else if (attribute == 'data-path-href') {
119
+ target = element.querySelector('a') || element.closest('a');
120
+ }
121
+ else if (attribute == 'data-path-alt') {
122
+ target = element.querySelector('img, picture');
123
+ }
124
+ else if (attribute == 'data-path-hidden') {
125
+ value = !value ? true : null;
126
+ }
127
+ else if (attribute == 'data-path' || attribute == 'data-embed-html' || attribute == 'html') {
128
+ prop = 'innerHTML';
129
+ }
130
+ else if (attribute == 'data-embed-src') {
131
+ loadScript(element, value);
132
+ }
133
+ else if (attribute == 'data-path-attributes') {
134
+ const oldKeys = ((_a = element.getAttribute('data-attributes-keys')) === null || _a === void 0 ? void 0 : _a.split(',').filter(Boolean)) || [];
135
+ for (var property in value) {
136
+ var subvalue = value[property];
137
+ setDOMAttribute(element, property, typeof subvalue == 'object' && subvalue ? JSON.stringify(subvalue) : subvalue, config);
138
+ }
139
+ for (var i = 0; i < oldKeys.length; i++) {
140
+ if (value == null || !(oldKeys[i] in value)) {
141
+ setDOMAttribute(element, oldKeys[i], null, config);
142
+ }
143
+ }
144
+ setDOMAttribute(element, 'data-attributes-keys', Object.keys(value || {}).join(','));
145
+ return;
146
+ }
147
+ if (typeof value == 'boolean') {
148
+ value = value ? '' : null;
149
+ }
150
+ if (!target)
151
+ return;
152
+ var placeholder = String(element.getAttribute('data-path-placeholder') || target[prop]);
153
+ if (value != null) {
154
+ if (prop == 'innerHTML') {
155
+ if (target.innerHTML != value) {
156
+ target.innerHTML = value;
157
+ }
158
+ }
159
+ else {
160
+ if (target.getAttribute(prop) != value) {
161
+ target.setAttribute(prop, value);
162
+ }
163
+ }
164
+ }
165
+ else {
166
+ if (prop == 'innerHTML') {
167
+ target.innerHTML = placeholder;
168
+ }
169
+ else {
170
+ target.removeAttribute(prop);
171
+ }
172
+ }
173
+ }
174
+ export function observeDOMElement(element) {
175
+ const observer = new element.ownerDocument.defaultView.MutationObserver((changes) => {
176
+ changes.forEach((change) => {
177
+ const target = change.target;
178
+ const src = target.getAttribute('data-embed-src');
179
+ if (src) {
180
+ loadScript(target, src);
181
+ }
182
+ if (change.addedNodes) {
183
+ change.addedNodes.forEach((node) => {
184
+ if (node.nodeType == 1)
185
+ autoloadScripts(node, false);
186
+ });
187
+ }
188
+ });
189
+ });
190
+ observer.observe(element, { attributes: true, subtree: true, childList: true });
191
+ return observer;
192
+ }
193
+ export function autoloadScripts(element, observe = true) {
194
+ const embeds = element.querySelectorAll('[data-embed-src]');
195
+ for (var i = 0; i < embeds.length; i++) {
196
+ const embed = embeds[i];
197
+ loadScript(embed, embed.getAttribute('data-embed-src'));
198
+ }
199
+ if (observe)
200
+ return observeDOMElement(element);
201
+ }
202
+ export function loadScript(element, src) {
203
+ for (var p = element; p; p = p.parentElement) {
204
+ if (!p.parentElement) {
205
+ const scripts = p.querySelectorAll('script');
206
+ for (var i = 0; i < scripts.length; i++) {
207
+ if (scripts[i].getAttribute('src') == src) {
208
+ return true;
209
+ }
210
+ }
211
+ if (p.tagName == 'HTML')
212
+ p = p.querySelector('head') || p;
213
+ const script = p.ownerDocument.createElement('script');
214
+ script.type = 'module';
215
+ script.src = src;
216
+ p.appendChild(script);
217
+ break;
218
+ }
219
+ }
220
+ }
221
+ // order in which attributes are proccesed. Rightmost are more important
222
+ var sortOrder = ['data-attributes-keys', 'data-path-attributes', 'data-path-scope'];
223
+ export function renderDOMElement(input, datascopes, config, isNested) {
224
+ var _a, _b, _c;
225
+ const element = input;
226
+ if (!isNested) {
227
+ datascopes = ((_a = config === null || config === void 0 ? void 0 : config.processData) === null || _a === void 0 ? void 0 : _a.call(config, element, datascopes)) || datascopes;
228
+ }
229
+ if (element.nodeType == 1) {
230
+ const datascope = element.getAttribute('data-path-scope');
231
+ if (datascope) {
232
+ const index = getDOMCollectionIndex(element);
233
+ const collection = queryScopes(datascopes, datascope, false) || [];
234
+ if (index == 0) {
235
+ updateDOMClones(element, ((_b = config === null || config === void 0 ? void 0 : config.shouldRepeat) === null || _b === void 0 ? void 0 : _b.call(config, element, collection)) === false ? 1 : collection.length, config);
236
+ }
237
+ datascopes = {
238
+ ...datascopes,
239
+ [normalizeCollectionScope(datascope)]: collection[index]
240
+ };
241
+ }
242
+ const attrs = Array.prototype.slice.call(element.attributes).sort((a, b) => {
243
+ return sortOrder.indexOf(a.name) - sortOrder.indexOf(b.name);
244
+ });
245
+ for (var i = 0; i < attrs.length; i++) {
246
+ const { name, value: datapath } = attrs[i];
247
+ if (name.startsWith('data-path') && name != 'data-path-scope') {
248
+ setDOMAttribute(element, name, queryScopes(datascopes, datapath, true), config);
249
+ }
250
+ if (name == 'data-embed-src') {
251
+ setDOMAttribute(element, name, element.getAttribute(name), config);
252
+ }
253
+ }
254
+ }
255
+ for (var i = 0; i < element.children.length; i++) {
256
+ renderDOMElement(element.children[i], datascopes, config, true);
257
+ }
258
+ if (!isNested) {
259
+ (_c = config === null || config === void 0 ? void 0 : config.onRender) === null || _c === void 0 ? void 0 : _c.call(config, element, datascopes);
260
+ }
261
+ return element;
262
+ }
263
+ export function renderDOMContent(root, template, data, config) {
264
+ var _a;
265
+ const newTemplate = ((_a = config === null || config === void 0 ? void 0 : config.processTemplate) === null || _a === void 0 ? void 0 : _a.call(config, root, template, data)) || template;
266
+ root.innerHTML = newTemplate;
267
+ root.classList.add('-feaas');
268
+ return renderDOMElement(root, data, config);
269
+ }
270
+ export function renderStylesheet(props, style) {
271
+ renderStylesheetPromise(props, (style || (style = document.createElement('style'))));
272
+ return style;
273
+ }
274
+ export function renderStylesheetPromise(props, style) {
275
+ style || (style = document.createElement('style'));
276
+ return fetchStylesheet(props, (cssText) => {
277
+ style.textContent = cssText;
278
+ }).then(() => style);
279
+ }
280
+ export function renderComponent(props, root) {
281
+ renderComponentPromise(props, (root || (root = document.createElement('div'))));
282
+ return root;
283
+ }
284
+ export async function renderComponentPromise(props, root) {
285
+ root || (root = document.createElement('div'));
286
+ if (!root.childNodes.length) {
287
+ if ('template' in props) {
288
+ return renderDOMContent(root, props.template, props.data, props);
289
+ }
290
+ else {
291
+ return fetchComponent(props, (template) => {
292
+ return renderDOMContent(root, template, props.data, props);
293
+ }).then(() => root);
294
+ }
295
+ /* update element with new data */
296
+ }
297
+ else {
298
+ return renderDOMElement(root, props.data, props);
299
+ }
300
+ }
301
+ //# sourceMappingURL=dom.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dom.js","sourceRoot":"","sources":["../src/dom.ts"],"names":[],"mappings":"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"}
package/build/fetch.js ADDED
@@ -0,0 +1,56 @@
1
+ /* Utility to cache-bust static files.
2
+
3
+ It handles multiple situations:
4
+
5
+ 1. Initial request, valid response
6
+ 2. Initial request, invalid response
7
+ 2. Initial request, missing response
8
+ 3. Cached request, valid response (1 extra head request)
9
+ 4. Cached request, invalid response, valid refetch (2 fetches + 1 head)
10
+ 5. Cached request, invalid response, invalid refetch (2 fetches + 1 head)
11
+
12
+ It works as promise, but also accepts callback to use cached blobs mid-flight and have access to headers.
13
+ Any network errors will not caught.
14
+ Function throws when unable to fetch valid response.
15
+
16
+ */
17
+ export async function fetchAndRevalidate(url, options, validator, callback) {
18
+ // make request as usual, see if there's cached version of an asset
19
+ const date = new Date();
20
+ const initialResponse = await fetch(url, options);
21
+ if (!initialResponse.ok)
22
+ throw new Error('Fetch failed');
23
+ const responseDate = new Date(initialResponse.headers.get('date'));
24
+ var response = initialResponse;
25
+ callback(initialResponse, 'cached');
26
+ // see if response was pulled from cache
27
+ if (responseDate < date) {
28
+ // check if response was stale by sending quick HEAD reque st busting cache
29
+ const freshHeadResponse = await fetch(url + '?' + Math.random(), {
30
+ ...options,
31
+ method: 'HEAD',
32
+ cache: 'no-cache'
33
+ });
34
+ // there's a newer version of the file that we may fetch
35
+ if (freshHeadResponse.headers.get('last-modified') != initialResponse.headers.get('last-modified')) {
36
+ // check if re-fetching is even necessary
37
+ if (validator(freshHeadResponse) === false) {
38
+ //callback('stale', freshHeadResponse)
39
+ throw new Error('Response is stale');
40
+ }
41
+ // otherwise the new resource has to be re-fetched
42
+ response = await fetch(url, {
43
+ ...options,
44
+ cache: 'reload'
45
+ });
46
+ }
47
+ }
48
+ if (validator(response) === false) {
49
+ throw new Error('Response is not valid');
50
+ }
51
+ if (initialResponse !== response) {
52
+ callback(response, 'valid');
53
+ }
54
+ return response;
55
+ }
56
+ //# sourceMappingURL=fetch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch.js","sourceRoot":"","sources":["../src/fetch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;EAeE;AACF,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,GAAgC,EAChC,OAAoC,EACpC,SAA0C,EAC1C,QAAkE;IAElE,mEAAmE;IACnE,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAA;IACvB,MAAM,eAAe,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;IACjD,IAAI,CAAC,eAAe,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAA;IACxD,MAAM,YAAY,GAAG,IAAI,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAA;IAClE,IAAI,QAAQ,GAAG,eAAe,CAAA;IAC9B,QAAQ,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAA;IAEnC,wCAAwC;IACxC,IAAI,YAAY,GAAG,IAAI,EAAE;QACvB,2EAA2E;QAC3E,MAAM,iBAAiB,GAAG,MAAM,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE;YAC/D,GAAG,OAAO;YACV,MAAM,EAAE,MAAM;YACd,KAAK,EAAE,UAAU;SAClB,CAAC,CAAA;QAEF,wDAAwD;QACxD,IAAI,iBAAiB,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE;YAClG,yCAAyC;YACzC,IAAI,SAAS,CAAC,iBAAiB,CAAC,KAAK,KAAK,EAAE;gBAC1C,sCAAsC;gBACtC,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAA;aACrC;YAED,kDAAkD;YAClD,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;gBAC1B,GAAG,OAAO;gBACV,KAAK,EAAE,QAAQ;aAChB,CAAC,CAAA;SACH;KACF;IAED,IAAI,SAAS,CAAC,QAAQ,CAAC,KAAK,KAAK,EAAE;QACjC,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAA;KACzC;IACD,IAAI,eAAe,KAAK,QAAQ,EAAE;QAChC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;KAC5B;IAED,OAAO,QAAQ,CAAA;AACjB,CAAC"}
@@ -0,0 +1,68 @@
1
+ import { FEAASBase } from '../components/FEAASBase.js';
2
+ export function FEAASContextProps(element = this) {
3
+ var _a, _b, _c, _d;
4
+ return {
5
+ library: element === null || element === void 0 ? void 0 : element.getAttribute('library'),
6
+ src: (_a = element === null || element === void 0 ? void 0 : element.getAttribute('src')) !== null && _a !== void 0 ? _a : '/assets/context.js',
7
+ frontend: (_b = element === null || element === void 0 ? void 0 : element.getAttribute('frontend')) !== null && _b !== void 0 ? _b : 'https://components.sitecoreclud.io',
8
+ backend: (_c = element === null || element === void 0 ? void 0 : element.getAttribute('backend')) !== null && _c !== void 0 ? _c : 'https://components-api.sitecoreclud.io',
9
+ cdn: (_d = element === null || element === void 0 ? void 0 : element.getAttribute('cdn')) !== null && _d !== void 0 ? _d : 'https://feaascompontsapiprod.blob.core.windows.net',
10
+ getToken: null
11
+ };
12
+ }
13
+ /**
14
+ * Context provides shared parameters and react providers for its nested elements. It loads lazily once any of its
15
+ * nested components load. Just placing it on the page without any consumers does not impose any overhead.
16
+ */
17
+ export class FEAASContext extends FEAASBase {
18
+ getProps() {
19
+ return FEAASContextProps(this);
20
+ }
21
+ load() {
22
+ return import(/* @vite-ignore */ /* webpackIgnore: true */ this.formatURL(this.props.src, this.props.frontend));
23
+ }
24
+ // Remove global styles
25
+ getTheme(theme) {
26
+ return theme;
27
+ }
28
+ getRoot() {
29
+ return this.shadowRoot || this.attachShadow({ mode: 'open' });
30
+ }
31
+ getReactRoot() {
32
+ if (!this.reactRoot) {
33
+ this.reactRoot = document.createElement('div');
34
+ this.getRoot().appendChild(this.reactRoot);
35
+ }
36
+ return this.reactRoot;
37
+ }
38
+ /** Pull in children FEAAS react elements into the shadow DOM so they receieve the styles */
39
+ nestedCallback(event) {
40
+ super.nestedCallback(event);
41
+ const target = event.composedPath()[0];
42
+ if (target.parentNode != this.getRoot()) {
43
+ this.getRoot().appendChild(target);
44
+ }
45
+ }
46
+ renderReact({ children, library }, { AppContext, Chakra: { Button, Tooltip }, React }) {
47
+ const portalProps = {
48
+ containerRef: { current: this.getRoot() }
49
+ };
50
+ Tooltip.defaultProps = {
51
+ hasArrow: true,
52
+ placement: 'top',
53
+ portalProps
54
+ };
55
+ return (React.createElement(AppContext, { libraryId: this.props.library, container: this.getRoot(), getToken: this.props.getToken, getTheme: this.getTheme, modalProps: {
56
+ portalProps
57
+ }, chakraProps: {
58
+ cssVarsRoot: ':host',
59
+ resetCSS: true,
60
+ toastOptions: {
61
+ portalProps
62
+ }
63
+ } }, children));
64
+ }
65
+ }
66
+ FEAASContext.observedAttributes = ['library', 'component', 'version', 'revision', 'hostname', 'template'];
67
+ FEAASContext.register('feaas-context');
68
+ //# sourceMappingURL=FEAASContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FEAASContext.js","sourceRoot":"","sources":["../../src/ui/FEAASContext.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,180 @@
1
+ import { FEAASBase } from '../components/FEAASBase.js';
2
+ export function getFramePosition(element) {
3
+ let positions = [];
4
+ if (element) {
5
+ let currentWindow = element.ownerDocument.defaultView;
6
+ let currentParentWindow;
7
+ let rect;
8
+ while (currentWindow !== window.top) {
9
+ currentParentWindow = currentWindow.parent;
10
+ for (let idx = 0; idx < currentParentWindow.frames.length; idx++)
11
+ if (currentParentWindow.frames[idx] === currentWindow) {
12
+ for (let frameElement of currentParentWindow.document.getElementsByTagName('iframe')) {
13
+ if (frameElement.contentWindow === currentWindow) {
14
+ rect = frameElement.getBoundingClientRect();
15
+ const style = frameElement.contentWindow.getComputedStyle(frameElement);
16
+ positions.push({
17
+ left: rect.left + parseInt(style.borderLeftWidth),
18
+ top: rect.top + parseInt(style.borderTopWidth)
19
+ });
20
+ }
21
+ }
22
+ currentWindow = currentParentWindow;
23
+ break;
24
+ }
25
+ }
26
+ }
27
+ return positions.reduce((accumulator, currentValue) => {
28
+ return {
29
+ left: accumulator.left + currentValue.left,
30
+ top: accumulator.top + currentValue.top
31
+ };
32
+ }, { left: 0, top: 0 });
33
+ }
34
+ export function FEAASEditorProps(element = this) {
35
+ var _a;
36
+ return {
37
+ context: HTMLElement,
38
+ frontend: element === null || element === void 0 ? void 0 : element.getContextAttribute('frontend'),
39
+ src: (_a = element === null || element === void 0 ? void 0 : element.getAttribute('src')) !== null && _a !== void 0 ? _a : '/assets/editor.js',
40
+ library: element === null || element === void 0 ? void 0 : element.getAttribute('library'),
41
+ component: element === null || element === void 0 ? void 0 : element.getAttribute('component'),
42
+ version: element === null || element === void 0 ? void 0 : element.getAttribute('version'),
43
+ revision: (element === null || element === void 0 ? void 0 : element.getAttribute('revision')) || 'saved',
44
+ hidden: (element === null || element === void 0 ? void 0 : element.getAttribute('hidden')) != null,
45
+ for: element === null || element === void 0 ? void 0 : element.getAttribute('for')
46
+ };
47
+ }
48
+ export class FEAASEditor extends FEAASBase {
49
+ constructor() {
50
+ super(...arguments);
51
+ this.framePoint = { top: 0, left: 0 };
52
+ this.wrapperRect = { top: 0, left: 0, width: 0, height: 0 };
53
+ this.bodyRect = { top: 0, left: 0, width: 0, height: 0 };
54
+ this.getTarget = () => {
55
+ return document.querySelector('iframe').contentWindow.document.getElementById(this.props.for);
56
+ };
57
+ this.onChromeMeasureElement = (element, rect) => {
58
+ if (rect == null) {
59
+ rect = element.getBoundingClientRect();
60
+ }
61
+ if (element.ownerDocument == document) {
62
+ return {
63
+ left: rect.left - this.bodyRect.left,
64
+ top: rect.top - this.bodyRect.top,
65
+ width: rect.width,
66
+ height: rect.height
67
+ };
68
+ }
69
+ return {
70
+ left: rect.left + this.framePoint.left - this.bodyRect.left,
71
+ top: rect.top + this.framePoint.top - this.bodyRect.top,
72
+ width: rect.width,
73
+ height: rect.height
74
+ };
75
+ };
76
+ this.onBeforeMeasure = (refs) => {
77
+ if (refs.memoized.focusable)
78
+ this.framePoint = getFramePosition(refs.memoized.focusable);
79
+ this.wrapperRect = this.wrapper.getBoundingClientRect();
80
+ this.bodyRect = this.wrapper.ownerDocument.body.parentElement.getBoundingClientRect();
81
+ };
82
+ this.onMeasure = () => { };
83
+ this.onPosition = ({ focusable, root }) => {
84
+ const chrome = this.wrapper.querySelector('.editor-chrome');
85
+ const absolute = this.wrapper.querySelector('.ui.overlays');
86
+ if (focusable) {
87
+ const topbarHeight = 64;
88
+ const padding = 16;
89
+ chrome.style.width = focusable.width + padding * 2 + 'px';
90
+ chrome.style.height = focusable.height + padding * 1 + topbarHeight + 'px';
91
+ chrome.style.left = focusable.left - padding + 'px';
92
+ chrome.style.top = focusable.top - topbarHeight + 'px';
93
+ if (absolute) {
94
+ absolute.style.left = root.left + 'px';
95
+ absolute.style.top = root.top + 'px';
96
+ }
97
+ }
98
+ else {
99
+ chrome.style.left = '-1000px';
100
+ chrome.style.top = '-1000px';
101
+ // wrapper.style.left = '-1000px'
102
+ // wrapper.style.top = '-1000px'
103
+ }
104
+ };
105
+ }
106
+ getProps() {
107
+ return FEAASEditorProps(this);
108
+ }
109
+ load() {
110
+ return import(/* @vite-ignore */ /* webpackIgnore: true */ this.formatURL(this.props.src, this.props.frontend));
111
+ }
112
+ /*
113
+ getRoot(): HTMLElement | FEAASBase<any, any> | ShadowRoot {
114
+ return this.shadowRoot || this.attachShadow({ mode: 'open' })
115
+ }
116
+ reactRoot: HTMLDivElement
117
+ getReactRoot() {
118
+ if (!this.reactRoot) {
119
+ this.reactRoot = document.createElement('div')
120
+ this.reactRoot.className = 'react-root'
121
+ this.getRoot().appendChild(this.reactRoot)
122
+ }
123
+ return this.reactRoot
124
+ }
125
+ */
126
+ renderReact({ children, component: componentId, version: versionId }, { Editor, VersionStatusList, Version, EditorUIUndo, EditorUIMode, React: { useEffect, useMemo, useState }, Chakra: { HStack, Box }, Chrome, ReactDOM, useSDK, useSlots, useModelObserver }) {
127
+ if (!this.payload)
128
+ return;
129
+ const { sdk } = useSDK();
130
+ const [component, setComponent] = useState();
131
+ const library = sdk.library;
132
+ useEffect(() => {
133
+ return setComponent(library.components.getItem(componentId));
134
+ }, [componentId, library]);
135
+ useEffect(() => {
136
+ component === null || component === void 0 ? void 0 : component.versions.fetch();
137
+ }, [component]);
138
+ const target = useMemo(this.getTarget, [this.props.for]);
139
+ const observedVersions = useModelObserver(component === null || component === void 0 ? void 0 : component.versions);
140
+ const versions = useMemo(() => {
141
+ return (observedVersions === null || observedVersions === void 0 ? void 0 : observedVersions.filter((v) => v.id == versionId || !versionId)) || [];
142
+ }, [observedVersions]);
143
+ if (!component)
144
+ return;
145
+ return useSlots(children, ({ picker, children }) => (React.createElement(Box, { ref: (el) => (this.wrapper = el) },
146
+ React.createElement(Box, { className: 'editor-wrapper', position: 'absolute', left: 0, top: 0 },
147
+ React.createElement(Editor, { datasources: sdk.datasources, sdk: sdk, library: sdk.library, component: component, versions: versions, context: {
148
+ onChromeMeasure: this.onMeasure,
149
+ onChromeBeforeMeasure: this.onBeforeMeasure,
150
+ onChromeMeasureElement: this.onChromeMeasureElement,
151
+ onChromePosition: this.onPosition
152
+ } }, ({ editor, status, isArchivedDisplayed }) => ({
153
+ after: children,
154
+ picker: picker,
155
+ chrome: editor && React.createElement(Chrome, null),
156
+ children: component
157
+ .reduceVersionRevisions(versions)
158
+ .filter((snapshot) => {
159
+ var _a;
160
+ return isArchivedDisplayed || !((_a = (snapshot.saved || snapshot.draft)) === null || _a === void 0 ? void 0 : _a.deletedAt);
161
+ })
162
+ .map((snapshot, index) => (React.createElement(Box, { key: snapshot.head.id, position: 'absolute', left: 0, top: 0, className: 'editor-chrome', p: 4, boxShadow: '2xl', pointerEvents: 'none' },
163
+ React.createElement(Box, { className: 'borders', pointerEvents: 'none', left: 0, width: '4', top: 0, bottom: 0, backdropFilter: 'blur(2px)', background: 'rgb(244 244 244 / 80%)', position: 'absolute' }),
164
+ React.createElement(Box, { className: 'borders', pointerEvents: 'none', right: 0, width: '4', top: 0, bottom: 0, backdropFilter: 'blur(2px)', background: 'rgb(244 244 244 / 80%)', position: 'absolute' }),
165
+ React.createElement(Box, { className: 'borders', pointerEvents: 'none', top: 0, height: '16', left: 0, right: 0, backdropFilter: 'blur(2px)', background: 'rgb(244 244 244 / 80%)', position: 'absolute' }),
166
+ React.createElement(Box, { className: 'borders', pointerEvents: 'none', bottom: 0, height: '4', left: 0, right: 0, backdropFilter: 'blur(2px)', background: 'rgb(244 244 244 / 80%)', position: 'absolute' }),
167
+ React.createElement(Version, { version: snapshot.head, node: target }, {
168
+ left: (React.createElement(HStack, { justifyContent: 'space-between' },
169
+ React.createElement(EditorUIUndo, { size: 'sm', editor: status == 'ready' ? editor : null }),
170
+ React.createElement(EditorUIMode, { size: 'sm' }))),
171
+ middle: React.createElement(VersionStatusList, null)
172
+ }))))
173
+ }))))));
174
+ }
175
+ isReadyToLoad() {
176
+ return this.props.component != null && this.props.version != null;
177
+ }
178
+ }
179
+ FEAASEditor.register('feaas-editor');
180
+ //# sourceMappingURL=FEAASEditor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FEAASEditor.js","sourceRoot":"","sources":["../../src/ui/FEAASEditor.tsx"],"names":[],"mappings":"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"}