@llui/dom 0.0.20 → 0.0.21
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/README.md +16 -14
- package/dist/addressed.d.ts +1 -1
- package/dist/addressed.d.ts.map +1 -1
- package/dist/addressed.js.map +1 -1
- package/dist/binding.d.ts +2 -2
- package/dist/binding.d.ts.map +1 -1
- package/dist/binding.js +2 -2
- package/dist/binding.js.map +1 -1
- package/dist/devtools.d.ts +3 -3
- package/dist/devtools.d.ts.map +1 -1
- package/dist/devtools.js +14 -12
- package/dist/devtools.js.map +1 -1
- package/dist/el-split.js +3 -3
- package/dist/el-split.js.map +1 -1
- package/dist/el-template.js +3 -3
- package/dist/el-template.js.map +1 -1
- package/dist/elements.js +1 -1
- package/dist/elements.js.map +1 -1
- package/dist/hmr.d.ts +1 -1
- package/dist/hmr.d.ts.map +1 -1
- package/dist/hmr.js +6 -6
- package/dist/hmr.js.map +1 -1
- package/dist/index.d.ts +5 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/internal.d.ts +1 -1
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.js +1 -1
- package/dist/internal.js.map +1 -1
- package/dist/lifetime.d.ts +39 -0
- package/dist/lifetime.d.ts.map +1 -0
- package/dist/lifetime.js +250 -0
- package/dist/lifetime.js.map +1 -0
- package/dist/mathml-elements.js +1 -1
- package/dist/mathml-elements.js.map +1 -1
- package/dist/mount.d.ts +11 -9
- package/dist/mount.d.ts.map +1 -1
- package/dist/mount.js +15 -31
- package/dist/mount.js.map +1 -1
- package/dist/primitives/branch.d.ts.map +1 -1
- package/dist/primitives/branch.js +30 -20
- package/dist/primitives/branch.js.map +1 -1
- package/dist/primitives/child.js +12 -12
- package/dist/primitives/child.js.map +1 -1
- package/dist/primitives/context.js +6 -6
- package/dist/primitives/context.js.map +1 -1
- package/dist/primitives/each.d.ts.map +1 -1
- package/dist/primitives/each.js +37 -32
- package/dist/primitives/each.js.map +1 -1
- package/dist/primitives/error-boundary.js +7 -7
- package/dist/primitives/error-boundary.js.map +1 -1
- package/dist/primitives/foreign.js +3 -3
- package/dist/primitives/foreign.js.map +1 -1
- package/dist/primitives/lazy.js +11 -11
- package/dist/primitives/lazy.js.map +1 -1
- package/dist/primitives/on-mount.js +2 -2
- package/dist/primitives/on-mount.js.map +1 -1
- package/dist/primitives/portal.js +4 -4
- package/dist/primitives/portal.js.map +1 -1
- package/dist/primitives/sample.d.ts +18 -0
- package/dist/primitives/sample.d.ts.map +1 -0
- package/dist/primitives/sample.js +22 -0
- package/dist/primitives/sample.js.map +1 -0
- package/dist/primitives/scope.d.ts +25 -0
- package/dist/primitives/scope.d.ts.map +1 -0
- package/dist/primitives/scope.js +36 -0
- package/dist/primitives/scope.js.map +1 -0
- package/dist/primitives/selector.js +4 -4
- package/dist/primitives/selector.js.map +1 -1
- package/dist/primitives/show.d.ts.map +1 -1
- package/dist/primitives/show.js +4 -1
- package/dist/primitives/show.js.map +1 -1
- package/dist/primitives/slice.d.ts.map +1 -1
- package/dist/primitives/slice.js +10 -1
- package/dist/primitives/slice.js.map +1 -1
- package/dist/primitives/text.js +3 -3
- package/dist/primitives/text.js.map +1 -1
- package/dist/primitives/virtual-each.d.ts.map +1 -1
- package/dist/primitives/virtual-each.js +9 -9
- package/dist/primitives/virtual-each.js.map +1 -1
- package/dist/render-context.d.ts +2 -2
- package/dist/render-context.d.ts.map +1 -1
- package/dist/render-context.js.map +1 -1
- package/dist/ssr.d.ts +4 -4
- package/dist/ssr.d.ts.map +1 -1
- package/dist/ssr.js +3 -3
- package/dist/ssr.js.map +1 -1
- package/dist/svg-elements.js +1 -1
- package/dist/svg-elements.js.map +1 -1
- package/dist/tracking/disposer-log.d.ts +4 -4
- package/dist/tracking/disposer-log.d.ts.map +1 -1
- package/dist/tracking/disposer-log.js.map +1 -1
- package/dist/types.d.ts +50 -9
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/update-loop.d.ts +3 -3
- package/dist/update-loop.d.ts.map +1 -1
- package/dist/update-loop.js +12 -8
- package/dist/update-loop.js.map +1 -1
- package/dist/view-helpers.d.ts +9 -1
- package/dist/view-helpers.d.ts.map +1 -1
- package/dist/view-helpers.js +4 -0
- package/dist/view-helpers.js.map +1 -1
- package/package.json +1 -1
package/dist/view-helpers.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Send, ShowOptions, BranchOptions, EachOptions } from './types.js';
|
|
1
|
+
import type { Send, ShowOptions, BranchOptions, EachOptions, ScopeOptions } from './types.js';
|
|
2
2
|
import { type SelectorInstance } from './primitives/selector.js';
|
|
3
3
|
import { type Context } from './primitives/context.js';
|
|
4
4
|
/**
|
|
@@ -30,6 +30,7 @@ export interface View<S, M> {
|
|
|
30
30
|
send: Send<M>;
|
|
31
31
|
show(opts: ShowOptions<S, M>): Node[];
|
|
32
32
|
branch(opts: BranchOptions<S, M>): Node[];
|
|
33
|
+
scope(opts: ScopeOptions<S, M>): Node[];
|
|
33
34
|
each<T>(opts: EachOptions<S, T, M>): Node[];
|
|
34
35
|
text(accessor: ((s: S) => string) | string, mask?: number): Text;
|
|
35
36
|
/**
|
|
@@ -41,6 +42,13 @@ export interface View<S, M> {
|
|
|
41
42
|
memo<T>(accessor: (s: S) => T): (s: S) => T;
|
|
42
43
|
selector<V>(field: (s: S) => V): SelectorInstance<V>;
|
|
43
44
|
ctx<T>(c: Context<T>): (s: S) => T;
|
|
45
|
+
/**
|
|
46
|
+
* Imperative one-shot read of current state inside the render context.
|
|
47
|
+
* Returns `selector(state)` at call time — no binding is created, no
|
|
48
|
+
* mask is assigned. Use when a builder needs the current state
|
|
49
|
+
* snapshot and a reactive binding would be wrong semantically.
|
|
50
|
+
*/
|
|
51
|
+
sample<R>(selector: (s: S) => R): R;
|
|
44
52
|
}
|
|
45
53
|
/**
|
|
46
54
|
* Create a `View<S, M>` bundle for a component's `view` callback.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"view-helpers.d.ts","sourceRoot":"","sources":["../src/view-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"view-helpers.d.ts","sourceRoot":"","sources":["../src/view-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAQ7F,OAAO,EAAyB,KAAK,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAEvF,OAAO,EAAc,KAAK,OAAO,EAAE,MAAM,yBAAyB,CAAA;AAElE;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,WAAW,IAAI,CAAC,CAAC,EAAE,CAAC;IACxB,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAA;IACb,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,CAAA;IACrC,MAAM,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,CAAA;IACzC,KAAK,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,CAAA;IACvC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,CAAA;IAC3C,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC,GAAG,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAChE;;;;OAIG;IACH,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC,GAAG,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,CAAA;IACxE,IAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAA;IAC3C,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAA;IACpD,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAA;IAClC;;;;;OAKG;IACH,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;CACpC;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAgB1D"}
|
package/dist/view-helpers.js
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { show as _show } from './primitives/show.js';
|
|
2
2
|
import { branch as _branch } from './primitives/branch.js';
|
|
3
|
+
import { scope as _scope } from './primitives/scope.js';
|
|
3
4
|
import { each as _each } from './primitives/each.js';
|
|
4
5
|
import { text as _text } from './primitives/text.js';
|
|
5
6
|
import { unsafeHtml as _unsafeHtml } from './primitives/unsafe-html.js';
|
|
6
7
|
import { memo as _memo } from './primitives/memo.js';
|
|
7
8
|
import { selector as _selector } from './primitives/selector.js';
|
|
9
|
+
import { sample as _sample } from './primitives/sample.js';
|
|
8
10
|
import { useContext } from './primitives/context.js';
|
|
9
11
|
/**
|
|
10
12
|
* Create a `View<S, M>` bundle for a component's `view` callback.
|
|
@@ -15,12 +17,14 @@ export function createView(send) {
|
|
|
15
17
|
send,
|
|
16
18
|
show: (opts) => _show(opts),
|
|
17
19
|
branch: (opts) => _branch(opts),
|
|
20
|
+
scope: (opts) => _scope(opts),
|
|
18
21
|
each: (opts) => _each(opts),
|
|
19
22
|
text: (accessor, mask) => typeof accessor === 'string' ? _text(accessor) : _text(accessor, mask),
|
|
20
23
|
unsafeHtml: (accessor, mask) => typeof accessor === 'string' ? _unsafeHtml(accessor) : _unsafeHtml(accessor, mask),
|
|
21
24
|
memo: (accessor) => _memo(accessor),
|
|
22
25
|
selector: (field) => _selector(field),
|
|
23
26
|
ctx: (c) => useContext(c),
|
|
27
|
+
sample: (selector) => _sample(selector),
|
|
24
28
|
};
|
|
25
29
|
}
|
|
26
30
|
//# sourceMappingURL=view-helpers.js.map
|
package/dist/view-helpers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"view-helpers.js","sourceRoot":"","sources":["../src/view-helpers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,IAAI,KAAK,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,MAAM,IAAI,OAAO,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,EAAE,IAAI,IAAI,KAAK,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,IAAI,IAAI,KAAK,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,UAAU,IAAI,WAAW,EAAE,MAAM,6BAA6B,CAAA;AACvE,OAAO,EAAE,IAAI,IAAI,KAAK,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,QAAQ,IAAI,SAAS,EAAyB,MAAM,0BAA0B,CAAA;AACvF,OAAO,EAAE,UAAU,EAAgB,MAAM,yBAAyB,CAAA;
|
|
1
|
+
{"version":3,"file":"view-helpers.js","sourceRoot":"","sources":["../src/view-helpers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,IAAI,KAAK,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,MAAM,IAAI,OAAO,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,EAAE,KAAK,IAAI,MAAM,EAAE,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAE,IAAI,IAAI,KAAK,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,IAAI,IAAI,KAAK,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,UAAU,IAAI,WAAW,EAAE,MAAM,6BAA6B,CAAA;AACvE,OAAO,EAAE,IAAI,IAAI,KAAK,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,QAAQ,IAAI,SAAS,EAAyB,MAAM,0BAA0B,CAAA;AACvF,OAAO,EAAE,MAAM,IAAI,OAAO,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,EAAE,UAAU,EAAgB,MAAM,yBAAyB,CAAA;AAoDlE;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAO,IAAa;IAC5C,OAAO;QACL,IAAI;QACJ,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAO,IAAI,CAAC;QACjC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAO,IAAI,CAAC;QACrC,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAO,IAAI,CAAC;QACnC,IAAI,EAAE,CAAI,IAA0B,EAAE,EAAE,CAAC,KAAK,CAAU,IAAI,CAAC;QAC7D,IAAI,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,CACvB,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAI,QAAQ,EAAE,IAAI,CAAC;QAC3E,UAAU,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,CAC7B,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,CAAI,QAAQ,EAAE,IAAI,CAAC;QACvF,IAAI,EAAE,CAAI,QAAqB,EAAE,EAAE,CAAC,KAAK,CAAO,QAAQ,CAAC;QACzD,QAAQ,EAAE,CAAI,KAAkB,EAAE,EAAE,CAAC,SAAS,CAAO,KAAK,CAAC;QAC3D,GAAG,EAAE,CAAI,CAAa,EAAE,EAAE,CAAC,UAAU,CAAO,CAAC,CAAC;QAC9C,MAAM,EAAE,CAAI,QAAqB,EAAE,EAAE,CAAC,OAAO,CAAO,QAAQ,CAAC;KAC9D,CAAA;AACH,CAAC","sourcesContent":["import type { Send, ShowOptions, BranchOptions, EachOptions, ScopeOptions } from './types.js'\nimport { show as _show } from './primitives/show.js'\nimport { branch as _branch } from './primitives/branch.js'\nimport { scope as _scope } from './primitives/scope.js'\nimport { each as _each } from './primitives/each.js'\nimport { text as _text } from './primitives/text.js'\nimport { unsafeHtml as _unsafeHtml } from './primitives/unsafe-html.js'\nimport { memo as _memo } from './primitives/memo.js'\nimport { selector as _selector, type SelectorInstance } from './primitives/selector.js'\nimport { sample as _sample } from './primitives/sample.js'\nimport { useContext, type Context } from './primitives/context.js'\n\n/**\n * Typed view helpers bound to a component's `State` / `Msg`. The sole\n * argument to `view`, so every state-bound primitive infers `State` from\n * the component definition — no per-call `show<State>(...)` annotation.\n *\n * ```ts\n * view: ({ send, show, text }) => [\n * ...show({ when: s => s.count > 0, render: () => [...] }),\n * text(s => String(s.count)),\n * ]\n * ```\n *\n * Tip: to view-function over a sub-slice of parent state, import `slice`\n * as a standalone helper:\n *\n * ```ts\n * import { slice } from '@llui/dom'\n * const form = slice(h, s => s.form) // returns View<FormState, Msg>\n * ```\n *\n * The Vite plugin's mask-injection pass recognizes all three call forms\n * equivalently: `h.text(...)` (member expression), `text(...)` (destructured\n * alias), and `text(...)` (bare import from `@llui/dom`). No per-binding\n * gating is lost when calling through `h`.\n */\nexport interface View<S, M> {\n send: Send<M>\n show(opts: ShowOptions<S, M>): Node[]\n branch(opts: BranchOptions<S, M>): Node[]\n scope(opts: ScopeOptions<S, M>): Node[]\n each<T>(opts: EachOptions<S, T, M>): Node[]\n text(accessor: ((s: S) => string) | string, mask?: number): Text\n /**\n * Insert raw HTML into the tree. Caller is responsible for sanitizing.\n * The parsed subtree is opaque to LLui — no nested bindings, events,\n * or primitives inside it will be tracked. See `unsafeHtml` for details.\n */\n unsafeHtml(accessor: ((s: S) => string) | string, mask?: number): Node[]\n memo<T>(accessor: (s: S) => T): (s: S) => T\n selector<V>(field: (s: S) => V): SelectorInstance<V>\n ctx<T>(c: Context<T>): (s: S) => T\n /**\n * Imperative one-shot read of current state inside the render context.\n * Returns `selector(state)` at call time — no binding is created, no\n * mask is assigned. Use when a builder needs the current state\n * snapshot and a reactive binding would be wrong semantically.\n */\n sample<R>(selector: (s: S) => R): R\n}\n\n/**\n * Create a `View<S, M>` bundle for a component's `view` callback.\n * Delegates straight to the underlying primitives — zero per-call overhead.\n */\nexport function createView<S, M>(send: Send<M>): View<S, M> {\n return {\n send,\n show: (opts) => _show<S, M>(opts),\n branch: (opts) => _branch<S, M>(opts),\n scope: (opts) => _scope<S, M>(opts),\n each: <T>(opts: EachOptions<S, T, M>) => _each<S, T, M>(opts),\n text: (accessor, mask) =>\n typeof accessor === 'string' ? _text(accessor) : _text<S>(accessor, mask),\n unsafeHtml: (accessor, mask) =>\n typeof accessor === 'string' ? _unsafeHtml(accessor) : _unsafeHtml<S>(accessor, mask),\n memo: <T>(accessor: (s: S) => T) => _memo<S, T>(accessor),\n selector: <V>(field: (s: S) => V) => _selector<S, V>(field),\n ctx: <T>(c: Context<T>) => useContext<S, T>(c),\n sample: <R>(selector: (s: S) => R) => _sample<S, R>(selector),\n }\n}\n"]}
|