@esportsplus/template 0.19.1 → 0.19.3

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.
@@ -1,7 +1,8 @@
1
1
  import { ReactiveArray } from '@esportsplus/reactivity';
2
- import { RenderableReactive, RenderableValue } from '../types.js';
2
+ import { Attributes, Renderable, RenderableReactive } from '../types.js';
3
+ type Values<T = unknown> = Attributes | Attributes[] | Readonly<Attributes> | Readonly<Attributes[]> | Renderable<T>;
3
4
  declare const html: {
4
- (literals: TemplateStringsArray, ...values: (RenderableValue | RenderableValue[])[]): Node;
5
- reactive<T>(array: ReactiveArray<T[]>, template: RenderableReactive["template"]): RenderableReactive;
5
+ (literals: TemplateStringsArray, ...values: (Values | Values[])[]): Node;
6
+ reactive<T>(array: ReactiveArray<T>, template: RenderableReactive<T>["template"]): RenderableReactive<T>;
6
7
  };
7
8
  export default html;
package/build/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
1
  export { default as html } from './html/index.js';
2
2
  export { default as render } from './render.js';
3
3
  export { default as svg } from './svg.js';
4
- export type { Attributes, Element, Renderable, RenderableValue } from './types.js';
4
+ export type { Attributes, Element, Renderable } from './types.js';
@@ -1,3 +1,3 @@
1
1
  import { RenderableReactive } from '../types.js';
2
- declare const _default: (anchor: Element, renderable: RenderableReactive) => Node;
2
+ declare const _default: <T>(anchor: Element, renderable: RenderableReactive<T>) => Node;
3
3
  export default _default;
package/build/types.d.ts CHANGED
@@ -17,17 +17,15 @@ type Attributes = {
17
17
  ondisconnect?: (element: Element) => void;
18
18
  onrender?: (element: Element) => void;
19
19
  } & Record<PropertyKey, unknown>;
20
- type Effect<T> = () => EffectResponse<T>;
21
- type EffectResponse<T> = T extends [] ? (Primitive | Renderable)[] : Primitive | Renderable;
20
+ type Effect<T> = () => T extends [] ? Renderable[] : Renderable;
22
21
  type Element = HTMLElement & Attributes & Record<PropertyKey, unknown>;
23
22
  type Primitive = bigint | boolean | null | number | string | undefined;
