@e280/sly 0.2.0-27 → 0.2.0-29

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 CHANGED
@@ -293,11 +293,19 @@ import {html, css} from "lit"
293
293
  keyup: (e: KeyboardEvent) => console.log("keyup", e.code),
294
294
  })
295
295
  ```
296
+ - **use.states** — [internal states](https://developer.mozilla.org/en-US/docs/Web/API/ElementInternals/states) helper
297
+ ```ts
298
+ const states = use.states()
299
+ states.assign("active", "cool")
300
+ ```
301
+ ```css
302
+ [view="my-view"]::state(active) { color: yellow; }
303
+ [view="my-view"]::state(cool) { outline: 1px solid cyan; }
304
+ ```
296
305
  - **use.attrs** — ergonomic typed html attribute access
297
- - `use.attrs` is a bit different than [#dom.attrs](#dom.attrs), just to properly memoize .spec and .on for the render fn
298
- - use.attrs.spec
306
+ - `use.attrs` is similar to [#dom.attrs](#dom.attrs)
299
307
  ```ts
300
- const attrs = use.attrs.spec({
308
+ const attrs = use.attrs({
301
309
  name: String,
302
310
  count: Number,
303
311
  active: Boolean,
@@ -308,7 +316,7 @@ import {html, css} from "lit"
308
316
  attrs.count // 123
309
317
  attrs.active // true
310
318
  ```
311
- - use.attrs.(strings/numbers/booleans)
319
+ - use.attrs.{strings/numbers/booleans}
312
320
  ```ts
313
321
  use.attrs.strings.name // "chase"
314
322
  use.attrs.numbers.count // 123
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@e280/sly",
3
- "version": "0.2.0-27",
3
+ "version": "0.2.0-29",
4
4
  "description": "web shadow views",
5
5
  "license": "MIT",
6
6
  "type": "module",
package/s/base/index.ts CHANGED
@@ -1,4 +1,5 @@
1
1
 
2
+ export * from "./utils/states.js"
2
3
  export * from "./css-reset.js"
3
4
  export * from "./element.js"
4
5
  export * from "./use.js"
package/s/base/use.ts CHANGED
@@ -5,9 +5,10 @@ import {signal, SignalOptions} from "@e280/strata/signals"
5
5
 
6
6
  import {Op} from "../ops/op.js"
7
7
  import {Mounts} from "./utils/mounts.js"
8
- import {UseAttrs} from "./utils/use-attrs.js"
8
+ import {eve, EveSpec} from "../dom/parts/eve.js"
9
9
  import {applyStyles} from "./utils/apply-styles.js"
10
- import { eve, EveSpec } from "../dom/parts/eve.js"
10
+ import {useAttrs, UseAttrs} from "./utils/use-attrs.js"
11
+ import { States } from "./utils/states.js"
11
12
 
12
13
  export const _wrap = Symbol()
13
14
  export const _disconnect = Symbol()
@@ -45,7 +46,7 @@ export class Use {
45
46
  public renderNow: () => void,
46
47
  public render: () => Promise<void>,
47
48
  ) {
48
- this.attrs = new UseAttrs(this)
49
+ this.attrs = useAttrs(this)
49
50
  }
50
51
 
51
52
  get renderCount() {
@@ -95,6 +96,10 @@ export class Use {
95
96
  return this.mount(() => eve(this.element, spec))
96
97
  }
97
98
 
99
+ states() {
100
+ return this.once(() => new States(this.element))
101
+ }
102
+
98
103
  op = (() => {
99
104
  const that = this
100
105
  function op<V>(f: () => Promise<V>) {
@@ -0,0 +1,43 @@
1
+
2
+ export class States<S extends string = string> {
3
+ #states: Set<S>
4
+
5
+ constructor(element: HTMLElement) {
6
+ this.#states = element.attachInternals().states as any
7
+ }
8
+
9
+ ;[Symbol.iterator]() {
10
+ return this.#states.values()
11
+ }
12
+
13
+ values() {
14
+ return this.#states.values()
15
+ }
16
+
17
+ forEach(fn: (s: S) => void) {
18
+ this.#states.forEach(fn)
19
+ return this
20
+ }
21
+
22
+ add(...states: S[]) {
23
+ for (const s of states) this.#states.add(s)
24
+ return this
25
+ }
26
+
27
+ delete(...states: S[]) {
28
+ for (const s of states) this.#states.delete(s)
29
+ return this
30
+ }
31
+
32
+ clear() {
33
+ this.#states.clear()
34
+ return this
35
+ }
36
+
37
+ assign(...states: S[]) {
38
+ this.#states.forEach(s => this.#states.delete(s))
39
+ for (const s of states) this.#states.add(s)
40
+ return this
41
+ }
42
+ }
43
+
@@ -1,27 +1,36 @@
1
1
 
2
2
  import {Use} from "../use.js"
3
3
  import {dom} from "../../dom/dom.js"
4
- import {Attrs, AttrSpec} from "../../dom/types.js"
4
+ import {AttrSpec, AttrTypes} from "../../dom/types.js"
5
5
 
6
- export class UseAttrs {
7
- #use: Use
8
- #attrs: Attrs
6
+ export type UseAttrs = {
7
+ <A extends AttrSpec>(spec: A): AttrTypes<A>
8
+ strings: Record<string, undefined | string>
9
+ numbers: Record<string, undefined | number>
10
+ booleans: Record<string, undefined | boolean>
11
+ spec<A extends AttrSpec>(spec: A): AttrTypes<A>
12
+ on(fn: () => void): void
13
+ }
14
+
15
+ export function useAttrs(use: Use): UseAttrs {
16
+ const attrs = dom.attrs(use.element)
9
17
 
10
- constructor(use: Use) {
11
- this.#use = use
12
- this.#attrs = dom.attrs(use.element)
18
+ function attrsFn<A extends AttrSpec>(spec: A) {
19
+ return use.once(() => attrs.spec<A>(spec))
13
20
  }
14
21
 
15
- get strings() { return this.#attrs.strings }
16
- get numbers() { return this.#attrs.numbers }
17
- get booleans() { return this.#attrs.booleans }
22
+ attrsFn.strings = attrs.strings
23
+ attrsFn.numbers = attrs.numbers
24
+ attrsFn.booleans = attrs.booleans
18
25
 
19
- spec<A extends AttrSpec>(spec: A) {
20
- return this.#use.once(() => this.#attrs.spec(spec))
26
+ attrsFn.spec = <A extends AttrSpec>(spec: A) => {
27
+ return use.once(() => attrs.spec<A>(spec))
21
28
  }
22
29
 
23
- on(fn: () => void) {
24
- return this.#use.mount(() => this.#attrs.on(fn))
30
+ attrsFn.on = (fn: () => void) => {
31
+ return use.mount(() => attrs.on(fn))
25
32
  }
33
+
34
+ return attrsFn
26
35
  }
27
36
 
package/x/base/index.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ export * from "./utils/states.js";
1
2
  export * from "./css-reset.js";
2
3
  export * from "./element.js";
3
4
  export * from "./use.js";
package/x/base/index.js CHANGED
@@ -1,3 +1,4 @@
1
+ export * from "./utils/states.js";
1
2
  export * from "./css-reset.js";
2
3
  export * from "./element.js";
3
4
  export * from "./use.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../s/base/index.ts"],"names":[],"mappings":"AACA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,UAAU,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../s/base/index.ts"],"names":[],"mappings":"AACA,cAAc,mBAAmB,CAAA;AACjC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,UAAU,CAAA"}
package/x/base/use.d.ts CHANGED
@@ -1,8 +1,9 @@
1
1
  import { CSSResultGroup } from "lit";
2
2
  import { SignalOptions } from "@e280/strata/signals";
3
3
  import { Op } from "../ops/op.js";
4
- import { UseAttrs } from "./utils/use-attrs.js";
5
4
  import { EveSpec } from "../dom/parts/eve.js";
5
+ import { UseAttrs } from "./utils/use-attrs.js";
6
+ import { States } from "./utils/states.js";
6
7
  export declare const _wrap: unique symbol;
7
8
  export declare const _disconnect: unique symbol;
8
9
  export declare const _reconnect: unique symbol;
@@ -28,6 +29,7 @@ export declare class Use {
28
29
  life<V>(fn: () => [result: V, dispose: () => void]): V;
29
30
  wake<V>(fn: () => V): V;
30
31
  events(spec: EveSpec): void;
32
+ states(): States<string>;
31
33
  op: {
32
34
  <V>(f: () => Promise<V>): Op<V>;
33
35
  load: <V>(f: () => Promise<V>) => Op<V>;
package/x/base/use.js CHANGED
@@ -2,9 +2,10 @@ import { defer, MapG } from "@e280/stz";
2
2
  import { signal } from "@e280/strata/signals";
3
3
  import { Op } from "../ops/op.js";
4
4
  import { Mounts } from "./utils/mounts.js";
5
- import { UseAttrs } from "./utils/use-attrs.js";
6
- import { applyStyles } from "./utils/apply-styles.js";
7
5
  import { eve } from "../dom/parts/eve.js";
6
+ import { applyStyles } from "./utils/apply-styles.js";
7
+ import { useAttrs } from "./utils/use-attrs.js";
8
+ import { States } from "./utils/states.js";
8
9
  export const _wrap = Symbol();
9
10
  export const _disconnect = Symbol();
10
11
  export const _reconnect = Symbol();
@@ -40,7 +41,7 @@ export class Use {
40
41
  this.shadow = shadow;
41
42
  this.renderNow = renderNow;
42
43
  this.render = render;
43
- this.attrs = new UseAttrs(this);
44
+ this.attrs = useAttrs(this);
44
45
  }
45
46
  get renderCount() {
46
47
  return this.#runs;
@@ -79,6 +80,9 @@ export class Use {
79
80
  events(spec) {
80
81
  return this.mount(() => eve(this.element, spec));
81
82
  }
83
+ states() {
84
+ return this.once(() => new States(this.element));
85
+ }
82
86
  op = (() => {
83
87
  const that = this;
84
88
  function op(f) {
package/x/base/use.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"use.js","sourceRoot":"","sources":["../../s/base/use.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"use.js","sourceRoot":"","sources":["../../s/base/use.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export declare class States<S extends string = string> {
2
+ #private;
3
+ constructor(element: HTMLElement);
4
+ [Symbol.iterator](): SetIterator<S>;
5
+ values(): SetIterator<S>;
6
+ forEach(fn: (s: S) => void): this;
7
+ add(...states: S[]): this;
8
+ delete(...states: S[]): this;
9
+ clear(): this;
10
+ assign(...states: S[]): this;
11
+ }
@@ -0,0 +1,38 @@
1
+ export class States {
2
+ #states;
3
+ constructor(element) {
4
+ this.#states = element.attachInternals().states;
5
+ }
6
+ ;
7
+ [Symbol.iterator]() {
8
+ return this.#states.values();
9
+ }
10
+ values() {
11
+ return this.#states.values();
12
+ }
13
+ forEach(fn) {
14
+ this.#states.forEach(fn);
15
+ return this;
16
+ }
17
+ add(...states) {
18
+ for (const s of states)
19
+ this.#states.add(s);
20
+ return this;
21
+ }
22
+ delete(...states) {
23
+ for (const s of states)
24
+ this.#states.delete(s);
25
+ return this;
26
+ }
27
+ clear() {
28
+ this.#states.clear();
29
+ return this;
30
+ }
31
+ assign(...states) {
32
+ this.#states.forEach(s => this.#states.delete(s));
33
+ for (const s of states)
34
+ this.#states.add(s);
35
+ return this;
36
+ }
37
+ }
38
+ //# sourceMappingURL=states.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"states.js","sourceRoot":"","sources":["../../../s/base/utils/states.ts"],"names":[],"mappings":"AACA,MAAM,OAAO,MAAM;IAClB,OAAO,CAAQ;IAEf,YAAY,OAAoB;QAC/B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,MAAa,CAAA;IACvD,CAAC;IAED,CAAC;IAAA,CAAC,MAAM,CAAC,QAAQ,CAAC;QACjB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAA;IAC7B,CAAC;IAED,MAAM;QACL,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAA;IAC7B,CAAC;IAED,OAAO,CAAC,EAAkB;QACzB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;QACxB,OAAO,IAAI,CAAA;IACZ,CAAC;IAED,GAAG,CAAC,GAAG,MAAW;QACjB,KAAK,MAAM,CAAC,IAAI,MAAM;YAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QAC3C,OAAO,IAAI,CAAA;IACZ,CAAC;IAED,MAAM,CAAC,GAAG,MAAW;QACpB,KAAK,MAAM,CAAC,IAAI,MAAM;YAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QAC9C,OAAO,IAAI,CAAA;IACZ,CAAC;IAED,KAAK;QACJ,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAA;QACpB,OAAO,IAAI,CAAA;IACZ,CAAC;IAED,MAAM,CAAC,GAAG,MAAW;QACpB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;QACjD,KAAK,MAAM,CAAC,IAAI,MAAM;YAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QAC3C,OAAO,IAAI,CAAA;IACZ,CAAC;CACD"}
@@ -1,11 +1,11 @@
1
1
  import { Use } from "../use.js";
2
- import { AttrSpec } from "../../dom/types.js";
3
- export declare class UseAttrs {
4
- #private;
5
- constructor(use: Use);
6
- get strings(): Record<string, string | undefined>;
7
- get numbers(): Record<string, number | undefined>;
8
- get booleans(): Record<string, boolean | undefined>;
9
- spec<A extends AttrSpec>(spec: A): import("../../dom/types.js").AttrTypes<A>;
2
+ import { AttrSpec, AttrTypes } from "../../dom/types.js";
3
+ export type UseAttrs = {
4
+ <A extends AttrSpec>(spec: A): AttrTypes<A>;
5
+ strings: Record<string, undefined | string>;
6
+ numbers: Record<string, undefined | number>;
7
+ booleans: Record<string, undefined | boolean>;
8
+ spec<A extends AttrSpec>(spec: A): AttrTypes<A>;
10
9
  on(fn: () => void): void;
11
- }
10
+ };
11
+ export declare function useAttrs(use: Use): UseAttrs;
@@ -1,19 +1,18 @@
1
1
  import { dom } from "../../dom/dom.js";
2
- export class UseAttrs {
3
- #use;
4
- #attrs;
5
- constructor(use) {
6
- this.#use = use;
7
- this.#attrs = dom.attrs(use.element);
8
- }
9
- get strings() { return this.#attrs.strings; }
10
- get numbers() { return this.#attrs.numbers; }
11
- get booleans() { return this.#attrs.booleans; }
12
- spec(spec) {
13
- return this.#use.once(() => this.#attrs.spec(spec));
14
- }
15
- on(fn) {
16
- return this.#use.mount(() => this.#attrs.on(fn));
2
+ export function useAttrs(use) {
3
+ const attrs = dom.attrs(use.element);
4
+ function attrsFn(spec) {
5
+ return use.once(() => attrs.spec(spec));
17
6
  }
7
+ attrsFn.strings = attrs.strings;
8
+ attrsFn.numbers = attrs.numbers;
9
+ attrsFn.booleans = attrs.booleans;
10
+ attrsFn.spec = (spec) => {
11
+ return use.once(() => attrs.spec(spec));
12
+ };
13
+ attrsFn.on = (fn) => {
14
+ return use.mount(() => attrs.on(fn));
15
+ };
16
+ return attrsFn;
18
17
  }
19
18
  //# sourceMappingURL=use-attrs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-attrs.js","sourceRoot":"","sources":["../../../s/base/utils/use-attrs.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,GAAG,EAAC,MAAM,kBAAkB,CAAA;AAGpC,MAAM,OAAO,QAAQ;IACpB,IAAI,CAAK;IACT,MAAM,CAAO;IAEb,YAAY,GAAQ;QACnB,IAAI,CAAC,IAAI,GAAG,GAAG,CAAA;QACf,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IACrC,CAAC;IAED,IAAI,OAAO,KAAK,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAA,CAAC,CAAC;IAC5C,IAAI,OAAO,KAAK,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAA,CAAC,CAAC;IAC5C,IAAI,QAAQ,KAAK,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAA,CAAC,CAAC;IAE9C,IAAI,CAAqB,IAAO;QAC/B,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;IACpD,CAAC;IAED,EAAE,CAAC,EAAc;QAChB,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IACjD,CAAC;CACD"}
1
+ {"version":3,"file":"use-attrs.js","sourceRoot":"","sources":["../../../s/base/utils/use-attrs.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,GAAG,EAAC,MAAM,kBAAkB,CAAA;AAYpC,MAAM,UAAU,QAAQ,CAAC,GAAQ;IAChC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IAEpC,SAAS,OAAO,CAAqB,IAAO;QAC3C,OAAO,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAI,IAAI,CAAC,CAAC,CAAA;IAC3C,CAAC;IAED,OAAO,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAA;IAC/B,OAAO,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAA;IAC/B,OAAO,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAA;IAEjC,OAAO,CAAC,IAAI,GAAG,CAAqB,IAAO,EAAE,EAAE;QAC9C,OAAO,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAI,IAAI,CAAC,CAAC,CAAA;IAC3C,CAAC,CAAA;IAED,OAAO,CAAC,EAAE,GAAG,CAAC,EAAc,EAAE,EAAE;QAC/B,OAAO,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IACrC,CAAC,CAAA;IAED,OAAO,OAAO,CAAA;AACf,CAAC"}