@furystack/shades 8.0.18 → 8.1.1
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/esm/component-factory.spec.js +1 -1
- package/esm/component-factory.spec.js.map +1 -1
- package/esm/components/index.d.ts +1 -0
- package/esm/components/index.d.ts.map +1 -1
- package/esm/components/index.js +1 -0
- package/esm/components/index.js.map +1 -1
- package/esm/components/lazy-load.d.ts +3 -1
- package/esm/components/lazy-load.d.ts.map +1 -1
- package/esm/components/link-to-route.d.ts +8 -0
- package/esm/components/link-to-route.d.ts.map +1 -0
- package/esm/components/link-to-route.js +15 -0
- package/esm/components/link-to-route.js.map +1 -0
- package/esm/components/link-to-route.spec.d.ts +2 -0
- package/esm/components/link-to-route.spec.d.ts.map +1 -0
- package/esm/components/link-to-route.spec.js +29 -0
- package/esm/components/link-to-route.spec.js.map +1 -0
- package/esm/components/route-link.d.ts +1 -1
- package/esm/components/route-link.d.ts.map +1 -1
- package/esm/components/router.d.ts +3 -1
- package/esm/components/router.d.ts.map +1 -1
- package/esm/index.d.ts +2 -0
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +2 -0
- package/esm/index.js.map +1 -1
- package/esm/models/render-options.d.ts +3 -2
- package/esm/models/render-options.d.ts.map +1 -1
- package/esm/services/resource-manager.d.ts.map +1 -1
- package/esm/services/resource-manager.js +6 -3
- package/esm/services/resource-manager.js.map +1 -1
- package/esm/services/resource-manager.spec.js +6 -5
- package/esm/services/resource-manager.spec.js.map +1 -1
- package/esm/shade-component.d.ts +1 -1
- package/esm/shade-component.d.ts.map +1 -1
- package/esm/shade-component.js +5 -1
- package/esm/shade-component.js.map +1 -1
- package/esm/shade.d.ts +13 -9
- package/esm/shade.d.ts.map +1 -1
- package/esm/shade.js +3 -0
- package/esm/shade.js.map +1 -1
- package/esm/styled-element.d.ts +10 -0
- package/esm/styled-element.d.ts.map +1 -0
- package/esm/styled-element.js +20 -0
- package/esm/styled-element.js.map +1 -0
- package/esm/styled-shade.d.ts +9 -0
- package/esm/styled-shade.d.ts.map +1 -0
- package/esm/styled-shade.js +19 -0
- package/esm/styled-shade.js.map +1 -0
- package/package.json +6 -6
- package/src/component-factory.spec.tsx +1 -1
- package/src/components/index.ts +1 -0
- package/src/components/link-to-route.spec.tsx +46 -0
- package/src/components/link-to-route.tsx +23 -0
- package/src/index.ts +2 -0
- package/src/models/render-options.ts +3 -2
- package/src/services/resource-manager.spec.ts +6 -5
- package/src/services/resource-manager.ts +6 -3
- package/src/shade-component.ts +7 -1
- package/src/shade.ts +30 -18
- package/src/styled-element.tsx +25 -0
- package/src/styled-shade.ts +23 -0
|
@@ -69,7 +69,7 @@ describe('Shades Component Factory', () => {
|
|
|
69
69
|
},
|
|
70
70
|
});
|
|
71
71
|
const component = (createComponent("div", null,
|
|
72
|
-
createComponent(Example,
|
|
72
|
+
createComponent(Example, null)));
|
|
73
73
|
const shade = component.firstElementChild;
|
|
74
74
|
shade.callConstructed();
|
|
75
75
|
expect(shade.resourceManager.stateObservers.get('foo')?.getValue()).toEqual('example');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component-factory.spec.js","sourceRoot":"","sources":["../src/component-factory.spec.tsx"],"names":[],"mappings":"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
|
|
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":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,aAAa,CAAA;AAC3B,cAAc,iBAAiB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,oBAAoB,CAAA;AAClC,cAAc,aAAa,CAAA;AAC3B,cAAc,iBAAiB,CAAA"}
|
package/esm/components/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,aAAa,CAAA;AAC3B,cAAc,iBAAiB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,oBAAoB,CAAA;AAClC,cAAc,aAAa,CAAA;AAC3B,cAAc,iBAAiB,CAAA"}
|
|
@@ -7,5 +7,7 @@ export interface LazyLoadState {
|
|
|
7
7
|
component?: JSX.Element;
|
|
8
8
|
error?: unknown;
|
|
9
9
|
}
|
|
10
|
-
export declare const LazyLoad: (props: LazyLoadProps
|
|
10
|
+
export declare const LazyLoad: (props: LazyLoadProps & Omit<Partial<HTMLElement>, "style"> & {
|
|
11
|
+
style?: Partial<CSSStyleDeclaration> | undefined;
|
|
12
|
+
}, children?: import("../index.js").ChildrenList | undefined) => JSX.Element<any>;
|
|
11
13
|
//# sourceMappingURL=lazy-load.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lazy-load.d.ts","sourceRoot":"","sources":["../../src/components/lazy-load.tsx"],"names":[],"mappings":"AAEA,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,GAAG,CAAC,OAAO,CAAA;IACnB,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,IAAI,KAAK,GAAG,CAAC,OAAO,CAAA;IAC1D,SAAS,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;CACtC;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,CAAC,EAAE,GAAG,CAAC,OAAO,CAAA;IACvB,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AAED,eAAO,MAAM,QAAQ,
|
|
1
|
+
{"version":3,"file":"lazy-load.d.ts","sourceRoot":"","sources":["../../src/components/lazy-load.tsx"],"names":[],"mappings":"AAEA,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,GAAG,CAAC,OAAO,CAAA;IACnB,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,IAAI,KAAK,GAAG,CAAC,OAAO,CAAA;IAC1D,SAAS,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;CACtC;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,CAAC,EAAE,GAAG,CAAC,OAAO,CAAA;IACvB,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AAED,eAAO,MAAM,QAAQ;;iFAqCnB,CAAA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Route } from './router.js';
|
|
2
|
+
import type { ChildrenList } from '../models/children-list.js';
|
|
3
|
+
export type LinkToRouteProps<T extends {}> = {
|
|
4
|
+
route: Route<T>;
|
|
5
|
+
params: T;
|
|
6
|
+
} & Omit<JSX.IntrinsicElements['a'], 'href'>;
|
|
7
|
+
export declare const LinkToRoute: <T extends {}>(props: LinkToRouteProps<T>, children?: ChildrenList) => JSX.Element;
|
|
8
|
+
//# sourceMappingURL=link-to-route.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"link-to-route.d.ts","sourceRoot":"","sources":["../../src/components/link-to-route.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAExC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAG9D,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,EAAE,IAAI;IAC3C,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAA;IACf,MAAM,EAAE,CAAC,CAAA;CACV,GAAG,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAA;AAE5C,eAAO,MAAM,WAAW,EAAE,CAAC,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,YAAY,KAAK,GAAG,CAAC,OAWnG,CAAA"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { compile } from 'path-to-regexp';
|
|
2
|
+
import { Shade } from '../shade.js';
|
|
3
|
+
import { createComponent } from '../shade-component.js';
|
|
4
|
+
export const LinkToRoute = Shade({
|
|
5
|
+
shadowDomName: 'link-to-route',
|
|
6
|
+
elementBase: HTMLAnchorElement,
|
|
7
|
+
elementBaseName: 'a',
|
|
8
|
+
render: ({ props, element, children }) => {
|
|
9
|
+
const { route, params } = props;
|
|
10
|
+
const url = compile(route.url)(params);
|
|
11
|
+
element.setAttribute('href', url);
|
|
12
|
+
return createComponent(createComponent, null, children);
|
|
13
|
+
},
|
|
14
|
+
});
|
|
15
|
+
//# sourceMappingURL=link-to-route.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"link-to-route.js","sourceRoot":"","sources":["../../src/components/link-to-route.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAExC,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAEnC,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAOvD,MAAM,CAAC,MAAM,WAAW,GAAuF,KAAK,CAAC;IACnH,aAAa,EAAE,eAAe;IAC9B,WAAW,EAAE,iBAAiB;IAC9B,eAAe,EAAE,GAAG;IACpB,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE;QACvC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,KAAK,CAAA;QAE/B,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAA;QACtC,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;QACjC,OAAO,uCAAG,QAAQ,CAAI,CAAA;IACxB,CAAC;CACF,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"link-to-route.spec.d.ts","sourceRoot":"","sources":["../../src/components/link-to-route.spec.tsx"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { TextEncoder, TextDecoder } from 'util';
|
|
2
|
+
global.TextEncoder = TextEncoder;
|
|
3
|
+
global.TextDecoder = TextDecoder;
|
|
4
|
+
import { Injector } from '@furystack/inject';
|
|
5
|
+
import { LinkToRoute } from './link-to-route.js';
|
|
6
|
+
import { describe, it, expect, beforeEach, afterEach } from 'vitest';
|
|
7
|
+
import { initializeShadeRoot } from '../initialize.js';
|
|
8
|
+
import { createComponent } from '../shade-component.js';
|
|
9
|
+
describe('LinkToRoute', () => {
|
|
10
|
+
beforeEach(() => {
|
|
11
|
+
document.body.innerHTML = '<div id="root"></div>';
|
|
12
|
+
});
|
|
13
|
+
afterEach(() => {
|
|
14
|
+
document.body.innerHTML = '';
|
|
15
|
+
});
|
|
16
|
+
it('Shuld display the loader and completed state', async () => {
|
|
17
|
+
const injector = new Injector();
|
|
18
|
+
const rootElement = document.getElementById('root');
|
|
19
|
+
initializeShadeRoot({
|
|
20
|
+
injector,
|
|
21
|
+
rootElement,
|
|
22
|
+
jsxElement: (createComponent(LinkToRoute, { route: {
|
|
23
|
+
url: '/subroute/:id',
|
|
24
|
+
}, params: { id: 123 }, id: "route" }, "Link")),
|
|
25
|
+
});
|
|
26
|
+
expect(document.body.innerHTML).toBe('<div id="root"><a is="link-to-route" id="route" href="/subroute/123">Link</a></div>');
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
//# sourceMappingURL=link-to-route.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"link-to-route.spec.js","sourceRoot":"","sources":["../../src/components/link-to-route.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,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAGvD,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,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,mBAAmB,CAAC;YAClB,QAAQ;YACR,WAAW;YACX,UAAU,EAAE,CACV,gBAAC,WAAW,IACV,KAAK,EACH;oBACE,GAAG,EAAE,eAAe;iBACI,EAE5B,MAAM,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EACnB,EAAE,EAAC,OAAO,WAGE,CACf;SACF,CAAC,CAAA;QACF,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAClC,qFAAqF,CACtF,CAAA;IACH,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
|
@@ -2,5 +2,5 @@ import type { PartialElement } from '../models/partial-element.js';
|
|
|
2
2
|
export type RouteLinkProps = PartialElement<Omit<HTMLAnchorElement, 'onclick'>>;
|
|
3
3
|
export declare const RouteLink: (props: Omit<Partial<Omit<HTMLAnchorElement, "onclick">>, "style"> & {
|
|
4
4
|
style?: Partial<CSSStyleDeclaration> | undefined;
|
|
5
|
-
}
|
|
5
|
+
} & Omit<Partial<HTMLElement>, "style">, children?: import("../index.js").ChildrenList | undefined) => JSX.Element<any>;
|
|
6
6
|
//# sourceMappingURL=route-link.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route-link.d.ts","sourceRoot":"","sources":["../../src/components/route-link.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAIlE,MAAM,MAAM,cAAc,GAAG,cAAc,CAAC,IAAI,CAAC,iBAAiB,EAAE,SAAS,CAAC,CAAC,CAAA;AAE/E,eAAO,MAAM,SAAS;;
|
|
1
|
+
{"version":3,"file":"route-link.d.ts","sourceRoot":"","sources":["../../src/components/route-link.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAIlE,MAAM,MAAM,cAAc,GAAG,cAAc,CAAC,IAAI,CAAC,iBAAiB,EAAE,SAAS,CAAC,CAAC,CAAA;AAE/E,eAAO,MAAM,SAAS;;uHAoBpB,CAAA"}
|
|
@@ -20,5 +20,7 @@ export interface RouterState {
|
|
|
20
20
|
activeRouteParams?: any;
|
|
21
21
|
jsx: JSX.Element;
|
|
22
22
|
}
|
|
23
|
-
export declare const Router: (props: RouterProps
|
|
23
|
+
export declare const Router: (props: RouterProps & Omit<Partial<HTMLElement>, "style"> & {
|
|
24
|
+
style?: Partial<CSSStyleDeclaration> | undefined;
|
|
25
|
+
}, children?: import("../index.js").ChildrenList | undefined) => JSX.Element<any>;
|
|
24
26
|
//# sourceMappingURL=router.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/components/router.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAA;AAExE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAIhE,MAAM,WAAW,KAAK,CAAC,YAAY,SAAS,MAAM;IAChD,GAAG,EAAE,MAAM,CAAA;IACX,SAAS,EAAE,CAAC,OAAO,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,WAAW,CAAC,YAAY,CAAC,CAAA;KAAE,KAAK,GAAG,CAAC,OAAO,CAAA;IAC7F,cAAc,CAAC,EAAE,qBAAqB,CAAA;IACtC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5D,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAC7D;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,mBAAmB,CAAA;IAC3B,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAA;IACzB,QAAQ,CAAC,EAAE,GAAG,CAAC,OAAO,CAAA;CACvB;AAED,MAAM,WAAW,WAAW;IAC1B,WAAW,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAA;IAC/B,iBAAiB,CAAC,EAAE,GAAG,CAAA;IACvB,GAAG,EAAE,GAAG,CAAC,OAAO,CAAA;CACjB;AACD,eAAO,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/components/router.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAA;AAExE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAIhE,MAAM,WAAW,KAAK,CAAC,YAAY,SAAS,MAAM;IAChD,GAAG,EAAE,MAAM,CAAA;IACX,SAAS,EAAE,CAAC,OAAO,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,WAAW,CAAC,YAAY,CAAC,CAAA;KAAE,KAAK,GAAG,CAAC,OAAO,CAAA;IAC7F,cAAc,CAAC,EAAE,qBAAqB,CAAA;IACtC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5D,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAC7D;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,mBAAmB,CAAA;IAC3B,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAA;IACzB,QAAQ,CAAC,EAAE,GAAG,CAAC,OAAO,CAAA;CACvB;AAED,MAAM,WAAW,WAAW;IAC1B,WAAW,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAA;IAC/B,iBAAiB,CAAC,EAAE,GAAG,CAAA;IACvB,GAAG,EAAE,GAAG,CAAC,OAAO,CAAA;CACjB;AACD,eAAO,MAAM,MAAM;;iFAgDjB,CAAA"}
|
package/esm/index.d.ts
CHANGED
package/esm/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA;AACnC,OAAO,UAAU,CAAA;AACjB,cAAc,sBAAsB,CAAA;AACpC,cAAc,YAAY,CAAA;AAC1B,cAAc,mBAAmB,CAAA;AACjC,cAAc,uBAAuB,CAAA;AACrC,cAAc,iBAAiB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA;AACnC,OAAO,UAAU,CAAA;AACjB,cAAc,sBAAsB,CAAA;AACpC,cAAc,YAAY,CAAA;AAC1B,cAAc,mBAAmB,CAAA;AACjC,cAAc,uBAAuB,CAAA;AACrC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,qBAAqB,CAAA;AACnC,cAAc,mBAAmB,CAAA"}
|
package/esm/index.js
CHANGED
package/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA;AACnC,OAAO,UAAU,CAAA;AACjB,cAAc,sBAAsB,CAAA;AACpC,cAAc,YAAY,CAAA;AAC1B,cAAc,mBAAmB,CAAA;AACjC,cAAc,uBAAuB,CAAA;AACrC,cAAc,iBAAiB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA;AACnC,OAAO,UAAU,CAAA;AACjB,cAAc,sBAAsB,CAAA;AACpC,cAAc,YAAY,CAAA;AAC1B,cAAc,mBAAmB,CAAA;AACjC,cAAc,uBAAuB,CAAA;AACrC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,qBAAqB,CAAA;AACnC,cAAc,mBAAmB,CAAA"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import type { Injector } from '@furystack/inject';
|
|
2
2
|
import type { ChildrenList } from './children-list.js';
|
|
3
3
|
import type { Disposable, ObservableValue } from '@furystack/utils';
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
import type { PartialElement } from './partial-element.js';
|
|
5
|
+
export type RenderOptions<TProps, TElementBase extends HTMLElement = HTMLElement> = {
|
|
6
|
+
readonly props: TProps & PartialElement<TElementBase>;
|
|
6
7
|
renderCount: number;
|
|
7
8
|
injector: Injector;
|
|
8
9
|
children?: ChildrenList;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render-options.d.ts","sourceRoot":"","sources":["../../src/models/render-options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"render-options.d.ts","sourceRoot":"","sources":["../../src/models/render-options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAE1D,MAAM,MAAM,aAAa,CAAC,MAAM,EAAE,YAAY,SAAS,WAAW,GAAG,WAAW,IAAI;IAClF,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc,CAAC,YAAY,CAAC,CAAA;IACrD,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,QAAQ,CAAA;IAClB,QAAQ,CAAC,EAAE,YAAY,CAAA;IACvB,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IAC5B;;;;;OAKG;IACH,aAAa,EAAE,CAAC,CAAC,SAAS,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;IAEzE;;;;;;;OAOG;IACH,aAAa,EAAE,CAAC,CAAC,EACf,GAAG,EAAE,MAAM,EACX,UAAU,EAAE,eAAe,CAAC,CAAC,CAAC,EAC9B,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,IAAI,EAChC,OAAO,CAAC,EAAE,OAAO,KACd,CAAC,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,IAAI,CAAC,CAAA;IAEhD;;;;;OAKG;IACH,QAAQ,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,IAAI,CAAC,CAAA;IAE1F;;;;;OAKG;IACH,cAAc,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,IAAI,CAAC,CAAA;IAEhG;;;;;;OAMG;IACH,cAAc,EAAE,CAAC,CAAC,EAChB,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,CAAC,EACf,WAAW,CAAC,EAAE,OAAO,KAClB,CAAC,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,IAAI,CAAC,CAAA;CACjD,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resource-manager.d.ts","sourceRoot":"","sources":["../../src/services/resource-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AACvE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAErD;;GAEG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAgC;IAErD,aAAa,CAAC,CAAC,SAAS,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"resource-manager.d.ts","sourceRoot":"","sources":["../../src/services/resource-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AACvE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAErD;;GAEG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAgC;IAErD,aAAa,CAAC,CAAC,SAAS,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC;IAU5E,SAAgB,SAAS,kCAAwC;IAE1D,aAAa,WACb,MAAM,cACC,gBAAgB,CAAC,CAAC,YACpB,oBAAoB,CAAC,CAAC,YACtB,OAAO,qCACgB,CAAC,KAAK,IAAI,EAQ5C;IAED,SAAgB,cAAc,oCAA0C;IAEjE,QAAQ,WACR,MAAM,gBACG,CAAC,YACL,oBAAoB,CAAC,CAAC,qCACC,CAAC,KAAK,IAAI,EAQ5C;IAEM,OAAO;CASf"}
|
|
@@ -5,10 +5,13 @@ import { ObservableValue } from '@furystack/utils';
|
|
|
5
5
|
export class ResourceManager {
|
|
6
6
|
disposables = new Map();
|
|
7
7
|
useDisposable(key, factory) {
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
const existing = this.disposables.get(key);
|
|
9
|
+
if (!existing) {
|
|
10
|
+
const created = factory();
|
|
11
|
+
this.disposables.set(key, created);
|
|
12
|
+
return created;
|
|
10
13
|
}
|
|
11
|
-
return
|
|
14
|
+
return existing;
|
|
12
15
|
}
|
|
13
16
|
observers = new Map();
|
|
14
17
|
useObservable = (key, observable, callback, getLast) => {
|
|
@@ -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,
|
|
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,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAC1C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,OAAO,GAAG,OAAO,EAAE,CAAA;YACzB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;YAClC,OAAO,OAAO,CAAA;QAChB,CAAC;QACD,OAAO,QAAa,CAAA;IACtB,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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ObservableValue, using } from '@furystack/utils';
|
|
2
2
|
import { ResourceManager } from './resource-manager.js';
|
|
3
|
-
import { describe, it, expect } from 'vitest';
|
|
3
|
+
import { describe, it, expect, vi } from 'vitest';
|
|
4
4
|
describe('ResourceManager', () => {
|
|
5
5
|
it('Should return an observable from cache', () => {
|
|
6
6
|
using(new ResourceManager(), (rm) => {
|
|
@@ -17,14 +17,15 @@ describe('ResourceManager', () => {
|
|
|
17
17
|
});
|
|
18
18
|
it('Should return a disposable from cache', () => {
|
|
19
19
|
using(new ResourceManager(), (rm) => {
|
|
20
|
-
const
|
|
20
|
+
const factory = vi.fn(() => ({
|
|
21
21
|
dispose: () => {
|
|
22
22
|
/** ignore */
|
|
23
23
|
},
|
|
24
|
-
};
|
|
25
|
-
const d1 = rm.useDisposable('test',
|
|
26
|
-
const d2 = rm.useDisposable('test',
|
|
24
|
+
}));
|
|
25
|
+
const d1 = rm.useDisposable('test', factory);
|
|
26
|
+
const d2 = rm.useDisposable('test', factory);
|
|
27
27
|
expect(d1).toBe(d2);
|
|
28
|
+
expect(factory).toHaveBeenCalledTimes(1);
|
|
28
29
|
});
|
|
29
30
|
});
|
|
30
31
|
});
|
|
@@ -1 +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;
|
|
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,EAAE,EAAE,MAAM,QAAQ,CAAA;AACjD,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,OAAO,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;gBAC3B,OAAO,EAAE,GAAG,EAAE;oBACZ,aAAa;gBACf,CAAC;aACF,CAAC,CAAC,CAAA;YACH,MAAM,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;YAC5C,MAAM,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;YAE5C,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YACnB,MAAM,CAAC,OAAO,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAA;QAC1C,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
package/esm/shade-component.d.ts
CHANGED
|
@@ -32,6 +32,6 @@ type CreateComponentArgs<TProps> = [
|
|
|
32
32
|
export declare const createComponentInner: <TProps>(elementType: string | ShadeComponent<TProps>, props: TProps, ...children: (string | HTMLElement | JSX.Element<any> | string[] | HTMLElement[] | JSX.Element<any>[])[]) => HTMLElement | undefined;
|
|
33
33
|
type CreateFragmentArgs = [props: null, ...children: ChildrenList];
|
|
34
34
|
export declare const createFragmentInner: (props: null, ...children: (string | HTMLElement | JSX.Element<any> | string[] | HTMLElement[] | JSX.Element<any>[])[]) => DocumentFragment;
|
|
35
|
-
export declare const createComponent: <TProps>(...args:
|
|
35
|
+
export declare const createComponent: <TProps>(...args: CreateComponentArgs<TProps> | CreateFragmentArgs) => HTMLElement | DocumentFragment | undefined;
|
|
36
36
|
export {};
|
|
37
37
|
//# sourceMappingURL=shade-component.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shade-component.d.ts","sourceRoot":"","sources":["../src/shade-component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAGrE;;;;GAIG;AACH,eAAO,MAAM,WAAW,OAAQ,WAAW,GAAG,gBAAgB,iCAY7D,CAAA;AAED,eAAO,MAAM,QAAQ,UAAW,GAAG;WAAqB,QAAQ,mBAAmB,CAAC;CAEnF,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,YAAY,OAAQ,WAAW,SAAS,GAAG,SAOvD,CAAA;AAED,eAAO,MAAM,oBAAoB,OAAQ,WAAW,SAAS,GAAG,SAK/D,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,WAAW,OAAQ,WAAW,SAAS,GAAG,
|
|
1
|
+
{"version":3,"file":"shade-component.d.ts","sourceRoot":"","sources":["../src/shade-component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAGrE;;;;GAIG;AACH,eAAO,MAAM,WAAW,OAAQ,WAAW,GAAG,gBAAgB,iCAY7D,CAAA;AAED,eAAO,MAAM,QAAQ,UAAW,GAAG;WAAqB,QAAQ,mBAAmB,CAAC;CAEnF,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,YAAY,OAAQ,WAAW,SAAS,GAAG,SAOvD,CAAA;AAED,eAAO,MAAM,oBAAoB,OAAQ,WAAW,SAAS,GAAG,SAK/D,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,WAAW,OAAQ,WAAW,SAAS,GAAG,SAatD,CAAA;AAED,KAAK,mBAAmB,CAAC,MAAM,IAAI;IACjC,WAAW,EAAE,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC;IAC5C,KAAK,EAAE,MAAM;IACb,GAAG,QAAQ,EAAE,YAAY;CAC1B,CAAA;AAGD;;;GAGG;AACH,eAAO,MAAM,oBAAoB,4MAgBhC,CAAA;AAED,KAAK,kBAAkB,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,QAAQ,EAAE,YAAY,CAAC,CAAA;AAElE,eAAO,MAAM,mBAAmB,6IAI/B,CAAA;AAED,eAAO,MAAM,eAAe,oBAAqB,oBAAoB,MAAM,CAAC,GAAG,kBAAkB,+CAKhG,CAAA"}
|
package/esm/shade-component.js
CHANGED
|
@@ -47,7 +47,11 @@ export const attachDataAttributes = (el, props) => {
|
|
|
47
47
|
* @param props The Props to attach
|
|
48
48
|
*/
|
|
49
49
|
export const attachProps = (el, props) => {
|
|
50
|
-
|
|
50
|
+
if (!props) {
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
const { style, ...rest } = props;
|
|
54
|
+
Object.assign(el, rest);
|
|
51
55
|
if (props && props.style) {
|
|
52
56
|
attachStyles(el, props);
|
|
53
57
|
}
|
|
@@ -1 +1 @@
|
|
|
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,
|
|
1
|
+
{"version":3,"file":"shade-component.js","sourceRoot":"","sources":["../src/shade-component.ts"],"names":[],"mappings":"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"}
|
package/esm/shade.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { Disposable } from '@furystack/utils';
|
|
2
2
|
import type { Constructable } from '@furystack/inject';
|
|
3
|
-
import type { ChildrenList, RenderOptions } from './models/index.js';
|
|
4
|
-
export type ShadeOptions<TProps> = {
|
|
3
|
+
import type { ChildrenList, PartialElement, RenderOptions } from './models/index.js';
|
|
4
|
+
export type ShadeOptions<TProps, TElementBase extends HTMLElement> = {
|
|
5
5
|
/**
|
|
6
6
|
* Explicit shadow dom name. Will fall back to 'shade-{guid}' if not provided
|
|
7
7
|
*/
|
|
@@ -9,23 +9,23 @@ export type ShadeOptions<TProps> = {
|
|
|
9
9
|
/**
|
|
10
10
|
* Render hook, this method will be executed on each and every render.
|
|
11
11
|
*/
|
|
12
|
-
render: (options: RenderOptions<TProps>) => JSX.Element | string | null;
|
|
12
|
+
render: (options: RenderOptions<TProps, TElementBase>) => JSX.Element | string | null;
|
|
13
13
|
/**
|
|
14
14
|
* Construct hook. Will be executed once when the element has been constructed and initialized
|
|
15
15
|
*/
|
|
16
|
-
constructed?: (options: RenderOptions<TProps>) => void | undefined | (() => void) | Promise<void | undefined | (() => void)>;
|
|
16
|
+
constructed?: (options: RenderOptions<TProps, TElementBase>) => void | undefined | (() => void) | Promise<void | undefined | (() => void)>;
|
|
17
17
|
/**
|
|
18
18
|
* Will be executed when the element is attached to the DOM.
|
|
19
19
|
*/
|
|
20
|
-
onAttach?: (options: RenderOptions<TProps>) => void;
|
|
20
|
+
onAttach?: (options: RenderOptions<TProps, TElementBase>) => void;
|
|
21
21
|
/**
|
|
22
22
|
* Will be executed when the element is detached from the DOM.
|
|
23
23
|
*/
|
|
24
|
-
onDetach?: (options: RenderOptions<TProps>) => void;
|
|
24
|
+
onDetach?: (options: RenderOptions<TProps, TElementBase>) => void;
|
|
25
25
|
/**
|
|
26
26
|
* A factory method that creates a list of disposable resources that will be disposed when the element is detached.
|
|
27
27
|
*/
|
|
28
|
-
resources?: (options: RenderOptions<TProps>) => Disposable[];
|
|
28
|
+
resources?: (options: RenderOptions<TProps, TElementBase>) => Disposable[];
|
|
29
29
|
/**
|
|
30
30
|
* Name of the HTML Element's base class. Needs to be defined if the elementBase is set. E.g.: 'div', 'button', 'input'
|
|
31
31
|
*/
|
|
@@ -33,12 +33,16 @@ export type ShadeOptions<TProps> = {
|
|
|
33
33
|
/**
|
|
34
34
|
* Base class for the custom element. Defaults to HTMLElement. E.g. HTMLButtonElement
|
|
35
35
|
*/
|
|
36
|
-
elementBase?: Constructable<
|
|
36
|
+
elementBase?: Constructable<TElementBase>;
|
|
37
|
+
/**
|
|
38
|
+
* A default style that will be applied to the element. Can be overridden by external styles.
|
|
39
|
+
*/
|
|
40
|
+
style?: Partial<CSSStyleDeclaration>;
|
|
37
41
|
};
|
|
38
42
|
/**
|
|
39
43
|
* Factory method for creating Shade components
|
|
40
44
|
* @param o for component creation
|
|
41
45
|
* @returns the JSX element
|
|
42
46
|
*/
|
|
43
|
-
export declare const Shade: <TProps>(o: ShadeOptions<TProps>) => (props: TProps
|
|
47
|
+
export declare const Shade: <TProps, TElementBase extends HTMLElement = HTMLElement>(o: ShadeOptions<TProps, TElementBase>) => (props: TProps & PartialElement<TElementBase>, children?: ChildrenList) => JSX.Element<any>;
|
|
44
48
|
//# sourceMappingURL=shade.d.ts.map
|
package/esm/shade.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shade.d.ts","sourceRoot":"","sources":["../src/shade.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAElD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAEtD,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"shade.d.ts","sourceRoot":"","sources":["../src/shade.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAElD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAEtD,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAKpF,MAAM,MAAM,YAAY,CAAC,MAAM,EAAE,YAAY,SAAS,WAAW,IAAI;IACnE;;OAEG;IACH,aAAa,EAAE,MAAM,CAAA;IAErB;;OAEG;IACH,MAAM,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,MAAM,EAAE,YAAY,CAAC,KAAK,GAAG,CAAC,OAAO,GAAG,MAAM,GAAG,IAAI,CAAA;IAErF;;OAEG;IACH,WAAW,CAAC,EAAE,CACZ,OAAO,EAAE,aAAa,CAAC,MAAM,EAAE,YAAY,CAAC,KACzC,IAAI,GAAG,SAAS,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,GAAG,SAAS,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,CAAA;IAE/E;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,MAAM,EAAE,YAAY,CAAC,KAAK,IAAI,CAAA;IAEjE;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,MAAM,EAAE,YAAY,CAAC,KAAK,IAAI,CAAA;IAEjE;;OAEG;IACH,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,MAAM,EAAE,YAAY,CAAC,KAAK,UAAU,EAAE,CAAA;IAE1E;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;IAExB;;OAEG;IACH,WAAW,CAAC,EAAE,aAAa,CAAC,YAAY,CAAC,CAAA;IAEzC;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAA;CACrC,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,KAAK,8DACb,aAAa,MAAM,EAAE,YAAY,CAAC,aAsNtB,MAAM,GAAG,eAAe,YAAY,CAAC,aAAa,YAAY,qBAc9E,CAAA"}
|
package/esm/shade.js
CHANGED
|
@@ -2,6 +2,7 @@ import { ObservableValue } from '@furystack/utils';
|
|
|
2
2
|
import { Injector } from '@furystack/inject';
|
|
3
3
|
import { ResourceManager } from './services/resource-manager.js';
|
|
4
4
|
import { LocationService } from './services/location-service.js';
|
|
5
|
+
import { attachProps, attachStyles } from './shade-component.js';
|
|
5
6
|
/**
|
|
6
7
|
* Factory method for creating Shade components
|
|
7
8
|
* @param o for component creation
|
|
@@ -181,6 +182,8 @@ export const Shade = (o) => {
|
|
|
181
182
|
});
|
|
182
183
|
el.props = props || {};
|
|
183
184
|
el.shadeChildren = children;
|
|
185
|
+
attachStyles(el, { style: o.style });
|
|
186
|
+
attachProps(el, props);
|
|
184
187
|
return el;
|
|
185
188
|
};
|
|
186
189
|
};
|
package/esm/shade.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shade.js","sourceRoot":"","sources":["../src/shade.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAElD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAE5C,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAA;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAA;
|
|
1
|
+
{"version":3,"file":"shade.js","sourceRoot":"","sources":["../src/shade.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAElD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAE5C,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAA;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAA;AAChE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAmDhE;;;;GAIG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,CACnB,CAAqC,EACrC,EAAE;IACF,8BAA8B;IAC9B,MAAM,iBAAiB,GAAG,CAAC,CAAC,aAAa,CAAA;IAEzC,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;IACtD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,WAAW,GAAG,CAAC,CAAC,WAAW,IAAI,WAAW,CAAA;QAEhD,cAAc,CAAC,MAAM,CACnB,iBAAiB,EACjB,KAAM,SAAS,WAA0C;YAC/C,YAAY,GAAG,CAAC,CAAA;YAExB;;eAEG;YACI,cAAc;gBACnB,OAAO,IAAI,CAAC,YAAY,CAAA;YAC1B,CAAC;YAEM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAA;YAEvC,iBAAiB;gBACtB,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAA;gBACrC,IAAI,CAAC,eAAe,EAAE,CAAA;YACxB,CAAC;YAEM,oBAAoB;gBACzB,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAA;gBACrC,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAA;gBAC9B,IAAI,CAAC,OAAO,EAAE,EAAE,CAAA;YAClB,CAAC;YAED;;eAEG;YACI,KAAK,CAAuE;YAEnF;;eAEG;YACI,aAAa,CAAe;YAEnC;;;eAGG;YACI,MAAM,GAAG,CAAC,OAA4C,EAAE,EAAE;gBAC/D,IAAI,CAAC,YAAY,EAAE,CAAA;gBACnB,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;YAC1B,CAAC,CAAA;YAED;;eAEG;YACK,gBAAgB,GAAG,GAAwC,EAAE;gBACnE,MAAM,aAAa,GAAwC;oBACzD,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;oBACvB,QAAQ,EAAE,IAAI,CAAC,aAAa;oBAC5B,OAAO,EAAE,IAAI;oBACb,WAAW,EAAE,IAAI,CAAC,YAAY;oBAC9B,aAAa,EAAE,CAAC,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,CACpD,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,GAAG,EAAE,UAAU,EAAE,QAAQ,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,EAAE,OAAO,CAAC;oBAC1G,QAAQ,EAAE,CAAC,GAAG,EAAE,YAAY,EAAE,EAAE,CAC9B,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,GAAG,EAAE,YAAY,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACnF,cAAc,EAAE,CAAC,GAAG,EAAE,YAAY,EAAE,EAAE,CACpC,IAAI,CAAC,eAAe,CAAC,aAAa,CAChC,kBAAkB,GAAG,EAAE,EACvB,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,cAAc,CAAC,GAAG,EAAE,YAAY,CAAC,EAC5E,GAAG,EAAE,CAAC,IAAI,CAAC,eAAe,EAAE,CAC7B;oBAEH,cAAc,EAAE,CAAI,GAAW,EAAE,YAAe,EAAE,WAAW,GAAG,YAAY,EAAE,EAAE;wBAC9E,MAAM,cAAc,GAAG,GAAG,EAAE;4BAC1B,MAAM,KAAK,GAAG,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,CAAA;4BACvC,OAAO,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,CAAA;wBACjD,CAAC,CAAA;wBAED,MAAM,YAAY,GAAG,CAAC,KAAQ,EAAE,EAAE;4BAChC,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;gCACxD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;gCACtC,WAAW,EAAE,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;4BACrC,CAAC;4BACD,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;gCACpE,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;4BAC5B,CAAC;wBACH,CAAC,CAAA;wBAED,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,aAAa,CACnD,kBAAkB,GAAG,EAAE,EACvB,GAAG,EAAE,CAAC,IAAI,eAAe,CAAC,cAAc,EAAE,CAAC,CAC5C,CAAA;wBAED,MAAM,sBAAsB,GAAG,CAAC,CAAe,EAAE,EAAE;4BACjD,CAAC,CAAC,GAAG,KAAK,GAAG;gCACX,CAAC,CAAC,WAAW,KAAK,WAAW;gCAC7B,YAAY,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,YAAY,CAAC,CAAA;wBACxE,CAAC,CAAA;wBAED,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,kBAAkB,GAAG,gBAAgB,EAAE,GAAG,EAAE;4BAC7E,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,sBAAsB,CAAC,CAAA;4BAC1D,MAAM,WAAW,GAAG,kCAAkC,CAAA;4BACtD,MAAM,cAAc,GAAG,IAAI,gBAAgB,CAAC,WAAW,CAAC,CAAA;4BACxD,cAAc,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,EAAE;gCAC/B,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;oCACvB,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;gCAC5B,CAAC;4BACH,CAAC,CAAA;4BACD,MAAM,YAAY,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE;gCAClD,cAAc,CAAC,WAAW,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAA;4BAC5C,CAAC,CAAC,CAAA;4BAEF,OAAO;gCACL,OAAO,EAAE,GAAG,EAAE;oCACZ,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,sBAAsB,CAAC,CAAA;oCAC7D,YAAY,CAAC,OAAO,EAAE,CAAA;oCACtB,cAAc,CAAC,KAAK,EAAE,CAAA;gCACxB,CAAC;6BACF,CAAA;wBACH,CAAC,CAAC,CAAA;wBAEF,UAAU,CAAC,SAAS,CAAC,YAAY,CAAC,CAAA;wBAElC,OAAO,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,kBAAkB,GAAG,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,CAClF,IAAI,CAAC,eAAe,EAAE,CACvB,CAAA;oBACH,CAAC;oBACD,aAAa,EAAE,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;iBAC7E,CAAA;gBAED,OAAO,aAAoD,CAAA;YAC7D,CAAC,CAAA;YAED;;eAEG;YACI,eAAe;gBACpB,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAA;gBAEzD,IAAI,YAAY,KAAK,IAAI,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;oBACxD,IAAI,CAAC,SAAS,GAAG,EAAE,CAAA;gBACrB,CAAC;gBAED,IAAI,OAAO,YAAY,KAAK,QAAQ,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE,CAAC;oBACzE,IAAI,CAAC,SAAS,GAAG,YAAY,CAAA;gBAC/B,CAAC;gBAED,IAAI,YAAY,YAAY,WAAW,EAAE,CAAC;oBACxC,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,CAAA;gBACpC,CAAC;gBACD,IAAI,YAAY,YAAY,gBAAgB,EAAE,CAAC;oBAC7C,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,CAAA;gBACpC,CAAC;YACH,CAAC;YAED;;eAEG;YACI,eAAe;gBACpB,IAAI,CAAC,eAAe,EAAE,CAAA;gBACtB,MAAM,aAAa,GAAG,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAA;gBAC7E,IAAI,aAAa,YAAY,OAAO,EAAE,CAAC;oBACrC,aAAa,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC,CAAA;gBAC3D,CAAC;qBAAM,CAAC;oBACN,yBAAyB;oBACzB,IAAI,CAAC,OAAO,GAAG,aAAa,CAAA;gBAC9B,CAAC;YACH,CAAC;YAEO,OAAO,GAAwB,SAAS,CAAA;YAExC,SAAS,CAAW;YAEpB,qBAAqB;gBAC3B,IAAI,MAAM,GAAG,IAAI,CAAC,aAAa,CAAA;gBAC/B,OAAO,MAAM,EAAE,CAAC;oBACd,IAAK,MAAsB,CAAC,QAAQ,EAAE,CAAC;wBACrC,OAAQ,MAAsB,CAAC,QAAQ,CAAA;oBACzC,CAAC;oBACD,MAAM,GAAG,MAAM,CAAC,aAAa,CAAA;gBAC/B,CAAC;YACH,CAAC;YAED,IAAW,QAAQ;gBACjB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;oBACnB,OAAO,IAAI,CAAC,SAAS,CAAA;gBACvB,CAAC;gBAED,MAAM,SAAS,GAAI,IAAI,CAAC,KAAa,EAAE,QAAQ,CAAA;gBAC/C,IAAI,SAAS,IAAI,SAAS,YAAY,QAAQ,EAAE,CAAC;oBAC/C,OAAO,SAAS,CAAA;gBAClB,CAAC;gBAED,MAAM,UAAU,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAA;gBAC/C,IAAI,UAAU,EAAE,CAAC;oBACf,IAAI,CAAC,SAAS,GAAG,UAAU,CAAA;oBAC3B,OAAO,UAAU,CAAA;gBACnB,CAAC;gBACD,wDAAwD;gBACxD,OAAO,IAAI,QAAQ,EAAE,CAAA;YACvB,CAAC;YAED,IAAW,QAAQ,CAAC,CAAW;gBAC7B,IAAI,CAAC,SAAS,GAAG,CAAC,CAAA;YACpB,CAAC;SACF,EACD,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,SAAS,CAC/D,CAAA;IACH,CAAC;SAAM,CAAC;QACN,MAAM,KAAK,CAAC,wCAAwC,CAAC,CAAC,aAAa,gCAAgC,CAAC,CAAA;IACtG,CAAC;IAED,OAAO,CAAC,KAA4C,EAAE,QAAuB,EAAE,EAAE;QAC/E,MAAM,WAAW,GAAG,cAAc,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;QACzD,MAAM,EAAE,GAAG,IAAK,WAAwC,CAAC;YACvD,GAAI,KAAwE;SAC7E,CAAwB,CAAA;QAEzB,EAAE,CAAC,KAAK,GAAG,KAAK,IAAK,EAA4C,CAAA;QACjE,EAAE,CAAC,aAAa,GAAG,QAAQ,CAAA;QAE3B,YAAY,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAA;QACpC,WAAW,CAAC,EAAE,EAAE,KAAK,CAAC,CAAA;QAEtB,OAAO,EAAiB,CAAA;IAC1B,CAAC,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { PartialElement } from './models/partial-element.js';
|
|
2
|
+
import type { ChildrenList } from './models/children-list.js';
|
|
3
|
+
/**
|
|
4
|
+
* Creates a shortcut for a specific custom Shade element with additional styles
|
|
5
|
+
* @param element The element instance
|
|
6
|
+
* @param styles The additional styles to add
|
|
7
|
+
* @returns The updated element
|
|
8
|
+
*/
|
|
9
|
+
export declare const styledElement: <TElement extends keyof JSX.IntrinsicElements>(element: TElement, styles: Partial<CSSStyleDeclaration>) => (props: PartialElement<JSX.IntrinsicElements[TElement]>, childrenList: ChildrenList) => JSX.Element;
|
|
10
|
+
//# sourceMappingURL=styled-element.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"styled-element.d.ts","sourceRoot":"","sources":["../src/styled-element.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAEjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAE7D;;;;;GAKG;AACH,eAAO,MAAM,aAAa,0DACf,QAAQ,UACT,QAAQ,mBAAmB,CAAC,aAC1B,eAAe,IAAI,iBAAiB,CAAC,QAAQ,CAAC,CAAC,iCAAiC,WAW3F,CAAA"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { createComponent } from './shade-component.js';
|
|
2
|
+
/**
|
|
3
|
+
* Creates a shortcut for a specific custom Shade element with additional styles
|
|
4
|
+
* @param element The element instance
|
|
5
|
+
* @param styles The additional styles to add
|
|
6
|
+
* @returns The updated element
|
|
7
|
+
*/
|
|
8
|
+
export const styledElement = (element, styles) => {
|
|
9
|
+
return (props, childrenList) => {
|
|
10
|
+
const mergedProps = {
|
|
11
|
+
...props,
|
|
12
|
+
style: {
|
|
13
|
+
...(props?.style || {}),
|
|
14
|
+
...styles,
|
|
15
|
+
},
|
|
16
|
+
};
|
|
17
|
+
return createComponent(element, mergedProps, ...childrenList);
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=styled-element.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"styled-element.js","sourceRoot":"","sources":["../src/styled-element.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAGtD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,OAAiB,EACjB,MAAoC,EACmE,EAAE;IACzG,OAAO,CAAC,KAAU,EAAE,YAA0B,EAAE,EAAE;QAChD,MAAM,WAAW,GAAG;YAClB,GAAG,KAAK;YACR,KAAK,EAAE;gBACL,GAAG,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE,CAAC;gBACvB,GAAG,MAAM;aACV;SACF,CAAA;QACD,OAAO,eAAe,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,YAAY,CAAgB,CAAA;IAC9E,CAAC,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ChildrenList } from './models/children-list.js';
|
|
2
|
+
/**
|
|
3
|
+
* Creates a shortcut for a specific custom Shade element with additional styles
|
|
4
|
+
* @param element The element instance
|
|
5
|
+
* @param styles The additional styles to add
|
|
6
|
+
* @returns The updated element
|
|
7
|
+
*/
|
|
8
|
+
export declare const styledShade: <T extends (props: any, children?: ChildrenList) => JSX.Element>(element: T, styles: Partial<CSSStyleDeclaration>) => T;
|
|
9
|
+
//# sourceMappingURL=styled-shade.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"styled-shade.d.ts","sourceRoot":"","sources":["../src/styled-shade.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAE7D;;;;;GAKG;AACH,eAAO,MAAM,WAAW,qBAAsB,GAAG,aAAa,YAAY,KAAK,WAAW,WAC/E,CAAC,UACF,QAAQ,mBAAmB,CAAC,MAYrC,CAAA"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Creates a shortcut for a specific custom Shade element with additional styles
|
|
3
|
+
* @param element The element instance
|
|
4
|
+
* @param styles The additional styles to add
|
|
5
|
+
* @returns The updated element
|
|
6
|
+
*/
|
|
7
|
+
export const styledShade = (element, styles) => {
|
|
8
|
+
return ((props, childrenList) => {
|
|
9
|
+
const mergedProps = {
|
|
10
|
+
...props,
|
|
11
|
+
style: {
|
|
12
|
+
...(props?.style || {}),
|
|
13
|
+
...styles,
|
|
14
|
+
},
|
|
15
|
+
};
|
|
16
|
+
return element(mergedProps, childrenList);
|
|
17
|
+
});
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=styled-shade.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"styled-shade.js","sourceRoot":"","sources":["../src/styled-shade.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,OAAU,EACV,MAAoC,EACpC,EAAE;IACF,OAAO,CAAC,CAAC,KAAU,EAAE,YAA2B,EAAE,EAAE;QAClD,MAAM,WAAW,GAAG;YAClB,GAAG,KAAK;YACR,KAAK,EAAE;gBACL,GAAG,CAAE,KAAa,EAAE,KAAK,IAAI,EAAE,CAAC;gBAChC,GAAG,MAAM;aACV;SACF,CAAA;QACD,OAAO,OAAO,CAAC,WAAW,EAAE,YAAY,CAAC,CAAA;IAC3C,CAAC,CAAM,CAAA;AACT,CAAC,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@furystack/shades",
|
|
3
|
-
"version": "8.
|
|
3
|
+
"version": "8.1.1",
|
|
4
4
|
"description": "Google Authentication Provider for FuryStack",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"scripts": {
|
|
@@ -38,15 +38,15 @@
|
|
|
38
38
|
"homepage": "https://github.com/furystack/furystack",
|
|
39
39
|
"devDependencies": {
|
|
40
40
|
"@types/jsdom": "^21.1.6",
|
|
41
|
-
"@types/node": "^20.11.
|
|
41
|
+
"@types/node": "^20.11.25",
|
|
42
42
|
"jsdom": "^24.0.0",
|
|
43
|
-
"typescript": "^5.
|
|
43
|
+
"typescript": "^5.4.2",
|
|
44
44
|
"vitest": "^1.3.1"
|
|
45
45
|
},
|
|
46
46
|
"dependencies": {
|
|
47
|
-
"@furystack/inject": "^8.1.
|
|
48
|
-
"@furystack/rest": "^5.0.
|
|
49
|
-
"@furystack/utils": "^4.0.
|
|
47
|
+
"@furystack/inject": "^8.1.8",
|
|
48
|
+
"@furystack/rest": "^5.0.19",
|
|
49
|
+
"@furystack/utils": "^4.0.17",
|
|
50
50
|
"path-to-regexp": "^6.2.1",
|
|
51
51
|
"semaphore-async-await": "^1.5.1"
|
|
52
52
|
},
|
package/src/components/index.ts
CHANGED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { TextEncoder, TextDecoder } from 'util'
|
|
2
|
+
|
|
3
|
+
global.TextEncoder = TextEncoder
|
|
4
|
+
global.TextDecoder = TextDecoder as any
|
|
5
|
+
|
|
6
|
+
import { Injector } from '@furystack/inject'
|
|
7
|
+
import { LinkToRoute } from './link-to-route.js'
|
|
8
|
+
import { describe, it, expect, beforeEach, afterEach } from 'vitest'
|
|
9
|
+
import { initializeShadeRoot } from '../initialize.js'
|
|
10
|
+
import { createComponent } from '../shade-component.js'
|
|
11
|
+
import type { Route } from './router.js'
|
|
12
|
+
|
|
13
|
+
describe('LinkToRoute', () => {
|
|
14
|
+
beforeEach(() => {
|
|
15
|
+
document.body.innerHTML = '<div id="root"></div>'
|
|
16
|
+
})
|
|
17
|
+
afterEach(() => {
|
|
18
|
+
document.body.innerHTML = ''
|
|
19
|
+
})
|
|
20
|
+
|
|
21
|
+
it('Shuld display the loader and completed state', async () => {
|
|
22
|
+
const injector = new Injector()
|
|
23
|
+
const rootElement = document.getElementById('root') as HTMLDivElement
|
|
24
|
+
|
|
25
|
+
initializeShadeRoot({
|
|
26
|
+
injector,
|
|
27
|
+
rootElement,
|
|
28
|
+
jsxElement: (
|
|
29
|
+
<LinkToRoute
|
|
30
|
+
route={
|
|
31
|
+
{
|
|
32
|
+
url: '/subroute/:id',
|
|
33
|
+
} as Route<{ id: number }>
|
|
34
|
+
}
|
|
35
|
+
params={{ id: 123 }}
|
|
36
|
+
id="route"
|
|
37
|
+
>
|
|
38
|
+
Link
|
|
39
|
+
</LinkToRoute>
|
|
40
|
+
),
|
|
41
|
+
})
|
|
42
|
+
expect(document.body.innerHTML).toBe(
|
|
43
|
+
'<div id="root"><a is="link-to-route" id="route" href="/subroute/123">Link</a></div>',
|
|
44
|
+
)
|
|
45
|
+
})
|
|
46
|
+
})
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { compile } from 'path-to-regexp'
|
|
2
|
+
import type { Route } from './router.js'
|
|
3
|
+
import { Shade } from '../shade.js'
|
|
4
|
+
import type { ChildrenList } from '../models/children-list.js'
|
|
5
|
+
import { createComponent } from '../shade-component.js'
|
|
6
|
+
|
|
7
|
+
export type LinkToRouteProps<T extends {}> = {
|
|
8
|
+
route: Route<T>
|
|
9
|
+
params: T
|
|
10
|
+
} & Omit<JSX.IntrinsicElements['a'], 'href'>
|
|
11
|
+
|
|
12
|
+
export const LinkToRoute: <T extends {}>(props: LinkToRouteProps<T>, children?: ChildrenList) => JSX.Element = Shade({
|
|
13
|
+
shadowDomName: 'link-to-route',
|
|
14
|
+
elementBase: HTMLAnchorElement,
|
|
15
|
+
elementBaseName: 'a',
|
|
16
|
+
render: ({ props, element, children }) => {
|
|
17
|
+
const { route, params } = props
|
|
18
|
+
|
|
19
|
+
const url = compile(route.url)(params)
|
|
20
|
+
element.setAttribute('href', url)
|
|
21
|
+
return <>{children}</>
|
|
22
|
+
},
|
|
23
|
+
})
|
package/src/index.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import type { Injector } from '@furystack/inject'
|
|
2
2
|
import type { ChildrenList } from './children-list.js'
|
|
3
3
|
import type { Disposable, ObservableValue } from '@furystack/utils'
|
|
4
|
+
import type { PartialElement } from './partial-element.js'
|
|
4
5
|
|
|
5
|
-
export type RenderOptions<TProps> = {
|
|
6
|
-
readonly props: TProps
|
|
6
|
+
export type RenderOptions<TProps, TElementBase extends HTMLElement = HTMLElement> = {
|
|
7
|
+
readonly props: TProps & PartialElement<TElementBase>
|
|
7
8
|
renderCount: number
|
|
8
9
|
injector: Injector
|
|
9
10
|
children?: ChildrenList
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ObservableValue, using } from '@furystack/utils'
|
|
2
2
|
import { ResourceManager } from './resource-manager.js'
|
|
3
|
-
import { describe, it, expect } from 'vitest'
|
|
3
|
+
import { describe, it, expect, vi } from 'vitest'
|
|
4
4
|
describe('ResourceManager', () => {
|
|
5
5
|
it('Should return an observable from cache', () => {
|
|
6
6
|
using(new ResourceManager(), (rm) => {
|
|
@@ -20,15 +20,16 @@ describe('ResourceManager', () => {
|
|
|
20
20
|
|
|
21
21
|
it('Should return a disposable from cache', () => {
|
|
22
22
|
using(new ResourceManager(), (rm) => {
|
|
23
|
-
const
|
|
23
|
+
const factory = vi.fn(() => ({
|
|
24
24
|
dispose: () => {
|
|
25
25
|
/** ignore */
|
|
26
26
|
},
|
|
27
|
-
}
|
|
28
|
-
const d1 = rm.useDisposable('test',
|
|
29
|
-
const d2 = rm.useDisposable('test',
|
|
27
|
+
}))
|
|
28
|
+
const d1 = rm.useDisposable('test', factory)
|
|
29
|
+
const d2 = rm.useDisposable('test', factory)
|
|
30
30
|
|
|
31
31
|
expect(d1).toBe(d2)
|
|
32
|
+
expect(factory).toHaveBeenCalledTimes(1)
|
|
32
33
|
})
|
|
33
34
|
})
|
|
34
35
|
})
|
|
@@ -9,10 +9,13 @@ export class ResourceManager {
|
|
|
9
9
|
private readonly disposables = new Map<string, Disposable>()
|
|
10
10
|
|
|
11
11
|
public useDisposable<T extends Disposable>(key: string, factory: () => T): T {
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
const existing = this.disposables.get(key)
|
|
13
|
+
if (!existing) {
|
|
14
|
+
const created = factory()
|
|
15
|
+
this.disposables.set(key, created)
|
|
16
|
+
return created
|
|
14
17
|
}
|
|
15
|
-
return
|
|
18
|
+
return existing as T
|
|
16
19
|
}
|
|
17
20
|
|
|
18
21
|
public readonly observers = new Map<string, ValueObserver<any>>()
|
package/src/shade-component.ts
CHANGED
|
@@ -50,7 +50,13 @@ export const attachDataAttributes = (el: HTMLElement, props: any) => {
|
|
|
50
50
|
* @param props The Props to attach
|
|
51
51
|
*/
|
|
52
52
|
export const attachProps = (el: HTMLElement, props: any) => {
|
|
53
|
-
|
|
53
|
+
if (!props) {
|
|
54
|
+
return
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
const { style, ...rest } = props
|
|
58
|
+
|
|
59
|
+
Object.assign(el, rest)
|
|
54
60
|
|
|
55
61
|
if (props && (props as any).style) {
|
|
56
62
|
attachStyles(el, props)
|
package/src/shade.ts
CHANGED
|
@@ -2,11 +2,12 @@ import type { Disposable } from '@furystack/utils'
|
|
|
2
2
|
import { ObservableValue } from '@furystack/utils'
|
|
3
3
|
import type { Constructable } from '@furystack/inject'
|
|
4
4
|
import { Injector } from '@furystack/inject'
|
|
5
|
-
import type { ChildrenList, RenderOptions } from './models/index.js'
|
|
5
|
+
import type { ChildrenList, PartialElement, RenderOptions } from './models/index.js'
|
|
6
6
|
import { ResourceManager } from './services/resource-manager.js'
|
|
7
7
|
import { LocationService } from './services/location-service.js'
|
|
8
|
+
import { attachProps, attachStyles } from './shade-component.js'
|
|
8
9
|
|
|
9
|
-
export type ShadeOptions<TProps> = {
|
|
10
|
+
export type ShadeOptions<TProps, TElementBase extends HTMLElement> = {
|
|
10
11
|
/**
|
|
11
12
|
* Explicit shadow dom name. Will fall back to 'shade-{guid}' if not provided
|
|
12
13
|
*/
|
|
@@ -15,29 +16,29 @@ export type ShadeOptions<TProps> = {
|
|
|
15
16
|
/**
|
|
16
17
|
* Render hook, this method will be executed on each and every render.
|
|
17
18
|
*/
|
|
18
|
-
render: (options: RenderOptions<TProps>) => JSX.Element | string | null
|
|
19
|
+
render: (options: RenderOptions<TProps, TElementBase>) => JSX.Element | string | null
|
|
19
20
|
|
|
20
21
|
/**
|
|
21
22
|
* Construct hook. Will be executed once when the element has been constructed and initialized
|
|
22
23
|
*/
|
|
23
24
|
constructed?: (
|
|
24
|
-
options: RenderOptions<TProps>,
|
|
25
|
+
options: RenderOptions<TProps, TElementBase>,
|
|
25
26
|
) => void | undefined | (() => void) | Promise<void | undefined | (() => void)>
|
|
26
27
|
|
|
27
28
|
/**
|
|
28
29
|
* Will be executed when the element is attached to the DOM.
|
|
29
30
|
*/
|
|
30
|
-
onAttach?: (options: RenderOptions<TProps>) => void
|
|
31
|
+
onAttach?: (options: RenderOptions<TProps, TElementBase>) => void
|
|
31
32
|
|
|
32
33
|
/**
|
|
33
34
|
* Will be executed when the element is detached from the DOM.
|
|
34
35
|
*/
|
|
35
|
-
onDetach?: (options: RenderOptions<TProps>) => void
|
|
36
|
+
onDetach?: (options: RenderOptions<TProps, TElementBase>) => void
|
|
36
37
|
|
|
37
38
|
/**
|
|
38
39
|
* A factory method that creates a list of disposable resources that will be disposed when the element is detached.
|
|
39
40
|
*/
|
|
40
|
-
resources?: (options: RenderOptions<TProps>) => Disposable[]
|
|
41
|
+
resources?: (options: RenderOptions<TProps, TElementBase>) => Disposable[]
|
|
41
42
|
|
|
42
43
|
/**
|
|
43
44
|
* Name of the HTML Element's base class. Needs to be defined if the elementBase is set. E.g.: 'div', 'button', 'input'
|
|
@@ -47,7 +48,12 @@ export type ShadeOptions<TProps> = {
|
|
|
47
48
|
/**
|
|
48
49
|
* Base class for the custom element. Defaults to HTMLElement. E.g. HTMLButtonElement
|
|
49
50
|
*/
|
|
50
|
-
elementBase?: Constructable<
|
|
51
|
+
elementBase?: Constructable<TElementBase>
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* A default style that will be applied to the element. Can be overridden by external styles.
|
|
55
|
+
*/
|
|
56
|
+
style?: Partial<CSSStyleDeclaration>
|
|
51
57
|
}
|
|
52
58
|
|
|
53
59
|
/**
|
|
@@ -55,7 +61,9 @@ export type ShadeOptions<TProps> = {
|
|
|
55
61
|
* @param o for component creation
|
|
56
62
|
* @returns the JSX element
|
|
57
63
|
*/
|
|
58
|
-
export const Shade = <TProps
|
|
64
|
+
export const Shade = <TProps, TElementBase extends HTMLElement = HTMLElement>(
|
|
65
|
+
o: ShadeOptions<TProps, TElementBase>,
|
|
66
|
+
) => {
|
|
59
67
|
// register shadow-dom element
|
|
60
68
|
const customElementName = o.shadowDomName
|
|
61
69
|
|
|
@@ -65,7 +73,7 @@ export const Shade = <TProps>(o: ShadeOptions<TProps>) => {
|
|
|
65
73
|
|
|
66
74
|
customElements.define(
|
|
67
75
|
customElementName,
|
|
68
|
-
class extends ElementBase implements JSX.Element {
|
|
76
|
+
class extends (ElementBase as Constructable<HTMLElement>) implements JSX.Element {
|
|
69
77
|
private _renderCount = 0
|
|
70
78
|
|
|
71
79
|
/**
|
|
@@ -91,7 +99,7 @@ export const Shade = <TProps>(o: ShadeOptions<TProps>) => {
|
|
|
91
99
|
/**
|
|
92
100
|
* Will be triggered when updating the external props object
|
|
93
101
|
*/
|
|
94
|
-
public props!: TProps & { children?: JSX.Element[] }
|
|
102
|
+
public props!: TProps & { children?: JSX.Element[] } & PartialElement<TElementBase>
|
|
95
103
|
|
|
96
104
|
/**
|
|
97
105
|
* Will be updated when on children change
|
|
@@ -102,7 +110,7 @@ export const Shade = <TProps>(o: ShadeOptions<TProps>) => {
|
|
|
102
110
|
* @param options Options for rendering the component
|
|
103
111
|
* @returns the JSX element
|
|
104
112
|
*/
|
|
105
|
-
public render = (options: RenderOptions<TProps>) => {
|
|
113
|
+
public render = (options: RenderOptions<TProps, TElementBase>) => {
|
|
106
114
|
this._renderCount++
|
|
107
115
|
return o.render(options)
|
|
108
116
|
}
|
|
@@ -110,8 +118,8 @@ export const Shade = <TProps>(o: ShadeOptions<TProps>) => {
|
|
|
110
118
|
/**
|
|
111
119
|
* @returns values for the current render options
|
|
112
120
|
*/
|
|
113
|
-
private getRenderOptions = (): RenderOptions<TProps> => {
|
|
114
|
-
const renderOptions: RenderOptions<TProps> = {
|
|
121
|
+
private getRenderOptions = (): RenderOptions<TProps, TElementBase> => {
|
|
122
|
+
const renderOptions: RenderOptions<TProps, TElementBase> = {
|
|
115
123
|
props: this.props,
|
|
116
124
|
injector: this.injector,
|
|
117
125
|
children: this.shadeChildren,
|
|
@@ -186,7 +194,7 @@ export const Shade = <TProps>(o: ShadeOptions<TProps>) => {
|
|
|
186
194
|
useDisposable: this.resourceManager.useDisposable.bind(this.resourceManager),
|
|
187
195
|
}
|
|
188
196
|
|
|
189
|
-
return renderOptions as RenderOptions<TProps>
|
|
197
|
+
return renderOptions as RenderOptions<TProps, TElementBase>
|
|
190
198
|
}
|
|
191
199
|
|
|
192
200
|
/**
|
|
@@ -268,14 +276,18 @@ export const Shade = <TProps>(o: ShadeOptions<TProps>) => {
|
|
|
268
276
|
throw Error(`A custom shade with shadow DOM name '${o.shadowDomName}' has already been registered!`)
|
|
269
277
|
}
|
|
270
278
|
|
|
271
|
-
return (props: TProps
|
|
279
|
+
return (props: TProps & PartialElement<TElementBase>, children?: ChildrenList) => {
|
|
272
280
|
const ElementType = customElements.get(customElementName)
|
|
273
281
|
const el = new (ElementType as CustomElementConstructor)({
|
|
274
|
-
...(props as TProps & ElementCreationOptions),
|
|
282
|
+
...(props as TProps & ElementCreationOptions & PartialElement<TElementBase>),
|
|
275
283
|
}) as JSX.Element<TProps>
|
|
276
284
|
|
|
277
|
-
el.props = props || ({} as TProps)
|
|
285
|
+
el.props = props || ({} as TProps & PartialElement<TElementBase>)
|
|
278
286
|
el.shadeChildren = children
|
|
287
|
+
|
|
288
|
+
attachStyles(el, { style: o.style })
|
|
289
|
+
attachProps(el, props)
|
|
290
|
+
|
|
279
291
|
return el as JSX.Element
|
|
280
292
|
}
|
|
281
293
|
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { PartialElement } from './models/partial-element.js'
|
|
2
|
+
import { createComponent } from './shade-component.js'
|
|
3
|
+
import type { ChildrenList } from './models/children-list.js'
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Creates a shortcut for a specific custom Shade element with additional styles
|
|
7
|
+
* @param element The element instance
|
|
8
|
+
* @param styles The additional styles to add
|
|
9
|
+
* @returns The updated element
|
|
10
|
+
*/
|
|
11
|
+
export const styledElement = <TElement extends keyof JSX.IntrinsicElements>(
|
|
12
|
+
element: TElement,
|
|
13
|
+
styles: Partial<CSSStyleDeclaration>,
|
|
14
|
+
): ((props: PartialElement<JSX.IntrinsicElements[TElement]>, childrenList: ChildrenList) => JSX.Element) => {
|
|
15
|
+
return (props: any, childrenList: ChildrenList) => {
|
|
16
|
+
const mergedProps = {
|
|
17
|
+
...props,
|
|
18
|
+
style: {
|
|
19
|
+
...(props?.style || {}),
|
|
20
|
+
...styles,
|
|
21
|
+
},
|
|
22
|
+
}
|
|
23
|
+
return createComponent(element, mergedProps, ...childrenList) as JSX.Element
|
|
24
|
+
}
|
|
25
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { ChildrenList } from './models/children-list.js'
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Creates a shortcut for a specific custom Shade element with additional styles
|
|
5
|
+
* @param element The element instance
|
|
6
|
+
* @param styles The additional styles to add
|
|
7
|
+
* @returns The updated element
|
|
8
|
+
*/
|
|
9
|
+
export const styledShade = <T extends (props: any, children?: ChildrenList) => JSX.Element>(
|
|
10
|
+
element: T,
|
|
11
|
+
styles: Partial<CSSStyleDeclaration>,
|
|
12
|
+
) => {
|
|
13
|
+
return ((props: any, childrenList?: ChildrenList) => {
|
|
14
|
+
const mergedProps = {
|
|
15
|
+
...props,
|
|
16
|
+
style: {
|
|
17
|
+
...((props as any)?.style || {}),
|
|
18
|
+
...styles,
|
|
19
|
+
},
|
|
20
|
+
}
|
|
21
|
+
return element(mergedProps, childrenList)
|
|
22
|
+
}) as T
|
|
23
|
+
}
|