24
- type Renderable = DocumentFragment | Node | NodeList | Primitive | RenderableReactive | Renderable[];
25
- type RenderableReactive = Readonly<{
23
+ type Renderable<T = unknown> = DocumentFragment | Effect<T> | Node | NodeList | Primitive | RenderableReactive<T> | Renderable[];
24
+ type RenderableReactive<T> = Readonly<{
26
25
  [RENDERABLE]: typeof RENDERABLE_HTML_REACTIVE_ARRAY;
27
- array: ReactiveArray<unknown[]>;
28
- template: (this: ReactiveArray<unknown[]>, ...args: Parameters<Parameters<ReactiveArray<unknown[]>['map']>[0]>) => ReturnType<typeof html>;
26
+ array: ReactiveArray<T>;
27
+ template: (this: ReactiveArray<T>, ...args: Parameters<Parameters<ReactiveArray<T>['map']>[0]>) => ReturnType<typeof html>;
29
28
  }>;
30
- type RenderableValue<T = unknown> = Attributes | Readonly<Attributes> | Readonly<Attributes[]> | Effect<T> | Primitive | RenderableReactive;
31
29
  type SlotGroup = {
32
30
  head: Element;
33
31
  tail: Element;
@@ -42,4 +40,4 @@ type Template = {
42
40
  slot: number;
43
41
  }[] | null;
44
42
  };
45
- export type { Attributes, Effect, Element, Renderable, RenderableReactive, RenderableValue, SlotGroup, Template };
43
+ export type { Attributes, Effect, Element, Renderable, RenderableReactive, SlotGroup, Template };
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "author": "ICJR",
3
3
  "dependencies": {
4
4
  "@esportsplus/queue": "^0.1.0",
5
- "@esportsplus/reactivity": "^0.16.1",
5
+ "@esportsplus/reactivity": "^0.16.6",
6
6
  "@esportsplus/tasks": "^0.2.1",
7
7
  "@esportsplus/utilities": "^0.22.1"
8
8
  },
@@ -14,7 +14,7 @@
14
14
  "private": false,
15
15
  "type": "module",
16
16
  "types": "./build/index.d.ts",
17
- "version": "0.19.1",
17
+ "version": "0.19.3",
18
18
  "scripts": {
19
19
  "build": "tsc && tsc-alias",
20
20
  "-": "-"
package/src/html/index.ts CHANGED
@@ -1,11 +1,14 @@
1
1
  import { ReactiveArray } from '@esportsplus/reactivity';
2
2
  import { RENDERABLE, RENDERABLE_HTML_REACTIVE_ARRAY } from '~/constants';
3
- import { RenderableReactive, RenderableValue } from '~/types';
3
+ import { Attributes, Renderable, RenderableReactive } from '~/types';
4
4
  import { cloneNode } from '~/utilities/node';
5
5
  import parser from './parser';
6
6
 
7
7
 
8
- const html = (literals: TemplateStringsArray, ...values: (RenderableValue | RenderableValue[])[]) => {
8
+ type Values<T = unknown> = Attributes | Attributes[] | Readonly<Attributes> | Readonly<Attributes[]> | Renderable<T>;
9
+
10
+
11
+ const html = (literals: TemplateStringsArray, ...values: (Values | Values[])[]) => {
9
12
  let { fragment, slots } = parser.parse(literals),
10
13
  clone = cloneNode.call(fragment, true);
11
14
 
@@ -62,7 +65,7 @@ const html = (literals: TemplateStringsArray, ...values: (RenderableValue | Rend
62
65
  return clone;
63
66
  };
64
67
 
65
- html.reactive = <T>(array: ReactiveArray<T[]>, template: RenderableReactive['template']): RenderableReactive => {
68
+ html.reactive = <T>(array: ReactiveArray<T>, template: RenderableReactive<T>['template']): RenderableReactive<T> => {
66
69
  return {
67
70
  [RENDERABLE]: RENDERABLE_HTML_REACTIVE_ARRAY,
68
71
  array,
package/src/index.ts CHANGED
@@ -1,4 +1,4 @@
1
1
  export { default as html } from './html';
2
2
  export { default as render } from './render';
3
3
  export { default as svg } from './svg';
4
- export type { Attributes, Element, Renderable, RenderableValue } from './types';
4
+ export type { Attributes, Element, Renderable } from './types';
@@ -7,17 +7,17 @@ import { ondisconnect, remove } from './cleanup';
7
7
 
8
8
 
9
9
  class ReactiveArraySlot<T> {
10
- array: ReactiveArray<T[]>;
10
+ array: ReactiveArray<T>;
11
11
  fragment: Node;
12
12
  marker: Element;
13
13
  nodes: SlotGroup[] = [];
14
14
  template: (
15
- this: ReactiveArray<T[]>,
16
- ...args: Parameters< Parameters<ReactiveArray<T[]>['map']>[0] >
15
+ this: ReactiveArray<T>,
16
+ ...args: Parameters< Parameters<ReactiveArray<T>['map']>[0] >
17
17
  ) => SlotGroup;
18
18
 
19
19
 
20
- constructor(anchor: Element, array: ReactiveArray<T[]>, template: RenderableReactive['template']) {
20
+ constructor(anchor: Element, array: ReactiveArray<T>, template: RenderableReactive<T>['template']) {
21
21
  let fragment = this.fragment = cloneNode.call(EMPTY_FRAGMENT);
22
22
 
23
23
  this.array = array;
@@ -163,7 +163,7 @@ class ReactiveArraySlot<T> {
163
163
  }
164
164
 
165
165
 
166
- export default (anchor: Element, renderable: RenderableReactive) => {
166
+ export default <T>(anchor: Element, renderable: RenderableReactive<T>) => {
167
167
  let { array, template } = renderable,
168
168
  slot = new ReactiveArraySlot(anchor, array, template);
169
169
 
@@ -21,7 +21,7 @@ export default function render(anchor: Element, input: unknown): Node {
21
21
  }
22
22
 
23
23
  if (RENDERABLE in input) {
24
- return reactive(anchor, input as RenderableReactive);
24
+ return reactive(anchor, input as RenderableReactive<unknown>);
25
25
  }
26
26
 
27
27
  if (isArray(input)) {
package/src/types.ts CHANGED
@@ -18,14 +18,10 @@ type Attributes = {
18
18
  [key: `data-${string}`]: string | undefined;
19
19
  onconnect?: (element: Element) => void;
20
20
  ondisconnect?: (element: Element) => void;
21
- // Rendered in fragment
22
- // - Used to retrieve reference to the element
23
21
  onrender?: (element: Element) => void;
24
22
  } & Record<PropertyKey, unknown>;
25
23
 
26
- type Effect<T> = () => EffectResponse<T>;
27
-
28
- type EffectResponse<T> = T extends [] ? (Primitive | Renderable)[] : Primitive | Renderable;
24
+ type Effect<T> = () => T extends [] ? Renderable[] : Renderable;
29
25
 
30
26
  type Element = HTMLElement & Attributes & Record<PropertyKey, unknown>;
31
27
 
@@ -33,19 +29,17 @@ type Element = HTMLElement & Attributes & Record<PropertyKey, unknown>;
33
29
  // - Importing from ^ causes 'cannot be named without a reference to...' error
34
30
  type Primitive = bigint | boolean | null | number | string | undefined;
35
31
 
36
- type Renderable = DocumentFragment | Node | NodeList | Primitive | RenderableReactive | Renderable[];
32
+ type Renderable<T = unknown> = DocumentFragment | Effect<T> | Node | NodeList | Primitive | RenderableReactive<T> | Renderable[];
37
33
 
38
- type RenderableReactive = Readonly<{
34
+ type RenderableReactive<T> = Readonly<{
39
35
  [RENDERABLE]: typeof RENDERABLE_HTML_REACTIVE_ARRAY;
40
- array: ReactiveArray<unknown[]>;
36
+ array: ReactiveArray<T>;
41
37
  template: (
42
- this: ReactiveArray<unknown[]>,
43
- ...args: Parameters< Parameters<ReactiveArray<unknown[]>['map']>[0] >
38
+ this: ReactiveArray<T>,
39
+ ...args: Parameters< Parameters<ReactiveArray<T>['map']>[0] >
44
40
  ) => ReturnType<typeof html>;
45
41
  }>;
46
42
 
47
- type RenderableValue<T = unknown> = Attributes | Readonly<Attributes> | Readonly<Attributes[]> | Effect<T> | Primitive | RenderableReactive;
48
-
49
43
  type SlotGroup = {
50
44
  head: Element;
51
45
  tail: Element;
@@ -72,7 +66,7 @@ type Template = {
72
66
  export type {
73
67
  Attributes,
74
68
  Effect, Element,
75
- Renderable, RenderableReactive, RenderableValue,
69
+ Renderable, RenderableReactive,
76
70
  SlotGroup,
77
71
  Template
78
72
  };