@furystack/shades 8.0.11 → 8.0.13

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 (52) hide show
  1. package/esm/component-factory.spec.d.ts +2 -0
  2. package/esm/component-factory.spec.d.ts.map +1 -0
  3. package/esm/component-factory.spec.js +80 -0
  4. package/esm/component-factory.spec.js.map +1 -0
  5. package/esm/components/lazy-load.js.map +1 -1
  6. package/esm/components/lazy-load.spec.d.ts +2 -0
  7. package/esm/components/lazy-load.spec.d.ts.map +1 -0
  8. package/esm/components/lazy-load.spec.js +76 -0
  9. package/esm/components/lazy-load.spec.js.map +1 -0
  10. package/esm/components/route-link.spec.d.ts +2 -0
  11. package/esm/components/route-link.spec.d.ts.map +1 -0
  12. package/esm/components/route-link.spec.js +33 -0
  13. package/esm/components/route-link.spec.js.map +1 -0
  14. package/esm/components/router.js.map +1 -1
  15. package/esm/components/router.spec.d.ts +2 -0
  16. package/esm/components/router.spec.d.ts.map +1 -0
  17. package/esm/components/router.spec.js +89 -0
  18. package/esm/components/router.spec.js.map +1 -0
  19. package/esm/services/location-service.js.map +1 -1
  20. package/esm/services/location-service.spec.d.ts +2 -0
  21. package/esm/services/location-service.spec.d.ts.map +1 -0
  22. package/esm/services/location-service.spec.js +90 -0
  23. package/esm/services/location-service.spec.js.map +1 -0
  24. package/esm/services/resource-manager.js.map +1 -1
  25. package/esm/services/resource-manager.spec.d.ts +2 -0
  26. package/esm/services/resource-manager.spec.d.ts.map +1 -0
  27. package/esm/services/resource-manager.spec.js +31 -0
  28. package/esm/services/resource-manager.spec.js.map +1 -0
  29. package/esm/services/screen-service.spec.d.ts +2 -0
  30. package/esm/services/screen-service.spec.d.ts.map +1 -0
  31. package/esm/services/screen-service.spec.js +28 -0
  32. package/esm/services/screen-service.spec.js.map +1 -0
  33. package/esm/shade-component.js.map +1 -1
  34. package/esm/shade-resources.integration.spec.d.ts +2 -0
  35. package/esm/shade-resources.integration.spec.d.ts.map +1 -0
  36. package/esm/shade-resources.integration.spec.js +58 -0
  37. package/esm/shade-resources.integration.spec.js.map +1 -0
  38. package/esm/shade.js.map +1 -1
  39. package/esm/shades.integration.spec.d.ts +2 -0
  40. package/esm/shades.integration.spec.d.ts.map +1 -0
  41. package/esm/shades.integration.spec.js +254 -0
  42. package/esm/shades.integration.spec.js.map +1 -0
  43. package/package.json +8 -8
  44. package/src/component-factory.spec.tsx +2 -2
  45. package/src/components/lazy-load.spec.tsx +4 -2
  46. package/src/components/route-link.spec.tsx +4 -2
  47. package/src/components/router.spec.tsx +5 -3
  48. package/src/services/location-service.spec.ts +1 -1
  49. package/src/services/resource-manager.spec.ts +1 -1
  50. package/src/services/screen-service.spec.ts +1 -1
  51. package/src/shade-resources.integration.spec.tsx +3 -3
  52. package/src/shades.integration.spec.tsx +3 -3
