@sitecore-feaas/clientside 0.1.14 → 0.1.16
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.
- package/README.md +5 -5
- package/build/basic.js +11 -0
- package/build/basic.js.map +1 -0
- package/build/cloud.js +22 -0
- package/build/cloud.js.map +1 -0
- package/build/components/FEAASBase.js +229 -0
- package/build/components/FEAASBase.js.map +1 -0
- package/build/components/FEAASComponent.js +84 -0
- package/build/components/FEAASComponent.js.map +1 -0
- package/build/components/FEAASLoader.js +100 -0
- package/build/components/FEAASLoader.js.map +1 -0
- package/build/components/FEAASStylesheet.js +31 -0
- package/build/components/FEAASStylesheet.js.map +1 -0
- package/build/dom.js +294 -0
- package/build/dom.js.map +1 -0
- package/build/fetch.js +56 -0
- package/build/fetch.js.map +1 -0
- package/build/ui/FEAASContext.js +68 -0
- package/build/ui/FEAASContext.js.map +1 -0
- package/build/ui/FEAASEditor.js +180 -0
- package/build/ui/FEAASEditor.js.map +1 -0
- package/build/ui/FEAASPicker.js +81 -0
- package/build/ui/FEAASPicker.js.map +1 -0
- package/build/ui/index.js +5 -0
- package/build/ui/index.js.map +1 -0
- package/dist/browser/basic.esm.js +68 -0
- package/dist/browser/basic.esm.js.map +1 -0
- package/dist/browser/basic.js +5 -4
- package/dist/browser/basic.js.map +1 -0
- package/dist/browser/index.esm.js +73 -0
- package/dist/browser/index.esm.js.map +1 -0
- package/dist/browser/index.js +8 -7
- package/dist/browser/index.js.map +1 -0
- package/dist/node/basic.esm.js +66 -0
- package/dist/node/basic.esm.js.map +1 -0
- package/dist/node/basic.js +4 -1458
- package/dist/node/basic.js.map +1 -0
- package/dist/node/index.esm.js +71 -0
- package/dist/node/index.esm.js.map +1 -0
- package/dist/node/index.js +7 -1853
- package/dist/node/index.js.map +1 -0
- package/package.json +25 -34
- package/scripts/build.js +76 -0
- package/src/basic.ts +11 -1
- package/src/components/FEAASBase.tsx +4 -2
- package/src/components/FEAASComponent.ts +7 -2
- package/src/components/FEAASLoader.ts +2 -0
- package/src/components/FEAASStylesheet.ts +2 -1
- package/src/{components → ui}/FEAASContext.tsx +3 -5
- package/src/{components → ui}/FEAASEditor.tsx +4 -4
- package/src/{components → ui}/FEAASPicker.tsx +11 -6
- package/src/ui/index.ts +4 -0
- package/src/ui/tsconfig.json +22 -0
- package/test/render.ts +0 -1
- package/tsconfig.json +3 -3
- package/tsconfig.test.json +0 -0
- package/types/basic.d.ts +8 -1
- package/types/basic.d.ts.map +1 -0
- package/types/cloud.d.ts +1 -0
- package/types/cloud.d.ts.map +1 -0
- package/types/components/FEAASBase.d.ts +7 -1
- package/types/components/FEAASBase.d.ts.map +1 -0
- package/types/components/FEAASComponent.d.ts +7 -1
- package/types/components/FEAASComponent.d.ts.map +1 -0
- package/types/components/FEAASLoader.d.ts +2 -1
- package/types/components/FEAASLoader.d.ts.map +1 -0
- package/types/components/FEAASStylesheet.d.ts +5 -1
- package/types/components/FEAASStylesheet.d.ts.map +1 -0
- package/types/dom.d.ts +1 -0
- package/types/dom.d.ts.map +1 -0
- package/types/fetch.d.ts +1 -0
- package/types/fetch.d.ts.map +1 -0
- package/types/tsbuildinfo +1 -1
- package/types/tsbuildinfo_ui +1 -0
- package/types/{components → ui}/FEAASContext.d.ts +3 -2
- package/types/ui/FEAASContext.d.ts.map +1 -0
- package/types/{components → ui}/FEAASEditor.d.ts +3 -2
- package/types/ui/FEAASEditor.d.ts.map +1 -0
- package/types/{components → ui}/FEAASPicker.d.ts +3 -2
- package/types/ui/FEAASPicker.d.ts.map +1 -0
- package/types/ui/index.d.ts +5 -0
- package/types/ui/index.d.ts.map +1 -0
- package/dist/browser/basic.cjs +0 -67
- package/dist/browser/index.cjs +0 -72
- package/dist/node/basic.cjs +0 -1539
- package/dist/node/index.cjs +0 -1936
- package/src/components/index.tsx +0 -7
- package/src/index.ts +0 -4
- package/test/components.js +0 -11
- package/test/render.js +0 -688
- package/types/components/index.d.ts +0 -7
- package/types/index.d.ts +0 -4
package/build/dom.js
ADDED
|
@@ -0,0 +1,294 @@
|
|
|
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
|
+
const collection = JSONPath({
|
|
89
|
+
path: path,
|
|
90
|
+
json: json
|
|
91
|
+
});
|
|
92
|
+
if (singleValue && collection && Array.isArray(collection)) {
|
|
93
|
+
return collection[0];
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
return collection;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
export function setDOMAttribute(element, attribute, value, config) {
|
|
100
|
+
var _a;
|
|
101
|
+
if (!element)
|
|
102
|
+
return;
|
|
103
|
+
var target = element;
|
|
104
|
+
if (config === null || config === void 0 ? void 0 : config.processValue) {
|
|
105
|
+
value = config === null || config === void 0 ? void 0 : config.processValue(element, attribute, value);
|
|
106
|
+
}
|
|
107
|
+
var prop = attribute.replace('data-path-', '');
|
|
108
|
+
if (attribute == 'data-path-src') {
|
|
109
|
+
target = element.tagName == 'IMG' ? element : element.querySelector('img, video');
|
|
110
|
+
}
|
|
111
|
+
else if (attribute == 'data-path-href') {
|
|
112
|
+
target = element.querySelector('a') || element.closest('a');
|
|
113
|
+
}
|
|
114
|
+
else if (attribute == 'data-path-alt') {
|
|
115
|
+
target = element.querySelector('img, picture');
|
|
116
|
+
}
|
|
117
|
+
else if (attribute == 'data-path-hidden') {
|
|
118
|
+
value = !value ? true : null;
|
|
119
|
+
}
|
|
120
|
+
else if (attribute == 'data-path' || attribute == 'data-embed-html' || attribute == 'html') {
|
|
121
|
+
prop = 'innerHTML';
|
|
122
|
+
}
|
|
123
|
+
else if (attribute == 'data-embed-src') {
|
|
124
|
+
loadScript(element, value);
|
|
125
|
+
}
|
|
126
|
+
else if (attribute == 'data-path-attributes') {
|
|
127
|
+
const oldKeys = ((_a = element.getAttribute('data-attributes-keys')) === null || _a === void 0 ? void 0 : _a.split(',').filter(Boolean)) || [];
|
|
128
|
+
for (var property in value) {
|
|
129
|
+
var subvalue = value[property];
|
|
130
|
+
setDOMAttribute(element, property, typeof subvalue == 'object' && subvalue ? JSON.stringify(subvalue) : subvalue, config);
|
|
131
|
+
}
|
|
132
|
+
for (var i = 0; i < oldKeys.length; i++) {
|
|
133
|
+
if (value == null || !(oldKeys[i] in value)) {
|
|
134
|
+
setDOMAttribute(element, oldKeys[i], null, config);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
setDOMAttribute(element, 'data-attributes-keys', Object.keys(value || {}).join(','));
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
if (typeof value == 'boolean') {
|
|
141
|
+
value = value ? '' : null;
|
|
142
|
+
}
|
|
143
|
+
if (!target)
|
|
144
|
+
return;
|
|
145
|
+
var placeholder = String(element.getAttribute('data-path-placeholder') || target[prop]);
|
|
146
|
+
if (value != null) {
|
|
147
|
+
if (prop == 'innerHTML') {
|
|
148
|
+
if (target.innerHTML != value) {
|
|
149
|
+
target.innerHTML = value;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
else {
|
|
153
|
+
if (target.getAttribute(prop) != value) {
|
|
154
|
+
target.setAttribute(prop, value);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
else {
|
|
159
|
+
if (prop == 'innerHTML') {
|
|
160
|
+
target.innerHTML = placeholder;
|
|
161
|
+
}
|
|
162
|
+
else {
|
|
163
|
+
target.removeAttribute(prop);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
export function observeDOMElement(element) {
|
|
168
|
+
const observer = new element.ownerDocument.defaultView.MutationObserver((changes) => {
|
|
169
|
+
changes.forEach((change) => {
|
|
170
|
+
const target = change.target;
|
|
171
|
+
const src = target.getAttribute('data-embed-src');
|
|
172
|
+
if (src) {
|
|
173
|
+
loadScript(target, src);
|
|
174
|
+
}
|
|
175
|
+
if (change.addedNodes) {
|
|
176
|
+
change.addedNodes.forEach((node) => {
|
|
177
|
+
if (node.nodeType == 1)
|
|
178
|
+
autoloadScripts(node, false);
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
});
|
|
182
|
+
});
|
|
183
|
+
observer.observe(element, { attributes: true, subtree: true, childList: true });
|
|
184
|
+
return observer;
|
|
185
|
+
}
|
|
186
|
+
export function autoloadScripts(element, observe = true) {
|
|
187
|
+
const embeds = element.querySelectorAll('[data-embed-src]');
|
|
188
|
+
for (var i = 0; i < embeds.length; i++) {
|
|
189
|
+
const embed = embeds[i];
|
|
190
|
+
loadScript(embed, embed.getAttribute('data-embed-src'));
|
|
191
|
+
}
|
|
192
|
+
if (observe)
|
|
193
|
+
return observeDOMElement(element);
|
|
194
|
+
}
|
|
195
|
+
export function loadScript(element, src) {
|
|
196
|
+
for (var p = element; p; p = p.parentElement) {
|
|
197
|
+
if (!p.parentElement) {
|
|
198
|
+
const scripts = p.querySelectorAll('script');
|
|
199
|
+
for (var i = 0; i < scripts.length; i++) {
|
|
200
|
+
if (scripts[i].getAttribute('src') == src) {
|
|
201
|
+
return true;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
if (p.tagName == 'HTML')
|
|
205
|
+
p = p.querySelector('head') || p;
|
|
206
|
+
const script = p.ownerDocument.createElement('script');
|
|
207
|
+
script.type = 'module';
|
|
208
|
+
script.src = src;
|
|
209
|
+
p.appendChild(script);
|
|
210
|
+
break;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
// order in which attributes are proccesed. Rightmost are more important
|
|
215
|
+
var sortOrder = ['data-attributes-keys', 'data-path-attributes', 'data-path-scope'];
|
|
216
|
+
export function renderDOMElement(input, datascopes, config, isNested) {
|
|
217
|
+
var _a, _b, _c;
|
|
218
|
+
const element = input;
|
|
219
|
+
if (!isNested) {
|
|
220
|
+
datascopes = ((_a = config === null || config === void 0 ? void 0 : config.processData) === null || _a === void 0 ? void 0 : _a.call(config, element, datascopes)) || datascopes;
|
|
221
|
+
}
|
|
222
|
+
if (element.nodeType == 1) {
|
|
223
|
+
const datascope = element.getAttribute('data-path-scope');
|
|
224
|
+
if (datascope) {
|
|
225
|
+
const index = getDOMCollectionIndex(element);
|
|
226
|
+
const collection = queryScopes(datascopes, datascope, false) || [];
|
|
227
|
+
if (index == 0) {
|
|
228
|
+
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);
|
|
229
|
+
}
|
|
230
|
+
datascopes = {
|
|
231
|
+
...datascopes,
|
|
232
|
+
[normalizeCollectionScope(datascope)]: collection[index]
|
|
233
|
+
};
|
|
234
|
+
}
|
|
235
|
+
const attrs = Array.prototype.slice.call(element.attributes).sort((a, b) => {
|
|
236
|
+
return sortOrder.indexOf(a.name) - sortOrder.indexOf(b.name);
|
|
237
|
+
});
|
|
238
|
+
for (var i = 0; i < attrs.length; i++) {
|
|
239
|
+
const { name, value: datapath } = attrs[i];
|
|
240
|
+
if (name.startsWith('data-path') && name != 'data-path-scope') {
|
|
241
|
+
setDOMAttribute(element, name, queryScopes(datascopes, datapath, true), config);
|
|
242
|
+
}
|
|
243
|
+
if (name == 'data-embed-src') {
|
|
244
|
+
setDOMAttribute(element, name, element.getAttribute(name), config);
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
for (var i = 0; i < element.children.length; i++) {
|
|
249
|
+
renderDOMElement(element.children[i], datascopes, config, true);
|
|
250
|
+
}
|
|
251
|
+
if (!isNested) {
|
|
252
|
+
(_c = config === null || config === void 0 ? void 0 : config.onRender) === null || _c === void 0 ? void 0 : _c.call(config, element, datascopes);
|
|
253
|
+
}
|
|
254
|
+
return element;
|
|
255
|
+
}
|
|
256
|
+
export function renderDOMContent(root, template, data, config) {
|
|
257
|
+
var _a;
|
|
258
|
+
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;
|
|
259
|
+
root.innerHTML = newTemplate;
|
|
260
|
+
root.classList.add('-feaas');
|
|
261
|
+
return renderDOMElement(root, data, config);
|
|
262
|
+
}
|
|
263
|
+
export function renderStylesheet(props, style) {
|
|
264
|
+
renderStylesheetPromise(props, (style || (style = document.createElement('style'))));
|
|
265
|
+
return style;
|
|
266
|
+
}
|
|
267
|
+
export function renderStylesheetPromise(props, style) {
|
|
268
|
+
style || (style = document.createElement('style'));
|
|
269
|
+
return fetchStylesheet(props, (cssText) => {
|
|
270
|
+
style.textContent = cssText;
|
|
271
|
+
}).then(() => style);
|
|
272
|
+
}
|
|
273
|
+
export function renderComponent(props, root) {
|
|
274
|
+
renderComponentPromise(props, (root || (root = document.createElement('div'))));
|
|
275
|
+
return root;
|
|
276
|
+
}
|
|
277
|
+
export async function renderComponentPromise(props, root) {
|
|
278
|
+
root || (root = document.createElement('div'));
|
|
279
|
+
if (!root.childNodes.length) {
|
|
280
|
+
if ('template' in props) {
|
|
281
|
+
return renderDOMContent(root, props.template, props.data, props);
|
|
282
|
+
}
|
|
283
|
+
else {
|
|
284
|
+
return fetchComponent(props, (template) => {
|
|
285
|
+
return renderDOMContent(root, template, props.data, props);
|
|
286
|
+
}).then(() => root);
|
|
287
|
+
}
|
|
288
|
+
/* update element with new data */
|
|
289
|
+
}
|
|
290
|
+
else {
|
|
291
|
+
return renderDOMElement(root, props.data, props);
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
//# sourceMappingURL=dom.js.map
|
package/build/dom.js.map
ADDED
|
@@ -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":"AACA,OAAO,EAAE,SAAS,EAAkB,MAAM,4BAA4B,CAAA;AAEtE,MAAM,UAAU,gBAAgB,CAAC,OAAoB;IACnD,IAAI,SAAS,GAAG,EAAE,CAAA;IAClB,IAAI,OAAO,EAAE;QACX,IAAI,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,WAAqB,CAAA;QAC/D,IAAI,mBAAmB,CAAA;QACvB,IAAI,IAAI,CAAA;QACR,OAAO,aAAa,KAAK,MAAM,CAAC,GAAG,EAAE;YACnC,mBAAmB,GAAG,aAAa,CAAC,MAAM,CAAA;YAC1C,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,mBAAmB,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE;gBAC9D,IAAI,mBAAmB,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,aAAa,EAAE;oBACrD,KAAK,IAAI,YAAY,IAAI,mBAAmB,CAAC,QAAQ,CAAC,oBAAoB,CAAC,QAAQ,CAAC,EAAE;wBACpF,IAAI,YAAY,CAAC,aAAa,KAAK,aAAa,EAAE;4BAChD,IAAI,GAAG,YAAY,CAAC,qBAAqB,EAAE,CAAA;4BAC3C,MAAM,KAAK,GAAG,YAAY,CAAC,aAAa,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAA;4BAEvE,SAAS,CAAC,IAAI,CAAC;gCACb,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,eAAe,CAAC;gCACjD,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC;6BAC/C,CAAC,CAAA;yBACH;qBACF;oBACD,aAAa,GAAG,mBAA6B,CAAA;oBAC7C,MAAK;iBACN;SACJ;KACF;IACD,OAAO,SAAS,CAAC,MAAM,CACrB,CAAC,WAAW,EAAE,YAAY,EAAE,EAAE;QAC5B,OAAO;YACL,IAAI,EAAE,WAAW,CAAC,IAAI,GAAG,YAAY,CAAC,IAAI;YAC1C,GAAG,EAAE,WAAW,CAAC,GAAG,GAAG,YAAY,CAAC,GAAG;SACxC,CAAA;IACH,CAAC,EACD,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CACpB,CAAA;AACH,CAAC;AACD,MAAM,UAAU,gBAAgB,CAAC,UAAqB,IAAI;;IACxD,OAAO;QACL,OAAO,EAAE,WAAW;QACpB,QAAQ,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,mBAAmB,CAAC,UAAU,CAAC;QAClD,GAAG,EAAE,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,YAAY,CAAC,KAAK,CAAC,mCAAI,mBAAmB;QACxD,OAAO,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,YAAY,CAAC,SAAS,CAAC;QACzC,SAAS,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,YAAY,CAAC,WAAW,CAAC;QAC7C,OAAO,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,YAAY,CAAC,SAAS,CAAC;QACzC,QAAQ,EAAE,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,YAAY,CAAC,UAAU,CAAC,KAAI,OAAO;QACtD,MAAM,EAAE,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,YAAY,CAAC,QAAQ,CAAC,KAAI,IAAI;QAC/C,GAAG,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,YAAY,CAAC,KAAK,CAAC;KAClC,CAAA;AACH,CAAC;AASD,MAAM,OAAO,WAAY,SAAQ,SAAsD;IAAvF;;QAIE,eAAU,GAA+B,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAA;QAC5D,gBAAW,GAAS,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAA;QAC5D,aAAQ,GAAS,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAA;QAMzD,cAAS,GAAG,GAAG,EAAE;YACf,OAAO,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAC/F,CAAC,CAAA;QAMD,2BAAsB,GAAG,CAAC,OAAoB,EAAE,IAAW,EAAE,EAAE;YAC7D,IAAI,IAAI,IAAI,IAAI,EAAE;gBAChB,IAAI,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAA;aACvC;YACD,IAAI,OAAO,CAAC,aAAa,IAAI,QAAQ,EAAE;gBACrC,OAAO;oBACL,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI;oBACpC,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG;oBACjC,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,MAAM,EAAE,IAAI,CAAC,MAAM;iBACpB,CAAA;aACF;YACD,OAAO;gBACL,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI;gBAC3D,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG;gBACvD,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,MAAM,EAAE,IAAI,CAAC,MAAM;aACpB,CAAA;QACH,CAAC,CAAA;QAED,oBAAe,GAA8D,CAAC,IAAI,EAAE,EAAE;YACpF,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS;gBAAE,IAAI,CAAC,UAAU,GAAG,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;YACxF,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAA;YACvD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAA;QACvF,CAAC,CAAA;QAED,cAAS,GAAwD,GAAG,EAAE,GAAE,CAAC,CAAA;QACzE,eAAU,GAAyD,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE;YACzF,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,gBAAgB,CAAgB,CAAA;YAC1E,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,cAAc,CAAgB,CAAA;YAC1E,IAAI,SAAS,EAAE;gBACb,MAAM,YAAY,GAAG,EAAE,CAAA;gBACvB,MAAM,OAAO,GAAG,EAAE,CAAA;gBAClB,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,GAAG,OAAO,GAAG,CAAC,GAAG,IAAI,CAAA;gBACzD,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,GAAG,OAAO,GAAG,CAAC,GAAG,YAAY,GAAG,IAAI,CAAA;gBAC1E,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,GAAG,OAAO,GAAG,IAAI,CAAA;gBACnD,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,SAAS,CAAC,GAAG,GAAG,YAAY,GAAG,IAAI,CAAA;gBACtD,IAAI,QAAQ,EAAE;oBACZ,QAAQ,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;oBACtC,QAAQ,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAA;iBACrC;aACF;iBAAM;gBACL,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,SAAS,CAAA;gBAC7B,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,SAAS,CAAA;gBAC5B,iCAAiC;gBACjC,gCAAgC;aACjC;QACH,CAAC,CAAA;IA0JH,CAAC;IArNC,QAAQ;QACN,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAA;IAC/B,CAAC;IAMD,IAAI;QACF,OAAO,MAAM,CAAC,kBAAkB,CAAC,yBAAyB,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAA;IACjH,CAAC;IAkDD;;;;;;;;;;;;;KAaC;IACD,WAAW,CACT,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAA6C,EACnG,EACE,MAAM,EACN,iBAAiB,EACjB,OAAO,EACP,YAAY,EACZ,YAAY,EACZ,KAAK,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,EACvC,MAAM,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,EACvB,MAAM,EACN,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,gBAAgB,EACU;QAE5B,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAM;QACzB,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,EAAE,CAAA;QACxB,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,EAAyC,CAAA;QACnF,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAA;QAC3B,SAAS,CAAC,GAAG,EAAE;YACb,OAAO,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAA;QAC9D,CAAC,EAAE,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAA;QAC1B,SAAS,CAAC,GAAG,EAAE;YACb,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,QAAQ,CAAC,KAAK,EAAE,CAAA;QAC7B,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAA;QAEf,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAA;QAExD,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,QAAQ,CAAC,CAAA;QAC9D,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE;YAC5B,OAAO,CAAA,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,SAAS,IAAI,CAAC,SAAS,CAAC,KAAI,EAAE,CAAA;QAC/E,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAA;QAEtB,IAAI,CAAC,SAAS;YAAE,OAAM;QACtB,OAAO,QAAQ,CAA6B,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAC9E,oBAAC,GAAG,IAAC,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;YACnC,oBAAC,GAAG,IAAC,SAAS,EAAC,gBAAgB,EAAC,QAAQ,EAAC,UAAU,EAAC,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC;gBACjE,oBAAC,MAAM,IACL,WAAW,EAAE,GAAG,CAAC,WAAW,EAC5B,GAAG,EAAE,GAAG,EACR,OAAO,EAAE,GAAG,CAAC,OAAO,EACpB,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE;wBACP,eAAe,EAAE,IAAI,CAAC,SAAS;wBAC/B,qBAAqB,EAAE,IAAI,CAAC,eAAe;wBAC3C,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;wBACnD,gBAAgB,EAAE,IAAI,CAAC,UAAU;qBAClC,IAEA,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,mBAAmB,EAAE,EAAE,EAAE,CAAC,CAAC;oBAC7C,KAAK,EAAE,QAAQ;oBACf,MAAM,EAAE,MAAM;oBACd,MAAM,EAAE,MAAM,IAAI,oBAAC,MAAM,OAAG;oBAC5B,QAAQ,EAAE,SAAS;yBAChB,sBAAsB,CAAC,QAAQ,CAAC;yBAChC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE;;wBACnB,OAAO,mBAAmB,IAAI,CAAC,CAAA,MAAA,CAAC,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC,0CAAE,SAAS,CAAA,CAAA;oBAC9E,CAAC,CAAC;yBACD,GAAG,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC,CACxB,oBAAC,GAAG,IACF,GAAG,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,EACrB,QAAQ,EAAC,UAAU,EACnB,IAAI,EAAE,CAAC,EACP,GAAG,EAAE,CAAC,EACN,SAAS,EAAC,eAAe,EACzB,CAAC,EAAE,CAAC,EACJ,SAAS,EAAE,KAAK,EAChB,aAAa,EAAC,MAAM;wBAEpB,oBAAC,GAAG,IACF,SAAS,EAAC,SAAS,EACnB,aAAa,EAAE,MAAM,EACrB,IAAI,EAAE,CAAC,EACP,KAAK,EAAC,GAAG,EACT,GAAG,EAAE,CAAC,EACN,MAAM,EAAE,CAAC,EACT,cAAc,EAAC,WAAW,EAC1B,UAAU,EAAC,wBAAwB,EACnC,QAAQ,EAAC,UAAU,GACd;wBACP,oBAAC,GAAG,IACF,SAAS,EAAC,SAAS,EACnB,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,CAAC,EACR,KAAK,EAAC,GAAG,EACT,GAAG,EAAE,CAAC,EACN,MAAM,EAAE,CAAC,EACT,cAAc,EAAC,WAAW,EAC1B,UAAU,EAAC,wBAAwB,EACnC,QAAQ,EAAC,UAAU,GACd;wBACP,oBAAC,GAAG,IACF,SAAS,EAAC,SAAS,EACnB,aAAa,EAAE,MAAM,EACrB,GAAG,EAAE,CAAC,EACN,MAAM,EAAC,IAAI,EACX,IAAI,EAAE,CAAC,EACP,KAAK,EAAE,CAAC,EACR,cAAc,EAAC,WAAW,EAC1B,UAAU,EAAC,wBAAwB,EACnC,QAAQ,EAAC,UAAU,GACd;wBACP,oBAAC,GAAG,IACF,SAAS,EAAC,SAAS,EACnB,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,CAAC,EACT,MAAM,EAAC,GAAG,EACV,IAAI,EAAE,CAAC,EACP,KAAK,EAAE,CAAC,EACR,cAAc,EAAC,WAAW,EAC1B,UAAU,EAAC,wBAAwB,EACnC,QAAQ,EAAC,UAAU,GACd;wBACP,oBAAC,OAAO,IAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,IAC1C;4BACC,IAAI,EAAE,CACJ,oBAAC,MAAM,IAAC,cAAc,EAAC,eAAe;gCACpC,oBAAC,YAAY,IAAC,IAAI,EAAC,IAAI,EAAC,MAAM,EAAE,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,GAAI;gCACrE,oBAAC,YAAY,IAAC,IAAI,EAAC,IAAI,GAAG,CACnB,CACV;4BACD,MAAM,EAAE,oBAAC,iBAAiB,OAAG;yBAC9B,CACO,CACN,CACP,CAAC;iBACL,CAAC,CACK,CACL,CACF,CACP,CAAC,CAAA;IACJ,CAAC;IAED,aAAa;QACX,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,IAAI,CAAA;IACnE,CAAC;CACF;AASD,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAA"}
|