@furystack/shades 6.0.4 → 6.0.7
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/dist/component-factory.spec.js +8 -8
- package/dist/component-factory.spec.js.map +1 -1
- package/dist/components/index.js +17 -4
- package/dist/components/index.js.map +1 -1
- package/dist/components/lazy-load.spec.js +2 -4
- package/dist/components/lazy-load.spec.js.map +1 -1
- package/dist/components/route-link.spec.js +1 -2
- package/dist/components/route-link.spec.js.map +1 -1
- package/dist/components/router.js +8 -7
- package/dist/components/router.js.map +1 -1
- package/dist/components/router.spec.js +2 -2
- package/dist/components/router.spec.js.map +1 -1
- package/dist/index.js +20 -7
- package/dist/index.js.map +1 -1
- package/dist/jsx.js +0 -6
- package/dist/jsx.js.map +1 -1
- package/dist/models/index.js +19 -6
- package/dist/models/index.js.map +1 -1
- package/dist/services/index.js +16 -3
- package/dist/services/index.js.map +1 -1
- package/dist/services/location-service.js +11 -3
- package/dist/services/location-service.js.map +1 -1
- package/dist/services/screen-service.js +12 -4
- package/dist/services/screen-service.js.map +1 -1
- package/dist/shade-component.js +4 -4
- package/dist/shade-component.js.map +1 -1
- package/dist/shade.js +37 -35
- package/dist/shade.js.map +1 -1
- package/dist/shades.integration.spec.js +129 -6
- package/dist/shades.integration.spec.js.map +1 -1
- package/package.json +7 -8
- package/src/component-factory.spec.tsx +8 -8
- package/src/jsx.ts +3 -9
- package/src/models/partial-element.ts +5 -3
- package/src/models/render-options.ts +1 -1
- package/src/shade-component.ts +5 -5
- package/src/shade.ts +61 -41
- package/src/shades.integration.spec.tsx +188 -5
- package/types/components/route-link.d.ts +3 -1
- package/types/components/route-link.d.ts.map +1 -1
- package/types/jsx.d.ts +3 -5
- package/types/jsx.d.ts.map +1 -1
- package/types/models/partial-element.d.ts +3 -3
- package/types/models/partial-element.d.ts.map +1 -1
- package/types/models/render-options.d.ts +1 -1
- package/types/models/render-options.d.ts.map +1 -1
- package/types/shade-component.d.ts +2 -2
- package/types/shade-component.d.ts.map +1 -1
- package/types/shade.d.ts +8 -2
- package/types/shade.d.ts.map +1 -1
- package/dist/is-jsx-element.spec.js +0 -18
- package/dist/is-jsx-element.spec.js.map +0 -1
- package/src/is-jsx-element.spec.ts +0 -18
- package/types/is-jsx-element.spec.d.ts +0 -2
- package/types/is-jsx-element.spec.d.ts.map +0 -1
package/dist/shade.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Shade = void 0;
|
|
4
|
-
const utils_1 = require("@furystack/utils");
|
|
5
4
|
const inject_1 = require("@furystack/inject");
|
|
6
5
|
/**
|
|
7
6
|
* Factory method for creating Shade components
|
|
@@ -18,12 +17,8 @@ const Shade = (o) => {
|
|
|
18
17
|
constructor(_props) {
|
|
19
18
|
super();
|
|
20
19
|
this.compareState = o.compareState ||
|
|
21
|
-
((oldState, newState) => Object.entries(oldState).some(([key, value]) => value !== newState[key]) ||
|
|
20
|
+
(({ oldState, newState }) => Object.entries(oldState).some(([key, value]) => value !== newState[key]) ||
|
|
22
21
|
Object.entries(newState).some(([key, value]) => value !== oldState[key]));
|
|
23
|
-
/**
|
|
24
|
-
* Will be updated when on children change
|
|
25
|
-
*/
|
|
26
|
-
this.shadeChildren = new utils_1.ObservableValue([]);
|
|
27
22
|
/**
|
|
28
23
|
* @param options Options for rendering the component
|
|
29
24
|
* @returns the JSX element
|
|
@@ -33,30 +28,42 @@ const Shade = (o) => {
|
|
|
33
28
|
* @returns values for the current render options
|
|
34
29
|
*/
|
|
35
30
|
this.getRenderOptions = () => {
|
|
36
|
-
const props = this.props
|
|
37
|
-
const getState = () => this.state
|
|
31
|
+
const props = { ...this.props };
|
|
32
|
+
const getState = () => ({ ...this.state });
|
|
38
33
|
const updateState = (stateChanges, skipRender) => {
|
|
39
|
-
const
|
|
40
|
-
const newState = { ...
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
34
|
+
const oldState = { ...this.state };
|
|
35
|
+
const newState = { ...oldState, ...stateChanges };
|
|
36
|
+
this.state = newState;
|
|
37
|
+
if (!skipRender &&
|
|
38
|
+
this.compareState({
|
|
39
|
+
oldState,
|
|
40
|
+
newState,
|
|
41
|
+
props,
|
|
42
|
+
element: this,
|
|
43
|
+
injector: this.injector,
|
|
44
|
+
})) {
|
|
45
|
+
this.updateComponent();
|
|
44
46
|
}
|
|
45
47
|
};
|
|
46
48
|
const returnValue = {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
49
|
+
...{
|
|
50
|
+
props,
|
|
51
|
+
injector: this.injector,
|
|
52
|
+
children: this.shadeChildren,
|
|
53
|
+
element: this,
|
|
54
|
+
},
|
|
55
|
+
...(o.getInitialState
|
|
56
|
+
? {
|
|
57
|
+
getState,
|
|
58
|
+
updateState,
|
|
59
|
+
}
|
|
60
|
+
: {}),
|
|
53
61
|
};
|
|
54
62
|
return returnValue;
|
|
55
63
|
};
|
|
56
64
|
this.cleanup = undefined;
|
|
57
65
|
this.resources = [];
|
|
58
|
-
this.props =
|
|
59
|
-
this.state = new utils_1.ObservableValue();
|
|
66
|
+
this.props = _props;
|
|
60
67
|
}
|
|
61
68
|
connectedCallback() {
|
|
62
69
|
o.onAttach && o.onAttach(this.getRenderOptions());
|
|
@@ -66,19 +73,18 @@ const Shade = (o) => {
|
|
|
66
73
|
o.onDetach && o.onDetach(this.getRenderOptions());
|
|
67
74
|
Object.values(this.resources).forEach((s) => s.dispose());
|
|
68
75
|
this.cleanup && this.cleanup();
|
|
69
|
-
this.shadeChildren.dispose();
|
|
70
|
-
this.props.dispose();
|
|
71
|
-
this.state.dispose();
|
|
72
76
|
}
|
|
73
77
|
createResources() {
|
|
74
|
-
|
|
75
|
-
this.resources.push(...(((_a = o.resources) === null || _a === void 0 ? void 0 : _a.call(o, this.getRenderOptions())) || []));
|
|
78
|
+
this.resources.push(...(o.resources?.(this.getRenderOptions()) || []));
|
|
76
79
|
}
|
|
77
80
|
/**
|
|
78
81
|
* Updates the component in the DOM.
|
|
79
82
|
*/
|
|
80
83
|
updateComponent() {
|
|
81
84
|
const renderResult = this.render(this.getRenderOptions());
|
|
85
|
+
if (renderResult === null) {
|
|
86
|
+
this.innerHTML = '';
|
|
87
|
+
}
|
|
82
88
|
if (typeof renderResult === 'string') {
|
|
83
89
|
this.innerHTML = renderResult;
|
|
84
90
|
}
|
|
@@ -98,12 +104,9 @@ const Shade = (o) => {
|
|
|
98
104
|
* Finialize the component initialization after it gets the Props. Called by the framework internally
|
|
99
105
|
*/
|
|
100
106
|
callConstructed() {
|
|
101
|
-
if (this.props.isDisposed) {
|
|
102
|
-
return;
|
|
103
|
-
}
|
|
104
107
|
;
|
|
105
108
|
o.getInitialState &&
|
|
106
|
-
this.state
|
|
109
|
+
(this.state = o.getInitialState({ props: { ...this.props }, injector: this.injector }));
|
|
107
110
|
this.updateComponent();
|
|
108
111
|
this.createResources();
|
|
109
112
|
const cleanupResult = o.constructed && o.constructed(this.getRenderOptions());
|
|
@@ -125,15 +128,14 @@ const Shade = (o) => {
|
|
|
125
128
|
}
|
|
126
129
|
}
|
|
127
130
|
get injector() {
|
|
128
|
-
var _a, _b;
|
|
129
131
|
if (this._injector) {
|
|
130
132
|
return this._injector;
|
|
131
133
|
}
|
|
132
|
-
const fromState =
|
|
134
|
+
const fromState = this.state?.injector;
|
|
133
135
|
if (fromState && fromState instanceof inject_1.Injector) {
|
|
134
136
|
return fromState;
|
|
135
137
|
}
|
|
136
|
-
const fromProps =
|
|
138
|
+
const fromProps = this.props?.injector;
|
|
137
139
|
if (fromProps && fromProps instanceof inject_1.Injector) {
|
|
138
140
|
return fromProps;
|
|
139
141
|
}
|
|
@@ -157,8 +159,8 @@ const Shade = (o) => {
|
|
|
157
159
|
const el = document.createElement(customElementName, {
|
|
158
160
|
...props,
|
|
159
161
|
});
|
|
160
|
-
el.props
|
|
161
|
-
el.shadeChildren
|
|
162
|
+
el.props = props;
|
|
163
|
+
el.shadeChildren = children;
|
|
162
164
|
return el;
|
|
163
165
|
};
|
|
164
166
|
};
|
package/dist/shade.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shade.js","sourceRoot":"","sources":["../src/shade.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"shade.js","sourceRoot":"","sources":["../src/shade.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,6 +21,81 @@ describe('Shades integration tests', () => {
|
|
|
21
21
|
});
|
|
22
22
|
expect(document.body.innerHTML).toBe('<div id="root"><shades-example><div>Hello</div></shades-example></div>');
|
|
23
23
|
});
|
|
24
|
+
it('Should mount a custom component with a string render result', () => {
|
|
25
|
+
const injector = new inject_1.Injector();
|
|
26
|
+
const rootElement = document.getElementById('root');
|
|
27
|
+
const ExampleComponent = (0, shade_1.Shade)({ render: () => 'Hello', shadowDomName: 'shades-string-render-result' });
|
|
28
|
+
(0, initialize_1.initializeShadeRoot)({
|
|
29
|
+
injector,
|
|
30
|
+
rootElement,
|
|
31
|
+
jsxElement: (0, shade_component_1.createComponent)(ExampleComponent, null),
|
|
32
|
+
});
|
|
33
|
+
expect(document.body.innerHTML).toBe('<div id="root"><shades-string-render-result>Hello</shades-string-render-result></div>');
|
|
34
|
+
});
|
|
35
|
+
it('Should mount a custom component with null render result', () => {
|
|
36
|
+
const injector = new inject_1.Injector();
|
|
37
|
+
const rootElement = document.getElementById('root');
|
|
38
|
+
const ExampleComponent = (0, shade_1.Shade)({ render: () => null, shadowDomName: 'shades-null-render-result' });
|
|
39
|
+
(0, initialize_1.initializeShadeRoot)({
|
|
40
|
+
injector,
|
|
41
|
+
rootElement,
|
|
42
|
+
jsxElement: (0, shade_component_1.createComponent)(ExampleComponent, null),
|
|
43
|
+
});
|
|
44
|
+
expect(document.body.innerHTML).toBe('<div id="root"><shades-null-render-result></shades-null-render-result></div>');
|
|
45
|
+
});
|
|
46
|
+
it('Should mount a custom component with a document fragment render result', () => {
|
|
47
|
+
const injector = new inject_1.Injector();
|
|
48
|
+
const rootElement = document.getElementById('root');
|
|
49
|
+
const ExampleComponent = (0, shade_1.Shade)({
|
|
50
|
+
render: () => ((0, shade_component_1.createComponent)(shade_component_1.createFragment, null,
|
|
51
|
+
(0, shade_component_1.createComponent)("p", null, "1"),
|
|
52
|
+
(0, shade_component_1.createComponent)("p", null, "2"))),
|
|
53
|
+
shadowDomName: 'shades-fragment-render-result',
|
|
54
|
+
});
|
|
55
|
+
(0, initialize_1.initializeShadeRoot)({
|
|
56
|
+
injector,
|
|
57
|
+
rootElement,
|
|
58
|
+
jsxElement: (0, shade_component_1.createComponent)(ExampleComponent, null),
|
|
59
|
+
});
|
|
60
|
+
expect(document.body.innerHTML).toBe('<div id="root"><shades-fragment-render-result><p>1</p><p>2</p></shades-fragment-render-result></div>');
|
|
61
|
+
});
|
|
62
|
+
it('Should mount a custom component with a nested document fragment render result', () => {
|
|
63
|
+
const injector = new inject_1.Injector();
|
|
64
|
+
const rootElement = document.getElementById('root');
|
|
65
|
+
const ExampleComponent = (0, shade_1.Shade)({
|
|
66
|
+
render: () => ((0, shade_component_1.createComponent)("p", null,
|
|
67
|
+
(0, shade_component_1.createComponent)(shade_component_1.createFragment, null,
|
|
68
|
+
(0, shade_component_1.createComponent)("p", null, "1"),
|
|
69
|
+
(0, shade_component_1.createComponent)("p", null, "2")))),
|
|
70
|
+
shadowDomName: 'shades-fragment-render-result-nested',
|
|
71
|
+
});
|
|
72
|
+
(0, initialize_1.initializeShadeRoot)({
|
|
73
|
+
injector,
|
|
74
|
+
rootElement,
|
|
75
|
+
jsxElement: (0, shade_component_1.createComponent)(ExampleComponent, null),
|
|
76
|
+
});
|
|
77
|
+
expect(document.body.innerHTML).toBe('<div id="root"><shades-fragment-render-result-nested><p><p>1</p><p>2</p></p></shades-fragment-render-result-nested></div>');
|
|
78
|
+
});
|
|
79
|
+
it('Should mount a custom component with a document fragment that contains custom components', () => {
|
|
80
|
+
const injector = new inject_1.Injector();
|
|
81
|
+
const rootElement = document.getElementById('root');
|
|
82
|
+
const CustomComponent = (0, shade_1.Shade)({
|
|
83
|
+
shadowDomName: 'shades-fragment-test-custom-component',
|
|
84
|
+
render: () => (0, shade_component_1.createComponent)("p", null, "Hello"),
|
|
85
|
+
});
|
|
86
|
+
const ExampleComponent = (0, shade_1.Shade)({
|
|
87
|
+
render: () => ((0, shade_component_1.createComponent)(shade_component_1.createFragment, null,
|
|
88
|
+
(0, shade_component_1.createComponent)(CustomComponent, null),
|
|
89
|
+
(0, shade_component_1.createComponent)(CustomComponent, null))),
|
|
90
|
+
shadowDomName: 'shades-fragment-render-result-2',
|
|
91
|
+
});
|
|
92
|
+
(0, initialize_1.initializeShadeRoot)({
|
|
93
|
+
injector,
|
|
94
|
+
rootElement,
|
|
95
|
+
jsxElement: (0, shade_component_1.createComponent)(ExampleComponent, null),
|
|
96
|
+
});
|
|
97
|
+
expect(document.body.innerHTML).toBe('<div id="root"><shades-fragment-render-result-2><shades-fragment-test-custom-component><p>Hello</p></shades-fragment-test-custom-component><shades-fragment-test-custom-component><p>Hello</p></shades-fragment-test-custom-component></shades-fragment-render-result-2></div>');
|
|
98
|
+
});
|
|
24
99
|
it('Should mount nested Shades components', () => {
|
|
25
100
|
const injector = new inject_1.Injector();
|
|
26
101
|
const rootElement = document.getElementById('root');
|
|
@@ -103,16 +178,64 @@ describe('Shades integration tests', () => {
|
|
|
103
178
|
rootElement,
|
|
104
179
|
jsxElement: (0, shade_component_1.createComponent)(ExampleComponent, null),
|
|
105
180
|
});
|
|
106
|
-
const plus = () =>
|
|
107
|
-
const minus = () =>
|
|
108
|
-
expect(document.body.innerHTML).toContain(
|
|
181
|
+
const plus = () => document.getElementById('plus')?.click();
|
|
182
|
+
const minus = () => document.getElementById('minus')?.click();
|
|
183
|
+
const expectCount = (count) => expect(document.body.innerHTML).toContain(`Count is ${count}`);
|
|
184
|
+
expectCount(0);
|
|
109
185
|
plus();
|
|
110
|
-
|
|
186
|
+
expectCount(1);
|
|
111
187
|
plus();
|
|
112
|
-
|
|
188
|
+
expectCount(2);
|
|
113
189
|
minus();
|
|
114
190
|
minus();
|
|
115
|
-
|
|
191
|
+
expectCount(0);
|
|
192
|
+
});
|
|
193
|
+
it('Should allow children update after unmount and remount', () => {
|
|
194
|
+
const injector = new inject_1.Injector();
|
|
195
|
+
const rootElement = document.getElementById('root');
|
|
196
|
+
const Parent = (0, shade_1.Shade)({
|
|
197
|
+
shadowDomName: 'shade-remount-parent',
|
|
198
|
+
getInitialState: () => ({ areChildrenVisible: true }),
|
|
199
|
+
render: ({ children, getState, updateState }) => ((0, shade_component_1.createComponent)("div", null,
|
|
200
|
+
(0, shade_component_1.createComponent)("button", { id: "showHideChildren", onclick: () => {
|
|
201
|
+
updateState({ areChildrenVisible: !getState().areChildrenVisible });
|
|
202
|
+
} }, "Toggle"),
|
|
203
|
+
getState().areChildrenVisible ? children : (0, shade_component_1.createComponent)("div", null))),
|
|
204
|
+
});
|
|
205
|
+
const Child = (0, shade_1.Shade)({
|
|
206
|
+
shadowDomName: 'example-remount-child',
|
|
207
|
+
getInitialState: () => ({ count: 0 }),
|
|
208
|
+
render: ({ getState, updateState }) => {
|
|
209
|
+
const { count } = getState();
|
|
210
|
+
return ((0, shade_component_1.createComponent)("div", null,
|
|
211
|
+
"Count is ",
|
|
212
|
+
getState().count.toString(),
|
|
213
|
+
(0, shade_component_1.createComponent)("button", { id: "plus", onclick: () => updateState({ count: count + 1 }) }, "+"),
|
|
214
|
+
(0, shade_component_1.createComponent)("button", { id: "minus", onclick: () => updateState({ count: count - 1 }) }, "-")));
|
|
215
|
+
},
|
|
216
|
+
});
|
|
217
|
+
(0, initialize_1.initializeShadeRoot)({
|
|
218
|
+
injector,
|
|
219
|
+
rootElement,
|
|
220
|
+
jsxElement: ((0, shade_component_1.createComponent)(Parent, null,
|
|
221
|
+
(0, shade_component_1.createComponent)(Child, null))),
|
|
222
|
+
});
|
|
223
|
+
const plus = () => document.getElementById('plus')?.click();
|
|
224
|
+
const minus = () => document.getElementById('minus')?.click();
|
|
225
|
+
const expectCount = (count) => expect(document.body.innerHTML).toContain(`Count is ${count}`);
|
|
226
|
+
const toggleChildren = () => document.getElementById('showHideChildren')?.click();
|
|
227
|
+
expectCount(0);
|
|
228
|
+
plus();
|
|
229
|
+
expectCount(1);
|
|
230
|
+
toggleChildren();
|
|
231
|
+
expect(document.getElementById('plus')).toBeNull();
|
|
232
|
+
toggleChildren();
|
|
233
|
+
expect(document.getElementById('plus')).toBeDefined();
|
|
234
|
+
// expectCount(0)
|
|
235
|
+
plus();
|
|
236
|
+
expectCount(1);
|
|
237
|
+
minus();
|
|
238
|
+
expectCount(0);
|
|
116
239
|
});
|
|
117
240
|
});
|
|
118
241
|
//# sourceMappingURL=shades.integration.spec.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shades.integration.spec.js","sourceRoot":"","sources":["../src/shades.integration.spec.tsx"],"names":[],"mappings":";;AAAA,8CAA4C;AAE5C,+BAA+C;AAE/C,MAAM,CAAC,WAAW,GAAG,kBAAW,CAAA;AAChC,MAAM,CAAC,WAAW,GAAG,kBAAkB,CAAA;AAEvC,6CAAkD;AAClD,mCAA+B;AAC/B,
|
|
1
|
+
{"version":3,"file":"shades.integration.spec.js","sourceRoot":"","sources":["../src/shades.integration.spec.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@furystack/shades",
|
|
3
|
-
"version": "6.0.
|
|
3
|
+
"version": "6.0.7",
|
|
4
4
|
"description": "Google Authentication Provider for FuryStack",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"files": [
|
|
@@ -29,18 +29,17 @@
|
|
|
29
29
|
},
|
|
30
30
|
"homepage": "https://github.com/furystack/furystack",
|
|
31
31
|
"devDependencies": {
|
|
32
|
-
"@types/jest": "^
|
|
32
|
+
"@types/jest": "^29.0.0",
|
|
33
33
|
"@types/jsdom": "^20.0.0",
|
|
34
|
-
"@types/node": "^18.7.
|
|
34
|
+
"@types/node": "^18.7.15",
|
|
35
35
|
"jsdom": "^20.0.0"
|
|
36
36
|
},
|
|
37
37
|
"dependencies": {
|
|
38
|
-
"@furystack/core": "^11.0.
|
|
39
|
-
"@furystack/inject": "^7.0.
|
|
40
|
-
"@furystack/utils": "^3.0.
|
|
38
|
+
"@furystack/core": "^11.0.11",
|
|
39
|
+
"@furystack/inject": "^7.0.4",
|
|
40
|
+
"@furystack/utils": "^3.0.8",
|
|
41
41
|
"path-to-regexp": "^6.2.1",
|
|
42
|
-
"semaphore-async-await": "^1.5.1"
|
|
43
|
-
"tslib": "^2.4.0"
|
|
42
|
+
"semaphore-async-await": "^1.5.1"
|
|
44
43
|
},
|
|
45
44
|
"typings": "./types/index.d.ts",
|
|
46
45
|
"gitHead": "76e1d17a71b981984935c9a7a5791cf61ebf5213"
|
|
@@ -59,9 +59,9 @@ describe('Shades Component Factory', () => {
|
|
|
59
59
|
)
|
|
60
60
|
|
|
61
61
|
const shade = component.firstElementChild as JSX.Element
|
|
62
|
-
expect(shade.props
|
|
63
|
-
expect(shade.state
|
|
64
|
-
expect(shade.shadeChildren
|
|
62
|
+
expect(shade.props).toBe(null)
|
|
63
|
+
expect(shade.state).toBe(undefined)
|
|
64
|
+
expect(shade.shadeChildren).toStrictEqual([])
|
|
65
65
|
})
|
|
66
66
|
|
|
67
67
|
it('Should render a component with props', () => {
|
|
@@ -80,9 +80,9 @@ describe('Shades Component Factory', () => {
|
|
|
80
80
|
|
|
81
81
|
shade.callConstructed()
|
|
82
82
|
|
|
83
|
-
expect(shade.props.
|
|
84
|
-
expect(shade.state
|
|
85
|
-
expect(shade.shadeChildren
|
|
83
|
+
expect(shade.props.foo).toStrictEqual('example')
|
|
84
|
+
expect(shade.state).toBe(undefined)
|
|
85
|
+
expect(shade.shadeChildren).toStrictEqual([])
|
|
86
86
|
|
|
87
87
|
expect(shade.innerHTML).toBe('<div>example</div>')
|
|
88
88
|
})
|
|
@@ -102,8 +102,8 @@ describe('Shades Component Factory', () => {
|
|
|
102
102
|
|
|
103
103
|
const shade = component.firstElementChild as JSX.Element
|
|
104
104
|
shade.callConstructed()
|
|
105
|
-
expect(shade.state
|
|
106
|
-
expect(shade.shadeChildren
|
|
105
|
+
expect(shade.state).toStrictEqual({ foo: 'example' })
|
|
106
|
+
expect(shade.shadeChildren).toStrictEqual([])
|
|
107
107
|
})
|
|
108
108
|
})
|
|
109
109
|
})
|
package/src/jsx.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { ObservableValue } from '@furystack/utils'
|
|
2
1
|
import { Injector } from '@furystack/inject'
|
|
3
2
|
import { ChildrenList, PartialElement } from './models'
|
|
4
3
|
|
|
@@ -7,10 +6,10 @@ declare global {
|
|
|
7
6
|
export namespace JSX {
|
|
8
7
|
interface Element<TProps = any, TState = any> extends HTMLElement {
|
|
9
8
|
injector: Injector
|
|
10
|
-
state:
|
|
11
|
-
props:
|
|
9
|
+
state: TState
|
|
10
|
+
props: TProps
|
|
12
11
|
updateComponent: () => void
|
|
13
|
-
shadeChildren
|
|
12
|
+
shadeChildren?: ChildrenList
|
|
14
13
|
callConstructed: () => void
|
|
15
14
|
}
|
|
16
15
|
|
|
@@ -521,8 +520,3 @@ declare global {
|
|
|
521
520
|
}
|
|
522
521
|
}
|
|
523
522
|
}
|
|
524
|
-
|
|
525
|
-
export const isJsxElement = (obj: any): obj is JSX.Element => {
|
|
526
|
-
const casted = obj as JSX.Element
|
|
527
|
-
return casted.props !== undefined && casted.state !== undefined
|
|
528
|
-
}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
-
export type PartialElement<T extends { style?: CSSStyleDeclaration }
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
export type PartialElement<T> = T extends { style?: CSSStyleDeclaration }
|
|
2
|
+
? Omit<Partial<T>, 'style'> & {
|
|
3
|
+
style?: Partial<CSSStyleDeclaration>
|
|
4
|
+
}
|
|
5
|
+
: Partial<T>
|
package/src/shade-component.ts
CHANGED
|
@@ -6,12 +6,12 @@ import { ChildrenList, ShadeComponent, isShadeComponent } from './models'
|
|
|
6
6
|
* @param el the root element
|
|
7
7
|
* @param children array of items to append
|
|
8
8
|
*/
|
|
9
|
-
export const appendChild = (el: HTMLElement, children: ChildrenList) => {
|
|
9
|
+
export const appendChild = (el: HTMLElement | DocumentFragment, children: ChildrenList) => {
|
|
10
10
|
for (const child of children) {
|
|
11
11
|
if (typeof child === 'string') {
|
|
12
12
|
el.appendChild(document.createTextNode(child))
|
|
13
13
|
} else {
|
|
14
|
-
if (child instanceof HTMLElement) {
|
|
14
|
+
if (child instanceof HTMLElement || child instanceof DocumentFragment) {
|
|
15
15
|
el.appendChild(child)
|
|
16
16
|
} else if (child instanceof Array) {
|
|
17
17
|
appendChild(el, child)
|
|
@@ -70,14 +70,14 @@ export const createComponent = <TProps>(
|
|
|
70
70
|
}
|
|
71
71
|
return el
|
|
72
72
|
} else if (isShadeComponent(elementType)) {
|
|
73
|
-
const el =
|
|
73
|
+
const el = elementType(props, children)
|
|
74
74
|
attachStyles(el, props)
|
|
75
75
|
return el
|
|
76
76
|
}
|
|
77
77
|
}
|
|
78
78
|
|
|
79
|
-
export const createFragment = (_props: any,
|
|
79
|
+
export const createFragment = (_props: any, children: ChildrenList) => {
|
|
80
80
|
const fragment = document.createDocumentFragment()
|
|
81
|
-
fragment
|
|
81
|
+
appendChild(fragment, children)
|
|
82
82
|
return fragment
|
|
83
83
|
}
|