stagnate 1.1.0 → 1.1.2

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/Component.d.ts CHANGED
@@ -5,7 +5,7 @@
5
5
  * @typeParam PROPS - interface describing jsx props passed to this component
6
6
  * @typeParam ROOT - type of the html root element
7
7
  */
8
- export declare class Component<REFS = {}, PROPS = undefined, ROOT extends SVGElement | HTMLElement = SVGElement | HTMLElement> {
8
+ export declare class Component<REFS = {}, PROPS = undefined, ROOT extends Element = SVGElement | HTMLElement> {
9
9
  /** properties received from jsx (or set via constructor) */
10
10
  readonly props: PROPS extends undefined ? {} : PROPS;
11
11
  private _components;
@@ -16,7 +16,7 @@ export declare class Component<REFS = {}, PROPS = undefined, ROOT extends SVGEle
16
16
  * parent component, only accessible after {@link bind} was called
17
17
  * for self-bound components `this.parent = this`
18
18
  */
19
- protected parent: Component<any, any>;
19
+ protected parent: Component<any, any, Element>;
20
20
  /**
21
21
  * jsx references stored on this component,
22
22
  * the REFS type should be set to a interface describing what references the component will use
@@ -34,7 +34,7 @@ export declare class Component<REFS = {}, PROPS = undefined, ROOT extends SVGEle
34
34
  * component render function, should return the component JSX
35
35
  * if null is returned {@link build} call will fail with an exception
36
36
  */
37
- protected render(): Element | null;
37
+ protected render(): Node | null;
38
38
  /** called in {@link build} before render is called */
39
39
  protected onBeforeRender(): void;
40
40
  /** called in {@link build} after render is called and root is set */
@@ -74,7 +74,7 @@ export declare class Component<REFS = {}, PROPS = undefined, ROOT extends SVGEle
74
74
  * calls {@link render} and sets {@link root}
75
75
  * @returns the created DOM element ({@link root})
76
76
  */
77
- build(): Element;
77
+ build(): Node;
78
78
  /**
79
79
  * add component to a parent component,
80
80
  * attach component if parent component is attached
@@ -82,7 +82,7 @@ export declare class Component<REFS = {}, PROPS = undefined, ROOT extends SVGEle
82
82
  * a component can be self-bound by passing itself as parent (`x.bind(x)`),
83
83
  * self-bound components get automatically attached
84
84
  */
85
- bind(parent: Component<any, any>): void;
85
+ bind(parent: Component<any, any, Element>): void;
86
86
  /**
87
87
  * render the component, add it as a child of {@link parent} and insert it into DOM
88
88
  *
@@ -92,7 +92,7 @@ export declare class Component<REFS = {}, PROPS = undefined, ROOT extends SVGEle
92
92
  * @param target - DOM element to add the component to, if unset or null `parent.root` is used, if a component is passed it's root will be used
93
93
  * @param before - add the element before the given DOM child, a number can be used as a child index, if unset adds the element as the last child
94
94
  */
95
- create(parent: Component<any, any>, target?: Element | Component<any, any> | null, before?: Element | Component<any, any> | number): void;
95
+ create(parent: Component<any, any, Element>, target?: Node | Component<any, any, Element> | null, before?: Node | Component<any, any, Element> | number): void;
96
96
  /**
97
97
  * render the component, add it as a child of {@link parent} and add it to DOM by replacing a existing element or component
98
98
  *
@@ -101,7 +101,7 @@ export declare class Component<REFS = {}, PROPS = undefined, ROOT extends SVGEle
101
101
  * @param parent - parent component
102
102
  * @param target - component or DOM element to replace, if component is passed {@link destroy} will be called on it
103
103
  */
104
- replace(parent: Component<any, any>, target: Element | Component<any, any>): void;
104
+ replace(parent: Component<any, any, Element>, target: Element | Component<any, any, Element>): void;
105
105
  /**
106
106
  * render the component, add it to DOM and self-bound, meant to be used for creating the root component
107
107
  *
@@ -117,5 +117,5 @@ export declare class Component<REFS = {}, PROPS = undefined, ROOT extends SVGEle
117
117
  /** public accessor for {@link root} */
118
118
  get htmlRoot(): ROOT;
119
119
  /** child component list accessor */
120
- get components(): Readonly<Component<any, any, any>[]>;
120
+ get components(): Readonly<Component<any, any, Element>[]>;
121
121
  }
package/Component.js CHANGED
@@ -23,13 +23,13 @@ export class Component {
23
23
  this.onAttach();
24
24
  }
25
25
  detach() {
26
+ this.onDetach();
26
27
  this._components.forEach(x => x.detach());
27
28
  this._components = [];
28
29
  this._attached = false;
29
30
  this.refs = {};
30
31
  this.parent = null;
31
32
  this.root = null;
32
- this.onDetach();
33
33
  }
34
34
  /**
35
35
  * component render function, should return the component JSX
@@ -140,7 +140,7 @@ export class Component {
140
140
  target = target.root;
141
141
  }
142
142
  if (typeof before === "number") {
143
- before = before < target.children.length ? target.children[Math.max(0, before)] : undefined;
143
+ before = before < target.childNodes.length ? target.childNodes[Math.max(0, before)] : undefined;
144
144
  }
145
145
  else if (before instanceof Component) {
146
146
  before = before.root;
package/Component.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Component.js","sourceRoot":"","sources":["../src/Component.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Component.js","sourceRoot":"","sources":["../src/Component.ts"],"names":[],"mappings":"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"}
package/jsx-runtime.d.ts CHANGED
@@ -4,6 +4,6 @@ export declare function createElement(type: any, props: any, ...children: any[])
4
4
  /** JSX fragment component, <> can be used as an alias */
5
5
  export declare function Fragment(props: {
6
6
  children: StagnateNode;
7
- }): JSX.Element;
7
+ }): DocumentFragment;
8
8
  export { jsx as jsxs };
