@sitecore-feaas/clientside 0.2.0 → 0.2.2

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 (120) hide show
  1. package/README.md +56 -36
  2. package/build/components/FEAASComponent.js +71 -11
  3. package/build/components/FEAASComponent.js.map +1 -1
  4. package/build/components/FEAASElement.js +411 -37
  5. package/build/components/FEAASElement.js.map +1 -1
  6. package/build/components/FEAASLoader.js +2 -2
  7. package/build/components/FEAASLoader.js.map +1 -1
  8. package/build/components/FEAASReactElement.js +47 -0
  9. package/build/components/FEAASReactElement.js.map +1 -0
  10. package/build/components/FEAASStylesheet.js +2 -2
  11. package/build/components/FEAASStylesheet.js.map +1 -1
  12. package/build/headless.js +4 -3
  13. package/build/headless.js.map +1 -1
  14. package/build/ui/FEAAS.js +5 -0
  15. package/build/ui/FEAAS.js.map +1 -0
  16. package/build/ui/FEAASContext.js +20 -8
  17. package/build/ui/FEAASContext.js.map +1 -1
  18. package/build/ui/FEAASEditor.js +2 -2
  19. package/build/ui/FEAASEditor.js.map +1 -1
  20. package/build/ui/FEAASExternal.js +128 -24
  21. package/build/ui/FEAASExternal.js.map +1 -1
  22. package/build/ui/FEAASPicker.js +7 -2
  23. package/build/ui/FEAASPicker.js.map +1 -1
  24. package/build/ui/index.js +3 -4
  25. package/build/ui/index.js.map +1 -1
  26. package/build/ui/react.js.map +1 -1
  27. package/build/utils/fetch.js +26 -0
  28. package/build/utils/fetch.js.map +1 -0
  29. package/dist/browser/headless.cjs +6 -6
  30. package/dist/browser/headless.cjs.map +4 -4
  31. package/dist/browser/headless.esm.js +6 -6
  32. package/dist/browser/headless.esm.js.map +1 -1
  33. package/dist/browser/index.cjs +7 -7
  34. package/dist/browser/index.cjs.map +4 -4
  35. package/dist/browser/index.esm.js +7 -7
  36. package/dist/browser/index.esm.js.map +1 -1
  37. package/dist/browser/react.cjs +6 -6
  38. package/dist/browser/react.cjs.map +4 -4
  39. package/dist/browser/react.esm.js +6 -6
  40. package/dist/browser/react.esm.js.map +1 -1
  41. package/dist/node/headless.cjs +4 -4
  42. package/dist/node/headless.cjs.map +4 -4
  43. package/dist/node/headless.esm.js +4 -4
  44. package/dist/node/headless.esm.js.map +4 -4
  45. package/dist/node/index.cjs +4 -4
  46. package/dist/node/index.cjs.map +4 -4
  47. package/dist/node/index.esm.js +4 -4
  48. package/dist/node/index.esm.js.map +4 -4
  49. package/dist/node/react.cjs +4 -4
  50. package/dist/node/react.cjs.map +4 -4
  51. package/dist/node/react.esm.js +4 -4
  52. package/dist/node/react.esm.js.map +4 -4
  53. package/headless.cjs +4 -4
  54. package/headless.cjs.map +4 -4
  55. package/headless.js +4 -4
  56. package/headless.js.map +4 -4
  57. package/package.json +11 -3
  58. package/react.cjs +6 -6
  59. package/react.cjs.map +4 -4
  60. package/react.js +6 -6
  61. package/react.js.map +4 -4
  62. package/scripts/build.js +1 -1
  63. package/scripts/test-setup.ts +1 -0
  64. package/src/components/FEAASComponent.tsx +96 -12
  65. package/src/components/FEAASElement.tsx +479 -41
  66. package/src/components/FEAASLoader.tsx +2 -2
  67. package/src/components/FEAASReactElement.tsx +61 -0
  68. package/src/components/FEAASStylesheet.tsx +3 -3
  69. package/src/headless.ts +5 -4
  70. package/src/ui/FEAAS.tsx +4 -0
  71. package/src/ui/FEAASContext.tsx +25 -7
  72. package/src/ui/FEAASEditor.tsx +7 -7
  73. package/src/ui/FEAASExternal.tsx +134 -24
  74. package/src/ui/FEAASPicker.tsx +9 -5
  75. package/src/ui/index.ts +4 -4
  76. package/src/ui/react.tsx +5 -0
  77. package/src/ui/tsconfig.json +1 -1
  78. package/src/utils/fetch.ts +44 -0
  79. package/test/FEAASBase.test.tsx +2 -2
  80. package/test/FEAASComponent.test.tsx +4 -1
  81. package/test/FEAASComponent2.test.tsx +215 -0
  82. package/test/FEAASContext.test.tsx +206 -29
  83. package/test/FEAASExternal.test.tsx +1 -8
  84. package/test/FEAASPicker.test.tsx +4 -2
  85. package/test/fetch-data.ts +55 -0
  86. package/types/components/FEAASComponent.d.ts +33 -3
  87. package/types/components/FEAASComponent.d.ts.map +1 -1
  88. package/types/components/FEAASElement.d.ts +299 -22
  89. package/types/components/FEAASElement.d.ts.map +1 -1
  90. package/types/components/FEAASLoader.d.ts +2 -2
  91. package/types/components/FEAASLoader.d.ts.map +1 -1
  92. package/types/components/FEAASReactElement.d.ts +30 -0
  93. package/types/components/FEAASReactElement.d.ts.map +1 -0
  94. package/types/components/FEAASStylesheet.d.ts +3 -3
  95. package/types/components/FEAASStylesheet.d.ts.map +1 -1
  96. package/types/headless.d.ts +4 -3
  97. package/types/headless.d.ts.map +1 -1
  98. package/types/tsbuildinfo +1 -1
  99. package/types/ui/FEAAS.d.ts +5 -0
  100. package/types/ui/FEAAS.d.ts.map +1 -0
  101. package/types/ui/FEAASContext.d.ts +16 -7
  102. package/types/ui/FEAASContext.d.ts.map +1 -1
  103. package/types/ui/FEAASEditor.d.ts +6 -6
  104. package/types/ui/FEAASEditor.d.ts.map +1 -1
  105. package/types/ui/FEAASExternal.d.ts +59 -10
  106. package/types/ui/FEAASExternal.d.ts.map +1 -1
  107. package/types/ui/FEAASPicker.d.ts +11 -9
  108. package/types/ui/FEAASPicker.d.ts.map +1 -1
  109. package/types/ui/index.d.ts +1 -4
  110. package/types/ui/index.d.ts.map +1 -1
  111. package/types/ui/react.d.ts.map +1 -1
  112. package/types/ui/tsbuildinfo +1 -0
  113. package/types/utils/fetch.d.ts +9 -0
  114. package/types/utils/fetch.d.ts.map +1 -0
  115. package/build/components/FEAASBase.js +0 -416
  116. package/build/components/FEAASBase.js.map +0 -1
  117. package/src/components/FEAASBase.tsx +0 -485
  118. package/types/components/FEAASBase.d.ts +0 -299
  119. package/types/components/FEAASBase.d.ts.map +0 -1
  120. package/types/tsbuildinfo_ui +0 -1
