@e280/sly 0.2.5 → 0.3.0-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.
Files changed (263) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +303 -614
  3. package/package.json +6 -8
  4. package/s/_archive/README.md +1221 -0
  5. package/s/_archive/view/index.ts +7 -0
  6. package/s/_archive/view/types.ts +45 -0
  7. package/s/demo/demo.bundle.ts +2 -9
  8. package/s/demo/views/counter-light.ts +13 -0
  9. package/s/demo/views/counter-shadow.ts +16 -0
  10. package/s/demo/views/demo.ts +21 -20
  11. package/s/demo/views/loaders.ts +7 -7
  12. package/s/dom/dom.ts +1 -1
  13. package/s/index.html.ts +30 -33
  14. package/s/index.ts +0 -2
  15. package/s/loaders/make.ts +1 -1
  16. package/s/loaders/parts/ascii-anim.ts +6 -8
  17. package/s/loaders/parts/error-display.ts +9 -9
  18. package/s/tests.test.ts +1 -4
  19. package/s/view/common/css-reset.ts +19 -0
  20. package/s/view/hooks/plumbing/hooks.ts +28 -0
  21. package/s/view/hooks/plumbing/hookscope.ts +12 -0
  22. package/s/view/hooks/use-css.ts +14 -0
  23. package/s/view/hooks/use-cx.ts +41 -0
  24. package/s/view/hooks/use-life.ts +17 -0
  25. package/s/view/hooks/use-mount.ts +30 -0
  26. package/s/view/hooks/use-name.ts +10 -0
  27. package/s/view/hooks/use-once.ts +9 -0
  28. package/s/view/hooks/use-op.ts +12 -0
  29. package/s/view/hooks/use-ref.ts +11 -0
  30. package/s/view/hooks/use-signal.ts +16 -0
  31. package/s/view/hooks/use-state.ts +20 -0
  32. package/s/view/hooks/use-wake.ts +8 -0
  33. package/s/view/index.ts +17 -4
  34. package/s/view/light.ts +50 -0
  35. package/s/view/parts/apply-attrs.ts +22 -0
  36. package/s/view/parts/apply-styles.ts +21 -0
  37. package/s/view/parts/cx.ts +26 -0
  38. package/s/view/parts/reactivity.ts +22 -0
  39. package/s/view/parts/sly-shadow.ts +8 -0
  40. package/s/view/shadow.ts +93 -0
  41. package/s/view/types.ts +15 -34
  42. package/x/demo/demo.bundle.js +2 -8
  43. package/x/demo/demo.bundle.js.map +1 -1
  44. package/x/demo/demo.bundle.min.js +45 -63
  45. package/x/demo/demo.bundle.min.js.map +4 -4
  46. package/x/demo/views/counter-light.d.ts +1 -0
  47. package/x/demo/views/counter-light.js +10 -0
  48. package/x/demo/views/counter-light.js.map +1 -0
  49. package/x/demo/views/counter-shadow.d.ts +1 -0
  50. package/x/demo/views/counter-shadow.js +12 -0
  51. package/x/demo/views/counter-shadow.js.map +1 -0
  52. package/x/demo/views/demo.d.ts +1 -4
  53. package/x/demo/views/demo.js +21 -20
  54. package/x/demo/views/demo.js.map +1 -1
  55. package/x/demo/views/loaders.d.ts +1 -1
  56. package/x/demo/views/loaders.js +7 -7
  57. package/x/demo/views/loaders.js.map +1 -1
  58. package/x/dom/dom.d.ts +1 -1
  59. package/x/dom/dom.js.map +1 -1
  60. package/x/index.d.ts +0 -2
  61. package/x/index.html +30 -140
  62. package/x/index.html.js +31 -31
  63. package/x/index.html.js.map +1 -1
  64. package/x/index.js +0 -2
  65. package/x/index.js.map +1 -1
  66. package/x/loaders/make.d.ts +1 -1
  67. package/x/loaders/parts/ascii-anim.d.ts +1 -1
  68. package/x/loaders/parts/ascii-anim.js +6 -7
  69. package/x/loaders/parts/ascii-anim.js.map +1 -1
  70. package/x/loaders/parts/error-display.d.ts +1 -1
  71. package/x/loaders/parts/error-display.js +9 -9
  72. package/x/loaders/parts/error-display.js.map +1 -1
  73. package/x/tests.test.js +1 -4
  74. package/x/tests.test.js.map +1 -1
  75. package/x/view/common/css-reset.js +17 -0
  76. package/x/view/common/css-reset.js.map +1 -0
  77. package/x/view/hooks/plumbing/hooks.d.ts +11 -0
  78. package/x/view/hooks/plumbing/hooks.js +26 -0
  79. package/x/view/hooks/plumbing/hooks.js.map +1 -0
  80. package/x/view/hooks/plumbing/hookscope.d.ts +10 -0
  81. package/x/view/hooks/plumbing/hookscope.js +12 -0
  82. package/x/view/hooks/plumbing/hookscope.js.map +1 -0
  83. package/x/view/hooks/use-css.d.ts +4 -0
  84. package/x/view/hooks/use-css.js +10 -0
  85. package/x/view/hooks/use-css.js.map +1 -0
  86. package/x/view/hooks/use-cx.d.ts +10 -0
  87. package/x/view/hooks/use-cx.js +33 -0
  88. package/x/view/hooks/use-cx.js.map +1 -0
  89. package/x/view/hooks/use-life.d.ts +2 -0
  90. package/x/view/hooks/use-life.js +13 -0
  91. package/x/view/hooks/use-life.js.map +1 -0
  92. package/x/{base/utils/mounts.d.ts → view/hooks/use-mount.d.ts} +1 -0
  93. package/x/{base/utils/mounts.js → view/hooks/use-mount.js} +7 -1
  94. package/x/view/hooks/use-mount.js.map +1 -0
  95. package/x/view/hooks/use-name.d.ts +2 -0
  96. package/x/view/hooks/use-name.js +8 -0
  97. package/x/view/hooks/use-name.js.map +1 -0
  98. package/x/view/hooks/use-once.d.ts +2 -0
  99. package/x/view/hooks/use-once.js +7 -0
  100. package/x/view/hooks/use-once.js.map +1 -0
  101. package/x/view/hooks/use-op.d.ts +3 -0
  102. package/x/view/hooks/use-op.js +9 -0
  103. package/x/view/hooks/use-op.js.map +1 -0
  104. package/x/view/hooks/use-ref.d.ts +5 -0
  105. package/x/view/hooks/use-ref.js +11 -0
  106. package/x/view/hooks/use-ref.js.map +1 -0
  107. package/x/view/hooks/use-signal.d.ts +3 -0
  108. package/x/view/hooks/use-signal.js +12 -0
  109. package/x/view/hooks/use-signal.js.map +1 -0
  110. package/x/view/hooks/use-state.d.ts +1 -0
  111. package/x/view/hooks/use-state.js +17 -0
  112. package/x/view/hooks/use-state.js.map +1 -0
  113. package/x/view/hooks/use-wake.d.ts +2 -0
  114. package/x/view/hooks/use-wake.js +6 -0
  115. package/x/view/hooks/use-wake.js.map +1 -0
  116. package/x/view/index.d.ts +15 -4
  117. package/x/view/index.js +15 -4
  118. package/x/view/index.js.map +1 -1
  119. package/x/view/light.d.ts +2 -0
  120. package/x/view/light.js +41 -0
  121. package/x/view/light.js.map +1 -0
  122. package/x/view/parts/apply-attrs.d.ts +2 -0
  123. package/x/view/parts/apply-attrs.js +22 -0
  124. package/x/view/parts/apply-attrs.js.map +1 -0
  125. package/x/{base/utils → view/parts}/apply-styles.js.map +1 -1
  126. package/x/view/parts/cx.d.ts +12 -0
  127. package/x/view/parts/cx.js +24 -0
  128. package/x/view/parts/cx.js.map +1 -0
  129. package/x/view/parts/reactivity.d.ts +5 -0
  130. package/x/view/parts/reactivity.js +18 -0
  131. package/x/view/parts/reactivity.js.map +1 -0
  132. package/x/view/parts/sly-shadow.d.ts +3 -0
  133. package/x/view/parts/sly-shadow.js +7 -0
  134. package/x/view/parts/sly-shadow.js.map +1 -0
  135. package/x/view/shadow.d.ts +5 -0
  136. package/x/view/shadow.js +72 -0
  137. package/x/view/shadow.js.map +1 -0
  138. package/x/view/types.d.ts +13 -21
  139. package/s/demo/views/counter.ts +0 -50
  140. package/s/demo/views/fastcount.ts +0 -29
  141. package/s/demo/views/mounting.ts +0 -36
  142. package/x/base/css-reset.js +0 -19
  143. package/x/base/css-reset.js.map +0 -1
  144. package/x/base/element.d.ts +0 -19
  145. package/x/base/element.js +0 -55
  146. package/x/base/element.js.map +0 -1
  147. package/x/base/index.d.ts +0 -5
  148. package/x/base/index.js +0 -6
  149. package/x/base/index.js.map +0 -1
  150. package/x/base/types.d.ts +0 -3
  151. package/x/base/types.js +0 -3
  152. package/x/base/types.js.map +0 -1
  153. package/x/base/use.d.ts +0 -59
  154. package/x/base/use.js +0 -129
  155. package/x/base/use.js.map +0 -1
  156. package/x/base/utils/attr-watcher.d.ts +0 -8
  157. package/x/base/utils/attr-watcher.js +0 -20
  158. package/x/base/utils/attr-watcher.js.map +0 -1
  159. package/x/base/utils/mounts.js.map +0 -1
  160. package/x/base/utils/reactor.d.ts +0 -5
  161. package/x/base/utils/reactor.js +0 -25
  162. package/x/base/utils/reactor.js.map +0 -1
  163. package/x/base/utils/states.d.ts +0 -13
  164. package/x/base/utils/states.js +0 -41
  165. package/x/base/utils/states.js.map +0 -1
  166. package/x/base/utils/use-attrs.d.ts +0 -11
  167. package/x/base/utils/use-attrs.js +0 -18
  168. package/x/base/utils/use-attrs.js.map +0 -1
  169. package/x/demo/views/counter.d.ts +0 -375
  170. package/x/demo/views/counter.js +0 -42
  171. package/x/demo/views/counter.js.map +0 -1
  172. package/x/demo/views/fastcount.d.ts +0 -12
  173. package/x/demo/views/fastcount.js +0 -21
  174. package/x/demo/views/fastcount.js.map +0 -1
  175. package/x/demo/views/mounting.d.ts +0 -3
  176. package/x/demo/views/mounting.js +0 -28
  177. package/x/demo/views/mounting.js.map +0 -1
  178. package/x/spa/index.barrel.d.ts +0 -4
  179. package/x/spa/index.barrel.js +0 -3
  180. package/x/spa/index.barrel.js.map +0 -1
  181. package/x/spa/index.d.ts +0 -2
  182. package/x/spa/index.js +0 -2
  183. package/x/spa/index.js.map +0 -1
  184. package/x/spa/plumbing/braces.d.ts +0 -12
  185. package/x/spa/plumbing/braces.js +0 -55
  186. package/x/spa/plumbing/braces.js.map +0 -1
  187. package/x/spa/plumbing/primitives.d.ts +0 -22
  188. package/x/spa/plumbing/primitives.js +0 -65
  189. package/x/spa/plumbing/primitives.js.map +0 -1
  190. package/x/spa/plumbing/router-core.d.ts +0 -13
  191. package/x/spa/plumbing/router-core.js +0 -38
  192. package/x/spa/plumbing/router-core.js.map +0 -1
  193. package/x/spa/plumbing/types.d.ts +0 -35
  194. package/x/spa/plumbing/types.js +0 -2
  195. package/x/spa/plumbing/types.js.map +0 -1
  196. package/x/spa/router.d.ts +0 -13
  197. package/x/spa/router.js +0 -39
  198. package/x/spa/router.js.map +0 -1
  199. package/x/spa/spa.test.d.ts +0 -15
  200. package/x/spa/spa.test.js +0 -78
  201. package/x/spa/spa.test.js.map +0 -1
  202. package/x/view/utils/contextualize.d.ts +0 -13
  203. package/x/view/utils/contextualize.js +0 -18
  204. package/x/view/utils/contextualize.js.map +0 -1
  205. package/x/view/utils/make-component.d.ts +0 -5
  206. package/x/view/utils/make-component.js +0 -17
  207. package/x/view/utils/make-component.js.map +0 -1
  208. package/x/view/utils/make-view.d.ts +0 -2
  209. package/x/view/utils/make-view.js +0 -32
  210. package/x/view/utils/make-view.js.map +0 -1
  211. package/x/view/utils/parts/capsule.d.ts +0 -12
  212. package/x/view/utils/parts/capsule.js +0 -56
  213. package/x/view/utils/parts/capsule.js.map +0 -1
  214. package/x/view/utils/parts/chain.d.ts +0 -13
  215. package/x/view/utils/parts/chain.js +0 -26
  216. package/x/view/utils/parts/chain.js.map +0 -1
  217. package/x/view/utils/parts/context.d.ts +0 -9
  218. package/x/view/utils/parts/context.js +0 -10
  219. package/x/view/utils/parts/context.js.map +0 -1
  220. package/x/view/utils/parts/directive.d.ts +0 -5
  221. package/x/view/utils/parts/directive.js +0 -20
  222. package/x/view/utils/parts/directive.js.map +0 -1
  223. package/x/view/utils/parts/naked.d.ts +0 -18
  224. package/x/view/utils/parts/naked.js +0 -57
  225. package/x/view/utils/parts/naked.js.map +0 -1
  226. package/x/view/utils/parts/sly-view.d.ts +0 -6
  227. package/x/view/utils/parts/sly-view.js +0 -16
  228. package/x/view/utils/parts/sly-view.js.map +0 -1
  229. package/x/view/view.d.ts +0 -11
  230. package/x/view/view.js +0 -15
  231. package/x/view/view.js.map +0 -1
  232. /package/s/{base → _archive/base}/css-reset.ts +0 -0
  233. /package/s/{base → _archive/base}/element.ts +0 -0
  234. /package/s/{base → _archive/base}/index.ts +0 -0
  235. /package/s/{base → _archive/base}/types.ts +0 -0
  236. /package/s/{base → _archive/base}/use.ts +0 -0
  237. /package/s/{base → _archive/base}/utils/apply-styles.ts +0 -0
  238. /package/s/{base → _archive/base}/utils/attr-watcher.ts +0 -0
  239. /package/s/{base → _archive/base}/utils/mounts.ts +0 -0
  240. /package/s/{base → _archive/base}/utils/reactor.ts +0 -0
  241. /package/s/{base → _archive/base}/utils/states.ts +0 -0
  242. /package/s/{base → _archive/base}/utils/use-attrs.ts +0 -0
  243. /package/s/{spa → _archive/spa}/index.barrel.ts +0 -0
  244. /package/s/{spa → _archive/spa}/index.ts +0 -0
  245. /package/s/{spa → _archive/spa}/plumbing/braces.ts +0 -0
  246. /package/s/{spa → _archive/spa}/plumbing/primitives.ts +0 -0
  247. /package/s/{spa → _archive/spa}/plumbing/router-core.ts +0 -0
  248. /package/s/{spa → _archive/spa}/plumbing/types.ts +0 -0
  249. /package/s/{spa → _archive/spa}/router.ts +0 -0
  250. /package/s/{spa → _archive/spa}/spa.test.ts +0 -0
  251. /package/s/{view → _archive/view}/utils/contextualize.ts +0 -0
  252. /package/s/{view → _archive/view}/utils/make-component.ts +0 -0
  253. /package/s/{view → _archive/view}/utils/make-view.ts +0 -0
  254. /package/s/{view → _archive/view}/utils/parts/capsule.ts +0 -0
  255. /package/s/{view → _archive/view}/utils/parts/chain.ts +0 -0
  256. /package/s/{view → _archive/view}/utils/parts/context.ts +0 -0
  257. /package/s/{view → _archive/view}/utils/parts/directive.ts +0 -0
  258. /package/s/{view → _archive/view}/utils/parts/naked.ts +0 -0
  259. /package/s/{view → _archive/view}/utils/parts/sly-view.ts +0 -0
  260. /package/s/{view → _archive/view}/view.ts +0 -0
  261. /package/x/{base → view/common}/css-reset.d.ts +0 -0
  262. /package/x/{base/utils → view/parts}/apply-styles.d.ts +0 -0
  263. /package/x/{base/utils → view/parts}/apply-styles.js +0 -0
