@sitecore-feaas/clientside 0.1.52 → 0.1.54
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 +76 -0
- package/build/components/FEAASBase.js +12 -9
- package/build/components/FEAASBase.js.map +1 -1
- package/build/components/FEAASComponent.js +2 -1
- package/build/components/FEAASComponent.js.map +1 -1
- package/build/components/FEAASElement.js +2 -1
- package/build/components/FEAASElement.js.map +1 -1
- package/build/components/FEAASLoader.js +2 -1
- package/build/components/FEAASLoader.js.map +1 -1
- package/build/dom/data.js +0 -6
- package/build/dom/data.js.map +1 -1
- package/build/dom/html.js +7 -0
- package/build/dom/html.js.map +1 -1
- package/build/dom/rendering.js +8 -5
- package/build/dom/rendering.js.map +1 -1
- package/build/headless.js +1 -0
- package/build/headless.js.map +1 -1
- package/build/ui/FEAASContext.js +2 -1
- package/build/ui/FEAASContext.js.map +1 -1
- package/build/ui/FEAASEditor.js +2 -1
- package/build/ui/FEAASEditor.js.map +1 -1
- package/build/ui/FEAASExternal.js +49 -20
- package/build/ui/FEAASExternal.js.map +1 -1
- package/build/ui/FEAASPicker.js +6 -2
- package/build/ui/FEAASPicker.js.map +1 -1
- package/build/utils/datapath.js +29 -0
- package/build/utils/datapath.js.map +1 -0
- package/build/utils/promise.js +27 -0
- package/build/utils/promise.js.map +1 -1
- package/dist/browser/headless.cjs +4 -4
- package/dist/browser/headless.cjs.map +4 -4
- package/dist/browser/headless.esm.js +4 -4
- package/dist/browser/headless.esm.js.map +1 -1
- package/dist/browser/index.cjs +4 -4
- package/dist/browser/index.cjs.map +4 -4
- package/dist/browser/index.esm.js +5 -5
- package/dist/browser/index.esm.js.map +1 -1
- package/dist/browser/react.cjs +5 -5
- package/dist/browser/react.cjs.map +4 -4
- package/dist/browser/react.esm.js +5 -5
- package/dist/browser/react.esm.js.map +1 -1
- package/dist/node/headless.cjs +3 -3
- package/dist/node/headless.cjs.map +4 -4
- package/dist/node/headless.esm.js +3 -3
- package/dist/node/headless.esm.js.map +4 -4
- package/dist/node/index.cjs +3 -3
- package/dist/node/index.cjs.map +4 -4
- package/dist/node/index.esm.js +3 -3
- package/dist/node/index.esm.js.map +4 -4
- package/dist/node/react.cjs +3 -3
- package/dist/node/react.cjs.map +4 -4
- package/dist/node/react.esm.js +3 -3
- package/dist/node/react.esm.js.map +4 -4
- package/headless.cjs +3 -3
- package/headless.cjs.map +4 -4
- package/headless.js +3 -3
- package/headless.js.map +4 -4
- package/package.json +1 -1
- package/react.cjs +5 -5
- package/react.cjs.map +4 -4
- package/react.js +5 -5
- package/react.js.map +4 -4
- package/src/components/FEAASBase.tsx +12 -10
- package/src/dom/data.ts +0 -8
- package/src/dom/html.ts +8 -0
- package/src/dom/rendering.ts +9 -4
- package/src/headless.ts +1 -0
- package/src/ui/FEAASExternal.tsx +39 -12
- package/src/ui/FEAASPicker.tsx +3 -1
- package/src/utils/datapath.ts +31 -0
- package/src/utils/promise.ts +27 -0
- package/test/FEAASComponent.test.tsx +2 -1
- package/test/FEAASExternal.test.tsx +61 -4
- package/test/cjs/tsconfig.json +9 -0
- package/test/fetch.ts +1 -1
- package/types/components/FEAASBase.d.ts +12 -9
- package/types/components/FEAASBase.d.ts.map +1 -1
- package/types/dom/data.d.ts +0 -2
- package/types/dom/data.d.ts.map +1 -1
- package/types/dom/html.d.ts +2 -0
- package/types/dom/html.d.ts.map +1 -1
- package/types/dom/rendering.d.ts.map +1 -1
- package/types/headless.d.ts +1 -0
- package/types/headless.d.ts.map +1 -1
- package/types/tsbuildinfo +1 -1
- package/types/tsbuildinfo_ui +1 -1
- package/types/ui/FEAASExternal.d.ts +2 -2
- package/types/ui/FEAASExternal.d.ts.map +1 -1
- package/types/ui/FEAASPicker.d.ts +3 -3
- package/types/ui/FEAASPicker.d.ts.map +1 -1
- package/types/utils/datapath.d.ts +6 -0
- package/types/utils/datapath.d.ts.map +1 -0
- package/types/utils/promise.d.ts +27 -0
- package/types/utils/promise.d.ts.map +1 -1
- package/test/cjs/bundles.ts +0 -52
- package/test/cjs/package.json +0 -1
|
@@ -27,15 +27,18 @@ export interface ReactPayload {
|
|
|
27
27
|
* Initialization lifecycle:
|
|
28
28
|
*
|
|
29
29
|
* - `set(props)`
|
|
30
|
-
* - `
|
|
31
|
-
* - `
|
|
32
|
-
* - `
|
|
33
|
-
* - `
|
|
34
|
-
* - `
|
|
35
|
-
* -
|
|
36
|
-
* -
|
|
37
|
-
* -
|
|
38
|
-
* - `
|
|
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
|
|
39
42
|
*/
|
|
40
43
|
export class FEAASBase<Props = any, Payload = any> extends WebComponent {
|
|
41
44
|
static observedAttributes: string[]
|
|
@@ -89,7 +92,6 @@ export class FEAASBase<Props = any, Payload = any> extends WebComponent {
|
|
|
89
92
|
disconnectedCallback() {
|
|
90
93
|
this.unmount()
|
|
91
94
|
}
|
|
92
|
-
|
|
93
95
|
/**
|
|
94
96
|
* Web components are initialized depth-first, making child elements render before its parents. This could here
|
|
95
97
|
* attempts to avoid this and inverts the initialization logic, so that children are initialized in the context of its
|
package/src/dom/data.ts
CHANGED
|
@@ -2,14 +2,6 @@ import { JSONPath } from 'jsonpath-plus'
|
|
|
2
2
|
|
|
3
3
|
export type Datascopes = Record<string, any> | any[]
|
|
4
4
|
|
|
5
|
-
export function cleanCollectionBit(path: string) {
|
|
6
|
-
return path.replace(/(\[[^\]\[]+\]|\.\*)$/g, '')
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
export function normalizeCollectionScope(path: string) {
|
|
10
|
-
return cleanCollectionBit(path) + '.*'
|
|
11
|
-
}
|
|
12
|
-
|
|
13
5
|
export function queryScopes(scopes: any, datapath: string, singleValue = false, json: any = scopes) {
|
|
14
6
|
var path = datapath
|
|
15
7
|
/* find closest parent scope */
|
package/src/dom/html.ts
CHANGED
|
@@ -62,6 +62,11 @@ class HTMLNode {
|
|
|
62
62
|
get tagName() {
|
|
63
63
|
return this.nodeName?.toUpperCase()
|
|
64
64
|
}
|
|
65
|
+
|
|
66
|
+
get localName() {
|
|
67
|
+
return this.nodeName?.toLowerCase()
|
|
68
|
+
}
|
|
69
|
+
|
|
65
70
|
get innerHTML() {
|
|
66
71
|
return serializeHTML(this.childNodes)
|
|
67
72
|
}
|
|
@@ -71,6 +76,9 @@ class HTMLNode {
|
|
|
71
76
|
get outerHTML() {
|
|
72
77
|
return serializeHTML([this])
|
|
73
78
|
}
|
|
79
|
+
get children() {
|
|
80
|
+
return this.childNodes.filter((c) => c.nodeType == 1)
|
|
81
|
+
}
|
|
74
82
|
|
|
75
83
|
closest(selector: string): HTMLNode | null {
|
|
76
84
|
let currentNode: HTMLNode | undefined = this
|
package/src/dom/rendering.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { FEAASCDNComponentProps } from '../cdn.js'
|
|
2
|
-
import { Datascopes,
|
|
2
|
+
import { Datascopes, queryScopes, serializeCH1RichText } from './data.js'
|
|
3
3
|
import { parseHTML } from './html.js'
|
|
4
4
|
import { loadScript } from './scripts.js'
|
|
5
|
+
import { normalizeCollectionScope } from '../utils/datapath.js'
|
|
5
6
|
|
|
6
7
|
export interface FEAASCustomizations {
|
|
7
8
|
processTemplate?: (element: HTMLElement, template: string, data: any) => string
|
|
@@ -81,11 +82,13 @@ export function setDOMAttribute(element: HTMLElement, attribute: string, value:
|
|
|
81
82
|
}
|
|
82
83
|
var prop = attribute.replace('data-path-', '')
|
|
83
84
|
if (attribute == 'data-path-src') {
|
|
84
|
-
|
|
85
|
+
const picture = Array.from(element.children).find((n) => n.localName == 'picture') || element
|
|
86
|
+
target = element.localName == 'img' ? element : <HTMLElement>picture.querySelector('img, video')
|
|
85
87
|
} else if (attribute == 'data-path-href') {
|
|
86
88
|
target = element.querySelector('a') || element.closest('a')
|
|
87
89
|
} else if (attribute == 'data-path-alt') {
|
|
88
|
-
|
|
90
|
+
const picture = Array.from(element.children).find((n) => n.localName == 'picture') || element
|
|
91
|
+
target = picture.querySelector('img, picture')
|
|
89
92
|
} else if (attribute == 'data-path-hidden') {
|
|
90
93
|
value = !value ? true : null
|
|
91
94
|
} else if (attribute == 'data-path' || attribute == 'data-embed-html' || attribute == 'html') {
|
|
@@ -117,7 +120,9 @@ export function setDOMAttribute(element: HTMLElement, attribute: string, value:
|
|
|
117
120
|
}
|
|
118
121
|
if (!target) return
|
|
119
122
|
|
|
120
|
-
var placeholder = String(
|
|
123
|
+
var placeholder = String(
|
|
124
|
+
(element.getAttribute('data-path-placeholder') || target[prop as keyof HTMLElement]) ?? target.getAttribute(prop)
|
|
125
|
+
)
|
|
121
126
|
|
|
122
127
|
if (value != null) {
|
|
123
128
|
if (prop == 'innerHTML') {
|
package/src/headless.ts
CHANGED
|
@@ -17,6 +17,7 @@ export * from './components/FEAASElement.js'
|
|
|
17
17
|
export * from './components/FEAASComponent.js'
|
|
18
18
|
export * from './components/FEAASLoader.js'
|
|
19
19
|
export * from './components/FEAASStylesheet.js'
|
|
20
|
+
export * from './utils/datapath.js'
|
|
20
21
|
|
|
21
22
|
declare global {
|
|
22
23
|
interface Window {
|
package/src/ui/FEAASExternal.tsx
CHANGED
|
@@ -20,12 +20,37 @@ const convertSchemaPropertiesToKebabCase = (schema: any) => {
|
|
|
20
20
|
return { ...schema, properties: kebabSchemaProperties, required: kebabRequiredProperties }
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
+
export const parseProps = (propName: string, propValue: string, properties: any) => {
|
|
24
|
+
debugger
|
|
25
|
+
switch (properties?.[propName]?.type) {
|
|
26
|
+
case 'string':
|
|
27
|
+
return propValue
|
|
28
|
+
case 'object':
|
|
29
|
+
return JSON.parse(propValue)
|
|
30
|
+
case 'array':
|
|
31
|
+
return JSON.parse(propValue)
|
|
32
|
+
case 'number':
|
|
33
|
+
return +propValue
|
|
34
|
+
case 'integer':
|
|
35
|
+
return +propValue
|
|
36
|
+
case 'boolean':
|
|
37
|
+
return propValue === 'true'
|
|
38
|
+
default:
|
|
39
|
+
return propValue
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
23
43
|
export function FEAASExternalProps(element: FEAASBase = this) {
|
|
24
44
|
const attributes = element.getAttributeNames()
|
|
45
|
+
const id = element.getAttribute('data-external-id')
|
|
46
|
+
const schema: any = FEAASExternal.registered[id]?.schema
|
|
25
47
|
const props = attributes.reduce((prev, curr) => {
|
|
26
|
-
if (!curr.startsWith('data-attribute') && !['class', 'id', 'contenteditable'].includes(curr))
|
|
27
|
-
|
|
28
|
-
|
|
48
|
+
if (!curr.startsWith('data-attribute') && !['class', 'id', 'contenteditable'].includes(curr)) {
|
|
49
|
+
const value = element.getAttribute(curr)
|
|
50
|
+
return { ...prev, [reverseKebabCase(curr)]: parseProps(reverseKebabCase(curr), value, schema?.properties) }
|
|
51
|
+
} else {
|
|
52
|
+
return prev
|
|
53
|
+
}
|
|
29
54
|
}, {})
|
|
30
55
|
return props
|
|
31
56
|
}
|
|
@@ -51,8 +76,10 @@ export default class FEAASExternal extends FEAASBase<FEAASExternalProps, ReactMo
|
|
|
51
76
|
return FEAASExternalProps(this)
|
|
52
77
|
}
|
|
53
78
|
|
|
54
|
-
static registerComponent(component: React.FC, schema: any = {}
|
|
55
|
-
|
|
79
|
+
static registerComponent(component: React.FC, schema: any = {}) {
|
|
80
|
+
const id = schema.name || component.name
|
|
81
|
+
const enrichedSchema = { ...schema, title: id, type: 'object' }
|
|
82
|
+
FEAASExternal.registered[id] = { component, schema: enrichedSchema }
|
|
56
83
|
}
|
|
57
84
|
|
|
58
85
|
static setRegistrationCallback() {
|
|
@@ -60,11 +87,11 @@ export default class FEAASExternal extends FEAASBase<FEAASExternalProps, ReactMo
|
|
|
60
87
|
if (!FEAASExternal.registrationCallback && typeof window !== 'undefined') {
|
|
61
88
|
FEAASExternal.registrationCallback = setTimeout(() => {
|
|
62
89
|
// create components array from object
|
|
63
|
-
const components = Object.keys(FEAASExternal.registered).map((
|
|
64
|
-
...FEAASExternal.registered[
|
|
65
|
-
name,
|
|
66
|
-
schema: convertSchemaPropertiesToKebabCase(FEAASExternal.registered[
|
|
67
|
-
component: FEAASExternal.registered[name].component.toString()
|
|
90
|
+
const components = Object.keys(FEAASExternal.registered).map((id) => ({
|
|
91
|
+
...FEAASExternal.registered[id],
|
|
92
|
+
name: id,
|
|
93
|
+
schema: convertSchemaPropertiesToKebabCase(FEAASExternal.registered[id].schema)
|
|
94
|
+
//component: FEAASExternal.registered[name].component.toString()
|
|
68
95
|
}))
|
|
69
96
|
|
|
70
97
|
// send components from iframe to parent window
|
|
@@ -79,7 +106,7 @@ export default class FEAASExternal extends FEAASBase<FEAASExternalProps, ReactMo
|
|
|
79
106
|
}
|
|
80
107
|
}
|
|
81
108
|
|
|
82
|
-
static loadComponents() {
|
|
109
|
+
/*static loadComponents() {
|
|
83
110
|
const components = JSON.parse(sessionStorage.getItem('feaas-external-components'))
|
|
84
111
|
components.forEach((c: { name: string; schema: any; component: React.FC }) => {
|
|
85
112
|
const name = c.name
|
|
@@ -87,7 +114,7 @@ export default class FEAASExternal extends FEAASBase<FEAASExternalProps, ReactMo
|
|
|
87
114
|
const component = eval('(' + c.component + ')')
|
|
88
115
|
FEAASExternal.registerComponent(component, schema, name)
|
|
89
116
|
})
|
|
90
|
-
}
|
|
117
|
+
}*/
|
|
91
118
|
|
|
92
119
|
static Preview(props: Partial<FEAASComponentProps<any>> & { src: string }) {
|
|
93
120
|
const src =
|
package/src/ui/FEAASPicker.tsx
CHANGED
|
@@ -41,7 +41,9 @@ export class FEAASPicker extends FEAASBase<FEAASPickerProps, typeof FEAASPickerI
|
|
|
41
41
|
<Picker
|
|
42
42
|
placeholder={placeholder}
|
|
43
43
|
mode={mode || undefined}
|
|
44
|
-
|
|
44
|
+
onModeChange={(mode) => {
|
|
45
|
+
if (!mode) this.props.onClose(mode)
|
|
46
|
+
}}
|
|
45
47
|
onContextAttributeSet={this.props.onContextAttributeSet}
|
|
46
48
|
context={context}
|
|
47
49
|
variant={variant}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export const parseLimit = (qualifier: string) => {
|
|
2
|
+
const limit = parseInt(qualifier?.match(/\[0:(\d+)\]/)?.[1], 10)
|
|
3
|
+
if (!isNaN(limit) && limit > 0) return String(limit)
|
|
4
|
+
return null
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
export const parseRange = (qualifier: string) => {
|
|
8
|
+
const bits = qualifier
|
|
9
|
+
?.match(/\[([^\]]+)\]/)?.[1]
|
|
10
|
+
.split(/\s*,\s*/g)
|
|
11
|
+
.filter(Boolean)
|
|
12
|
+
.map((bit) => {
|
|
13
|
+
// individual indexes
|
|
14
|
+
if (bit.match(/^-?\d+$/)) return bit
|
|
15
|
+
// ranges
|
|
16
|
+
const range = bit.match(/^(\d+):(\d+)$/)
|
|
17
|
+
return range && parseInt(range[1], 10) < parseInt(range[2], 10) ? range[1] + '-' + range[2] : null
|
|
18
|
+
})
|
|
19
|
+
if (!bits?.every(Boolean)) return null
|
|
20
|
+
return bits.join(',')
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export const getQualifier = (jsonpath: string) => jsonpath?.match(/(\.\*|\[[^\]]+\])$/)?.[0]
|
|
24
|
+
|
|
25
|
+
export function cleanCollectionBit(path: string) {
|
|
26
|
+
return path.replace(/(\[[^\]\[]+\]|\.\*)$/g, '')
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export function normalizeCollectionScope(path: string) {
|
|
30
|
+
return cleanCollectionBit(path) + '.*'
|
|
31
|
+
}
|
package/src/utils/promise.ts
CHANGED
|
@@ -5,6 +5,33 @@ export type ControlledPromise<T> = Promise<T> & {
|
|
|
5
5
|
first: ControlledPromise<T>
|
|
6
6
|
}
|
|
7
7
|
|
|
8
|
+
/**
|
|
9
|
+
* ControlledPromise is a function that returns a promise with additional methods for resolve, reject, restart, and
|
|
10
|
+
* first. This allows more granular control over the promise resolution process. It also avoids unhandled rejections by
|
|
11
|
+
* catching any errors and passing them to the onFailure callback.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* const promise = ControlledPromise(
|
|
15
|
+
* (result) => console.log(result),
|
|
16
|
+
* (error) => console.error(error)
|
|
17
|
+
* )
|
|
18
|
+
* promise.resolve('Success') // logs: "Success"
|
|
19
|
+
* promise.reject(new Error('Failure')) // logs: Error: Failure
|
|
20
|
+
*
|
|
21
|
+
* @template T The type of value that the promise will resolve with.
|
|
22
|
+
* @param {(result: T) => void} [onSuccess] - A callback function that is called when the promise is successfully
|
|
23
|
+
* resolved. The resolved value is passed to this function.
|
|
24
|
+
* @param {(e: Error) => void} [onFailure=(e: Error) => {}] - A callback function that is called when the promise is
|
|
25
|
+
* rejected. The Error object is passed to this function. Default is `(e: Error) => {}`
|
|
26
|
+
* @returns {ControlledPromise<T>} A ControlledPromise object with the following properties:
|
|
27
|
+
*
|
|
28
|
+
* - Resolve: A function that when called, will resolve the promise.
|
|
29
|
+
* - Reject: A function that when called, will reject the promise with the provided error.
|
|
30
|
+
* - Restart: A function that when called, will restart the promise. This creates a new promise and replaces the current
|
|
31
|
+
* promise with the new one.
|
|
32
|
+
* - First: The first promise that was created by the restart function. This property is initially undefined, and is set
|
|
33
|
+
* when the restart function is called for the first time.
|
|
34
|
+
*/
|
|
8
35
|
export function ControlledPromise<T>(onSuccess?: (result: T) => void, onFailure = (e: Error) => {}) {
|
|
9
36
|
var first: ControlledPromise<T>
|
|
10
37
|
const restart = () => {
|
|
@@ -31,7 +31,7 @@ describe('Components', () => {
|
|
|
31
31
|
}
|
|
32
32
|
})
|
|
33
33
|
|
|
34
|
-
// Fixme
|
|
34
|
+
// Fixme юhange to production component
|
|
35
35
|
document.body.innerHTML =
|
|
36
36
|
'<feaas-component with-stylesheet="false" library="L" cdn="CDN" component="C" version="V" revision="R"></feaas-component>'
|
|
37
37
|
|
|
@@ -179,6 +179,7 @@ describe('Components', () => {
|
|
|
179
179
|
expect(spy).toHaveBeenNthCalledWith(1, 'CDN/components/L/C1/V/R.html', undefined)
|
|
180
180
|
expect(spy).toHaveBeenCalledTimes(1)
|
|
181
181
|
expect(component.innerHTML).toContain('C1')
|
|
182
|
+
await expect(component.whenLoaded).resolves.toEqual('C1')
|
|
182
183
|
|
|
183
184
|
component.setAttribute('component', 'C2')
|
|
184
185
|
await expect(component.whenRendered).resolves.toEqual(component)
|
|
@@ -1,17 +1,65 @@
|
|
|
1
1
|
import { beforeEach, describe, expect, it } from 'vitest'
|
|
2
2
|
import React from 'react'
|
|
3
3
|
import * as Clientside from '../src/ui/react.js'
|
|
4
|
-
import FEAASExternal from
|
|
4
|
+
import FEAASExternal from '../src/ui/FEAASExternal.js'
|
|
5
5
|
|
|
6
6
|
describe('External', () => {
|
|
7
7
|
function Hello(props: { firstName: string; telephone: string }) {
|
|
8
8
|
return React.createElement('div', {}, `Hello my name is ${props.firstName} and my tel is ${props.telephone}`)
|
|
9
9
|
}
|
|
10
|
+
const helloSchema = {
|
|
11
|
+
name: 'MyTestComponent',
|
|
12
|
+
properties: {
|
|
13
|
+
firstName: {
|
|
14
|
+
type: 'string'
|
|
15
|
+
},
|
|
16
|
+
telephone: {
|
|
17
|
+
type: 'number'
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
10
21
|
function Hello2(props: { firstName: string; address: string }) {
|
|
11
22
|
return React.createElement('div', {}, `Hello my name is ${props.firstName} and my address is ${props.address}`)
|
|
12
23
|
}
|
|
24
|
+
function TypesComponent(props: {
|
|
25
|
+
stringProp: string
|
|
26
|
+
numberProp: number
|
|
27
|
+
booleanProp: boolean
|
|
28
|
+
arrayProp: number[]
|
|
29
|
+
objectProp: { value: string }
|
|
30
|
+
}) {
|
|
31
|
+
return React.createElement(
|
|
32
|
+
'div',
|
|
33
|
+
{},
|
|
34
|
+
`Text: ${props.stringProp}, Number + 1: ${props.numberProp + 1}, Boolean: ${
|
|
35
|
+
props.booleanProp === true ? 'it is true' : 'error'
|
|
36
|
+
}, Array (joined): ${props.arrayProp.join(', ')}, Object: ${props.objectProp.value}`
|
|
37
|
+
)
|
|
38
|
+
}
|
|
39
|
+
const typesComponentSchema = {
|
|
40
|
+
properties: {
|
|
41
|
+
stringProp: {
|
|
42
|
+
type: 'string'
|
|
43
|
+
},
|
|
44
|
+
numberProp: {
|
|
45
|
+
type: 'number'
|
|
46
|
+
},
|
|
47
|
+
booleanProp: {
|
|
48
|
+
type: 'boolean'
|
|
49
|
+
},
|
|
50
|
+
arrayProp: {
|
|
51
|
+
type: 'array',
|
|
52
|
+
items: {
|
|
53
|
+
type: 'number'
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
objectProp: {
|
|
57
|
+
type: 'object'
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
13
61
|
it('can register and render component', async () => {
|
|
14
|
-
Clientside.External.registerComponent(Hello,
|
|
62
|
+
Clientside.External.registerComponent(Hello, helloSchema)
|
|
15
63
|
document.body.innerHTML =
|
|
16
64
|
'<feaas-external id="external-component" class="-component" data-attributes-keys="first-name,telephone" first-name="Chuck" telephone="45657890875643" data-attributes="{"first-name":"Chuck","telephone":"45657890875643"}" data-external-id="MyTestComponent" contenteditable="false"></feaas-external>'
|
|
17
65
|
const component = document.getElementById('external-component') as FEAASExternal
|
|
@@ -34,8 +82,8 @@ describe('External', () => {
|
|
|
34
82
|
expect(component.innerHTML).toEqual('')
|
|
35
83
|
})
|
|
36
84
|
it('can register and render multiple components', async () => {
|
|
37
|
-
Clientside.External.registerComponent(Hello, {
|
|
38
|
-
Clientside.External.registerComponent(Hello2, {
|
|
85
|
+
Clientside.External.registerComponent(Hello, { name: 'MyTestComponent1' })
|
|
86
|
+
Clientside.External.registerComponent(Hello2, { name: 'MyTestComponent2' })
|
|
39
87
|
document.body.innerHTML =
|
|
40
88
|
'<feaas-external id="external-component1" class="-component" data-attributes-keys="first-name,telephone" first-name="Chuck" telephone="45657890875643" data-attributes="{"first-name":"Chuck","telephone":"45657890875643"}" data-external-id="MyTestComponent1" contenteditable="false"></feaas-external>' +
|
|
41
89
|
'<feaas-external id="external-component2" class="-component" data-attributes-keys="first-name,address" first-name="George" address="Test street 12" data-attributes="{"first-name":"George","address":"Test street 12"}" data-external-id="MyTestComponent2" contenteditable="false"></feaas-external>'
|
|
@@ -46,4 +94,13 @@ describe('External', () => {
|
|
|
46
94
|
await expect(component2.whenRendered).resolves.toEqual(component2)
|
|
47
95
|
expect(component2.innerHTML).toEqual('<div>Hello my name is George and my address is Test street 12</div>')
|
|
48
96
|
})
|
|
97
|
+
it('can successfully parse component props', async () => {
|
|
98
|
+
Clientside.External.registerComponent(TypesComponent, typesComponentSchema)
|
|
99
|
+
document.body.innerHTML = `<feaas-external id="types-component" class="-component" data-attributes-keys="string-prop,number-prop,boolean-prop,array-prop,object-prop" string-prop="this is a string" number-prop="5" boolean-prop="true" array-prop="[1,2,3,4,5]" object-prop="{"value":"object value"}" data-attributes="{"first-name":"Chuck","telephone":"45657890875643"}" data-external-id="TypesComponent" contenteditable="false"></feaas-external>`
|
|
100
|
+
const typesComponent = document.getElementById('types-component') as FEAASExternal
|
|
101
|
+
await expect(typesComponent.whenRendered).resolves.toEqual(typesComponent)
|
|
102
|
+
expect(typesComponent.innerHTML).toEqual(
|
|
103
|
+
'<div>Text: this is a string, Number + 1: 6, Boolean: it is true, Array (joined): 1, 2, 3, 4, 5, Object: object value</div>'
|
|
104
|
+
)
|
|
105
|
+
})
|
|
49
106
|
})
|
package/test/fetch.ts
CHANGED
|
@@ -19,15 +19,18 @@ export interface ReactPayload {
|
|
|
19
19
|
* Initialization lifecycle:
|
|
20
20
|
*
|
|
21
21
|
* - `set(props)`
|
|
22
|
-
* - `
|
|
23
|
-
* - `
|
|
24
|
-
* - `
|
|
25
|
-
* - `
|
|
26
|
-
* - `
|
|
27
|
-
* -
|
|
28
|
-
* -
|
|
29
|
-
* -
|
|
30
|
-
* - `
|
|
22
|
+
* - `scheduleRender()` - any attribute change causes render to schedule to next frame
|
|
23
|
+
* - `whenRendered.restart()` - rendering promise is reset and will resolve after render
|
|
24
|
+
* - `advance()` - called on next frame
|
|
25
|
+
* - `if (isReadyToLoad()) => boolean` - check if component has all necessary properties to load
|
|
26
|
+
* - `load() => payload` => component is loaded
|
|
27
|
+
* - `onLoad?(payload)` => invoke loaded callback
|
|
28
|
+
* - `advance()` => going further in state machine
|
|
29
|
+
* - `flush()` => flushes all react changes if needed
|
|
30
|
+
* - `update()` => component-specific method (or react) to render changes to dom
|
|
31
|
+
* - `render(payload, props)` => render means react
|
|
32
|
+
* - `whenRendered.resolve()` - rendering promise is resolved after rendering
|
|
33
|
+
* - `whenLoaded.resolved()` - resolved after loading and rendering
|
|
31
34
|
*/
|
|
32
35
|
export declare class FEAASBase<Props = any, Payload = any> extends WebComponent {
|
|
33
36
|
static observedAttributes: string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FEAASBase.d.ts","sourceRoot":"","sources":["../../src/components/FEAASBase.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAyB,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAC3E,OAAO,KAAK,cAAc,MAAM,kBAAkB,CAAA;AAClD,OAAO,KAAK,QAAQ,MAAM,WAAW,CAAA;AACrC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAEvD,MAAM,MAAM,cAAc,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;AAGnF,QAAA,IAAI,YAAY;;;CAOC,CAAA;AAEjB,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,OAAO,KAAK,CAAA;IACnB,QAAQ,EAAE,OAAO,QAAQ,CAAA;IACzB,cAAc,EAAE,OAAO,cAAc,CAAA;CACtC;AACD
|
|
1
|
+
{"version":3,"file":"FEAASBase.d.ts","sourceRoot":"","sources":["../../src/components/FEAASBase.tsx"],"names":[],"mappings":"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"}
|
package/types/dom/data.d.ts
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
import { JSONPath } from 'jsonpath-plus';
|
|
2
2
|
export type Datascopes = Record<string, any> | any[];
|
|
3
|
-
export declare function cleanCollectionBit(path: string): string;
|
|
4
|
-
export declare function normalizeCollectionScope(path: string): string;
|
|
5
3
|
export declare function queryScopes(scopes: any, datapath: string, singleValue?: boolean, json?: any): any;
|
|
6
4
|
export type CH1Node = {
|
|
7
5
|
type: string;
|
package/types/dom/data.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../../src/dom/data.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAExC,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,CAAA;AAEpD,wBAAgB,
|
|
1
|
+
{"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../../src/dom/data.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAExC,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,CAAA;AAEpD,wBAAgB,WAAW,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,UAAQ,EAAE,IAAI,GAAE,GAAY,OAsDjG;AAED,MAAM,MAAM,OAAO,GACf;IACE,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,OAAO,EAAE,CAAA;IACnB,KAAK,CAAC,EAAE,OAAO,EAAE,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;CAC5B,GACD,OAAO,EAAE,CAAA;AAQb,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAqCtF;AAED,OAAO,EAAE,QAAQ,EAAE,CAAA"}
|
package/types/dom/html.d.ts
CHANGED
|
@@ -19,9 +19,11 @@ declare class HTMLNode {
|
|
|
19
19
|
removeAttribute(attrName: string): void;
|
|
20
20
|
appendChild(newNode: HTMLNode): void;
|
|
21
21
|
get tagName(): string;
|
|
22
|
+
get localName(): string;
|
|
22
23
|
get innerHTML(): string;
|
|
23
24
|
set innerHTML(html: string);
|
|
24
25
|
get outerHTML(): string;
|
|
26
|
+
get children(): HTMLNode[];
|
|
25
27
|
closest(selector: string): HTMLNode | null;
|
|
26
28
|
querySelectorAll(selector: string): HTMLNode[];
|
|
27
29
|
querySelector(selector: string): HTMLNode;
|
package/types/dom/html.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"html.d.ts","sourceRoot":"","sources":["../../src/dom/html.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAE1E,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AACtC,OAAO,EAAE,mBAAmB,EAAoB,MAAM,gBAAgB,CAAA;AAEtE,KAAK,aAAa,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAA;AAEpD,cAAM,QAAQ;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,aAAa,EAAE,CAAA;IAC3B,UAAU,EAAE,QAAQ,EAAE,CAAA;IACtB,UAAU,CAAC,EAAE,QAAQ,CAAA;gBAET,QAAQ,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAU,EAAE,WAAW,CAAC,EAAE,MAAM;IAQxE,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IASxC,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAK9C,YAAY,CAAC,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,GAAG,IAAI;IAY9D,eAAe,CAAC,QAAQ,EAAE,MAAM;IAOhC,WAAW,CAAC,OAAO,EAAE,QAAQ;IAK7B,IAAI,OAAO,WAEV;
|
|
1
|
+
{"version":3,"file":"html.d.ts","sourceRoot":"","sources":["../../src/dom/html.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAE1E,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AACtC,OAAO,EAAE,mBAAmB,EAAoB,MAAM,gBAAgB,CAAA;AAEtE,KAAK,aAAa,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAA;AAEpD,cAAM,QAAQ;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,aAAa,EAAE,CAAA;IAC3B,UAAU,EAAE,QAAQ,EAAE,CAAA;IACtB,UAAU,CAAC,EAAE,QAAQ,CAAA;gBAET,QAAQ,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAU,EAAE,WAAW,CAAC,EAAE,MAAM;IAQxE,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IASxC,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAK9C,YAAY,CAAC,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,GAAG,IAAI;IAY9D,eAAe,CAAC,QAAQ,EAAE,MAAM;IAOhC,WAAW,CAAC,OAAO,EAAE,QAAQ;IAK7B,IAAI,OAAO,WAEV;IAED,IAAI,SAAS,WAEZ;IAED,IAAI,SAAS,IAGO,MAAM,CADzB;IACD,IAAI,SAAS,CAAC,IAAI,EAAE,MAAM,EAEzB;IACD,IAAI,SAAS,WAEZ;IACD,IAAI,QAAQ,eAEX;IAED,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI;IAc1C,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,EAAE;IAwB9C,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ;IAIzC,OAAO,CAAC,WAAW;IAgBnB,WAAW,CAAC,KAAK,EAAE,QAAQ,GAAG,QAAQ;IAQtC,IAAI,eAAe,IAAI,QAAQ,GAAG,IAAI,CAErC;IAED,IAAI,WAAW,IAAI,QAAQ,GAAG,IAAI,CAEjC;IAED,IAAI,sBAAsB,IAAI,QAAQ,GAAG,IAAI,CAE5C;IAED,IAAI,kBAAkB,IAAI,QAAQ,GAAG,IAAI,CAExC;IACD,SAAS,CAAC,IAAI,GAAE,OAAe,GAAG,QAAQ;IAiB1C,IAAI,aAAa,aAEhB;IAED,aAAa;4BACS,MAAM,GAAG,QAAQ;MAGtC;CACF;AA+CD,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,EAAE,CAgDlD;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAOhD;AAWD,wBAAgB,aAAa,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,MAAM,CAmBvD;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,mBAAmB,UAIlG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rendering.d.ts","sourceRoot":"","sources":["../../src/dom/rendering.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAA;AAClD,OAAO,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"rendering.d.ts","sourceRoot":"","sources":["../../src/dom/rendering.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAA;AAClD,OAAO,EAAE,UAAU,EAAqC,MAAM,WAAW,CAAA;AAKzE,MAAM,WAAW,mBAAmB;IAClC,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,MAAM,CAAA;IAC/E,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,KAAK,GAAG,CAAA;IACtD,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,GAAG,CAAA;IAC1E,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,KAAK,OAAO,CAAA;IAC5D,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,KAAK,IAAI,CAAA;CACrD;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,MAAM,mBAAmB,CAAC,CAAC,GAAG,UAAU,IAAI,OAAO,CAAC,gBAAgB,CAAC,GAAG;IAC5E,IAAI,CAAC,EAAE,CAAC,CAAA;CACT,GAAG,CAAC,gBAAgB,GAAG,sBAAsB,CAAC,GAC7C,mBAAmB,CAAA;AAsDrB,wBAAgB,eAAe,CAAC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,mBAAmB,QAoEhH;AAID,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,WAAW,GAAG,gBAAgB,EACrC,UAAU,CAAC,EAAE,GAAG,EAChB,MAAM,CAAC,EAAE,mBAAmB,EAC5B,QAAQ,CAAC,EAAE,OAAO,eA0CnB;AAKD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,mBAAmB,eAcpH;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,mBAAmB,EAAE,OAAO,UAAQ,UAWnH"}
|
package/types/headless.d.ts
CHANGED
|
@@ -15,6 +15,7 @@ export * from './components/FEAASElement.js';
|
|
|
15
15
|
export * from './components/FEAASComponent.js';
|
|
16
16
|
export * from './components/FEAASLoader.js';
|
|
17
17
|
export * from './components/FEAASStylesheet.js';
|
|
18
|
+
export * from './utils/datapath.js';
|
|
18
19
|
declare global {
|
|
19
20
|
interface Window {
|
|
20
21
|
FEAASLoading: Promise<any>;
|
package/types/headless.d.ts.map
CHANGED
|
@@ -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;
|
|
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;AAEnC,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,CAAA;QAC1B,YAAY,EAAE,OAAO,YAAY,CAAA;KAClC;CACF"}
|