@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
@@ -1,30 +1,307 @@
1
- import type { ReactNode, ReactElement, JSXElementConstructor } from 'react';
2
- import { FEAASBase } from './FEAASBase.js';
3
- export type ReactModules = {
1
+ import type { ReactElement, ReactNode } from 'react';
2
+ import type ReactDOMClient from 'react-dom/client';
3
+ import type ReactDOM from 'react-dom';
4
+ import type React from 'react';
5
+ import { ControlledPromise } from '../utils/promise.js';
6
+ export type OptionalExcept<T, K extends keyof T> = Pick<T, K> & Partial<Omit<T, K>>;
7
+ declare var WebComponent: {
8
+ new (): HTMLElement;
9
+ prototype: HTMLElement;
10
+ };
11
+ export interface ReactPayload {
4
12
  React: typeof React;
5
13
  ReactDOM: typeof ReactDOM;
6
- };
7
- export type ReactJSX = ReactNode | ReactElement<any, string | JSXElementConstructor<any>>;
8
- export type FEAASReactRender<P> = {
9
- (this: FEAASElement<P>, props: P, payload: ReactModules): ReactJSX;
10
- };
11
- export default class FEAASElement<P> extends FEAASBase<P, ReactModules> {
12
- load(): Promise<{
13
- React: any;
14
- ReactDOM: any;
15
- }>;
16
- render({}: P, { React }: ReactModules): ReactJSX;
14
+ ReactDOMClient: typeof ReactDOMClient;
17
15
  }
18
- interface MyComponentProps {
19
- counter: string;
16
+ declare global {
17
+ interface DocumentEventMap {
18
+ feaasMount: Event;
19
+ feaasUnmount: Event;
20
+ feaasLoad: Event;
21
+ feaasError: CustomEvent<Error>;
22
+ }
20
23
  }
21
- export declare class MyComponent extends FEAASElement<MyComponentProps> {
24
+ /**
25
+ * FEAASElement is a superclass for FEAAS components with optional react support.
26
+ *
27
+ * Initialization lifecycle:
28
+ *
29
+ * - `set(props)`
30
+ * - `scheduleRender()` - any attribute change causes render to schedule to next frame
31
+ * - `whenRendered.restart()` - rendering promise is reset and will resolve after render
32
+ * - `advance()` - called on next frame
33
+ * - `if (isReadyToLoad()) => boolean` - check if component has all necessary properties to load
34
+ * - `load() => payload` => component is loaded
35
+ * - `onLoad?(payload)` => invoke loaded callback
36
+ * - `advance()` => going further in state machine
37
+ * - `flush()` => flushes all react changes if needed
38
+ * - `update()` => component-specific method (or react) to render changes to dom
39
+ * - `render(payload, props)` => render means react
40
+ * - `whenRendered.resolve()` - rendering promise is resolved after rendering
41
+ * - `whenLoaded.resolved()` - resolved after loading and rendering
42
+ */
43
+ export declare class FEAASElement<Props = any, Payload = any> extends WebComponent {
22
44
  static observedAttributes: string[];
23
- useShadowRoot: boolean;
24
- getProps(): {
25
- counter: number;
45
+ defaultProps: Partial<Props>;
46
+ /** Return attributes as parsed values */
47
+ getProps(context?: HTMLElement): any;
48
+ /** Properties parsed in current tick */
49
+ props: Props;
50
+ overrides: Props;
51
+ /** Timer until next tick */
52
+ nextRender: number;
53
+ /** Is/was component in the dom? */
54
+ connected: boolean;
55
+ refs: Record<string, FEAASElement>;
56
+ descendants: FEAASElement[];
57
+ /** Result of lazy loading */
58
+ payload: Payload;
59
+ whenLoaded: ControlledPromise<Payload>;
60
+ constructor();
61
+ /** Attaches shadow root if getShadowRootOptions any settings, or uses element itself */
62
+ getRoot(): FEAASElement | HTMLElement | ShadowRoot;
63
+ /** Attribute changes trigger props parsing and schedules re-rendering */
64
+ attributeChangedCallback(name: string, oldValue: string, newValue: string): void;
65
+ /** Components parses its attributes when connected, and schedules rendeirng */
66
+ connectedCallback(): void;
67
+ disconnectedCallback(): void;
68
+ /**
69
+ * Web components are initialized depth-first, making child elements render before its parents. This could here
70
+ * attempts to avoid this and inverts the initialization logic, so that children are initialized in the context of its
71
+ * already-initialized parents.
72
+ *
73
+ * FEAAS components dispatch `feaasMount` event that allows components to store references to each other. In addition
74
+ * it allows external scripts to listen for initialization of FEAAS components
75
+ */
76
+ mount(): void;
77
+ log(...args: any): void;
78
+ /** Nothing special happens on unmount, except setting a flag */
79
+ unmount(): void;
80
+ getParent(onlyFeaas?: boolean): Element;
81
+ getElements(root?: HTMLElement | ShadowRoot, onlyFeaas?: boolean): HTMLElement[];
82
+ /** Catch-all event handler that dispatches events to callback */
83
+ handleEvent(event: Event): void;
84
+ /** Act on children element being removed */
85
+ unnestedCallback(target: FEAASElement): void;
86
+ /** Act on children element being added */
87
+ nestedCallback(target: FEAASElement): boolean | void;
88
+ getComponentName(): string;
89
+ /**
90
+ * Check if lazy component is ready to be loaded. For example a component may stay unloaded unless certain attributes
91
+ * are set
92
+ */
93
+ isReadyToLoad(): boolean;
94
+ /** Generic error handler */
95
+ onError(error: Error, where?: string, handled?: boolean): boolean;
96
+ shouldUpdateOnLoad(): boolean;
97
+ onLoad: (payload: Payload) => void;
98
+ /** Load lazy component & render */
99
+ advance(): Promise<void>;
100
+ flush(): void;
101
+ /** Invoke preloading logic that needs to finish before component can render */
102
+ load(): Promise<any>;
103
+ /**
104
+ * Component-specific logic that updates the DOM. Default render implementation assume react rendering, in that case
105
+ * the component needs to provide React & ReactDOM references in its payload. Web component redefine its render to not
106
+ * use react at all
107
+ */
108
+ update(): any;
109
+ invokeReactRendering(): ReactNode;
110
+ reactWrapper: React.FunctionComponent;
111
+ reactErrorBoundary: new (...args: any) => React.Component<{
112
+ children: any;
113
+ slot: string;
114
+ }, {
115
+ error: Error;
116
+ }>;
117
+ reactRoot: ReactDOMClient.Root;
118
+ getReactErrorBoundary(target?: FEAASElement, displayName?: string): (new (...args: any) => React.Component<{
119
+ children: any;
120
+ slot: string;
121
+ }, {
122
+ error: Error;
123
+ }, any>) | {
124
+ new (props: {
125
+ children: any;
126
+ slot: string;
127
+ } | Readonly<{
128
+ children: any;
129
+ slot: string;
130
+ }>): {
131
+ state: {
132
+ error: Error;
133
+ };
134
+ componentDidCatch(error: Error, errorInfo: any): void;
135
+ render(): any;
136
+ context: unknown;
137
+ setState<K extends "error">(state: {
138
+ error: Error;
139
+ } | ((prevState: Readonly<{
140
+ error: Error;
141
+ }>, props: Readonly<{
142
+ children: any;
143
+ slot: string;
144
+ }>) => {
145
+ error: Error;
146
+ } | Pick<{
147
+ error: Error;
148
+ }, K>) | Pick<{
149
+ error: Error;
150
+ }, K>, callback?: () => void): void;
151
+ forceUpdate(callback?: () => void): void;
152
+ readonly props: Readonly<{
153
+ children: any;
154
+ slot: string;
155
+ }>;
156
+ refs: {
157
+ [key: string]: React.ReactInstance;
158
+ };
159
+ componentDidMount?(): void;
160
+ shouldComponentUpdate?(nextProps: Readonly<{
161
+ children: any;
162
+ slot: string;
163
+ }>, nextState: Readonly<{
164
+ error: Error;
165
+ }>, nextContext: any): boolean;
166
+ componentWillUnmount?(): void;
167
+ getSnapshotBeforeUpdate?(prevProps: Readonly<{
168
+ children: any;
169
+ slot: string;
170
+ }>, prevState: Readonly<{
171
+ error: Error;
172
+ }>): any;
173
+ componentDidUpdate?(prevProps: Readonly<{
174
+ children: any;
175
+ slot: string;
176
+ }>, prevState: Readonly<{
177
+ error: Error;
178
+ }>, snapshot?: any): void;
179
+ componentWillMount?(): void;
180
+ UNSAFE_componentWillMount?(): void;
181
+ componentWillReceiveProps?(nextProps: Readonly<{
182
+ children: any;
183
+ slot: string;
184
+ }>, nextContext: any): void;
185
+ UNSAFE_componentWillReceiveProps?(nextProps: Readonly<{
186
+ children: any;
187
+ slot: string;
188
+ }>, nextContext: any): void;
189
+ componentWillUpdate?(nextProps: Readonly<{
190
+ children: any;
191
+ slot: string;
192
+ }>, nextState: Readonly<{
193
+ error: Error;
194
+ }>, nextContext: any): void;
195
+ UNSAFE_componentWillUpdate?(nextProps: Readonly<{
196
+ children: any;
197
+ slot: string;
198
+ }>, nextState: Readonly<{
199
+ error: Error;
200
+ }>, nextContext: any): void;
201
+ };
202
+ new (props: {
203
+ children: any;
204
+ slot: string;
205
+ }, context: any): {
206
+ state: {
207
+ error: Error;
208
+ };
209
+ componentDidCatch(error: Error, errorInfo: any): void;
210
+ render(): any;
211
+ context: unknown;
212
+ setState<K extends "error">(state: {
213
+ error: Error;
214
+ } | ((prevState: Readonly<{
215
+ error: Error;
216
+ }>, props: Readonly<{
217
+ children: any;
218
+ slot: string;
219
+ }>) => {
220
+ error: Error;
221
+ } | Pick<{
222
+ error: Error;
223
+ }, K>) | Pick<{
224
+ error: Error;
225
+ }, K>, callback?: () => void): void;
226
+ forceUpdate(callback?: () => void): void;
227
+ readonly props: Readonly<{
228
+ children: any;
229
+ slot: string;
230
+ }>;
231
+ refs: {
232
+ [key: string]: React.ReactInstance;
233
+ };
234
+ componentDidMount?(): void;
235
+ shouldComponentUpdate?(nextProps: Readonly<{
236
+ children: any;
237
+ slot: string;
238
+ }>, nextState: Readonly<{
239
+ error: Error;
240
+ }>, nextContext: any): boolean;
241
+ componentWillUnmount?(): void;
242
+ getSnapshotBeforeUpdate?(prevProps: Readonly<{
243
+ children: any;
244
+ slot: string;
245
+ }>, prevState: Readonly<{
246
+ error: Error;
247
+ }>): any;
248
+ componentDidUpdate?(prevProps: Readonly<{
249
+ children: any;
250
+ slot: string;
251
+ }>, prevState: Readonly<{
252
+ error: Error;
253
+ }>, snapshot?: any): void;
254
+ componentWillMount?(): void;
255
+ UNSAFE_componentWillMount?(): void;
256
+ componentWillReceiveProps?(nextProps: Readonly<{
257
+ children: any;
258
+ slot: string;
259
+ }>, nextContext: any): void;
260
+ UNSAFE_componentWillReceiveProps?(nextProps: Readonly<{
261
+ children: any;
262
+ slot: string;
263
+ }>, nextContext: any): void;
264
+ componentWillUpdate?(nextProps: Readonly<{
265
+ children: any;
266
+ slot: string;
267
+ }>, nextState: Readonly<{
268
+ error: Error;
269
+ }>, nextContext: any): void;
270
+ UNSAFE_componentWillUpdate?(nextProps: Readonly<{
271
+ children: any;
272
+ slot: string;
273
+ }>, nextState: Readonly<{
274
+ error: Error;
275
+ }>, nextContext: any): void;
276
+ };
277
+ getDerivedStateFromError(error: Error): {
278
+ error: Error;
279
+ };
280
+ contextType?: React.Context<any>;
26
281
  };
27
- render({ counter }: MyComponentProps, { React }: ReactModules): ReactJSX;
282
+ getReactElement(target?: FEAASElement, props?: any): JSX.Element;
283
+ getReactWrapper(target?: FEAASElement, displayName?: string): React.FunctionComponent<{}>;
284
+ uid: string;
285
+ getUID(): string;
286
+ forceUpdateReact: (node?: ReactNode) => void;
287
+ /**
288
+ * Render method that is pretty much the same as React Functional component, but with extra second argument for
289
+ * payload (usually result of import, it is expected to have React in scope).
290
+ */
291
+ render?(props: React.PropsWithChildren<Props>, payload: Payload): ReactNode | ReactElement;
292
+ useShadowRoot: boolean;
293
+ getShadowRoot(): ShadowRoot;
294
+ getReactRootElement(): HTMLElement | ShadowRoot;
295
+ /** Set props and return values on new next tick */
296
+ set(overrides?: Partial<Props>): this;
297
+ import(path: string): Promise<Payload>;
298
+ /** Schedule rendering on next tick, to batch multiple attribute changes */
299
+ initialized: boolean;
300
+ whenRendered: ControlledPromise<this>;
301
+ scheduleRender(): void;
302
+ formatURL(src: string, hostname: string): string;
303
+ getContextAttribute(name: string, element?: this): string;
304
+ static register(tagName: string, win?: Window): void;
28
305
  }
29
- export {};
306
+ export { FEAASElement as Element };
30
307
  //# sourceMappingURL=FEAASElement.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FEAASElement.d.ts","sourceRoot":"","sources":["../../src/components/FEAASElement.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,qBAAqB,EAAqB,MAAM,OAAO,CAAA;AAC9F,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE1C,MAAM,MAAM,YAAY,GAAG;IACzB,KAAK,EAAE,OAAO,KAAK,CAAA;IACnB,QAAQ,EAAE,OAAO,QAAQ,CAAA;CAC1B,CAAA;AACD,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAA;AACzF,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI;IAChC,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,YAAY,GAAG,QAAQ,CAAA;CACnE,CAAA;AAED,MAAM,CAAC,OAAO,OAAO,YAAY,CAAC,CAAC,CAAE,SAAQ,SAAS,CAAC,CAAC,EAAE,YAAY,CAAC;IACrE,IAAI;;;;IAWJ,MAAM,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,YAAY,GAAG,QAAQ;CAGjD;AAED,UAAU,gBAAgB;IACxB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,qBAAa,WAAY,SAAQ,YAAY,CAAC,gBAAgB,CAAC;IAE7D,MAAM,CAAC,kBAAkB,WAAc;IAEvC,aAAa,UAAO;IAGpB,QAAQ;;;IAQR,MAAM,CAAC,EAAE,OAAO,EAAE,EAAE,gBAAgB,EAAE,EAAE,KAAK,EAAE,EAAE,YAAY,GAAG,QAAQ;CAYzE"}
1
+ {"version":3,"file":"FEAASElement.d.ts","sourceRoot":"","sources":["../../src/components/FEAASElement.tsx"],"names":[],"mappings":"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"}
@@ -1,10 +1,10 @@
1
- import { FEAASBase } from './FEAASBase.js';
1
+ import { FEAASElement } from './FEAASElement.js';
2
2
  export declare function FEAASLoaderProps(element: HTMLElement): {
3
3
  opacity: number;
4
4
  hidden: boolean;
5
5
  };
6
6
  type FEAASLoaderProps = ReturnType<typeof FEAASLoaderProps>;
7
- export declare class FEAASLoader extends FEAASBase<FEAASLoaderProps, string> {
7
+ export declare class FEAASLoader extends FEAASElement<FEAASLoaderProps, string> {
8
8
  stylesheet: HTMLStyleElement;
9
9
  loader: HTMLDivElement;
10
10
  getProps(): {
@@ -1 +1 @@
1
- {"version":3,"file":"FEAASLoader.d.ts","sourceRoot":"","sources":["../../src/components/FEAASLoader.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE1C,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,WAAW;;;EAKpD;AACD,KAAK,gBAAgB,GAAG,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAA;AAE3D,qBAAa,WAAY,SAAQ,SAAS,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClE,UAAU,EAAE,gBAAgB,CAAA;IAC5B,MAAM,EAAE,cAAc,CAAA;IAEtB,QAAQ;;;;IAIR,YAAY;;;OAEkB;IAE9B,MAAM,CAAC,kBAAkB,WAAwB;IAEjD,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAgBhF,iBAAiB;IA6EjB,MAAM;CAGP;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,GAAG,CAAC;QACZ,UAAU,iBAAiB;YACzB,cAAc,EAAE,GAAG,CAAA;SACpB;KACF;CACF;AAGD,OAAO,EAAE,WAAW,IAAI,MAAM,EAAE,CAAA"}
1
+ {"version":3,"file":"FEAASLoader.d.ts","sourceRoot":"","sources":["../../src/components/FEAASLoader.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAEhD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,WAAW;;;EAKpD;AACD,KAAK,gBAAgB,GAAG,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAA;AAE3D,qBAAa,WAAY,SAAQ,YAAY,CAAC,gBAAgB,EAAE,MAAM,CAAC;IACrE,UAAU,EAAE,gBAAgB,CAAA;IAC5B,MAAM,EAAE,cAAc,CAAA;IAEtB,QAAQ;;;;IAIR,YAAY;;;OAEkB;IAE9B,MAAM,CAAC,kBAAkB,WAAwB;IAEjD,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAgBhF,iBAAiB;IA6EjB,MAAM;CAGP;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,GAAG,CAAC;QACZ,UAAU,iBAAiB;YACzB,cAAc,EAAE,GAAG,CAAA;SACpB;KACF;CACF;AAGD,OAAO,EAAE,WAAW,IAAI,MAAM,EAAE,CAAA"}
@@ -0,0 +1,30 @@
1
+ import type { ReactNode, ReactElement, JSXElementConstructor } from 'react';
2
+ import { FEAASElement } from './FEAASElement.js';
3
+ export type ReactModules = {
4
+ React: typeof React;
5
+ ReactDOM: typeof ReactDOM;
6
+ };
7
+ export type ReactJSX = ReactNode | ReactElement<any, string | JSXElementConstructor<any>>;
8
+ export type FEAASReactRender<P> = {
9
+ (this: FEAASReactElement<P>, props: P, payload: ReactModules): ReactJSX;
10
+ };
11
+ export default class FEAASReactElement<P> extends FEAASElement<P, ReactModules> {
12
+ load(): Promise<{
13
+ React: any;
14
+ ReactDOM: any;
15
+ }>;
16
+ render({}: P, { React }: ReactModules): ReactJSX;
17
+ }
18
+ interface MyComponentProps {
19
+ counter: string;
20
+ }
21
+ export declare class MyComponent extends FEAASReactElement<MyComponentProps> {
22
+ static observedAttributes: string[];
23
+ useShadowRoot: boolean;
24
+ getProps(): {
25
+ counter: number;
26
+ };
27
+ render({ counter }: MyComponentProps, { React }: ReactModules): ReactJSX;
28
+ }
29
+ export {};
30
+ //# sourceMappingURL=FEAASReactElement.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FEAASReactElement.d.ts","sourceRoot":"","sources":["../../src/components/FEAASReactElement.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,qBAAqB,EAAqB,MAAM,OAAO,CAAA;AAC9F,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAEhD,MAAM,MAAM,YAAY,GAAG;IACzB,KAAK,EAAE,OAAO,KAAK,CAAA;IACnB,QAAQ,EAAE,OAAO,QAAQ,CAAA;CAC1B,CAAA;AACD,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAA;AACzF,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI;IAChC,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,YAAY,GAAG,QAAQ,CAAA;CACxE,CAAA;AAED,MAAM,CAAC,OAAO,OAAO,iBAAiB,CAAC,CAAC,CAAE,SAAQ,YAAY,CAAC,CAAC,EAAE,YAAY,CAAC;IAC7E,IAAI;;;;IAWJ,MAAM,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,YAAY,GAAG,QAAQ;CAGjD;AAED,UAAU,gBAAgB;IACxB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,qBAAa,WAAY,SAAQ,iBAAiB,CAAC,gBAAgB,CAAC;IAElE,MAAM,CAAC,kBAAkB,WAAc;IAEvC,aAAa,UAAO;IAGpB,QAAQ;;;IAQR,MAAM,CAAC,EAAE,OAAO,EAAE,EAAE,gBAAgB,EAAE,EAAE,KAAK,EAAE,EAAE,YAAY,GAAG,QAAQ;CAYzE"}
@@ -1,8 +1,8 @@
1
1
  import { FEAASCDNStylesheetParams } from '../cdn.js';
2
- import { FEAASBase } from './FEAASBase.js';
3
- export declare function FEAASStylesheetProps(element: FEAASBase): FEAASCDNStylesheetParams;
2
+ import { FEAASElement } from './FEAASElement.js';
3
+ export declare function FEAASStylesheetProps(element: FEAASElement): FEAASCDNStylesheetParams;
4
4
  export type FEAASStylesheetProps = ReturnType<typeof FEAASStylesheetProps>;
5
- export declare class FEAASStylesheet extends FEAASBase<FEAASStylesheetProps, string> {
5
+ export declare class FEAASStylesheet extends FEAASElement<FEAASStylesheetProps, string> {
6
6
  getProps(): FEAASCDNStylesheetParams;
7
7
  isReadyToLoad(): boolean;
8
8
  onLoad: (html: string) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"FEAASStylesheet.d.ts","sourceRoot":"","sources":["../../src/components/FEAASStylesheet.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAmB,wBAAwB,EAAyB,MAAM,WAAW,CAAA;AAE5F,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE1C,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,SAAS,4BAUtD;AACD,MAAM,MAAM,oBAAoB,GAAG,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAA;AAE1E,qBAAa,eAAgB,SAAQ,SAAS,CAAC,oBAAoB,EAAE,MAAM,CAAC;IAC1E,QAAQ;IAIR,aAAa,IAAI,OAAO;IAIxB,MAAM,SAAU,MAAM,UAGrB;IAED,IAAI;CAGL;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,GAAG,CAAC;QACZ,UAAU,iBAAiB;YACzB,kBAAkB,EAAE,OAAO,CAAC,oBAAoB,CAAC,GAAG;gBAAE,QAAQ,CAAC,EAAE,GAAG,CAAA;aAAE,CAAA;SACvE;KACF;CACF;AAED,OAAO,EAAE,eAAe,IAAI,UAAU,EAAE,CAAA"}
1
+ {"version":3,"file":"FEAASStylesheet.d.ts","sourceRoot":"","sources":["../../src/components/FEAASStylesheet.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAmB,wBAAwB,EAAyB,MAAM,WAAW,CAAA;AAE5F,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAEhD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,YAAY,4BAUzD;AACD,MAAM,MAAM,oBAAoB,GAAG,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAA;AAE1E,qBAAa,eAAgB,SAAQ,YAAY,CAAC,oBAAoB,EAAE,MAAM,CAAC;IAC7E,QAAQ;IAIR,aAAa,IAAI,OAAO;IAIxB,MAAM,SAAU,MAAM,UAGrB;IAED,IAAI;CAGL;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,GAAG,CAAC;QACZ,UAAU,iBAAiB;YACzB,kBAAkB,EAAE,OAAO,CAAC,oBAAoB,CAAC,GAAG;gBAAE,QAAQ,CAAC,EAAE,GAAG,CAAA;aAAE,CAAA;SACvE;KACF;CACF;AAED,OAAO,EAAE,eAAe,IAAI,UAAU,EAAE,CAAA"}
@@ -2,16 +2,17 @@
2
2
  * Simplified build of clientside that does not rely on any Frontend UI (like pickers). It refered from Frontend app to
3
3
  * avoid circular dependency. Regular clientside build entry point is in ui/index.ts
4
4
  */
5
- import FEAASElement from './components/FEAASElement.js';
5
+ import FEAASReactElement from './components/FEAASReactElement.js';
6
6
  export * from './dom/rendering.js';
7
7
  export * from './dom/data.js';
8
8
  export * from './dom/scripts.js';
9
9
  export * from './dom/stylesheet.js';
10
10
  export * from './dom/component.js';
11
11
  export * from './fetch.js';
12
+ export * from './utils/promise.js';
12
13
  export * from './cdn.js';
13
- export * from './components/FEAASBase.js';
14
14
  export * from './components/FEAASElement.js';
15
+ export * from './components/FEAASReactElement.js';
15
16
  export * from './components/FEAASComponent.js';
16
17
  export * from './components/FEAASLoader.js';
17
18
  export * from './components/FEAASStylesheet.js';
@@ -20,7 +21,7 @@ export * as Thumbnail from './dom/thumbnail.js';
20
21
  declare global {
21
22
  interface Window {
22
23
  FEAASLoading: Promise<any>;
23
- FEAASElement: typeof FEAASElement;
24
+ FEAASReactElement: typeof FEAASReactElement;
24
25
  }
25
26
  }
26
27
  //# sourceMappingURL=headless.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"headless.d.ts","sourceRoot":"","sources":["../src/headless.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,YAAY,MAAM,8BAA8B,CAAA;AAEvD,cAAc,oBAAoB,CAAA;AAClC,cAAc,eAAe,CAAA;AAC7B,cAAc,kBAAkB,CAAA;AAChC,cAAc,qBAAqB,CAAA;AACnC,cAAc,oBAAoB,CAAA;AAClC,cAAc,YAAY,CAAA;AAC1B,cAAc,UAAU,CAAA;AACxB,cAAc,2BAA2B,CAAA;AACzC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,gCAAgC,CAAA;AAC9C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,iCAAiC,CAAA;AAC/C,cAAc,qBAAqB,CAAA;AACnC,OAAO,KAAK,SAAS,MAAM,oBAAoB,CAAA;AAE/C,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,CAAA;QAC1B,YAAY,EAAE,OAAO,YAAY,CAAA;KAClC;CACF"}
1
+ {"version":3,"file":"headless.d.ts","sourceRoot":"","sources":["../src/headless.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,iBAAiB,MAAM,mCAAmC,CAAA;AAEjE,cAAc,oBAAoB,CAAA;AAClC,cAAc,eAAe,CAAA;AAC7B,cAAc,kBAAkB,CAAA;AAChC,cAAc,qBAAqB,CAAA;AACnC,cAAc,oBAAoB,CAAA;AAClC,cAAc,YAAY,CAAA;AAC1B,cAAc,oBAAoB,CAAA;AAClC,cAAc,UAAU,CAAA;AACxB,cAAc,8BAA8B,CAAA;AAC5C,cAAc,mCAAmC,CAAA;AACjD,cAAc,gCAAgC,CAAA;AAC9C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,iCAAiC,CAAA;AAC/C,cAAc,qBAAqB,CAAA;AACnC,OAAO,KAAK,SAAS,MAAM,oBAAoB,CAAA;AAE/C,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,CAAA;QAC1B,iBAAiB,EAAE,OAAO,iBAAiB,CAAA;KAC5C;CACF"}