package/x/view/types.d.ts CHANGED
@@ -1,26 +1,18 @@
1
1
  import { TemplateResult } from "lit";
2
- import { Constructor } from "@e280/stz";
3
- import { DirectiveResult } from "lit/directive.js";
4
- import { Use } from "../base/use.js";
5
- import { BaseElement } from "../base/element.js";
6
- import { ViewChain } from "./utils/parts/chain.js";
2
+ import { DirectiveResult } from "lit/async-directive.js";
7
3
  export type Content = TemplateResult | DirectiveResult | HTMLElement | string | null | undefined | void | Content[];
8
- export type ViewFn<Props extends any[]> = ((use: Use) => (...props: Props) => Content);
9
- export type View<Props extends any[]> = {
10
- (...props: Props): DirectiveResult;
11
- props: (...props: Props) => ViewChain<Props>;
12
- transmute: <PropsB extends any[]>(convert: (...propsB: PropsB) => Props) => View<PropsB>;
13
- component: <B extends Constructor<BaseElement>>(Base?: B) => {
14
- props: (propFn: (component: InstanceType<B>) => Props) => (ComponentClass<B, Props>);
15
- };
16
- naked: (host: HTMLElement) => NakedView<Props>;
4
+ export type View<Props extends any[]> = (...props: Props) => Content;
5
+ export type ViewAttr = string | number | boolean;
6
+ export type ViewAttrs = Record<string, ViewAttr>;
7
+ export type Placement<Props extends any[]> = {
8
+ props: Props;
9
+ children?: Content;
10
+ attrs?: ViewAttrs;
17
11
  };
18
- export type ViewProps<V extends View<any>> = (V extends View<infer Props> ? Props : never);
19
- export type ComponentClass<B extends Constructor<BaseElement>, Props extends any[]> = {
20
- view: View<Props>;
21
- new (): InstanceType<B>;
22
- } & B;
23
- export type NakedView<Props extends any[]> = {
12
+ export type ShadowView<Props extends any[]> = View<Props> & {
13
+ with: (placement: Placement<Props>) => Content;
14
+ };
15
+ export type ShadowSetup = {
24
16
  host: HTMLElement;
25
- render: (...props: Props) => void;
17
+ shadow: ShadowRoot;
26
18
  };
@@ -1,50 +0,0 @@
1
-
2
- import {css, html} from "lit"
3
-
4
- import {dom} from "../../dom/dom.js"
5
- import {view} from "../../view/view.js"
6
- import {cssReset} from "../../base/css-reset.js"
7
- import {BaseElement} from "../../base/element.js"
8
-
9
- export const CounterView = view(use => (start: number, step: number) => {
10
- use.name("counter")
11
- use.styles(cssReset, styles)
12
-
13
- const $count = use.signal(start)
14
- const increment = () => { $count.value += step }
15
-
16
- return html`
17
- <slot></slot>
18
- <div>
19
- <span>${$count()}</span>
20
- </div>
21
- <div>
22
- <button @click="${increment}">++</button>
23
- </div>
24
- `
25
- })
26
-
27
- // convert a view into a web component
28
- export class CounterComponent extends (
29
- CounterView
30
- .component(class extends BaseElement {
31
- attrs = dom.attrs(this).spec({
32
- start: Number,
33
- step: Number,
34
- })
35
- })
36
- .props(c => [c.attrs.start ?? 0, c.attrs.step ?? 1])
37
- ) {}
38
-
39
- const styles = css`
40
- :host {
41
- display: flex;
42
- justify-content: center;
43
- gap: 1em;
44
- }
45
-
46
- button {
47
- padding: 0.2em 0.5em;
48
- }
49
- `
50
-
@@ -1,29 +0,0 @@
1
-
2
- import {css, html} from "lit"
3
- import {nap, cycle} from "@e280/stz"
4
-
5
- import {dom} from "../../dom/dom.js"
6
- import {Use} from "../../base/use.js"
7
- import {BaseElement} from "../../base/element.js"
8
-
9
- export class FastcountElement extends BaseElement {
10
- static styles = css`span{color:orange}`
11
-
12
- attrs = dom.attrs(this).spec({value: Number})
13
- something = {whatever: "rofl"}
14
-
15
- render(use: Use) {
16
- const {value = 1} = this.attrs
17
- const $count = use.signal(0)
18
-
19
- use.mount(() => cycle(async() => {
20
- await nap(10)
21
- await $count($count() + 1)
22
- }))
23
-
24
- return html`
25
- <span>${$count() * value}</span>
26
- `
27
- }
28
- }
29
-
@@ -1,36 +0,0 @@
1
-
2
- import {html} from "lit"
3
- import {cycle, nap} from "@e280/stz"
4
- import {view} from "../../view/view.js"
5
-
6
- export const MountingTest = view(use => () => {
7
- const $toggle = use.signal(false)
8
-
9
- use.mount(() => cycle(async() => {
10
- await nap(1000)
11
- $toggle(!$toggle())
12
- }))
13
-
14
- return $toggle()
15
- ? TestAlpha()
16
- : html`bravo`
17
- })
18
-
19
- export const TestAlpha = view(() => () => {
20
- return html`
21
- <span>${TestCharlie()}</span>
22
- `
23
- })
24
-
25
-
26
- export const TestCharlie = view(use => () => {
27
- use.mount(() => {
28
- // console.log("mount")
29
- return () => {
30
- // console.log("unmount")
31
- }
32
- })
33
-
34
- return html`charlie`
35
- })
36
-
@@ -1,19 +0,0 @@
1
- import { css } from "lit";
2
- export const cssReset = css `
3
- @layer reset {
4
- * {
5
- margin: 0;
6
- padding: 0;
7
- box-sizing: border-box;
8
-
9
- scrollbar-width: thin;
10
- scrollbar-color: #888 transparent;
11
- }
12
-
13
- ::-webkit-scrollbar { width: 8px; }
14
- ::-webkit-scrollbar-track { background: transparent; }
15
- ::-webkit-scrollbar-thumb { background: #333; border-radius: 1em; }
16
- ::-webkit-scrollbar-thumb:hover { background: #444; }
17
- }
18
- `;
19
- //# sourceMappingURL=css-reset.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"css-reset.js","sourceRoot":"","sources":["../../s/base/css-reset.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,GAAG,EAAiB,MAAM,KAAK,CAAA;AAEvC,MAAM,CAAC,MAAM,QAAQ,GAAmB,GAAG,CAAA;;;;;;;;;;;;;;;;CAgB1C,CAAA"}
@@ -1,19 +0,0 @@
1
- import { CSSResultGroup } from "lit";
2
- import { Content } from "../view/types.js";
3
- import { Use } from "./use.js";
4
- export declare class BaseElement extends HTMLElement {
5
- #private;
6
- static styles: CSSResultGroup | undefined;
7
- readonly shadow: ShadowRoot;
8
- /** create the shadow root. override this if you want to change the shadow root settings. */
9
- createShadow(): ShadowRoot;
10
- constructor();
11
- /** return some content to render. */
12
- render(_use: Use): Content;
13
- /** immediately perform a fresh render into the shadow root. */
14
- updateNow: () => void;
15
- /** request a rerender which will happen soon (debounced). */
16
- update: import("@e280/stz").DebounceReturn<() => void>;
17
- connectedCallback(): void;
18
- disconnectedCallback(): void;
19
- }
package/x/base/element.js DELETED
@@ -1,55 +0,0 @@
1
- import { debounce } from "@e280/stz";
2
- import { dom } from "../dom/dom.js";
3
- import { Reactor } from "./utils/reactor.js";
4
- import { AttrWatcher } from "./utils/attr-watcher.js";
5
- import { applyStyles } from "./utils/apply-styles.js";
6
- import { Use, _disconnect, _reconnect, _wrap } from "./use.js";
7
- export class BaseElement extends HTMLElement {
8
- static styles;
9
- shadow;
10
- #use;
11
- #mountCount = 0;
12
- #reactor = new Reactor();
13
- #attrWatcher = new AttrWatcher(this, () => this.update());
14
- #part;
15
- /** create the shadow root. override this if you want to change the shadow root settings. */
16
- createShadow() {
17
- return this.attachShadow({ mode: "open" });
18
- }
19
- constructor() {
20
- super();
21
- this.shadow = this.createShadow();
22
- this.#use = new Use(this, this.shadow, this.updateNow, this.update);
23
- }
24
- /** return some content to render. */
25
- render(_use) { }
26
- /** immediately perform a fresh render into the shadow root. */
27
- updateNow = () => {
28
- this.#use[_wrap](() => {
29
- this.#part = dom.render(this.shadow, this.#reactor.effect(() => this.render(this.#use), this.update));
30
- });
31
- };
32
- /** request a rerender which will happen soon (debounced). */
33
- update = debounce(0, this.updateNow);
34
- connectedCallback() {
35
- if (this.#mountCount === 0) {
36
- const styles = this.constructor.styles;
37
- if (styles)
38
- applyStyles(this.shadow, styles);
39
- this.updateNow();
40
- }
41
- else {
42
- this.#use[_reconnect]();
43
- this.#part?.setConnected(true);
44
- }
45
- this.#attrWatcher.start();
46
- this.#mountCount++;
47
- }
48
- disconnectedCallback() {
49
- this.#part?.setConnected(false);
50
- this.#use[_disconnect]();
51
- this.#reactor.clear();
52
- this.#attrWatcher.stop();
53
- }
54
- }
55
- //# sourceMappingURL=element.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"element.js","sourceRoot":"","sources":["../../s/base/element.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,QAAQ,EAAC,MAAM,WAAW,CAAA;AAIlC,OAAO,EAAC,GAAG,EAAC,MAAM,eAAe,CAAA;AAEjC,OAAO,EAAC,OAAO,EAAC,MAAM,oBAAoB,CAAA;AAC1C,OAAO,EAAC,WAAW,EAAC,MAAM,yBAAyB,CAAA;AACnD,OAAO,EAAC,WAAW,EAAC,MAAM,yBAAyB,CAAA;AACnD,OAAO,EAAC,GAAG,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,EAAC,MAAM,UAAU,CAAA;AAE5D,MAAM,OAAO,WAAY,SAAQ,WAAW;IAC3C,MAAM,CAAC,MAAM,CAA4B;IAEhC,MAAM,CAAY;IAE3B,IAAI,CAAK;IACT,WAAW,GAAG,CAAC,CAAA;IACf,QAAQ,GAAG,IAAI,OAAO,EAAE,CAAA;IACxB,YAAY,GAAG,IAAI,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;IACzD,KAAK,CAAW;IAEhB,4FAA4F;IAC5F,YAAY;QACX,OAAO,IAAI,CAAC,YAAY,CAAC,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC,CAAA;IACzC,CAAC;IAED;QACC,KAAK,EAAE,CAAA;QACP,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,CAAA;QACjC,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,CAClB,IAAI,EACJ,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,MAAM,CACX,CAAA;IACF,CAAC;IAED,qCAAqC;IACrC,MAAM,CAAC,IAAS,IAAY,CAAC;IAE7B,+DAA+D;IAC/D,SAAS,GAAG,GAAG,EAAE;QAChB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE;YACrB,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,MAAM,CACtB,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,QAAQ,CAAC,MAAM,CACnB,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAC5B,IAAI,CAAC,MAAM,CACX,CACD,CAAA;QACF,CAAC,CAAC,CAAA;IACH,CAAC,CAAA;IAED,6DAA6D;IAC7D,MAAM,GAAG,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;IAEpC,iBAAiB;QAChB,IAAI,IAAI,CAAC,WAAW,KAAK,CAAC,EAAE,CAAC;YAC5B,MAAM,MAAM,GAAI,IAAI,CAAC,WAAmB,CAAC,MAAM,CAAA;YAC/C,IAAI,MAAM;gBAAE,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;YAC5C,IAAI,CAAC,SAAS,EAAE,CAAA;QACjB,CAAC;aACI,CAAC;YACL,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAA;YACvB,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC,CAAA;QAC/B,CAAC;QACD,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAA;QACzB,IAAI,CAAC,WAAW,EAAE,CAAA;IACnB,CAAC;IAED,oBAAoB;QACnB,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,CAAA;QAC/B,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAA;QACxB,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAA;QACrB,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAA;IACzB,CAAC;CACD"}
package/x/base/index.d.ts DELETED
@@ -1,5 +0,0 @@
1
- export * from "./utils/states.js";
2
- export * from "./css-reset.js";
3
- export * from "./element.js";
4
- export * from "./types.js";
5
- export * from "./use.js";
package/x/base/index.js DELETED
@@ -1,6 +0,0 @@
1
- export * from "./utils/states.js";
2
- export * from "./css-reset.js";
3
- export * from "./element.js";
4
- export * from "./types.js";
5
- export * from "./use.js";
6
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
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,YAAY,CAAA;AAC1B,cAAc,UAAU,CAAA"}
package/x/base/types.d.ts DELETED
@@ -1,3 +0,0 @@
1
- export type Life<V> = [value: V, dispose: () => void];
2
- export declare const asLife: <V>(life: Life<V>) => Life<V>;
3
- export declare const asLifeFn: <V>(fn: () => Life<V>) => () => Life<V>;
package/x/base/types.js DELETED
@@ -1,3 +0,0 @@
1
- export const asLife = (life) => life;
2
- export const asLifeFn = (fn) => fn;
3
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../s/base/types.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,MAAM,GAAG,CAAI,IAAa,EAAE,EAAE,CAAC,IAAI,CAAA;AAChD,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAI,EAAiB,EAAE,EAAE,CAAC,EAAE,CAAA"}
package/x/base/use.d.ts DELETED
@@ -1,59 +0,0 @@
1
- import { CSSResultGroup } from "lit";
2
- import { SignalOptions } from "@e280/strata/signals";
3
- import { Op } from "../ops/op.js";
4
- import { States } from "./utils/states.js";
5
- import { EveSpec } from "../dom/parts/eve.js";
6
- import { UseAttrs } from "./utils/use-attrs.js";
7
- export declare const _wrap: unique symbol;
8
- export declare const _disconnect: unique symbol;
9
- export declare const _reconnect: unique symbol;
10
- export declare class Use {
11
- #private;
12
- element: HTMLElement;
13
- shadow: ShadowRoot;
14
- renderNow: () => void;
15
- render: () => Promise<void>;
16
- readonly attrs: UseAttrs;
17
- [_wrap]<R>(fn: () => R): R;
18
- [_disconnect](): void;
19
- [_reconnect](): void;
20
- constructor(element: HTMLElement, shadow: ShadowRoot, renderNow: () => void, render: () => Promise<void>);
21
- /** number of times this view has been rendered */
22
- get renderCount(): number;
23
- /** promise that resolves when this view next renders */
24
- get rendered(): Promise<void>;
25
- /** set the 'name' html attribute on the host element */
26
- name(name: string): void;
27
- /** attach stylesheets into the view's shadow dom */
28
- styles(...styles: CSSResultGroup[]): void;
29
- /** attach stylesheets into the view's shadow dom (alias for 'styles') */
30
- css(...styles: CSSResultGroup[]): void;
31
- /** run a fn at initialization, and return a value */
32
- once<V>(fn: () => V): V;
33
- /** setup a mount/unmount lifecycle (your mount fn returns an unmount fn) */
34
- mount(fn: () => () => void): void;
35
- /** run fn each time mounted, return a value */
36
- wake<V>(fn: () => V): V;
37
- /** mount/unmount lifecycle, but also return a value */
38
- life<V>(fn: () => [value: V, dispose: () => void]): V;
39
- /** attach event listeners on mount (they get cleaned up on unmount) */
40
- events(spec: EveSpec): void;
41
- /** helper for setting up internal states (its a dom api, look up `ElementInternals: states`) */
42
- states<S extends string = string>(): States<S>;
43
- /** setup typed html attribute access */
44
- op: {
45
- <V>(f: () => Promise<V>): Op<V>;
46
- load: <V>(f: () => Promise<V>) => Op<V>;
47
- promise<V>(p: Promise<V>): Op<V>;
48
- };
49
- /** use a strata signal */
50
- signal: {
51
- <V>(value: V, options?: Partial<SignalOptions>): import("@e280/strata/signals").SignalFn<V>;
52
- derived<V>(formula: () => V, options?: Partial<SignalOptions>): import("@e280/strata/signals").DerivedFn<V>;
53
- lazy<V>(formula: () => V, options?: Partial<SignalOptions>): import("@e280/strata/signals").LazyFn<V>;
54
- };
55
- /** use a derived strata signal */
56
- derived<V>(formula: () => V, options?: Partial<SignalOptions>): import("@e280/strata/signals").DerivedFn<V>;
57
- /** use a lazy strata signal */
58
- lazy<V>(formula: () => V, options?: Partial<SignalOptions>): import("@e280/strata/signals").LazyFn<V>;
59
- }
package/x/base/use.js DELETED
@@ -1,129 +0,0 @@
1
- import { defer, GMap } from "@e280/stz";
2
- import { signal } from "@e280/strata/signals";
3
- import { Op } from "../ops/op.js";
4
- import { Mounts } from "./utils/mounts.js";
5
- import { States } from "./utils/states.js";
6
- import { eve } from "../dom/parts/eve.js";
7
- import { applyStyles } from "./utils/apply-styles.js";
8
- import { useAttrs } from "./utils/use-attrs.js";
9
- export const _wrap = Symbol();
10
- export const _disconnect = Symbol();
11
- export const _reconnect = Symbol();
12
- export class Use {
13
- element;
14
- shadow;
15
- renderNow;
16
- render;
17
- attrs;
18
- #runs = 0;
19
- #position = 0;
20
- #values = new GMap();
21
- #rendered = defer();
22
- #mounts = new Mounts();
23
- [_wrap](fn) {
24
- this.#runs++;
25
- this.#position = 0;
26
- this.#rendered = defer();
27
- const result = fn();
28
- this.#rendered.resolve();
29
- return result;
30
- }
31
- ;
32
- [_disconnect]() {
33
- this.#mounts.unmountAll();
34
- }
35
- ;
36
- [_reconnect]() {
37
- this.#mounts.remountAll();
38
- }
39
- constructor(element, shadow, renderNow, render) {
40
- this.element = element;
41
- this.shadow = shadow;
42
- this.renderNow = renderNow;
43
- this.render = render;
44
- this.attrs = useAttrs(this);
45
- }
46
- /** number of times this view has been rendered */
47
- get renderCount() {
48
- return this.#runs;
49
- }
50
- /** promise that resolves when this view next renders */
51
- get rendered() {
52
- return this.#rendered.promise;
53
- }
54
- /** set the 'name' html attribute on the host element */
55
- name(name) {
56
- this.once(() => this.element.setAttribute("view", name));
57
- }
58
- /** attach stylesheets into the view's shadow dom */
59
- styles(...styles) {
60
- this.once(() => applyStyles(this.shadow, styles));
61
- }
62
- /** attach stylesheets into the view's shadow dom (alias for 'styles') */
63
- css(...styles) {
64
- return this.styles(...styles);
65
- }
66
- /** run a fn at initialization, and return a value */
67
- once(fn) {
68
- return this.#values.guarantee(this.#position++, fn);
69
- }
70
- /** setup a mount/unmount lifecycle (your mount fn returns an unmount fn) */
71
- mount(fn) {
72
- return this.once(() => this.#mounts.mount(fn));
73
- }
74
- /** run fn each time mounted, return a value */
75
- wake(fn) {
76
- return this.life(() => [fn(), () => { }]);
77
- }
78
- /** mount/unmount lifecycle, but also return a value */
79
- life(fn) {
80
- const box = this.once(() => ({ value: undefined }));
81
- this.mount(() => {
82
- const [value, dispose] = fn();
83
- box.value = value;
84
- return dispose;
85
- });
86
- return box.value;
87
- }
88
- /** attach event listeners on mount (they get cleaned up on unmount) */
89
- events(spec) {
90
- return this.mount(() => eve(this.element, spec));
91
- }
92
- /** helper for setting up internal states (its a dom api, look up `ElementInternals: states`) */
93
- states() {
94
- return this.once(() => new States(this.element));
95
- }
96
- /** setup typed html attribute access */
97
- op = (() => {
98
- const that = this;
99
- function op(f) {
100
- return that.once(() => Op.load(f));
101
- }
102
- op.load = op;
103
- op.promise = (p) => this.once(() => Op.promise(p));
104
- return op;
105
- })();
106
- /** use a strata signal */
107
- signal = (() => {
108
- const that = this;
109
- function sig(value, options) {
110
- return that.once(() => signal(value, options));
111
- }
112
- sig.derived = function derived(formula, options) {
113
- return that.once(() => signal.derived(formula, options));
114
- };
115
- sig.lazy = function lazy(formula, options) {
116
- return that.once(() => signal.lazy(formula, options));
117
- };
118
- return sig;
119
- })();
120
- /** use a derived strata signal */
121
- derived(formula, options) {
122
- return this.once(() => signal.derived(formula, options));
123
- }
124
- /** use a lazy strata signal */
125
- lazy(formula, options) {
126
- return this.once(() => signal.lazy(formula, options));
127
- }
128
- }
129
- //# sourceMappingURL=use.js.map
package/x/base/use.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"use.js","sourceRoot":"","sources":["../../s/base/use.ts"],"names":[],"mappings":"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"}
@@ -1,8 +0,0 @@
1
- export declare class AttrWatcher {
2
- #private;
3
- private element;
4
- private response;
5
- constructor(element: HTMLElement, response: () => void);
6
- start(): void;
7
- stop(): void;
8
- }
@@ -1,20 +0,0 @@
1
- import { dom } from "../../dom/dom.js";
2
- export class AttrWatcher {
3
- element;
4
- response;
5
- #stopper;
6
- constructor(element, response) {
7
- this.element = element;
8
- this.response = response;
9
- }
10
- start() {
11
- if (!this.#stopper)
12
- this.#stopper = dom.attrs(this.element).on(this.response);
13
- }
14
- stop() {
15
- if (this.#stopper)
16
- this.#stopper();
17
- this.#stopper = undefined;
18
- }
19
- }
20
- //# sourceMappingURL=attr-watcher.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"attr-watcher.js","sourceRoot":"","sources":["../../../s/base/utils/attr-watcher.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,GAAG,EAAC,MAAM,kBAAkB,CAAA;AAEpC,MAAM,OAAO,WAAW;IAId;IACA;IAJT,QAAQ,CAA0B;IAElC,YACS,OAAoB,EACpB,QAAoB;QADpB,YAAO,GAAP,OAAO,CAAa;QACpB,aAAQ,GAAR,QAAQ,CAAY;IAC1B,CAAC;IAEJ,KAAK;QACJ,IAAI,CAAC,IAAI,CAAC,QAAQ;YACjB,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IAC3D,CAAC;IAED,IAAI;QACH,IAAI,IAAI,CAAC,QAAQ;YAAE,IAAI,CAAC,QAAQ,EAAE,CAAA;QAClC,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAA;IAC1B,CAAC;CACD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"mounts.js","sourceRoot":"","sources":["../../../s/base/utils/mounts.ts"],"names":[],"mappings":"AACA,MAAM,OAAO,MAAM;IAClB,SAAS,GAAyB,EAAE,CAAA;IACpC,WAAW,GAAmB,EAAE,CAAA;IAEhC,KAAK,CAAC,KAAuB;QAC5B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC1B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAA;IAC/B,CAAC;IAED,UAAU;QACT,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,WAAW;YACrC,OAAO,EAAE,CAAA;QACV,IAAI,CAAC,WAAW,GAAG,EAAE,CAAA;IACtB,CAAC;IAED,UAAU;QACT,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,SAAS;YACjC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAA;IAChC,CAAC;CACD"}
@@ -1,5 +0,0 @@
1
- export declare class Reactor {
2
- #private;
3
- effect<R>(collect: () => R, respond: () => Promise<void>): R;
4
- clear(): void;
5
- }
@@ -1,25 +0,0 @@
1
- import { GMap } from "@e280/stz";
2
- import { tracker } from "@e280/strata";
3
- export class Reactor {
4
- #map = new GMap();
5
- effect(collect, respond) {
6
- const { seen, result } = tracker.observe(collect);
7
- // add seen items
8
- for (const item of seen)
9
- this.#map.guarantee(item, () => tracker.subscribe(item, respond));
10
- // remove orphaned items
11
- for (const [item, dispose] of this.#map) {
12
- if (!seen.has(item)) {
13
- dispose();
14
- this.#map.delete(item);
15
- }
16
- }
17
- return result;
18
- }
19
- clear() {
20
- for (const dispose of this.#map.values())
21
- dispose();
22
- this.#map.clear();
23
- }
24
- }
25
- //# sourceMappingURL=reactor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"reactor.js","sourceRoot":"","sources":["../../../s/base/utils/reactor.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,IAAI,EAAC,MAAM,WAAW,CAAA;AAC9B,OAAO,EAAC,OAAO,EAAC,MAAM,cAAc,CAAA;AAEpC,MAAM,OAAO,OAAO;IACnB,IAAI,GAAG,IAAI,IAAI,EAAmB,CAAA;IAElC,MAAM,CAAI,OAAgB,EAAE,OAA4B;QACvD,MAAM,EAAC,IAAI,EAAE,MAAM,EAAC,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QAE/C,iBAAiB;QACjB,KAAK,MAAM,IAAI,IAAI,IAAI;YACtB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAA;QAElE,wBAAwB;QACxB,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACzC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBACrB,OAAO,EAAE,CAAA;gBACT,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;YACvB,CAAC;QACF,CAAC;QAED,OAAO,MAAM,CAAA;IACd,CAAC;IAED,KAAK;QACJ,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YACvC,OAAO,EAAE,CAAA;QACV,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAA;IAClB,CAAC;CACD"}
@@ -1,13 +0,0 @@
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
- get size(): number;
8
- has(state: S): boolean;
9
- add(...states: S[]): this;
10
- delete(...states: S[]): this;
11
- clear(): this;
12
- assign(...states: S[]): this;
13
- }
@@ -1,41 +0,0 @@
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
- get size() {
18
- return this.#states.size;
19
- }
20
- has(state) {
21
- return this.#states.has(state);
22
- }
23
- add(...states) {
24
- for (const s of states)
25
- this.#states.add(s);
26
- return this;
27
- }
28
- delete(...states) {
29
- for (const s of states)
30
- this.#states.delete(s);
31
- return this;
32
- }
33
- clear() {
34
- this.#states.clear();
35
- return this;
36
- }
37
- assign(...states) {
38
- return this.clear().add(...states);
39
- }
40
- }
41
- //# sourceMappingURL=states.js.map
@@ -1 +0,0 @@
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,IAAI,IAAI;QACP,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAA;IACzB,CAAC;IAED,GAAG,CAAC,KAAQ;QACX,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IAC/B,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,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAA;IACnC,CAAC;CACD"}
@@ -1,11 +0,0 @@
1
- import { Use } from "../use.js";
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>;
9
- on(fn: () => void): void;
10
- };
11
- export declare function useAttrs(use: Use): UseAttrs;