@@ -0,0 +1,9 @@
1
+ type Data = object | any[];
2
+ type DataSettings = {
3
+ jsonpath: string;
4
+ url: string;
5
+ };
6
+ export declare const isDataSettings: (data: any) => data is DataSettings;
7
+ export declare function fetchData(data: DataSettings | Record<string, DataSettings | Data> | Data): Promise<Data>;
8
+ export {};
9
+ //# sourceMappingURL=fetch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../src/utils/fetch.ts"],"names":[],"mappings":"AAAA,KAAK,IAAI,GAAG,MAAM,GAAG,GAAG,EAAE,CAAA;AAE1B,KAAK,YAAY,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAA;AAErD,eAAO,MAAM,cAAc,SAAU,GAAG,yBACyB,CAAA;AAkBjE,wBAAsB,SAAS,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAoB9G"}
@@ -1,416 +0,0 @@
1
- import { ControlledPromise } from '../utils/promise.js';
2
- // Shim in case it's required in node.js environment
3
- var WebComponent = typeof HTMLElement == 'undefined'
4
- ? // @ts-ignore
5
- typeof windowJSDOM != 'undefined'
6
- ? // @ts-ignore
7
- windowJSDOM.HTMLElement
8
- : class {
9
- }
10
- : HTMLElement;
11
- /**
12
- * FEAASBase is a superclass for FEAAS components with optional react support.
13
- *
14
- * Initialization lifecycle:
15
- *
16
- * - `set(props)`
17
- * - `scheduleRender()` - any attribute change causes render to schedule to next frame
18
- * - `whenRendered.restart()` - rendering promise is reset and will resolve after render
19
- * - `advance()` - called on next frame
20
- * - `if (isReadyToLoad()) => boolean` - check if component has all necessary properties to load
21
- * - `load() => payload` => component is loaded
22
- * - `onLoad?(payload)` => invoke loaded callback
23
- * - `advance()` => going further in state machine
24
- * - `flush()` => flushes all react changes if needed
25
- * - `update()` => component-specific method (or react) to render changes to dom
26
- * - `render(payload, props)` => render means react
27
- * - `whenRendered.resolve()` - rendering promise is resolved after rendering
28
- * - `whenLoaded.resolved()` - resolved after loading and rendering
29
- */
30
- export class FEAASBase extends WebComponent {
31
- /** Return attributes as parsed values */
32
- getProps(context) {
33
- return {};
34
- }
35
- constructor() {
36
- super();
37
- this.defaultProps = {};
38
- /** Is/was component in the dom? */
39
- this.connected = false;
40
- this.refs = {};
41
- this.descendants = [];
42
- this.whenLoaded = ControlledPromise((payload) => {
43
- this.payload = payload;
44
- });
45
- this.whenRendered = ControlledPromise(() => (this.initialized = true), () => cancelAnimationFrame(this.nextRender));
46
- this.addEventListener('feaasMount', this);
47
- this.addEventListener('feaasUnmount', this);
48
- }
49
- /** Attaches shadow root if getShadowRootOptions any settings, or uses element itself */
50
- getRoot() {
51
- return this;
52
- }
53
- /** Attribute changes trigger props parsing and schedules re-rendering */
54
- attributeChangedCallback(name, oldValue, newValue) {
55
- this.set();
56
- }
57
- /** Components parses its attributes when connected, and schedules rendeirng */
58
- connectedCallback() {
59
- this.mount();
60
- }
61
- disconnectedCallback() {
62
- this.unmount();
63
- }
64
- /**
65
- * Web components are initialized depth-first, making child elements render before its parents. This could here
66
- * attempts to avoid this and inverts the initialization logic, so that children are initialized in the context of its
67
- * already-initialized parents.
68
- *
69
- * FEAAS components dispatch `feaasMount` event that allows components to store references to each other. In addition
70
- * it allows external scripts to listen for initialization of FEAAS components
71
- */
72
- mount() {
73
- try {
74
- const parent = this.getParent();
75
- // Allow parent component to initialize first
76
- if (parent && !parent.connected)
77
- return;
78
- if (this.connected)
79
- return;
80
- this.connected = true;
81
- this.log('FEAAS: Mount', this.tagName, this);
82
- this.dispatchEvent(new Event('feaasMount', { bubbles: true, composed: true }));
83
- this.getElements().map((element) => { var _a; return (_a = element.mount) === null || _a === void 0 ? void 0 : _a.call(element); });
84
- this.set();
85
- }
86
- catch (e) {
87
- this.onError(e);
88
- }
89
- }
90
- log(...args) {
91
- console.log(...args);
92
- }
93
- /** Nothing special happens on unmount, except setting a flag */
94
- unmount() {
95
- if (!this.connected)
96
- return;
97
- this.log('FEAAS: Unmount', this);
98
- this.dispatchEvent(new Event('feaasUnmount', { bubbles: true, composed: true }));
99
- this.connected = false;
100
- }
101
- getParent(onlyFeaas = true) {
102
- for (var p = this; (p = p.parentElement || (p.parentNode instanceof ShadowRoot ? p.parentNode.host : null));) {
103
- if (!onlyFeaas || p.tagName.startsWith('FEAAS-'))
104
- return p;
105
- }
106
- }
107
- getElements(root = this.getRoot(), onlyFeaas = true) {
108
- return Array.from(root.querySelectorAll('*'))
109
- .map((el) => [
110
- !onlyFeaas || el.tagName.startsWith('FEAAS-') ? el : null,
111
- el.shadowRoot ? this.getElements(el.shadowRoot, onlyFeaas) : null
112
- ])
113
- .flat()
114
- .filter(Boolean);
115
- }
116
- /** Catch-all event handler that dispatches events to callback */
117
- handleEvent(event) {
118
- const target = event.composedPath()[0];
119
- switch (event.type) {
120
- case 'feaasMount':
121
- if (target != this)
122
- this.nestedCallback(target);
123
- break;
124
- case 'feaasUnmount':
125
- if (target != this)
126
- this.unnestedCallback(target);
127
- break;
128
- }
129
- }
130
- /** Act on children element being removed */
131
- unnestedCallback(target) {
132
- const index = this.descendants.indexOf(target);
133
- if (index == -1)
134
- return;
135
- this.log('FEAAS: Unnest', this, target);
136
- this.descendants.splice(index, -1);
137
- this.refs[target.getComponentName()] = null;
138
- if (target.refs.parent == this)
139
- target.refs.parent = null;
140
- if (target.refs.top == this) {
141
- target.refs.top = target.refs.parent;
142
- }
143
- }
144
- /** Act on children element being added */
145
- nestedCallback(target) {
146
- var _a, _b;
147
- const index = this.descendants.indexOf(target);
148
- if (index != -1)
149
- return;
150
- this.descendants.push(target);
151
- this.log('FEAAS: Nest', this, target);
152
- this.refs[target.getComponentName()] = target;
153
- target.refs.top = this;
154
- (_a = target.refs).parent || (_a.parent = this);
155
- if (target.render) {
156
- for (var p = target.refs.parent; p; p = p.refs.parent) {
157
- if (p.render) {
158
- (_b = target.refs).parentReact || (_b.parentReact = p);
159
- target.refs.topReact = p;
160
- }
161
- }
162
- }
163
- }
164
- getComponentName() {
165
- return this.tagName.replace('FEAAS-', '').toLowerCase();
166
- }
167
- /**
168
- * Check if lazy component is ready to be loaded. For example a component may stay unloaded unless certain attributes
169
- * are set
170
- */
171
- isReadyToLoad() {
172
- return this.payload === undefined && this.getAttribute('hidden') == null;
173
- }
174
- /** Generic error handler */
175
- onError(error, where = 'uncaught', handled = false) {
176
- const event = new CustomEvent('feaasError', { bubbles: true, composed: true, detail: error });
177
- this.dispatchEvent(event);
178
- this.whenLoaded.reject(error);
179
- if (!event.defaultPrevented && !handled) {
180
- this.whenRendered.reject(error);
181
- try {
182
- this.unmount();
183
- }
184
- catch (e) { }
185
- return true;
186
- }
187
- return false;
188
- }
189
- shouldUpdateOnLoad() {
190
- return true;
191
- }
192
- /** Load lazy component & render */
193
- async advance() {
194
- try {
195
- if (this.payload === undefined) {
196
- if (!this.isReadyToLoad())
197
- return;
198
- this.payload = null;
199
- this.dispatchEvent(new Event('feaasLoad', { bubbles: true, composed: true }));
200
- const loaded = await this.load().catch((e) => {
201
- this.payload = undefined;
202
- throw e;
203
- });
204
- this.whenLoaded.resolve(loaded);
205
- // Allow component to handle the post-loading
206
- if (this.onLoad) {
207
- return;
208
- }
209
- }
210
- else if (this.payload == null) {
211
- return;
212
- }
213
- this.flush();
214
- this.whenRendered.resolve(this);
215
- }
216
- catch (e) {
217
- this.onError(e);
218
- }
219
- }
220
- flush() {
221
- var _a, _b;
222
- const flushSync = (_b = (_a = this.payload) === null || _a === void 0 ? void 0 : _a.ReactDOM) === null || _b === void 0 ? void 0 : _b.flushSync;
223
- if (flushSync) {
224
- flushSync(() => this.update());
225
- }
226
- else {
227
- this.update();
228
- }
229
- }
230
- /** Invoke preloading logic that needs to finish before component can render */
231
- load() {
232
- return Promise.resolve(null);
233
- }
234
- /**
235
- * Component-specific logic that updates the DOM. Default render implementation assume react rendering, in that case
236
- * the component needs to provide React & ReactDOM references in its payload. Web component redefine its render to not
237
- * use react at all
238
- */
239
- update() {
240
- var _a, _b, _c;
241
- //this.log('FEAAS: React', this.tagName, this.payload)
242
- if (this.payload == null)
243
- return;
244
- if (!this.render)
245
- return;
246
- const { React, ReactDOM, ReactDOMClient } = this.payload || {};
247
- if (!React)
248
- throw new Error(`${this.tagName}: React is not present in payload`);
249
- if (!ReactDOM)
250
- throw new Error(`${this.tagName}: ReactDOM is not present in payload`);
251
- if (!this.refs.topReact && !this.forceUpdateReact) {
252
- if (ReactDOMClient) {
253
- this.reactRoot || (this.reactRoot = ReactDOMClient.createRoot(this.getReactRootElement()));
254
- this.reactRoot.render(this.getReactElement());
255
- }
256
- else {
257
- ReactDOM.render(this.getReactElement(), this.getReactRootElement());
258
- }
259
- }
260
- else if (this.forceUpdateReact) {
261
- (_a = this.forceUpdateReact) === null || _a === void 0 ? void 0 : _a.call(this);
262
- }
263
- else {
264
- (_c = (_b = this.refs.topReact).forceUpdateReact) === null || _c === void 0 ? void 0 : _c.call(_b);
265
- }
266
- }
267
- invokeReactRendering() {
268
- const { React, ReactDOM } = this.payload || {};
269
- if (!this.connected)
270
- return null;
271
- const children = this.descendants
272
- .filter((r) => {
273
- return r.refs.parentReact == this && r.payload;
274
- })
275
- .map((child, index) => {
276
- return this.getReactElement(child);
277
- });
278
- return this.render({ ...this.props, children }, this.payload);
279
- }
280
- getReactErrorBoundary(target = this, displayName = target.tagName) {
281
- if (this.reactErrorBoundary)
282
- return this.reactErrorBoundary;
283
- const { React, ReactDOM } = target.payload || {};
284
- return (this.reactErrorBoundary || (this.reactErrorBoundary = class FEAASErrorBoundary extends React.Component {
285
- constructor() {
286
- super(...arguments);
287
- this.state = {
288
- error: null
289
- };
290
- }
291
- static getDerivedStateFromError(error) {
292
- return { error: error };
293
- }
294
- componentDidCatch(error, errorInfo) {
295
- console.error(`FEAAS: ${target.tagName} Error:`, error, errorInfo);
296
- target.onError(error, 'react');
297
- //this.setState({ error: error })
298
- }
299
- render() {
300
- if (this.state.error) {
301
- // target.classList.add('feaas-error')
302
- return;
303
- //return <h1>There seems to be a problem.</h1>
304
- }
305
- //if (target.classList.contains('feaas-error')) target.classList.remove('feaas-error')
306
- return this.props.children;
307
- }
308
- }));
309
- }
310
- getReactElement(target = this, props) {
311
- const { React, ReactDOM } = target.payload || {};
312
- const ErrorBoundary = this.getReactErrorBoundary();
313
- const Wrapper = this.getReactWrapper(target);
314
- return (React.createElement(ErrorBoundary, { key: target.tagName + '-' + target.getUID(), slot: target.getAttribute('slot') },
315
- React.createElement(Wrapper, null)));
316
- }
317
- getReactWrapper(target = this, displayName = target.tagName) {
318
- if (target.reactWrapper)
319
- return target.reactWrapper;
320
- const { React, ReactDOM } = target.payload || {};
321
- target.reactWrapper = (props) => {
322
- if (target.render) {
323
- const [value, forceUpdateReact] = React.useReducer((r) => r + 1, 0);
324
- target.forceUpdateReact = forceUpdateReact;
325
- return ReactDOM.createPortal(React.createElement(React.Fragment, null, target.invokeReactRendering()), target.getReactRootElement());
326
- }
327
- else {
328
- return target.update();
329
- }
330
- };
331
- Object.assign(target.reactWrapper, {
332
- key: target.tagName + '-' + target.getUID(),
333
- displayName: displayName
334
- });
335
- return target.reactWrapper;
336
- }
337
- getUID() {
338
- return (this.uid || (this.uid = String(Math.random())));
339
- }
340
- getShadowRoot() {
341
- if (!this.shadowRoot) {
342
- this.attachShadow({ mode: 'open' });
343
- }
344
- return this.shadowRoot;
345
- }
346
- getReactRootElement() {
347
- return this.useShadowRoot ? this.getShadowRoot() : this.getRoot();
348
- }
349
- /** Set props and return values on new next tick */
350
- set(overrides) {
351
- try {
352
- this.scheduleRender();
353
- this.overrides = {
354
- ...this.overrides,
355
- ...overrides
356
- };
357
- this.props = {
358
- ...this.getProps(),
359
- ...this.overrides
360
- };
361
- for (var property in this.props) {
362
- const value = this.props[property];
363
- const attribute = property.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();
364
- if (value == null || value === this.defaultProps[property]) {
365
- this.removeAttribute(attribute);
366
- }
367
- else if (typeof value == 'string' || typeof value == 'number' || typeof value == 'boolean') {
368
- if (this.getAttribute(attribute) != String(value))
369
- this.setAttribute(attribute, String(value));
370
- }
371
- }
372
- }
373
- catch (e) {
374
- this.whenRendered.reject(e);
375
- this.onError(e, 'set');
376
- }
377
- return this;
378
- }
379
- import(path) {
380
- return import(/* @vite-ignore */ /* webpackIgnore: true */ path);
381
- }
382
- scheduleRender() {
383
- if (this.nextRender == null) {
384
- this.whenRendered = this.whenRendered.restart();
385
- }
386
- cancelAnimationFrame(this.nextRender);
387
- this.nextRender = requestAnimationFrame(() => {
388
- this.nextRender = null;
389
- this.advance().catch((e) => { });
390
- });
391
- }
392
- formatURL(src, hostname) {
393
- if (typeof src == 'string' && src.match(/^\/[^\/]/)) {
394
- return hostname + src;
395
- }
396
- else {
397
- return src;
398
- }
399
- }
400
- getContextAttribute(name, element = this) {
401
- for (var p = this; (p = p.parentElement || (p.parentNode instanceof ShadowRoot ? p.parentNode.host : null));) {
402
- if (p.getAttribute(name) != null)
403
- return p.getAttribute(name);
404
- }
405
- return this.getAttribute(name);
406
- }
407
- static register(tagName, win) {
408
- if (win == null)
409
- win = typeof window != 'undefined' ? window : null;
410
- if (win && !win.customElements.get(tagName)) {
411
- win.customElements.define(tagName, this);
412
- }
413
- }
414
- }
415
- export { FEAASBase as Base };
416
- //# sourceMappingURL=FEAASBase.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FEAASBase.js","sourceRoot":"","sources":["../../src/components/FEAASBase.tsx"],"names":[],"mappings":"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"}