9
9
  export type { JSX };
package/jsx-runtime.js CHANGED
@@ -1,34 +1,48 @@
1
1
  import { Component } from "./Component";
2
- function _collect(data, accumulator) {
2
+ function collectArray(data, accumulator) {
3
3
  for (let i = 0; i < data.length; i += 1) {
4
4
  const value = data[i];
5
5
  if (Array.isArray(value)) {
6
- _collect(value, accumulator);
6
+ collectArray(value, accumulator);
7
7
  }
8
8
  else if (value) {
9
9
  accumulator.push(value);
10
10
  }
11
11
  }
12
12
  }
13
- function collect(data) {
13
+ function collectString(data, delimiter) {
14
14
  if (Array.isArray(data)) {
15
15
  const accumulator = [];
16
- _collect(data, accumulator);
17
- return accumulator;
16
+ collectArray(data, accumulator);
17
+ return accumulator.join(delimiter);
18
+ }
19
+ return data || "";
20
+ }
21
+ function collectNodes(data, parent) {
22
+ if (Array.isArray(data)) {
23
+ for (let i = 0; i < data.length; i += 1) {
24
+ const value = data[i];
25
+ if (Array.isArray(value)) {
26
+ collectNodes(value, parent);
27
+ }
28
+ else if (value) {
29
+ parent.appendChild(value instanceof Node ? value : document.createTextNode(value));
30
+ }
31
+ }
32
+ }
33
+ else if (data) {
34
+ parent.appendChild(data instanceof Node ? data : document.createTextNode(data));
18
35
  }
19
- return data ? [data] : [];
20
36
  }
21
37
  export function jsx(type, props) {
22
38
  if (type == "text") {
23
- const children = collect(props.children);
24
- const element = document.createTextNode(children.length ? children.join("") : (props.value || ""));
39
+ const element = document.createTextNode(collectString(props.children, ""));
25
40
  if (props.ref) {
26
41
  props.ref(element);
27
42
  }
28
43
  return element;
29
44
  }
30
45
  else if (typeof type == "string") {
31
- const children = collect(props.children);
32
46
  let element;
33
47
  let isSvg = false;
34
48
  if (type.startsWith("svg")) {
@@ -40,8 +54,11 @@ export function jsx(type, props) {
40
54
  }
41
55
  for (const key in props) {
42
56
  let value = props[key];
43
- if (key == "children" || value === undefined) {
44
- continue;
57
+ if (value === undefined) {
58
+ // no-op
59
+ }
60
+ else if (key == "children") {
61
+ collectNodes(value, element);
45
62
  }
46
63
  else if (key.startsWith("on")) {
47
64
  element.addEventListener(key.slice(2).toLowerCase(), value);
@@ -53,9 +70,7 @@ export function jsx(type, props) {
53
70
  value(element);
54
71
  }
55
72
  else if (key == "class") {
56
- if (Array.isArray(value)) {
57
- value = collect(value).join(" ");
58
- }
73
+ value = collectString(value, " ");
59
74
  if (value) {
60
75
  element.setAttribute("class", value);
61
76
  }
@@ -79,7 +94,6 @@ export function jsx(type, props) {
79
94
  }
80
95
  }
81
96
  }
82
- children.forEach(x => element.appendChild(x instanceof Node ? x : document.createTextNode(x.toString())));
83
97
  return element;
84
98
  }
85
99
  else if (type.prototype instanceof Component) {
@@ -104,7 +118,9 @@ export function createElement(type, props, ...children) {
104
118
  }
105
119
  /** JSX fragment component, <> can be used as an alias */
106
120
  export function Fragment(props) {
107
- return props.children;
121
+ const fragment = document.createDocumentFragment();
122
+ collectNodes(props.children, fragment);
123
+ return fragment;
108
124
  }
109
125
  export { jsx as jsxs };
110
126
  //# sourceMappingURL=jsx-runtime.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"jsx-runtime.js","sourceRoot":"","sources":["../src/jsx-runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"jsx-runtime.js","sourceRoot":"","sources":["../src/jsx-runtime.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "stagnate",
3
- "version": "1.1.0",
3
+ "version": "1.1.2",
4
4
  "description": "non-reactive react",
5
5
  "main": "index.js",
6
6
  "repository": {
package/types.d.ts CHANGED
@@ -135,7 +135,6 @@ export interface HTMLElementAttributes<T> extends GlobalAttributes<T> {
135
135
  children?: CollectableValue<JSX.Element | string>;
136
136
  }
137
137
  export interface TextElementAttributes {
138
- value?: string;
139
138
  ref?: (value: Text) => void;
140
139
  children?: CollectableValue<string>;
141
140
  }
@@ -155,7 +154,7 @@ export interface ImageElementAttributes extends GlobalAttributes<HTMLImageElemen
155
154
  referrerPolicy?: RefererPolicy;
156
155
  elementTiming?: string;
157
156
  }
158
- export interface AnchorElementAttributes extends GlobalAttributes<HTMLAnchorElement> {
157
+ export interface AnchorElementAttributes extends HTMLElementAttributes<HTMLAnchorElement> {
159
158
  href?: string;
160
159
  target?: LinkTarget;
161
160
  rel?: string;
@@ -164,7 +163,6 @@ export interface AnchorElementAttributes extends GlobalAttributes<HTMLAnchorElem
164
163
  download?: boolean | string;
165
164
  ping?: string;
166
165
  type?: string;
167
- children?: CollectableValue<JSX.Element | string>;
168
166
  }
169
167
  export interface InputElementAttributes extends GlobalAttributes<HTMLInputElement>, FormSubmitterAttributes {
170
168
  type?: ("button" | "checkbox" | "color" | "date" | "datetime-local" | "email" | "file" | "hidden" | "image" | "month" | "number" | "password" | "radio" | "range" | "reset" | "search" | "submit" | "tel" | "text" | "time" | "url" | "week");
@@ -212,6 +210,7 @@ export interface TextAreaElementAttributes extends GlobalAttributes<HTMLTextArea
212
210
  wrap?: "hard" | "soft" | "off";
213
211
  dirName?: string;
214
212
  form?: string;
213
+ children?: CollectableValue<string>;
215
214
  }
216
215
  export interface SelectElementAttributes extends GlobalAttributes<HTMLSelectElement> {
217
216
  autoFocus?: boolean;
@@ -223,7 +222,7 @@ export interface SelectElementAttributes extends GlobalAttributes<HTMLSelectElem
223
222
  size?: number;
224
223
  autocomplete?: string;
225
224
  value?: string | number | string[];
226
- children?: CollectableValue<JSX.Element | string>;
225
+ children?: CollectableValue<JSX.Element>;
227
226
  }
228
227
  export interface OptionElementAttributes extends GlobalAttributes<HTMLOptionElement> {
229
228
  disabled?: boolean;
@@ -235,12 +234,13 @@ export interface OptionElementAttributes extends GlobalAttributes<HTMLOptionElem
235
234
  export interface OptGroupElementAttributes extends GlobalAttributes<HTMLOptGroupElement> {
236
235
  disabled?: boolean;
237
236
  label?: string;
237
+ children?: CollectableValue<JSX.Element>;
238
238
  }
239
- export interface LabelElementAttributes extends GlobalAttributes<HTMLLabelElement> {
239
+ export interface LabelElementAttributes extends HTMLElementAttributes<HTMLLabelElement> {
240
240
  for?: string;
241
241
  form?: string;
242
242
  }
243
- export interface ButtonElementAttributes extends GlobalAttributes<HTMLButtonElement>, FormSubmitterAttributes {
243
+ export interface ButtonElementAttributes extends HTMLElementAttributes<HTMLButtonElement>, FormSubmitterAttributes {
244
244
  autoFocus?: boolean;
245
245
  disabled?: boolean;
246
246
  name?: string;
@@ -249,22 +249,22 @@ export interface ButtonElementAttributes extends GlobalAttributes<HTMLButtonElem
249
249
  popoverTarget?: string;
250
250
  popoverTargetAction?: "toggle" | "show" | "hide";
251
251
  }
252
- export interface FieldsetElementAttributes extends GlobalAttributes<HTMLFieldSetElement> {
252
+ export interface FieldsetElementAttributes extends HTMLElementAttributes<HTMLFieldSetElement> {
253
253
  disabled?: boolean;
254
254
  form?: string;
255
255
  name?: string;
256
256
  }
257
- export interface OutputElementAttributes extends GlobalAttributes<HTMLOutputElement> {
257
+ export interface OutputElementAttributes extends HTMLElementAttributes<HTMLOutputElement> {
258
258
  for?: string;
259
259
  form?: string;
260
260
  name?: string;
261
261
  value?: string;
262
262
  }
263
- export interface ProgressElementAttributes extends GlobalAttributes<HTMLProgressElement> {
263
+ export interface ProgressElementAttributes extends HTMLElementAttributes<HTMLProgressElement> {
264
264
  max?: number;
265
265
  value?: number;
266
266
  }
267
- export interface MeterElementAttributes extends GlobalAttributes<HTMLMeterElement> {
267
+ export interface MeterElementAttributes extends HTMLElementAttributes<HTMLMeterElement> {
268
268
  value?: number;
269
269
  min?: number;
270
270
  max?: number;
@@ -273,7 +273,7 @@ export interface MeterElementAttributes extends GlobalAttributes<HTMLMeterElemen
273
273
  optimum?: number;
274
274
  form?: string;
275
275
  }
276
- export interface FormElementAttributes extends GlobalAttributes<HTMLFormElement> {
276
+ export interface FormElementAttributes extends HTMLElementAttributes<HTMLFormElement> {
277
277
  acceptCharset?: string;
278
278
  action?: string;
279
279
  autocomplete?: "on" | "off" | string;
@@ -283,7 +283,6 @@ export interface FormElementAttributes extends GlobalAttributes<HTMLFormElement>
283
283
  noValidate?: boolean;
284
284
  rel?: string;
285
285
  target?: LinkTarget;
286
- children?: CollectableValue<JSX.Element | string>;
287
286
  }
288
287
  export interface IframeElementAttributes extends GlobalAttributes<HTMLIFrameElement> {
289
288
  src?: string;
@@ -296,15 +295,15 @@ export interface IframeElementAttributes extends GlobalAttributes<HTMLIFrameElem
296
295
  loading?: "eager" | "lazy";
297
296
  width?: number | string;
298
297
  height?: number | string;
298
+ children?: CollectableValue<string>;
299
299
  }
300
- export interface SvgElementAttributes extends GlobalAttributes<SVGElement> {
300
+ export interface SvgElementAttributes extends HTMLElementAttributes<SVGElement> {
301
301
  viewBox?: string;
302
302
  fill?: string;
303
303
  width?: number | string;
304
304
  height?: number | string;
305
- children?: CollectableValue<JSX.Element | string>;
306
305
  }
307
- export interface AudioElementAttributes extends GlobalAttributes<HTMLAudioElement> {
306
+ export interface AudioElementAttributes extends HTMLElementAttributes<HTMLAudioElement> {
308
307
  src?: string;
309
308
  autoPlay?: boolean;
310
309
  controls?: boolean;
@@ -314,7 +313,7 @@ export interface AudioElementAttributes extends GlobalAttributes<HTMLAudioElemen
314
313
  crossOrigin?: "anonymous" | "use-credentials";
315
314
  controlsList?: string;
316
315
  }
317
- export interface VideoElementAttributes extends GlobalAttributes<HTMLVideoElement> {
316
+ export interface VideoElementAttributes extends HTMLElementAttributes<HTMLVideoElement> {
318
317
  src?: string;
319
318
  autoPlay?: boolean;
320
319
  controls?: boolean;
@@ -342,11 +341,11 @@ export interface TrackElementAttributes extends GlobalAttributes<HTMLTrackElemen
342
341
  src?: string;
343
342
  srcLang?: string;
344
343
  }
345
- export interface CanvasElementAttributes extends GlobalAttributes<HTMLCanvasElement> {
344
+ export interface CanvasElementAttributes extends HTMLElementAttributes<HTMLCanvasElement> {
346
345
  width?: string | number;
347
346
  height?: string | number;
348
347
  }
349
- export interface MapElementAttributes extends GlobalAttributes<HTMLMapElement> {
348
+ export interface MapElementAttributes extends HTMLElementAttributes<HTMLMapElement> {
350
349
  name?: string;
351
350
  }
352
351
  export interface AreaElementAttributes extends GlobalAttributes<HTMLAreaElement> {
@@ -360,48 +359,48 @@ export interface AreaElementAttributes extends GlobalAttributes<HTMLAreaElement>
360
359
  shape?: "rect" | "circle" | "poly" | "default";
361
360
  target?: LinkTarget;
362
361
  }
363
- export interface ColGroupElementAttributes extends GlobalAttributes<HTMLTableColElement> {
362
+ export interface ColGroupElementAttributes extends HTMLElementAttributes<HTMLTableColElement> {
364
363
  span?: number;
365
364
  }
366
365
  export interface ColElementAttributes extends GlobalAttributes<HTMLTableColElement> {
367
366
  span?: number;
368
367
  }
369
- export interface ThElementAttributes extends GlobalAttributes<HTMLTableCellElement> {
368
+ export interface ThElementAttributes extends HTMLElementAttributes<HTMLTableCellElement> {
370
369
  abbr?: string;
371
370
  colSpan?: number;
372
371
  rowSpan?: number;
373
372
  headers?: string;
374
373
  scope?: "row" | "col" | "rowgroup" | "colgroup" | "auto";
375
374
  }
376
- export interface TdElementAttributes extends GlobalAttributes<HTMLTableCellElement> {
375
+ export interface TdElementAttributes extends HTMLElementAttributes<HTMLTableCellElement> {
377
376
  colSpan?: number;
378
377
  rowSpan?: number;
379
378
  headers?: string;
380
379
  }
381
- export interface OlElementAttributes extends GlobalAttributes<HTMLOListElement> {
380
+ export interface OlElementAttributes extends HTMLElementAttributes<HTMLOListElement> {
382
381
  reversed?: boolean;
383
382
  start?: number;
384
383
  type?: "1" | "a" | "A" | "i" | "I";
385
384
  }
386
- export interface LiElementAttributes extends GlobalAttributes<HTMLLIElement> {
385
+ export interface LiElementAttributes extends HTMLElementAttributes<HTMLLIElement> {
387
386
  value?: number;
388
387
  }
389
- export interface BlockquoteElementAttributes extends GlobalAttributes<HTMLQuoteElement> {
388
+ export interface BlockquoteElementAttributes extends HTMLElementAttributes<HTMLQuoteElement> {
390
389
  cite?: string;
391
390
  }
392
- export interface QElementAttributes extends GlobalAttributes<HTMLQuoteElement> {
391
+ export interface QElementAttributes extends HTMLElementAttributes<HTMLQuoteElement> {
393
392
  cite?: string;
394
393
  }
395
- export interface DataElementAttributes extends GlobalAttributes<HTMLDataElement> {
394
+ export interface DataElementAttributes extends HTMLElementAttributes<HTMLDataElement> {
396
395
  value?: string | number;
397
396
  }
398
- export interface TimeElementAttributes extends GlobalAttributes<HTMLTimeElement> {
397
+ export interface TimeElementAttributes extends HTMLElementAttributes<HTMLTimeElement> {
399
398
  dateTime?: string;
400
399
  }
401
- export interface DetailsElementAttributes extends GlobalAttributes<HTMLDetailsElement> {
400
+ export interface DetailsElementAttributes extends HTMLElementAttributes<HTMLDetailsElement> {
402
401
  open?: boolean;
403
402
  }
404
- export interface DialogElementAttributes extends GlobalAttributes<HTMLDialogElement> {
403
+ export interface DialogElementAttributes extends HTMLElementAttributes<HTMLDialogElement> {
405
404
  open?: boolean;
406
405
  }
407
406
  export interface LinkElementAttributes extends GlobalAttributes<HTMLLinkElement> {
@@ -442,13 +441,15 @@ export interface ScriptElementAttributes extends GlobalAttributes<HTMLScriptElem
442
441
  type?: string;
443
442
  noModule?: boolean;
444
443
  blocking?: "render";
444
+ children?: CollectableValue<string>;
445
445
  }
446
446
  export interface StyleElementAttributes extends GlobalAttributes<HTMLStyleElement> {
447
447
  media?: string;
448
448
  nonce?: string;
449
449
  blocking?: "render";
450
+ children?: CollectableValue<string>;
450
451
  }
451
- export interface ObjectElementAttributes extends GlobalAttributes<HTMLObjectElement> {
452
+ export interface ObjectElementAttributes extends HTMLElementAttributes<HTMLObjectElement> {
452
453
  data?: string;
453
454
  type?: string;
454
455
  name?: string;
@@ -464,13 +465,13 @@ export interface EmbedElementAttributes extends GlobalAttributes<HTMLEmbedElemen
464
465
  width?: number | string;
465
466
  height?: number | string;
466
467
  }
467
- export interface SlotElementAttributes extends GlobalAttributes<HTMLSlotElement> {
468
+ export interface SlotElementAttributes extends HTMLElementAttributes<HTMLSlotElement> {
468
469
  name?: string;
469
470
  }
470
- export interface TableElementAttributes extends GlobalAttributes<HTMLTableElement> {
471
+ export interface TableElementAttributes extends HTMLElementAttributes<HTMLTableElement> {
471
472
  sortable?: boolean;
472
473
  }
473
- export interface InsDelElementAttributes extends GlobalAttributes<HTMLModElement> {
474
+ export interface InsDelElementAttributes extends HTMLElementAttributes<HTMLModElement> {
474
475
  cite?: string;
475
476
  dateTime?: string;
476
477
  }
@@ -592,10 +593,10 @@ export declare namespace JSX {
592
593
  interface ElementChildrenAttribute {
593
594
  children: {};
594
595
  }
595
- interface Element extends globalThis.Element {
596
+ interface Element extends Node {
596
597
  }
597
598
  interface ElementClass {
598
- htmlRoot: Element | null;
599
+ htmlRoot: globalThis.Element | null;
599
600
  }
600
601
  interface IntrinsicClassAttributes<T> {
601
602
  ref?: (value: T) => void;