@@ -0,0 +1,2 @@
1
+ import './jsx';
2
+ //# sourceMappingURL=component-factory.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component-factory.spec.d.ts","sourceRoot":"","sources":["../src/component-factory.spec.tsx"],"names":[],"mappings":"AACA,OAAO,OAAO,CAAA"}
@@ -0,0 +1,80 @@
1
+ import { createComponent } from './shade-component.js';
2
+ import './jsx';
3
+ import { Shade } from './shade.js';
4
+ import { Injector } from '@furystack/inject';
5
+ import { describe, it, expect, vi } from 'vitest';
6
+ describe('Shades Component Factory', () => {
7
+ describe('HTML Elements', () => {
8
+ it('Should create a simple component', () => {
9
+ const component = createComponent("div", null, "test");
10
+ expect(component).toBeInstanceOf(HTMLDivElement);
11
+ expect(component.innerHTML).toBe('test');
12
+ expect(component.outerHTML).toBe('<div>test</div>');
13
+ });
14
+ it('Should apply styles', () => {
15
+ const component = createComponent("div", { style: { color: 'red' } }, "a");
16
+ expect(component).toBeInstanceOf(HTMLDivElement);
17
+ expect(component.style.color).toBe('red');
18
+ });
19
+ it('Should apply data attributes', () => {
20
+ const component = createComponent("div", { "data-testid": "asd-123" }, "a");
21
+ expect(component).toBeInstanceOf(HTMLDivElement);
22
+ expect(component.getAttribute('data-testid')).toBe('asd-123');
23
+ });
24
+ it('Should create a nested component', () => {
25
+ const component = (createComponent("div", { style: { display: 'flex' } },
26
+ createComponent("h1", null, "Hi, I'm a header"),
27
+ createComponent("p", null,
28
+ "paragraph... ",
29
+ ['a', 'b', 'c']),
30
+ createComponent("a", { target: "_blank", href: "https://google.com" }, "link")));
31
+ expect(component).toBeInstanceOf(HTMLDivElement);
32
+ expect(component.childElementCount).toBe(3);
33
+ expect(component.innerHTML).toBe(`<h1>Hi, I'm a header</h1><p>paragraph... abc</p><a target="_blank" href="https://google.com">link</a>`);
34
+ });
35
+ it('Should attach listeners', () => {
36
+ const onclick = vi.fn();
37
+ const component = createComponent("div", { onclick: onclick });
38
+ expect(component.onclick).toBe(onclick);
39
+ });
40
+ });
41
+ describe('Shade components', () => {
42
+ it('Should render a basic component', () => {
43
+ const Example = Shade({ shadowDomName: 'example-basic', render: () => createComponent("div", null) });
44
+ const component = (createComponent("div", null,
45
+ createComponent(Example, null)));
46
+ const shade = component.firstElementChild;
47
+ expect(shade.props).toEqual({});
48
+ expect(shade.shadeChildren).toEqual([]);
49
+ });
50
+ it('Should render a component with props', () => {
51
+ const Example = Shade({
52
+ shadowDomName: 'example-with-props',
53
+ render: ({ props }) => createComponent("div", null, props.foo),
54
+ });
55
+ const component = (createComponent("div", null,
56
+ createComponent(Example, { foo: "example", injector: new Injector() })));
57
+ const shade = component.firstElementChild;
58
+ shade.callConstructed();
59
+ expect(shade.props.foo).toEqual('example');
60
+ expect(shade.shadeChildren).toEqual([]);
61
+ expect(shade.innerHTML).toBe('<div>example</div>');
62
+ });
63
+ it('Should render a component with state', () => {
64
+ const Example = Shade({
65
+ shadowDomName: 'example-with-state',
66
+ render: ({ useState }) => {
67
+ useState('foo', 'example');
68
+ return createComponent("div", null);
69
+ },
70
+ });
71
+ const component = (createComponent("div", null,
72
+ createComponent(Example, { injector: new Injector() })));
73
+ const shade = component.firstElementChild;
74
+ shade.callConstructed();
75
+ expect(shade.resourceManager.stateObservers.get('foo')?.getValue()).toEqual('example');
76
+ expect(shade.shadeChildren).toEqual([]);
77
+ });
78
+ });
79
+ });
80
+ //# sourceMappingURL=component-factory.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component-factory.spec.js","sourceRoot":"","sources":["../src/component-factory.spec.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"lazy-load.js","sourceRoot":"","sources":["../../src/components/lazy-load.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAanC,MAAM,CAAC,MAAM,QAAQ,GAAG,KAAK,CAAgB;IAC3C,aAAa,EAAE,WAAW;IAC1B,WAAW,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE;QAClD,MAAM,CAAC,UAAU,EAAE,YAAY,CAAC,GAAG,QAAQ,CAA0B,WAAW,EAAE,SAAS,CAAC,CAAA;QAC5F,MAAM,CAAC,WAAW,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAsB,OAAO,EAAE,SAAS,CAAC,CAAA;QACtF,IAAI;YACF,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,SAAS,EAAE,CAAA;YACtC,OAAO,CAAC,WAAW,IAAI,YAAY,CAAC,MAAM,CAAC,CAAA;SAC5C;QAAC,OAAO,KAAK,EAAE;YACd,IAAI,KAAK,CAAC,KAAK,EAAE;gBACf,OAAO,CAAC,WAAW,IAAI,aAAa,CAAC,KAAK,CAAC,CAAA;aAC5C;iBAAM;gBACL,MAAM,KAAK,CAAA;aACZ;SACF;IACH,CAAC;IACD,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE;QAC9B,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAsB,OAAO,EAAE,SAAS,CAAC,CAAA;QAC3E,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAA0B,WAAW,EAAE,SAAS,CAAC,CAAA;QAE3F,IAAI,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;YACxB,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE;gBACnC,IAAI;oBACF,QAAQ,CAAC,SAAS,CAAC,CAAA;oBACnB,YAAY,CAAC,SAAS,CAAC,CAAA;oBACvB,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,SAAS,EAAE,CAAA;oBACtC,YAAY,CAAC,MAAM,CAAC,CAAA;iBACrB;gBAAC,OAAO,CAAC,EAAE;oBACV,QAAQ,CAAC,CAAC,CAAC,CAAA;iBACZ;YACH,CAAC,CAAC,CAAA;SACH;QACD,IAAI,SAAS,EAAE;YACb,OAAO,SAAS,CAAA;SACjB;QACD,OAAO,KAAK,CAAC,MAAM,CAAA;IACrB,CAAC;CACF,CAAC,CAAA"}
1
+ {"version":3,"file":"lazy-load.js","sourceRoot":"","sources":["../../src/components/lazy-load.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAanC,MAAM,CAAC,MAAM,QAAQ,GAAG,KAAK,CAAgB;IAC3C,aAAa,EAAE,WAAW;IAC1B,WAAW,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE;QAClD,MAAM,CAAC,UAAU,EAAE,YAAY,CAAC,GAAG,QAAQ,CAA0B,WAAW,EAAE,SAAS,CAAC,CAAA;QAC5F,MAAM,CAAC,WAAW,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAsB,OAAO,EAAE,SAAS,CAAC,CAAA;QACtF,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,SAAS,EAAE,CAAA;YACtC,OAAO,CAAC,WAAW,IAAI,YAAY,CAAC,MAAM,CAAC,CAAA;QAC7C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;gBAChB,OAAO,CAAC,WAAW,IAAI,aAAa,CAAC,KAAK,CAAC,CAAA;YAC7C,CAAC;iBAAM,CAAC;gBACN,MAAM,KAAK,CAAA;YACb,CAAC;QACH,CAAC;IACH,CAAC;IACD,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE;QAC9B,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAsB,OAAO,EAAE,SAAS,CAAC,CAAA;QAC3E,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAA0B,WAAW,EAAE,SAAS,CAAC,CAAA;QAE3F,IAAI,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YACzB,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE;gBACnC,IAAI,CAAC;oBACH,QAAQ,CAAC,SAAS,CAAC,CAAA;oBACnB,YAAY,CAAC,SAAS,CAAC,CAAA;oBACvB,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,SAAS,EAAE,CAAA;oBACtC,YAAY,CAAC,MAAM,CAAC,CAAA;gBACtB,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,QAAQ,CAAC,CAAC,CAAC,CAAA;gBACb,CAAC;YACH,CAAC,CAAC,CAAA;QACJ,CAAC;QACD,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,SAAS,CAAA;QAClB,CAAC;QACD,OAAO,KAAK,CAAC,MAAM,CAAA;IACrB,CAAC;CACF,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=lazy-load.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lazy-load.spec.d.ts","sourceRoot":"","sources":["../../src/components/lazy-load.spec.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,76 @@
1
+ import { TextEncoder, TextDecoder } from 'util';
2
+ global.TextEncoder = TextEncoder;
3
+ global.TextDecoder = TextDecoder;
4
+ import { Injector } from '@furystack/inject';
5
+ import { sleepAsync } from '@furystack/utils';
6
+ import { LazyLoad } from './lazy-load.js';
7
+ import { describe, it, expect, vi, afterEach, beforeEach } from 'vitest';
8
+ import { initializeShadeRoot } from '../initialize.js';
9
+ import { createComponent } from '../shade-component.js';
10
+ describe('Lazy Load', () => {
11
+ beforeEach(() => {
12
+ document.body.innerHTML = '<div id="root"></div>';
13
+ });
14
+ afterEach(() => {
15
+ document.body.innerHTML = '';
16
+ });
17
+ it('Shuld display the loader and completed state', async () => {
18
+ const injector = new Injector();
19
+ const rootElement = document.getElementById('root');
20
+ initializeShadeRoot({
21
+ injector,
22
+ rootElement,
23
+ jsxElement: (createComponent(LazyLoad, { loader: createComponent("div", null, "Loading..."), component: async () => {
24
+ await sleepAsync(100);
25
+ return createComponent("div", null, "Loaded");
26
+ } })),
27
+ });
28
+ expect(document.body.innerHTML).toBe('<div id="root"><lazy-load><div>Loading...</div></lazy-load></div>');
29
+ await sleepAsync(150);
30
+ expect(document.body.innerHTML).toBe('<div id="root"><lazy-load><div>Loaded</div></lazy-load></div>');
31
+ });
32
+ it('Shuld display the failed state with a retryer', async () => {
33
+ const injector = new Injector();
34
+ const rootElement = document.getElementById('root');
35
+ const load = vi.fn(async () => {
36
+ throw Error(':(');
37
+ });
38
+ initializeShadeRoot({
39
+ injector,
40
+ rootElement,
41
+ jsxElement: (createComponent(LazyLoad, { loader: createComponent("div", null, "Loading..."), component: load, error: (e, retry) => (createComponent("button", { id: "retry", onclick: retry }, e.message)) })),
42
+ });
43
+ expect(document.body.innerHTML).toBe('<div id="root"><lazy-load><div>Loading...</div></lazy-load></div>');
44
+ await sleepAsync(1);
45
+ expect(load).toBeCalledTimes(1);
46
+ expect(document.body.innerHTML).toBe('<div id="root"><lazy-load><button id="retry">:(</button></lazy-load></div>');
47
+ document.getElementById('retry')?.click();
48
+ expect(load).toBeCalledTimes(2);
49
+ });
50
+ it('Shuld display the failed state with a retryer', async () => {
51
+ const injector = new Injector();
52
+ const rootElement = document.getElementById('root');
53
+ let counter = 0;
54
+ const load = vi.fn(async () => {
55
+ if (!counter) {
56
+ counter += 1;
57
+ throw Error(':(');
58
+ }
59
+ return createComponent("div", null, "success");
60
+ });
61
+ initializeShadeRoot({
62
+ injector,
63
+ rootElement,
64
+ jsxElement: (createComponent(LazyLoad, { loader: createComponent("div", null, "Loading..."), component: load, error: (e, retry) => (createComponent("button", { id: "retry", onclick: retry }, e.message)) })),
65
+ });
66
+ expect(document.body.innerHTML).toBe('<div id="root"><lazy-load><div>Loading...</div></lazy-load></div>');
67
+ await sleepAsync(1);
68
+ expect(load).toBeCalledTimes(1);
69
+ expect(document.body.innerHTML).toBe('<div id="root"><lazy-load><button id="retry">:(</button></lazy-load></div>');
70
+ document.getElementById('retry')?.click();
71
+ expect(load).toBeCalledTimes(2);
72
+ await sleepAsync(1);
73
+ expect(document.body.innerHTML).toBe('<div id="root"><lazy-load><div>success</div></lazy-load></div>');
74
+ });
75
+ });
76
+ //# sourceMappingURL=lazy-load.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lazy-load.spec.js","sourceRoot":"","sources":["../../src/components/lazy-load.spec.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=route-link.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route-link.spec.d.ts","sourceRoot":"","sources":["../../src/components/route-link.spec.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,33 @@
1
+ import { TextEncoder, TextDecoder } from 'util';
2
+ global.TextEncoder = TextEncoder;
3
+ global.TextDecoder = TextDecoder;
4
+ import { Injector } from '@furystack/inject';
5
+ import { RouteLink } from './route-link.js';
6
+ import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
7
+ import { LocationService } from '../services/location-service.js';
8
+ import { initializeShadeRoot } from '../initialize.js';
9
+ import { createComponent } from '../shade-component.js';
10
+ describe('RouteLink', () => {
11
+ beforeEach(() => {
12
+ document.body.innerHTML = '<div id="root"></div>';
13
+ });
14
+ afterEach(() => {
15
+ document.body.innerHTML = '';
16
+ });
17
+ it('Shuld display the loader and completed state', async () => {
18
+ const injector = new Injector();
19
+ const rootElement = document.getElementById('root');
20
+ const onRouteChange = vi.fn();
21
+ injector.getInstance(LocationService).onLocationPathChanged.subscribe(onRouteChange);
22
+ initializeShadeRoot({
23
+ injector,
24
+ rootElement,
25
+ jsxElement: (createComponent(RouteLink, { id: "route", href: "/subroute" }, "Link")),
26
+ });
27
+ expect(document.body.innerHTML).toBe('<div id="root"><a is="route-link" id="route" href="/subroute" style="text-decoration: inherit;">Link</a></div>');
28
+ expect(onRouteChange).not.toBeCalled();
29
+ document.getElementById('route')?.click();
30
+ expect(onRouteChange).toBeCalledTimes(1);
31
+ });
32
+ });
33
+ //# sourceMappingURL=route-link.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route-link.spec.js","sourceRoot":"","sources":["../../src/components/route-link.spec.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,MAAM,CAAA;AAE/C,MAAM,CAAC,WAAW,GAAG,WAAW,CAAA;AAChC,MAAM,CAAC,WAAW,GAAG,WAAkB,CAAA;AAEvC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAA;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAEvD,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IACzB,UAAU,CAAC,GAAG,EAAE;QACd,QAAQ,CAAC,IAAI,CAAC,SAAS,GAAG,uBAAuB,CAAA;IACnD,CAAC,CAAC,CAAA;IACF,SAAS,CAAC,GAAG,EAAE;QACb,QAAQ,CAAC,IAAI,CAAC,SAAS,GAAG,EAAE,CAAA;IAC9B,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;QAC5D,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAA;QAC/B,MAAM,WAAW,GAAG,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAmB,CAAA;QAErE,MAAM,aAAa,GAAG,EAAE,CAAC,EAAE,EAAE,CAAA;QAE7B,QAAQ,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,qBAAqB,CAAC,SAAS,CAAC,aAAa,CAAC,CAAA;QAEpF,mBAAmB,CAAC;YAClB,QAAQ;YACR,WAAW;YACX,UAAU,EAAE,CACV,gBAAC,SAAS,IAAC,EAAE,EAAC,OAAO,EAAC,IAAI,EAAC,WAAW,WAE1B,CACb;SACF,CAAC,CAAA;QACF,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAClC,gHAAgH,CACjH,CAAA;QACD,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,CAAA;QACtC,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAA;QACzC,MAAM,CAAC,aAAa,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;IAC1C,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/components/router.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/components/router.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=router.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router.spec.d.ts","sourceRoot":"","sources":["../../src/components/router.spec.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,89 @@
1
+ import { TextEncoder, TextDecoder } from 'util';
2
+ global.TextEncoder = TextEncoder;
3
+ global.TextDecoder = TextDecoder;
4
+ import { Injector } from '@furystack/inject';
5
+ import { Router } from './router.js';
6
+ import { RouteLink } from './route-link.js';
7
+ import { sleepAsync } from '@furystack/utils';
8
+ import { describe, it, expect, vi, afterEach, beforeEach } from 'vitest';
9
+ import { LocationService } from '../services/location-service.js';
10
+ import { initializeShadeRoot } from '../initialize.js';
11
+ import { createComponent } from '../shade-component.js';
12
+ describe('Router', () => {
13
+ beforeEach(() => {
14
+ document.body.innerHTML = '<div id="root"></div>';
15
+ });
16
+ afterEach(() => {
17
+ document.body.innerHTML = '';
18
+ });
19
+ it('Shuld display the loader and completed state', async () => {
20
+ history.pushState(null, '', '/');
21
+ const onVisit = vi.fn();
22
+ const onLeave = vi.fn();
23
+ const onLastLeave = vi.fn();
24
+ const injector = new Injector();
25
+ const rootElement = document.getElementById('root');
26
+ const onRouteChange = vi.fn();
27
+ injector.getInstance(LocationService).onLocationPathChanged.subscribe(onRouteChange);
28
+ initializeShadeRoot({
29
+ injector,
30
+ rootElement,
31
+ jsxElement: (createComponent("div", null,
32
+ createComponent(RouteLink, { id: "home", href: "/" }, "home"),
33
+ createComponent(RouteLink, { id: "a", href: "/route-a" }, "a"),
34
+ createComponent(RouteLink, { id: "b", href: "/route-b" }, "b"),
35
+ createComponent(RouteLink, { id: "b-with-id", href: "/route-b/123" }, "b-with-id"),
36
+ createComponent(RouteLink, { id: "c", href: "/route-c" }, "c"),
37
+ createComponent(RouteLink, { id: "x", href: "/route-x" }, "x"),
38
+ createComponent(Router, { routes: [
39
+ { url: '/route-a', component: () => createComponent("div", { id: "content" }, "route-a"), onVisit, onLeave },
40
+ { url: '/route-b/:id?', component: ({ match }) => createComponent("div", { id: "content" },
41
+ "route-b",
42
+ match.params.id) },
43
+ {
44
+ url: '/route-c',
45
+ component: () => createComponent("div", { id: "content" }, "route-c"),
46
+ onLeave: onLastLeave,
47
+ },
48
+ { url: '/', component: () => createComponent("div", { id: "content" }, "home") },
49
+ ], notFound: createComponent("div", { id: "content" }, "not found") }))),
50
+ });
51
+ const getContent = () => document.getElementById('content')?.innerHTML;
52
+ const getLocation = () => location.pathname;
53
+ const clickOn = (name) => document.getElementById(name)?.click();
54
+ await sleepAsync(100);
55
+ expect(getLocation()).toBe('/');
56
+ expect(getContent()).toBe('home');
57
+ expect(onVisit).not.toBeCalled();
58
+ clickOn('a');
59
+ await sleepAsync(100);
60
+ expect(getContent()).toBe('route-a');
61
+ expect(getLocation()).toBe('/route-a');
62
+ expect(onRouteChange).toBeCalledTimes(1);
63
+ expect(onVisit).toBeCalledTimes(1);
64
+ clickOn('a');
65
+ await sleepAsync(100);
66
+ expect(onVisit).toBeCalledTimes(1);
67
+ expect(onLeave).not.toBeCalled();
68
+ clickOn('b');
69
+ await sleepAsync(100);
70
+ expect(onLeave).toBeCalledTimes(1);
71
+ expect(getContent()).toBe('route-b');
72
+ expect(getLocation()).toBe('/route-b');
73
+ clickOn('b-with-id');
74
+ await sleepAsync(100);
75
+ expect(getContent()).toBe('route-b123');
76
+ expect(getLocation()).toBe('/route-b/123');
77
+ clickOn('c');
78
+ await sleepAsync(100);
79
+ expect(getContent()).toBe('route-c');
80
+ expect(getLocation()).toBe('/route-c');
81
+ expect(onLastLeave).not.toBeCalled();
82
+ clickOn('x');
83
+ await sleepAsync(100);
84
+ expect(getContent()).toBe('not found');
85
+ expect(getLocation()).toBe('/route-x');
86
+ expect(onLastLeave).toBeCalledTimes(1);
87
+ });
88
+ });
89
+ //# sourceMappingURL=router.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router.spec.js","sourceRoot":"","sources":["../../src/components/router.spec.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"location-service.js","sourceRoot":"","sources":["../../src/services/location-service.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"location-service.js","sourceRoot":"","sources":["../../src/services/location-service.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=location-service.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"location-service.spec.d.ts","sourceRoot":"","sources":["../../src/services/location-service.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,90 @@
1
+ import { TextEncoder, TextDecoder } from 'util';
2
+ global.TextEncoder = TextEncoder;
3
+ global.TextDecoder = TextDecoder;
4
+ import { Injector } from '@furystack/inject';
5
+ import { using } from '@furystack/utils';
6
+ import { serializeValue } from '@furystack/rest';
7
+ import { LocationService } from './location-service.js';
8
+ import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest';
9
+ describe('LocationService', () => {
10
+ beforeEach(() => {
11
+ document.body.innerHTML = '<div id="root"></div>';
12
+ });
13
+ afterEach(() => {
14
+ document.body.innerHTML = '';
15
+ });
16
+ it('Shuld be constructed', () => {
17
+ using(new Injector(), (i) => {
18
+ const s = i.getInstance(LocationService);
19
+ expect(s).toBeInstanceOf(LocationService);
20
+ });
21
+ });
22
+ it('Shuld update state on events', () => {
23
+ using(new Injector(), (i) => {
24
+ const onLocaionChanged = vi.fn();
25
+ const s = i.getInstance(LocationService);
26
+ s.onLocationPathChanged.subscribe(onLocaionChanged);
27
+ expect(onLocaionChanged).toBeCalledTimes(0);
28
+ history.pushState(null, '', '/loc1');
29
+ expect(onLocaionChanged).toBeCalledTimes(1);
30
+ history.replaceState(null, '', '/loc2');
31
+ expect(onLocaionChanged).toBeCalledTimes(2);
32
+ // TODO: Figure out testing hashchange and popstate subscriptions
33
+ // window.dispatchEvent(new HashChangeEvent('hashchange', { newURL: '/loc3' }))
34
+ // expect(onLocaionChanged).toBeCalledTimes(3)
35
+ // window.dispatchEvent(new PopStateEvent('popstate', {}))
36
+ // expect(onLocaionChanged).toBeCalledTimes(4)
37
+ });
38
+ });
39
+ describe('useSearchParam', () => {
40
+ it('Should create observables lazily', () => {
41
+ using(new Injector(), (i) => {
42
+ const service = i.getInstance(LocationService);
43
+ const observables = service.searchParamObservables;
44
+ const testSearchParam = service.useSearchParam('test', null);
45
+ expect(observables.size).toBe(1);
46
+ const testSearchParam2 = service.useSearchParam('test', null);
47
+ expect(observables.size).toBe(1);
48
+ expect(testSearchParam).toBe(testSearchParam2);
49
+ const testSearchParam3 = service.useSearchParam('test2', undefined);
50
+ expect(observables.size).toBe(2);
51
+ expect(testSearchParam3).not.toBe(testSearchParam2);
52
+ });
53
+ });
54
+ it('Should return the default value, if not present in the query string', () => {
55
+ using(new Injector(), (i) => {
56
+ const service = i.getInstance(LocationService);
57
+ const testSearchParam = service.useSearchParam('test', { value: 'foo' });
58
+ expect(testSearchParam.getValue()).toEqual({ value: 'foo' });
59
+ });
60
+ });
61
+ it('Should return the value from the query string', () => {
62
+ using(new Injector(), (i) => {
63
+ const service = i.getInstance(LocationService);
64
+ history.pushState(null, '', `/loc1?test=${serializeValue(1)}`);
65
+ const testSearchParam = service.useSearchParam('test', 123);
66
+ expect(testSearchParam.getValue()).toBe(1);
67
+ });
68
+ });
69
+ it('should update the observable value on push / replace states', () => {
70
+ using(new Injector(), (i) => {
71
+ const service = i.getInstance(LocationService);
72
+ history.pushState(null, '', `/loc1?test=${serializeValue(1)}`);
73
+ const testSearchParam = service.useSearchParam('test', 234);
74
+ expect(testSearchParam.getValue()).toBe(1);
75
+ history.replaceState(null, '', `/loc1?test=${serializeValue('2')}`);
76
+ expect(testSearchParam.getValue()).toBe('2');
77
+ });
78
+ });
79
+ it('Should update the URL based on search value change', () => {
80
+ using(new Injector(), (i) => {
81
+ const service = i.getInstance(LocationService);
82
+ history.pushState(null, '', `/loc1?test=${serializeValue('2')}`);
83
+ const testSearchParam = service.useSearchParam('test', '');
84
+ testSearchParam.setValue('2');
85
+ expect(location.search).toBe('?test=IjIi');
86
+ });
87
+ });
88
+ });
89
+ });
90
+ //# sourceMappingURL=location-service.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"location-service.spec.js","sourceRoot":"","sources":["../../src/services/location-service.spec.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"resource-manager.js","sourceRoot":"","sources":["../../src/services/resource-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAIlD;;GAEG;AACH,MAAM,OAAO,eAAe;IACT,WAAW,GAAG,IAAI,GAAG,EAAsB,CAAA;IAErD,aAAa,CAAuB,GAAW,EAAE,OAAgB;QACtE,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YAC9B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,CAAA;SACrC;QACD,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAM,CAAA;IACvC,CAAC;IAEe,SAAS,GAAG,IAAI,GAAG,EAA8B,CAAA;IAE1D,aAAa,GAAG,CACrB,GAAW,EACX,UAA8B,EAC9B,QAAgC,EAChC,OAAiB,EAC4B,EAAE;QAC/C,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAiC,CAAA;QAC3E,IAAI,WAAW,EAAE;YACf,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAA;SACzG;QACD,MAAM,QAAQ,GAAG,UAAU,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;QACxD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;QACjC,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAA;IACtE,CAAC,CAAA;IAEe,cAAc,GAAG,IAAI,GAAG,EAAgC,CAAA;IAEjE,QAAQ,GAAG,CAChB,GAAW,EACX,YAAe,EACf,QAAgC,EACa,EAAE;QAC/C,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YACjC,MAAM,aAAa,GAAG,IAAI,eAAe,CAAI,YAAY,CAAC,CAAA;YAC1D,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,aAAa,CAAC,CAAA;YAC3C,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;SAClC;QACD,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAuB,CAAA;QACrE,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAA;IACtE,CAAC,CAAA;IAEM,OAAO;QACZ,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAA;QAC5C,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAA;QACxB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAA;QAC1C,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAA;QAEtB,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAA;QAC/C,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAA;IAC7B,CAAC;CACF"}
1
+ {"version":3,"file":"resource-manager.js","sourceRoot":"","sources":["../../src/services/resource-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAIlD;;GAEG;AACH,MAAM,OAAO,eAAe;IACT,WAAW,GAAG,IAAI,GAAG,EAAsB,CAAA;IAErD,aAAa,CAAuB,GAAW,EAAE,OAAgB;QACtE,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,CAAA;QACtC,CAAC;QACD,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAM,CAAA;IACvC,CAAC;IAEe,SAAS,GAAG,IAAI,GAAG,EAA8B,CAAA;IAE1D,aAAa,GAAG,CACrB,GAAW,EACX,UAA8B,EAC9B,QAAgC,EAChC,OAAiB,EAC4B,EAAE;QAC/C,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAiC,CAAA;QAC3E,IAAI,WAAW,EAAE,CAAC;YAChB,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAA;QAC1G,CAAC;QACD,MAAM,QAAQ,GAAG,UAAU,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;QACxD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;QACjC,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAA;IACtE,CAAC,CAAA;IAEe,cAAc,GAAG,IAAI,GAAG,EAAgC,CAAA;IAEjE,QAAQ,GAAG,CAChB,GAAW,EACX,YAAe,EACf,QAAgC,EACa,EAAE;QAC/C,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAClC,MAAM,aAAa,GAAG,IAAI,eAAe,CAAI,YAAY,CAAC,CAAA;YAC1D,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,aAAa,CAAC,CAAA;YAC3C,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;QACnC,CAAC;QACD,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAuB,CAAA;QACrE,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAA;IACtE,CAAC,CAAA;IAEM,OAAO;QACZ,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAA;QAC5C,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAA;QACxB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAA;QAC1C,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAA;QAEtB,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAA;QAC/C,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAA;IAC7B,CAAC;CACF"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=resource-manager.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource-manager.spec.d.ts","sourceRoot":"","sources":["../../src/services/resource-manager.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,31 @@
1
+ import { ObservableValue, using } from '@furystack/utils';
2
+ import { ResourceManager } from './resource-manager.js';
3
+ import { describe, it, expect } from 'vitest';
4
+ describe('ResourceManager', () => {
5
+ it('Should return an observable from cache', () => {
6
+ using(new ResourceManager(), (rm) => {
7
+ const o = new ObservableValue(1);
8
+ const [value1] = rm.useObservable('test', o, () => {
9
+ /** ignore */
10
+ });
11
+ const [value2] = rm.useObservable('test', o, () => {
12
+ /** ignore */
13
+ });
14
+ expect(value1).toBe(value2);
15
+ expect(o.getObservers().length).toBe(1);
16
+ });
17
+ });
18
+ it('Should return a disposable from cache', () => {
19
+ using(new ResourceManager(), (rm) => {
20
+ const d = {
21
+ dispose: () => {
22
+ /** ignore */
23
+ },
24
+ };
25
+ const d1 = rm.useDisposable('test', () => d);
26
+ const d2 = rm.useDisposable('test', () => d);
27
+ expect(d1).toBe(d2);
28
+ });
29
+ });
30
+ });
31
+ //# sourceMappingURL=resource-manager.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource-manager.spec.js","sourceRoot":"","sources":["../../src/services/resource-manager.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC7C,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,KAAK,CAAC,IAAI,eAAe,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;YAClC,MAAM,CAAC,GAAG,IAAI,eAAe,CAAC,CAAC,CAAC,CAAA;YAChC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE;gBAChD,aAAa;YACf,CAAC,CAAC,CAAA;YACF,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE;gBAChD,aAAa;YACf,CAAC,CAAC,CAAA;YAEF,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YAE3B,MAAM,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACzC,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,KAAK,CAAC,IAAI,eAAe,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;YAClC,MAAM,CAAC,GAAG;gBACR,OAAO,EAAE,GAAG,EAAE;oBACZ,aAAa;gBACf,CAAC;aACF,CAAA;YACD,MAAM,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;YAC5C,MAAM,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;YAE5C,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACrB,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=screen-service.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"screen-service.spec.d.ts","sourceRoot":"","sources":["../../src/services/screen-service.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,28 @@
1
+ import { TextEncoder, TextDecoder } from 'util';
2
+ global.TextEncoder = TextEncoder;
3
+ global.TextDecoder = TextDecoder;
4
+ import { Injector } from '@furystack/inject';
5
+ import { usingAsync } from '@furystack/utils';
6
+ import { ScreenService } from './screen-service.js';
7
+ import { describe, it, expect, beforeEach, afterEach } from 'vitest';
8
+ describe('ScreenService', () => {
9
+ beforeEach(() => {
10
+ document.body.innerHTML = '<div id="root"></div>';
11
+ });
12
+ afterEach(() => {
13
+ document.body.innerHTML = '';
14
+ });
15
+ it('Shuld be constructed', async () => {
16
+ await usingAsync(new Injector(), async (i) => {
17
+ const s = i.getInstance(ScreenService);
18
+ expect(s).toBeInstanceOf(ScreenService);
19
+ });
20
+ });
21
+ it('Shuld update state on events', async () => {
22
+ await usingAsync(new Injector(), async (i) => {
23
+ i.getInstance(ScreenService);
24
+ /** TODO */
25
+ });
26
+ });
27
+ });
28
+ //# sourceMappingURL=screen-service.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"screen-service.spec.js","sourceRoot":"","sources":["../../src/services/screen-service.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,MAAM,CAAA;AAE/C,MAAM,CAAC,WAAW,GAAG,WAAW,CAAA;AAChC,MAAM,CAAC,WAAW,GAAG,WAAkB,CAAA;AAEvC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAEpE,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,UAAU,CAAC,GAAG,EAAE;QACd,QAAQ,CAAC,IAAI,CAAC,SAAS,GAAG,uBAAuB,CAAA;IACnD,CAAC,CAAC,CAAA;IACF,SAAS,CAAC,GAAG,EAAE;QACb,QAAQ,CAAC,IAAI,CAAC,SAAS,GAAG,EAAE,CAAA;IAC9B,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;QACpC,MAAM,UAAU,CAAC,IAAI,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;YAC3C,MAAM,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAA;YACtC,MAAM,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,aAAa,CAAC,CAAA;QACzC,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;QAC5C,MAAM,UAAU,CAAC,IAAI,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;YAC3C,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAA;YAC5B,WAAW;QACb,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"shade-component.js","sourceRoot":"","sources":["../src/shade-component.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shade-component.js","sourceRoot":"","sources":["../src/shade-component.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAE9D;;;;GAIG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,EAAkC,EAAE,QAAsB,EAAE,EAAE;IACxF,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;QAC7B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC3D,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAA;QAChD,CAAC;aAAM,CAAC;YACN,IAAI,KAAK,YAAY,WAAW,IAAI,KAAK,YAAY,gBAAgB,EAAE,CAAC;gBACtE,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;YACvB,CAAC;iBAAM,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;gBAClC,WAAW,CAAC,EAAE,EAAE,KAAK,CAAC,CAAA;YACxB,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,KAAU,EAAoD,EAAE;IACvF,OAAO,KAAK,EAAE,KAAK,KAAK,SAAS,CAAA;AACnC,CAAC,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,EAAe,EAAE,KAAU,EAAE,EAAE;IAC1D,IAAI,QAAQ,CAAC,KAAK,CAAC;QACjB,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAC9B,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC;gBAC3D,CAAC;gBAAC,EAAE,CAAC,KAAa,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YAC5C,CAAC;QACH,CAAC;AACL,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,EAAe,EAAE,KAAU,EAAE,EAAE;IAClE,KAAK;QACH,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;aAClB,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;aAC1C,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,GAAG,EAAG,KAAgB,IAAI,EAAE,CAAC,CAAC,CAAA;AAC/E,CAAC,CAAA;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,EAAe,EAAE,KAAU,EAAE,EAAE;IACzD,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,CAAA;IAExB,IAAI,KAAK,IAAK,KAAa,CAAC,KAAK,EAAE,CAAC;QAClC,YAAY,CAAC,EAAE,EAAE,KAAK,CAAC,CAAA;IACzB,CAAC;IACD,oBAAoB,CAAC,EAAE,EAAE,KAAK,CAAC,CAAA;AACjC,CAAC,CAAA;AAQD,+CAA+C;AAC/C;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAS,GAAG,CAAC,WAAW,EAAE,KAAK,EAAE,GAAG,QAAQ,CAA8B,EAAE,EAAE;IAChH,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;QACpC,MAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,WAAW,CAAC,CAAA;QAE9C,WAAW,CAAC,EAAE,EAAE,KAAK,CAAC,CAAA;QAEtB,IAAI,QAAQ,EAAE,CAAC;YACb,WAAW,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAA;QAC3B,CAAC;QACD,OAAO,EAAE,CAAA;IACX,CAAC;SAAM,IAAI,gBAAgB,CAAC,WAAW,CAAC,EAAE,CAAC;QACzC,MAAM,EAAE,GAAG,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;QACvC,YAAY,CAAC,EAAE,EAAE,KAAK,CAAC,CAAA;QACvB,OAAO,EAAE,CAAA;IACX,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA;AAID,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,QAAQ,CAAqB,EAAE,EAAE;IAClF,MAAM,QAAQ,GAAG,QAAQ,CAAC,sBAAsB,EAAE,CAAA;IAClD,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;IAC/B,OAAO,QAAQ,CAAA;AACjB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,CAAS,GAAG,IAAsD,EAAE,EAAE;IACnG,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACrB,OAAO,mBAAmB,CAAC,GAAG,IAAI,CAAC,CAAA;IACrC,CAAC;IACD,OAAO,oBAAoB,CAAC,GAAG,IAAI,CAAC,CAAA;AACtC,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=shade-resources.integration.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shade-resources.integration.spec.d.ts","sourceRoot":"","sources":["../src/shade-resources.integration.spec.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,58 @@
1
+ import { Injector } from '@furystack/inject';
2
+ import { TextEncoder, TextDecoder } from 'util';
3
+ global.TextEncoder = TextEncoder;
4
+ global.TextDecoder = TextDecoder;
5
+ import { initializeShadeRoot } from './initialize.js';
6
+ import { Shade } from './shade.js';
7
+ import { createComponent } from './shade-component.js';
8
+ import { ObservableValue } from '@furystack/utils';
9
+ import { describe, it, expect, afterEach, beforeEach, vi } from 'vitest';
10
+ describe('Shade Resources integration tests', () => {
11
+ beforeEach(() => {
12
+ document.body.innerHTML = '<div id="root"></div>';
13
+ });
14
+ afterEach(() => {
15
+ document.body.innerHTML = '';
16
+ });
17
+ it('Should update the component based on a custom observable value change', () => {
18
+ const injector = new Injector();
19
+ const rootElement = document.getElementById('root');
20
+ const renderCounter = vi.fn();
21
+ const obs1 = new ObservableValue(0);
22
+ const obs2 = new ObservableValue('a');
23
+ const ExampleComponent = Shade({
24
+ render: ({ useObservable }) => {
25
+ const [value1] = useObservable('obs1', obs1);
26
+ const [value2] = useObservable('obs2', obs2);
27
+ renderCounter();
28
+ return (createComponent("div", null,
29
+ createComponent("div", { id: "val1" }, value1),
30
+ createComponent("div", { id: "val2" }, value2)));
31
+ },
32
+ shadowDomName: 'shades-example-resource',
33
+ });
34
+ expect(obs1.getObservers().length).toBe(0);
35
+ expect(obs2.getObservers().length).toBe(0);
36
+ initializeShadeRoot({
37
+ injector,
38
+ rootElement,
39
+ jsxElement: createComponent(ExampleComponent, null),
40
+ });
41
+ expect(document.body.innerHTML).toBe('<div id="root"><shades-example-resource><div><div id="val1">0</div><div id="val2">a</div></div></shades-example-resource></div>');
42
+ expect(obs1.getObservers().length).toBe(1);
43
+ expect(obs2.getObservers().length).toBe(1);
44
+ expect(renderCounter).toBeCalledTimes(1);
45
+ obs1.setValue(1);
46
+ expect(document.body.innerHTML).toBe('<div id="root"><shades-example-resource><div><div id="val1">1</div><div id="val2">a</div></div></shades-example-resource></div>');
47
+ expect(renderCounter).toBeCalledTimes(2);
48
+ obs2.setValue('b');
49
+ expect(document.body.innerHTML).toBe('<div id="root"><shades-example-resource><div><div id="val1">1</div><div id="val2">b</div></div></shades-example-resource></div>');
50
+ const element = document.querySelector('shades-example-resource');
51
+ expect(element.getRenderCount()).toBe(3);
52
+ document.body.innerHTML = '';
53
+ expect(obs1.getObservers().length).toBe(0);
54
+ expect(obs2.getObservers().length).toBe(0);
55
+ expect(renderCounter).toBeCalledTimes(3);
56
+ });
57
+ });
58
+ //# sourceMappingURL=shade-resources.integration.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shade-resources.integration.spec.js","sourceRoot":"","sources":["../src/shade-resources.integration.spec.tsx"],"names":[],"mappings":"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"}
package/esm/shade.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"shade.js","sourceRoot":"","sources":["../src/shade.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shade.js","sourceRoot":"","sources":["../src/shade.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=shades.integration.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shades.integration.spec.d.ts","sourceRoot":"","sources":["../src/shades.integration.spec.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,254 @@
1
+ import { Injector } from '@furystack/inject';
2
+ import { usingAsync } from '@furystack/utils';
3
+ import { TextEncoder, TextDecoder } from 'util';
4
+ global.TextEncoder = TextEncoder;
5
+ global.TextDecoder = TextDecoder;
6
+ import { initializeShadeRoot } from './initialize.js';
7
+ import { Shade } from './shade.js';
8
+ import { createComponent } from './shade-component.js';
9
+ import { describe, it, expect, vi, afterEach, beforeEach } from 'vitest';
10
+ describe('Shades integration tests', () => {
11
+ beforeEach(() => {
12
+ document.body.innerHTML = '<div id="root"></div>';
13
+ });
14
+ afterEach(() => {
15
+ document.body.innerHTML = '';
16
+ });
17
+ it('Should mount a custom component to a Shade root', () => {
18
+ const injector = new Injector();
19
+ const rootElement = document.getElementById('root');
20
+ const ExampleComponent = Shade({ render: () => createComponent("div", null, "Hello"), shadowDomName: 'shades-example' });
21
+ initializeShadeRoot({
22
+ injector,
23
+ rootElement,
24
+ jsxElement: createComponent(ExampleComponent, null),
25
+ });
26
+ expect(document.body.innerHTML).toBe('<div id="root"><shades-example><div>Hello</div></shades-example></div>');
27
+ });
28
+ it('Should mount a custom component with a string render result', () => {
29
+ const injector = new Injector();
30
+ const rootElement = document.getElementById('root');
31
+ const ExampleComponent = Shade({ render: () => 'Hello', shadowDomName: 'shades-string-render-result' });
32
+ initializeShadeRoot({
33
+ injector,
34
+ rootElement,
35
+ jsxElement: createComponent(ExampleComponent, null),
36
+ });
37
+ expect(document.body.innerHTML).toBe('<div id="root"><shades-string-render-result>Hello</shades-string-render-result></div>');
38
+ });
39
+ it('Should mount a custom component with null render result', async () => {
40
+ await usingAsync(new Injector(), async (injector) => {
41
+ const rootElement = document.getElementById('root');
42
+ const ExampleComponent = Shade({ render: () => null, shadowDomName: 'shades-null-render-result' });
43
+ initializeShadeRoot({
44
+ injector,
45
+ rootElement,
46
+ jsxElement: createComponent(ExampleComponent, null),
47
+ });
48
+ expect(document.body.innerHTML).toBe('<div id="root"><shades-null-render-result></shades-null-render-result></div>');
49
+ });
50
+ });
51
+ it('Should mount a custom component with a document fragment render result', async () => {
52
+ await usingAsync(new Injector(), async (injector) => {
53
+ const rootElement = document.getElementById('root');
54
+ const ExampleComponent = Shade({
55
+ render: () => (createComponent(createComponent, null,
56
+ createComponent("p", null, "1"),
57
+ createComponent("p", null, "2"))),
58
+ shadowDomName: 'shades-fragment-render-result',
59
+ });
60
+ initializeShadeRoot({
61
+ injector,
62
+ rootElement,
63
+ jsxElement: createComponent(ExampleComponent, null),
64
+ });
65
+ expect(document.body.innerHTML).toBe('<div id="root"><shades-fragment-render-result><p>1</p><p>2</p></shades-fragment-render-result></div>');
66
+ });
67
+ });
68
+ it('Should mount a custom component with a nested document fragment render result', async () => {
69
+ await usingAsync(new Injector(), async (injector) => {
70
+ const rootElement = document.getElementById('root');
71
+ const ExampleComponent = Shade({
72
+ render: () => (createComponent("p", null,
73
+ createComponent(createComponent, null,
74
+ createComponent("p", null, "1"),
75
+ createComponent("p", null, "2")))),
76
+ shadowDomName: 'shades-fragment-render-result-nested',
77
+ });
78
+ initializeShadeRoot({
79
+ injector,
80
+ rootElement,
81
+ jsxElement: createComponent(ExampleComponent, null),
82
+ });
83
+ 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>');
84
+ });
85
+ });
86
+ it('Should mount a custom component with a document fragment that contains custom components', async () => {
87
+ await usingAsync(new Injector(), async (injector) => {
88
+ const rootElement = document.getElementById('root');
89
+ const CustomComponent = Shade({
90
+ shadowDomName: 'shades-fragment-test-custom-component',
91
+ render: () => createComponent("p", null, "Hello"),
92
+ });
93
+ const ExampleComponent = Shade({
94
+ render: () => (createComponent(createComponent, null,
95
+ createComponent(CustomComponent, null),
96
+ createComponent(CustomComponent, null))),
97
+ shadowDomName: 'shades-fragment-render-result-2',
98
+ });
99
+ initializeShadeRoot({
100
+ injector,
101
+ rootElement,
102
+ jsxElement: createComponent(ExampleComponent, null),
103
+ });
104
+ 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>');
105
+ });
106
+ });
107
+ it('Should mount nested Shades components', async () => {
108
+ await usingAsync(new Injector(), async (injector) => {
109
+ const rootElement = document.getElementById('root');
110
+ const ExampleComponent = Shade({
111
+ render: ({ children }) => createComponent("div", null, children),
112
+ shadowDomName: 'shades-example-2',
113
+ });
114
+ const ExampleSubs = Shade({
115
+ render: ({ props }) => createComponent("div", null, props.no),
116
+ shadowDomName: 'shades-example-sub',
117
+ });
118
+ initializeShadeRoot({
119
+ injector,
120
+ rootElement,
121
+ jsxElement: (createComponent(ExampleComponent, null,
122
+ createComponent(ExampleSubs, { no: 1 }),
123
+ createComponent(ExampleSubs, { no: 2 }),
124
+ createComponent(ExampleSubs, { no: 3 }))),
125
+ });
126
+ expect(document.body.innerHTML).toBe('<div id="root"><shades-example-2><div><shades-example-sub><div>1</div></shades-example-sub><shades-example-sub><div>2</div></shades-example-sub><shades-example-sub><div>3</div></shades-example-sub></div></shades-example-2></div>');
127
+ });
128
+ });
129
+ it("Should execute the constructed and constructed's cleanup callback", async () => {
130
+ await usingAsync(new Injector(), async (injector) => {
131
+ const rootElement = document.getElementById('root');
132
+ const cleanup = vi.fn();
133
+ const constructed = vi.fn(() => cleanup);
134
+ const ExampleComponent = Shade({
135
+ constructed,
136
+ shadowDomName: 'example-component-1',
137
+ render: () => createComponent("div", null, "Hello"),
138
+ });
139
+ initializeShadeRoot({
140
+ injector,
141
+ rootElement,
142
+ jsxElement: createComponent(ExampleComponent, null),
143
+ });
144
+ expect(constructed).toBeCalled();
145
+ expect(cleanup).not.toBeCalled();
146
+ document.body.innerHTML = '';
147
+ expect(cleanup).toBeCalled();
148
+ });
149
+ });
150
+ it('Should execute the onAttach and onDetach callbacks', async () => {
151
+ await usingAsync(new Injector(), async (injector) => {
152
+ const rootElement = document.getElementById('root');
153
+ const onAttach = vi.fn();
154
+ const onDetach = vi.fn();
155
+ const ExampleComponent = Shade({
156
+ onAttach,
157
+ onDetach,
158
+ shadowDomName: 'example-component-2',
159
+ render: () => createComponent("div", null, "Hello"),
160
+ });
161
+ initializeShadeRoot({
162
+ injector,
163
+ rootElement,
164
+ jsxElement: createComponent(ExampleComponent, null),
165
+ });
166
+ expect(onAttach).toBeCalled();
167
+ expect(onDetach).not.toBeCalled();
168
+ document.body.innerHTML = '';
169
+ expect(onDetach).toBeCalled();
170
+ });
171
+ });
172
+ it('Should update state', async () => {
173
+ await usingAsync(new Injector(), async (injector) => {
174
+ const rootElement = document.getElementById('root');
175
+ const ExampleComponent = Shade({
176
+ shadowDomName: 'example-component-3',
177
+ render: ({ useState }) => {
178
+ const [count, setCount] = useState('count', 0);
179
+ return (createComponent("div", null,
180
+ "Count is ",
181
+ count,
182
+ createComponent("button", { id: "plus", onclick: () => setCount(count + 1) }, "+"),
183
+ createComponent("button", { id: "minus", onclick: () => setCount(count - 1) }, "-")));
184
+ },
185
+ });
186
+ initializeShadeRoot({
187
+ injector,
188
+ rootElement,
189
+ jsxElement: createComponent(ExampleComponent, null),
190
+ });
191
+ const plus = () => document.getElementById('plus')?.click();
192
+ const minus = () => document.getElementById('minus')?.click();
193
+ const expectCount = (count) => expect(document.body.innerHTML).toContain(`Count is ${count}`);
194
+ expectCount(0);
195
+ plus();
196
+ expectCount(1);
197
+ plus();
198
+ expectCount(2);
199
+ minus();
200
+ minus();
201
+ expectCount(0);
202
+ });
203
+ });
204
+ it('Should allow children update after unmount and remount', async () => {
205
+ await usingAsync(new Injector(), async (injector) => {
206
+ const rootElement = document.getElementById('root');
207
+ const Parent = Shade({
208
+ shadowDomName: 'shade-remount-parent',
209
+ render: ({ children, useState }) => {
210
+ const [areChildrenVisible, setAreChildrenVisible] = useState('areChildrenVisible', true);
211
+ return (createComponent("div", null,
212
+ createComponent("button", { id: "showHideChildren", onclick: () => {
213
+ setAreChildrenVisible(!areChildrenVisible);
214
+ } }, "Toggle"),
215
+ areChildrenVisible ? children : null));
216
+ },
217
+ });
218
+ const Child = Shade({
219
+ shadowDomName: 'example-remount-child',
220
+ render: ({ useState }) => {
221
+ const [count, setCount] = useState('count', 0);
222
+ return (createComponent("div", null,
223
+ "Count is ",
224
+ `${count}`,
225
+ createComponent("button", { id: "plus", onclick: () => setCount(count + 1) }, "+"),
226
+ createComponent("button", { id: "minus", onclick: () => setCount(count - 1) }, "-")));
227
+ },
228
+ });
229
+ initializeShadeRoot({
230
+ injector,
231
+ rootElement,
232
+ jsxElement: (createComponent(Parent, null,
233
+ createComponent(Child, null))),
234
+ });
235
+ const plus = () => document.getElementById('plus')?.click();
236
+ const minus = () => document.getElementById('minus')?.click();
237
+ const expectCount = (count) => expect(document.body.innerHTML).toContain(`Count is ${count}`);
238
+ const toggleChildren = () => document.getElementById('showHideChildren')?.click();
239
+ expectCount(0);
240
+ plus();
241
+ expectCount(1);
242
+ toggleChildren();
243
+ expect(document.getElementById('plus')).toBeNull();
244
+ toggleChildren();
245
+ expect(document.getElementById('plus')).toBeDefined();
246
+ expectCount(0);
247
+ plus();
248
+ expectCount(1);
249
+ minus();
250
+ expectCount(0);
251
+ });
252
+ });
253
+ });
254
+ //# sourceMappingURL=shades.integration.spec.js.map
@@ -0,0 +1 @@
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": "8.0.11",
3
+ "version": "8.0.13",
4
4
  "description": "Google Authentication Provider for FuryStack",
5
5
  "type": "module",
6
6
  "scripts": {
@@ -37,16 +37,16 @@
37
37
  },
38
38
  "homepage": "https://github.com/furystack/furystack",
39
39
  "devDependencies": {
40
- "@types/jsdom": "^21.1.2",
41
- "@types/node": "^20.5.6",
40
+ "@types/jsdom": "^21.1.6",
41
+ "@types/node": "^20.10.0",
42
42
  "jsdom": "^22.1.0",
43
- "typescript": "^5.2.2",
44
- "vitest": "^0.34.3"
43
+ "typescript": "^5.3.2",
44
+ "vitest": "^0.34.6"
45
45
  },
46
46
  "dependencies": {
47
- "@furystack/inject": "^8.1.0",
48
- "@furystack/rest": "^5.0.11",
49
- "@furystack/utils": "^4.0.9",
47
+ "@furystack/inject": "^8.1.2",
48
+ "@furystack/rest": "^5.0.13",
49
+ "@furystack/utils": "^4.0.11",
50
50
  "path-to-regexp": "^6.2.1",
51
51
  "semaphore-async-await": "^1.5.1"
52
52
  },
@@ -1,6 +1,6 @@
1
- import { createComponent } from './shade-component'
1
+ import { createComponent } from './shade-component.js'
2
2
  import './jsx'
3
- import { Shade } from './shade'
3
+ import { Shade } from './shade.js'
4
4
  import { Injector } from '@furystack/inject'
5
5
  import { describe, it, expect, vi } from 'vitest'
6
6
 
@@ -5,9 +5,11 @@ global.TextDecoder = TextDecoder as any
5
5
 
6
6
  import { Injector } from '@furystack/inject'
7
7
  import { sleepAsync } from '@furystack/utils'
8
- import { LazyLoad } from './lazy-load'
9
- import { createComponent, initializeShadeRoot } from '..'
8
+ import { LazyLoad } from './lazy-load.js'
9
+
10
10
  import { describe, it, expect, vi, afterEach, beforeEach } from 'vitest'
11
+ import { initializeShadeRoot } from '../initialize.js'
12
+ import { createComponent } from '../shade-component.js'
11
13
 
12
14
  describe('Lazy Load', () => {
13
15
  beforeEach(() => {
@@ -4,9 +4,11 @@ global.TextEncoder = TextEncoder
4
4
  global.TextDecoder = TextDecoder as any
5
5
 
6
6
  import { Injector } from '@furystack/inject'
7
- import { RouteLink } from './route-link'
8
- import { createComponent, initializeShadeRoot, LocationService } from '..'
7
+ import { RouteLink } from './route-link.js'
9
8
  import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest'
9
+ import { LocationService } from '../services/location-service.js'
10
+ import { initializeShadeRoot } from '../initialize.js'
11
+ import { createComponent } from '../shade-component.js'
10
12
 
11
13
  describe('RouteLink', () => {
12
14
  beforeEach(() => {
@@ -4,11 +4,13 @@ global.TextEncoder = TextEncoder
4
4
  global.TextDecoder = TextDecoder as any
5
5
 
6
6
  import { Injector } from '@furystack/inject'
7
- import { Router } from './router'
8
- import { createComponent, initializeShadeRoot, LocationService } from '..'
9
- import { RouteLink } from '.'
7
+ import { Router } from './router.js'
8
+ import { RouteLink } from './route-link.js'
10
9
  import { sleepAsync } from '@furystack/utils'
11
10
  import { describe, it, expect, vi, afterEach, beforeEach } from 'vitest'
11
+ import { LocationService } from '../services/location-service.js'
12
+ import { initializeShadeRoot } from '../initialize.js'
13
+ import { createComponent } from '../shade-component.js'
12
14
 
13
15
  describe('Router', () => {
14
16
  beforeEach(() => {
@@ -6,7 +6,7 @@ global.TextDecoder = TextDecoder as any
6
6
  import { Injector } from '@furystack/inject'
7
7
  import { using } from '@furystack/utils'
8
8
  import { serializeValue } from '@furystack/rest'
9
- import { LocationService } from './'
9
+ import { LocationService } from './location-service.js'
10
10
  import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest'
11
11
 
12
12
  describe('LocationService', () => {
@@ -1,5 +1,5 @@
1
1
  import { ObservableValue, using } from '@furystack/utils'
2
- import { ResourceManager } from './resource-manager'
2
+ import { ResourceManager } from './resource-manager.js'
3
3
  import { describe, it, expect } from 'vitest'
4
4
  describe('ResourceManager', () => {
5
5
  it('Should return an observable from cache', () => {
@@ -5,7 +5,7 @@ global.TextDecoder = TextDecoder as any
5
5
 
6
6
  import { Injector } from '@furystack/inject'
7
7
  import { usingAsync } from '@furystack/utils'
8
- import { ScreenService } from './screen-service'
8
+ import { ScreenService } from './screen-service.js'
9
9
  import { describe, it, expect, beforeEach, afterEach } from 'vitest'
10
10
 
11
11
  describe('ScreenService', () => {
@@ -5,9 +5,9 @@ import { TextEncoder, TextDecoder } from 'util'
5
5
  global.TextEncoder = TextEncoder
6
6
  global.TextDecoder = TextDecoder as any
7
7
 
8
- import { initializeShadeRoot } from './initialize'
9
- import { Shade } from './shade'
10
- import { createComponent } from './shade-component'
8
+ import { initializeShadeRoot } from './initialize.js'
9
+ import { Shade } from './shade.js'
10
+ import { createComponent } from './shade-component.js'
11
11
  import { ObservableValue } from '@furystack/utils'
12
12
  import { describe, it, expect, afterEach, beforeEach, vi } from 'vitest'
13
13
 
@@ -6,9 +6,9 @@ import { TextEncoder, TextDecoder } from 'util'
6
6
  global.TextEncoder = TextEncoder
7
7
  global.TextDecoder = TextDecoder as any
8
8
 
9
- import { initializeShadeRoot } from './initialize'
10
- import { Shade } from './shade'
11
- import { createComponent } from './shade-component'
9
+ import { initializeShadeRoot } from './initialize.js'
10
+ import { Shade } from './shade.js'
11
+ import { createComponent } from './shade-component.js'
12
12
  import { describe, it, expect, vi, afterEach, beforeEach } from 'vitest'
13
13
 
14
14
  describe('Shades integration tests', () => {