@e280/sly 0.2.5 → 0.3.0-10

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 (350) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +356 -626
  3. package/package.json +22 -30
  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 +5 -8
  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 +24 -20
  11. package/s/demo/views/loaders.ts +9 -9
  12. package/s/demo/views/time-light.ts +19 -0
  13. package/s/demo/views/time-shadow.ts +22 -0
  14. package/s/dom/attrs/attrs.ts +3 -3
  15. package/s/dom/attrs/parts/attr-spec.ts +17 -5
  16. package/s/dom/attrs/parts/on-attrs.ts +1 -1
  17. package/s/dom/dom.ts +1 -1
  18. package/s/index.html.ts +30 -33
  19. package/s/index.ts +2 -4
  20. package/s/{loaders → loader}/index.barrel.ts +0 -1
  21. package/s/{loaders → loader}/index.ts +0 -1
  22. package/s/{loaders → loader}/make.ts +1 -1
  23. package/s/{loaders → loader}/parts/ascii-anim.ts +6 -8
  24. package/s/loader/parts/error-display.ts +26 -0
  25. package/s/{loaders → loader}/types.ts +1 -1
  26. package/s/test.ts +5 -0
  27. package/s/view/common/css-reset.ts +19 -0
  28. package/s/view/common/sly-shadow.ts +14 -0
  29. package/s/view/elements/light.ts +14 -0
  30. package/s/view/elements/shadow.ts +52 -0
  31. package/s/view/hooks/plumbing/hooks.ts +28 -0
  32. package/s/view/hooks/plumbing/hookscope.ts +12 -0
  33. package/s/view/hooks/use-attrs.ts +28 -0
  34. package/s/view/hooks/use-css.ts +14 -0
  35. package/s/view/hooks/use-cx.ts +41 -0
  36. package/s/view/hooks/use-life.ts +17 -0
  37. package/s/view/hooks/use-mount.ts +30 -0
  38. package/s/view/hooks/use-name.ts +10 -0
  39. package/s/view/hooks/use-once.ts +9 -0
  40. package/s/view/hooks/use-op.ts +12 -0
  41. package/s/view/hooks/use-ref.ts +11 -0
  42. package/s/view/hooks/use-signal.ts +16 -0
  43. package/s/view/hooks/use-state.ts +20 -0
  44. package/s/view/hooks/use-wake.ts +8 -0
  45. package/s/view/index.ts +22 -4
  46. package/s/view/light.ts +50 -0
  47. package/s/view/parts/apply-attrs.ts +22 -0
  48. package/s/view/parts/apply-styles.ts +21 -0
  49. package/s/view/parts/cx.ts +26 -0
  50. package/s/view/parts/reactivity.ts +22 -0
  51. package/s/view/shadow.ts +93 -0
  52. package/s/view/types.ts +15 -34
  53. package/x/demo/demo.bundle.js +5 -8
  54. package/x/demo/demo.bundle.js.map +1 -1
  55. package/x/demo/demo.bundle.min.js +52 -63
  56. package/x/demo/demo.bundle.min.js.map +4 -4
  57. package/x/demo/views/counter-light.d.ts +1 -0
  58. package/x/demo/views/counter-light.js +10 -0
  59. package/x/demo/views/counter-light.js.map +1 -0
  60. package/x/demo/views/counter-shadow.d.ts +1 -0
  61. package/x/demo/views/counter-shadow.js +12 -0
  62. package/x/demo/views/counter-shadow.js.map +1 -0
  63. package/x/demo/views/demo.d.ts +1 -4
  64. package/x/demo/views/demo.js +24 -20
  65. package/x/demo/views/demo.js.map +1 -1
  66. package/x/demo/views/loaders.d.ts +1 -1
  67. package/x/demo/views/loaders.js +9 -9
  68. package/x/demo/views/loaders.js.map +1 -1
  69. package/x/demo/views/{counter.d.ts → time-light.d.ts} +3 -19
  70. package/x/demo/views/time-light.js +16 -0
  71. package/x/demo/views/time-light.js.map +1 -0
  72. package/x/demo/views/time-shadow.d.ts +365 -0
  73. package/x/demo/views/time-shadow.js +18 -0
  74. package/x/demo/views/time-shadow.js.map +1 -0
  75. package/x/dom/attrs/attrs.d.ts +3 -2
  76. package/x/dom/attrs/attrs.js +2 -2
  77. package/x/dom/attrs/attrs.js.map +1 -1
  78. package/x/dom/attrs/parts/attr-spec.d.ts +5 -1
  79. package/x/dom/attrs/parts/attr-spec.js +12 -6
  80. package/x/dom/attrs/parts/attr-spec.js.map +1 -1
  81. package/x/dom/attrs/parts/on-attrs.d.ts +1 -1
  82. package/x/dom/attrs/parts/on-attrs.js.map +1 -1
  83. package/x/dom/dom.d.ts +1 -1
  84. package/x/dom/dom.js.map +1 -1
  85. package/x/index.d.ts +2 -4
  86. package/x/index.html +30 -140
  87. package/x/index.html.js +31 -31
  88. package/x/index.html.js.map +1 -1
  89. package/x/index.js +2 -4
  90. package/x/index.js.map +1 -1
  91. package/x/{loaders → loader}/index.barrel.d.ts +0 -1
  92. package/x/loader/index.barrel.js.map +1 -0
  93. package/x/{loaders → loader}/index.d.ts +0 -1
  94. package/x/loader/index.js.map +1 -0
  95. package/x/{loaders → loader}/make.d.ts +1 -1
  96. package/x/loader/make.js.map +1 -0
  97. package/x/loader/mock.js.map +1 -0
  98. package/x/loader/parts/anims.js.map +1 -0
  99. package/x/{loaders → loader}/parts/ascii-anim.d.ts +1 -1
  100. package/x/{loaders → loader}/parts/ascii-anim.js +6 -7
  101. package/x/loader/parts/ascii-anim.js.map +1 -0
  102. package/x/loader/parts/error-display.d.ts +1 -0
  103. package/x/loader/parts/error-display.js +20 -0
  104. package/x/loader/parts/error-display.js.map +1 -0
  105. package/x/{loaders → loader}/types.d.ts +1 -1
  106. package/x/{loaders → loader}/types.js.map +1 -1
  107. package/x/loot/drag-and-drops.d.ts +2 -2
  108. package/x/loot/drops.d.ts +1 -1
  109. package/x/op/index.js.map +1 -0
  110. package/x/op/op.js.map +1 -0
  111. package/x/op/podium.js.map +1 -0
  112. package/x/{ops → op}/types.js.map +1 -1
  113. package/x/test.js +3 -0
  114. package/x/test.js.map +1 -0
  115. package/x/view/common/css-reset.js +17 -0
  116. package/x/view/common/css-reset.js.map +1 -0
  117. package/x/view/common/sly-shadow.d.ts +4 -0
  118. package/x/view/common/sly-shadow.js +11 -0
  119. package/x/view/common/sly-shadow.js.map +1 -0
  120. package/x/view/elements/light.d.ts +357 -0
  121. package/x/view/elements/light.js +10 -0
  122. package/x/view/elements/light.js.map +1 -0
  123. package/x/view/elements/shadow.d.ts +366 -0
  124. package/x/view/elements/shadow.js +42 -0
  125. package/x/view/elements/shadow.js.map +1 -0
  126. package/x/view/hooks/plumbing/hooks.d.ts +11 -0
  127. package/x/view/hooks/plumbing/hooks.js +26 -0
  128. package/x/view/hooks/plumbing/hooks.js.map +1 -0
  129. package/x/view/hooks/plumbing/hookscope.d.ts +10 -0
  130. package/x/view/hooks/plumbing/hookscope.js +12 -0
  131. package/x/view/hooks/plumbing/hookscope.js.map +1 -0
  132. package/x/view/hooks/use-attrs.d.ts +2 -0
  133. package/x/view/hooks/use-attrs.js +23 -0
  134. package/x/view/hooks/use-attrs.js.map +1 -0
  135. package/x/view/hooks/use-css.d.ts +4 -0
  136. package/x/view/hooks/use-css.js +10 -0
  137. package/x/view/hooks/use-css.js.map +1 -0
  138. package/x/view/hooks/use-cx.d.ts +10 -0
  139. package/x/view/hooks/use-cx.js +33 -0
  140. package/x/view/hooks/use-cx.js.map +1 -0
  141. package/x/view/hooks/use-life.d.ts +2 -0
  142. package/x/view/hooks/use-life.js +13 -0
  143. package/x/view/hooks/use-life.js.map +1 -0
  144. package/x/{base/utils/mounts.d.ts → view/hooks/use-mount.d.ts} +1 -0
  145. package/x/{base/utils/mounts.js → view/hooks/use-mount.js} +7 -1
  146. package/x/view/hooks/use-mount.js.map +1 -0
  147. package/x/view/hooks/use-name.d.ts +2 -0
  148. package/x/view/hooks/use-name.js +8 -0
  149. package/x/view/hooks/use-name.js.map +1 -0
  150. package/x/view/hooks/use-once.d.ts +2 -0
  151. package/x/view/hooks/use-once.js +7 -0
  152. package/x/view/hooks/use-once.js.map +1 -0
  153. package/x/view/hooks/use-op.d.ts +3 -0
  154. package/x/view/hooks/use-op.js +9 -0
  155. package/x/view/hooks/use-op.js.map +1 -0
  156. package/x/view/hooks/use-ref.d.ts +5 -0
  157. package/x/view/hooks/use-ref.js +11 -0
  158. package/x/view/hooks/use-ref.js.map +1 -0
  159. package/x/view/hooks/use-signal.d.ts +3 -0
  160. package/x/view/hooks/use-signal.js +12 -0
  161. package/x/view/hooks/use-signal.js.map +1 -0
  162. package/x/view/hooks/use-state.d.ts +1 -0
  163. package/x/view/hooks/use-state.js +17 -0
  164. package/x/view/hooks/use-state.js.map +1 -0
  165. package/x/view/hooks/use-wake.d.ts +2 -0
  166. package/x/view/hooks/use-wake.js +6 -0
  167. package/x/view/hooks/use-wake.js.map +1 -0
  168. package/x/view/index.d.ts +19 -4
  169. package/x/view/index.js +19 -4
  170. package/x/view/index.js.map +1 -1
  171. package/x/view/light.d.ts +2 -0
  172. package/x/view/light.js +41 -0
  173. package/x/view/light.js.map +1 -0
  174. package/x/view/parts/apply-attrs.d.ts +2 -0
  175. package/x/view/parts/apply-attrs.js +22 -0
  176. package/x/view/parts/apply-attrs.js.map +1 -0
  177. package/x/{base/utils → view/parts}/apply-styles.js.map +1 -1
  178. package/x/view/parts/cx.d.ts +12 -0
  179. package/x/view/parts/cx.js +24 -0
  180. package/x/view/parts/cx.js.map +1 -0
  181. package/x/view/parts/reactivity.d.ts +5 -0
  182. package/x/view/parts/reactivity.js +18 -0
  183. package/x/view/parts/reactivity.js.map +1 -0
  184. package/x/view/shadow.d.ts +6 -0
  185. package/x/view/shadow.js +71 -0
  186. package/x/view/shadow.js.map +1 -0
  187. package/x/view/types.d.ts +13 -21
  188. package/s/demo/views/counter.ts +0 -50
  189. package/s/demo/views/fastcount.ts +0 -29
  190. package/s/demo/views/mounting.ts +0 -36
  191. package/s/loaders/parts/error-display.ts +0 -26
  192. package/s/tests.test.ts +0 -8
  193. package/x/base/css-reset.js +0 -19
  194. package/x/base/css-reset.js.map +0 -1
  195. package/x/base/element.d.ts +0 -19
  196. package/x/base/element.js +0 -55
  197. package/x/base/element.js.map +0 -1
  198. package/x/base/index.d.ts +0 -5
  199. package/x/base/index.js +0 -6
  200. package/x/base/index.js.map +0 -1
  201. package/x/base/types.d.ts +0 -3
  202. package/x/base/types.js +0 -3
  203. package/x/base/types.js.map +0 -1
  204. package/x/base/use.d.ts +0 -59
  205. package/x/base/use.js +0 -129
  206. package/x/base/use.js.map +0 -1
  207. package/x/base/utils/attr-watcher.d.ts +0 -8
  208. package/x/base/utils/attr-watcher.js +0 -20
  209. package/x/base/utils/attr-watcher.js.map +0 -1
  210. package/x/base/utils/mounts.js.map +0 -1
  211. package/x/base/utils/reactor.d.ts +0 -5
  212. package/x/base/utils/reactor.js +0 -25
  213. package/x/base/utils/reactor.js.map +0 -1
  214. package/x/base/utils/states.d.ts +0 -13
  215. package/x/base/utils/states.js +0 -41
  216. package/x/base/utils/states.js.map +0 -1
  217. package/x/base/utils/use-attrs.d.ts +0 -11
  218. package/x/base/utils/use-attrs.js +0 -18
  219. package/x/base/utils/use-attrs.js.map +0 -1
  220. package/x/demo/views/counter.js +0 -42
  221. package/x/demo/views/counter.js.map +0 -1
  222. package/x/demo/views/fastcount.d.ts +0 -12
  223. package/x/demo/views/fastcount.js +0 -21
  224. package/x/demo/views/fastcount.js.map +0 -1
  225. package/x/demo/views/mounting.d.ts +0 -3
  226. package/x/demo/views/mounting.js +0 -28
  227. package/x/demo/views/mounting.js.map +0 -1
  228. package/x/loaders/index.barrel.js.map +0 -1
  229. package/x/loaders/index.js.map +0 -1
  230. package/x/loaders/make.js.map +0 -1
  231. package/x/loaders/mock.js.map +0 -1
  232. package/x/loaders/parts/anims.js.map +0 -1
  233. package/x/loaders/parts/ascii-anim.js.map +0 -1
  234. package/x/loaders/parts/error-display.d.ts +0 -1
  235. package/x/loaders/parts/error-display.js +0 -20
  236. package/x/loaders/parts/error-display.js.map +0 -1
  237. package/x/ops/index.js.map +0 -1
  238. package/x/ops/op.js.map +0 -1
  239. package/x/ops/podium.js.map +0 -1
  240. package/x/spa/index.barrel.d.ts +0 -4
  241. package/x/spa/index.barrel.js +0 -3
  242. package/x/spa/index.barrel.js.map +0 -1
  243. package/x/spa/index.d.ts +0 -2
  244. package/x/spa/index.js +0 -2
  245. package/x/spa/index.js.map +0 -1
  246. package/x/spa/plumbing/braces.d.ts +0 -12
  247. package/x/spa/plumbing/braces.js +0 -55
  248. package/x/spa/plumbing/braces.js.map +0 -1
  249. package/x/spa/plumbing/primitives.d.ts +0 -22
  250. package/x/spa/plumbing/primitives.js +0 -65
  251. package/x/spa/plumbing/primitives.js.map +0 -1
  252. package/x/spa/plumbing/router-core.d.ts +0 -13
  253. package/x/spa/plumbing/router-core.js +0 -38
  254. package/x/spa/plumbing/router-core.js.map +0 -1
  255. package/x/spa/plumbing/types.d.ts +0 -35
  256. package/x/spa/plumbing/types.js +0 -2
  257. package/x/spa/plumbing/types.js.map +0 -1
  258. package/x/spa/router.d.ts +0 -13
  259. package/x/spa/router.js +0 -39
  260. package/x/spa/router.js.map +0 -1
  261. package/x/spa/spa.test.d.ts +0 -15
  262. package/x/spa/spa.test.js +0 -78
  263. package/x/spa/spa.test.js.map +0 -1
  264. package/x/tests.test.js +0 -6
  265. package/x/tests.test.js.map +0 -1
  266. package/x/view/utils/contextualize.d.ts +0 -13
  267. package/x/view/utils/contextualize.js +0 -18
  268. package/x/view/utils/contextualize.js.map +0 -1
  269. package/x/view/utils/make-component.d.ts +0 -5
  270. package/x/view/utils/make-component.js +0 -17
  271. package/x/view/utils/make-component.js.map +0 -1
  272. package/x/view/utils/make-view.d.ts +0 -2
  273. package/x/view/utils/make-view.js +0 -32
  274. package/x/view/utils/make-view.js.map +0 -1
  275. package/x/view/utils/parts/capsule.d.ts +0 -12
  276. package/x/view/utils/parts/capsule.js +0 -56
  277. package/x/view/utils/parts/capsule.js.map +0 -1
  278. package/x/view/utils/parts/chain.d.ts +0 -13
  279. package/x/view/utils/parts/chain.js +0 -26
  280. package/x/view/utils/parts/chain.js.map +0 -1
  281. package/x/view/utils/parts/context.d.ts +0 -9
  282. package/x/view/utils/parts/context.js +0 -10
  283. package/x/view/utils/parts/context.js.map +0 -1
  284. package/x/view/utils/parts/directive.d.ts +0 -5
  285. package/x/view/utils/parts/directive.js +0 -20
  286. package/x/view/utils/parts/directive.js.map +0 -1
  287. package/x/view/utils/parts/naked.d.ts +0 -18
  288. package/x/view/utils/parts/naked.js +0 -57
  289. package/x/view/utils/parts/naked.js.map +0 -1
  290. package/x/view/utils/parts/sly-view.d.ts +0 -6
  291. package/x/view/utils/parts/sly-view.js +0 -16
  292. package/x/view/utils/parts/sly-view.js.map +0 -1
  293. package/x/view/view.d.ts +0 -11
  294. package/x/view/view.js +0 -15
  295. package/x/view/view.js.map +0 -1
  296. /package/s/{base → _archive/base}/css-reset.ts +0 -0
  297. /package/s/{base → _archive/base}/element.ts +0 -0
  298. /package/s/{base → _archive/base}/index.ts +0 -0
  299. /package/s/{base → _archive/base}/types.ts +0 -0
  300. /package/s/{base → _archive/base}/use.ts +0 -0
  301. /package/s/{base → _archive/base}/utils/apply-styles.ts +0 -0
  302. /package/s/{base → _archive/base}/utils/attr-watcher.ts +0 -0
  303. /package/s/{base → _archive/base}/utils/mounts.ts +0 -0
  304. /package/s/{base → _archive/base}/utils/reactor.ts +0 -0
  305. /package/s/{base → _archive/base}/utils/states.ts +0 -0
  306. /package/s/{base → _archive/base}/utils/use-attrs.ts +0 -0
  307. /package/s/{spa → _archive/spa}/index.barrel.ts +0 -0
  308. /package/s/{spa → _archive/spa}/index.ts +0 -0
  309. /package/s/{spa → _archive/spa}/plumbing/braces.ts +0 -0
  310. /package/s/{spa → _archive/spa}/plumbing/primitives.ts +0 -0
  311. /package/s/{spa → _archive/spa}/plumbing/router-core.ts +0 -0
  312. /package/s/{spa → _archive/spa}/plumbing/types.ts +0 -0
  313. /package/s/{spa → _archive/spa}/router.ts +0 -0
  314. /package/s/{spa → _archive/spa}/spa.test.ts +0 -0
  315. /package/s/{view → _archive/view}/utils/contextualize.ts +0 -0
  316. /package/s/{view → _archive/view}/utils/make-component.ts +0 -0
  317. /package/s/{view → _archive/view}/utils/make-view.ts +0 -0
  318. /package/s/{view → _archive/view}/utils/parts/capsule.ts +0 -0
  319. /package/s/{view → _archive/view}/utils/parts/chain.ts +0 -0
  320. /package/s/{view → _archive/view}/utils/parts/context.ts +0 -0
  321. /package/s/{view → _archive/view}/utils/parts/directive.ts +0 -0
  322. /package/s/{view → _archive/view}/utils/parts/naked.ts +0 -0
  323. /package/s/{view → _archive/view}/utils/parts/sly-view.ts +0 -0
  324. /package/s/{view → _archive/view}/view.ts +0 -0
  325. /package/s/{loaders → loader}/mock.ts +0 -0
  326. /package/s/{loaders → loader}/parts/anims.ts +0 -0
  327. /package/s/{ops → op}/index.ts +0 -0
  328. /package/s/{ops → op}/op.ts +0 -0
  329. /package/s/{ops → op}/podium.ts +0 -0
  330. /package/s/{ops → op}/types.ts +0 -0
  331. /package/x/{loaders → loader}/index.barrel.js +0 -0
  332. /package/x/{loaders → loader}/index.js +0 -0
  333. /package/x/{loaders → loader}/make.js +0 -0
  334. /package/x/{loaders → loader}/mock.d.ts +0 -0
  335. /package/x/{loaders → loader}/mock.js +0 -0
  336. /package/x/{loaders → loader}/parts/anims.d.ts +0 -0
  337. /package/x/{loaders → loader}/parts/anims.js +0 -0
  338. /package/x/{loaders → loader}/types.js +0 -0
  339. /package/x/{ops → op}/index.d.ts +0 -0
  340. /package/x/{ops → op}/index.js +0 -0
  341. /package/x/{ops → op}/op.d.ts +0 -0
  342. /package/x/{ops → op}/op.js +0 -0
  343. /package/x/{ops → op}/podium.d.ts +0 -0
  344. /package/x/{ops → op}/podium.js +0 -0
  345. /package/x/{ops → op}/types.d.ts +0 -0
  346. /package/x/{ops → op}/types.js +0 -0
  347. /package/x/{tests.test.d.ts → test.d.ts} +0 -0
  348. /package/x/{base → view/common}/css-reset.d.ts +0 -0
  349. /package/x/{base/utils → view/parts}/apply-styles.d.ts +0 -0
  350. /package/x/{base/utils → view/parts}/apply-styles.js +0 -0
@@ -0,0 +1 @@
1
+ export declare const CounterLight: import("../../view/types.js").View<[start: number]>;
@@ -0,0 +1,10 @@
1
+ import { html } from "lit";
2
+ import { light, useSignal } from "../../view/index.js";
3
+ export const CounterLight = light((start) => {
4
+ const $count = useSignal(start);
5
+ const increment = () => $count.value++;
6
+ return html `
7
+ <button @click="${increment}">${$count()}</button>
8
+ `;
9
+ });
10
+ //# sourceMappingURL=counter-light.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"counter-light.js","sourceRoot":"","sources":["../../../s/demo/views/counter-light.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,IAAI,EAAC,MAAM,KAAK,CAAA;AACxB,OAAO,EAAC,KAAK,EAAE,SAAS,EAAC,MAAM,qBAAqB,CAAA;AAEpD,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,KAAa,EAAE,EAAE;IACnD,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,CAAA;IAC/B,MAAM,SAAS,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA;IAEtC,OAAO,IAAI,CAAA;oBACQ,SAAS,KAAK,MAAM,EAAE;EACxC,CAAA;AACF,CAAC,CAAC,CAAA"}
@@ -0,0 +1 @@
1
+ export declare const CounterShadow: import("../../view/types.js").ShadowView<[start: number]>;
@@ -0,0 +1,12 @@
1
+ import { css, html } from "lit";
2
+ import { shadow, useName, useCss, useSignal } from "../../view/index.js";
3
+ export const CounterShadow = shadow((start) => {
4
+ useName("counter-shadow");
5
+ useCss(css `:host{display:inline-block} button{color:cyan}`);
6
+ const $count = useSignal(start);
7
+ const increment = () => $count.value++;
8
+ return html `
9
+ <button @click="${increment}">${$count()}</button>
10
+ `;
11
+ });
12
+ //# sourceMappingURL=counter-shadow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"counter-shadow.js","sourceRoot":"","sources":["../../../s/demo/views/counter-shadow.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,GAAG,EAAE,IAAI,EAAC,MAAM,KAAK,CAAA;AAC7B,OAAO,EAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAC,MAAM,qBAAqB,CAAA;AAEtE,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC,CAAC,KAAa,EAAE,EAAE;IACrD,OAAO,CAAC,gBAAgB,CAAC,CAAA;IACzB,MAAM,CAAC,GAAG,CAAA,gDAAgD,CAAC,CAAA;IAE3D,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,CAAA;IAC/B,MAAM,SAAS,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA;IAEtC,OAAO,IAAI,CAAA;oBACQ,SAAS,KAAK,MAAM,EAAE;EACxC,CAAA;AACF,CAAC,CAAC,CAAA"}
@@ -1,4 +1 @@
1
- declare const DemoComponent_base: import("../../index.js").ComponentClass<typeof import("../../index.js").BaseElement, []>;
2
- export declare class DemoComponent extends DemoComponent_base {
3
- }
4
- export {};
1
+ export declare const Demo: import("../../view/types.js").ShadowView<[]>;
@@ -1,30 +1,34 @@
1
1
  import { css, html } from "lit";
2
- import { view } from "../../view/view.js";
3
- import { CounterView } from "./counter.js";
4
2
  import { LoadersView } from "./loaders.js";
5
- import { MountingTest } from "./mounting.js";
6
- import { cssReset } from "../../base/css-reset.js";
7
- export class DemoComponent extends (view.component(use => {
8
- use.name("demo");
9
- use.styles(cssReset, styles);
3
+ import { CounterLight } from "./counter-light.js";
4
+ import { CounterShadow } from "./counter-shadow.js";
5
+ import { cssReset, shadow, useName, useStyles } from "../../view/index.js";
6
+ export const Demo = shadow(() => {
7
+ useName("demo");
8
+ useStyles(cssReset, styles);
10
9
  return html `
11
- ${MountingTest()}
10
+ <p>light ${CounterLight(123)}</p>
12
11
 
13
- ${CounterView
14
- .props(768, 3)
15
- .children("view")
16
- .render()}
12
+ <p>
13
+ shadow ${CounterShadow.with({
14
+ props: [234],
15
+ attrs: { "data-lol": 555 },
16
+ children: html `<p>hello</p>`,
17
+ })}
18
+ </p>
19
+
20
+ <time-shadow></time-shadow>
21
+ <time-light></time-light>
17
22
 
18
23
  ${LoadersView()}
19
24
  `;
20
- })) {
21
- }
25
+ });
22
26
  const styles = css `
23
- :host {
24
- display: flex;
25
- flex-direction: column;
26
- align-items: center;
27
- gap: 1em;
28
- }
27
+ :host {
28
+ display: flex;
29
+ flex-direction: column;
30
+ align-items: center;
31
+ gap: 1em;
32
+ }
29
33
  `;
30
34
  //# sourceMappingURL=demo.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"demo.js","sourceRoot":"","sources":["../../../s/demo/views/demo.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,GAAG,EAAE,IAAI,EAAC,MAAM,KAAK,CAAA;AAE7B,OAAO,EAAC,IAAI,EAAC,MAAM,oBAAoB,CAAA;AACvC,OAAO,EAAC,WAAW,EAAC,MAAM,cAAc,CAAA;AACxC,OAAO,EAAC,WAAW,EAAC,MAAM,cAAc,CAAA;AACxC,OAAO,EAAC,YAAY,EAAC,MAAM,eAAe,CAAA;AAC1C,OAAO,EAAC,QAAQ,EAAC,MAAM,yBAAyB,CAAA;AAEhD,MAAM,OAAO,aAAc,SAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;IACxD,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAChB,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;IAE5B,OAAO,IAAI,CAAA;IACR,YAAY,EAAE;;IAEd,WAAW;SACX,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;SACb,QAAQ,CAAC,MAAM,CAAC;SAChB,MAAM,EAAE;;IAER,WAAW,EAAE;EACf,CAAA;AACF,CAAC,CAAC,CAAC;CAAG;AAEN,MAAM,MAAM,GAAG,GAAG,CAAA;;;;;;;CAOjB,CAAA"}
1
+ {"version":3,"file":"demo.js","sourceRoot":"","sources":["../../../s/demo/views/demo.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,GAAG,EAAE,IAAI,EAAC,MAAM,KAAK,CAAA;AAC7B,OAAO,EAAC,WAAW,EAAC,MAAM,cAAc,CAAA;AACxC,OAAO,EAAC,YAAY,EAAC,MAAM,oBAAoB,CAAA;AAC/C,OAAO,EAAC,aAAa,EAAC,MAAM,qBAAqB,CAAA;AACjD,OAAO,EAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAC,MAAM,qBAAqB,CAAA;AAExE,MAAM,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,EAAE;IAC/B,OAAO,CAAC,MAAM,CAAC,CAAA;IACf,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;IAE3B,OAAO,IAAI,CAAA;aACC,YAAY,CAAC,GAAG,CAAC;;;YAGlB,aAAa,CAAC,IAAI,CAAC;QAC3B,KAAK,EAAE,CAAC,GAAG,CAAC;QACZ,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC;QACxB,QAAQ,EAAE,IAAI,CAAA,cAAc;KAC5B,CAAC;;;;;;IAMD,WAAW,EAAE;EACf,CAAA;AACF,CAAC,CAAC,CAAA;AAEF,MAAM,MAAM,GAAG,GAAG,CAAA;;;;;;;CAOjB,CAAA"}
@@ -1 +1 @@
1
- export declare const LoadersView: import("../../index.js").View<[]>;
1
+ export declare const LoadersView: import("../../view/types.js").ShadowView<[]>;
@@ -1,13 +1,13 @@
1
1
  import { css, html } from "lit";
2
- import { Op } from "../../ops/op.js";
3
- import { view } from "../../view/view.js";
4
- import { loaders } from "../../loaders/index.js";
5
- import { cssReset } from "../../base/css-reset.js";
6
- export const LoadersView = view(use => () => {
7
- use.name("loaders");
8
- use.styles(cssReset, styles);
9
- const op = use.once(() => Op.loading());
10
- const library = use.once(() => Object.entries(loaders.anims).map(([key, anim]) => ({
2
+ import { Op } from "../../op/op.js";
3
+ import { shadow } from "../../view/shadow.js";
4
+ import { loaders } from "../../loader/index.js";
5
+ import { cssReset, useName, useOnce, useStyles } from "../../view/index.js";
6
+ export const LoadersView = shadow(() => {
7
+ useName("loaders");
8
+ useStyles(cssReset, styles);
9
+ const op = useOnce(() => Op.loading());
10
+ const library = useOnce(() => Object.entries(loaders.anims).map(([key, anim]) => ({
11
11
  key,
12
12
  loader: loaders.make(anim)
13
13
  })));
@@ -1 +1 @@
1
- {"version":3,"file":"loaders.js","sourceRoot":"","sources":["../../../s/demo/views/loaders.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,GAAG,EAAE,IAAI,EAAC,MAAM,KAAK,CAAA;AAC7B,OAAO,EAAC,EAAE,EAAC,MAAM,iBAAiB,CAAA;AAClC,OAAO,EAAC,IAAI,EAAC,MAAM,oBAAoB,CAAA;AACvC,OAAO,EAAC,OAAO,EAAC,MAAM,wBAAwB,CAAA;AAC9C,OAAO,EAAC,QAAQ,EAAC,MAAM,yBAAyB,CAAA;AAEhD,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE;IAC3C,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IACnB,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;IAE5B,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAA;IAEvC,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAC7B,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QACnD,GAAG;QACH,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;KAC1B,CAAC,CAAC,CACH,CAAA;IAED,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,EAAC,GAAG,EAAE,MAAM,EAAC,EAAE,EAAE,CAAC,IAAI,CAAA;oBACvB,GAAG;WACZ,GAAG;WACH,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC;;EAE/B,CAAC,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,MAAM,MAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyCjB,CAAA"}
1
+ {"version":3,"file":"loaders.js","sourceRoot":"","sources":["../../../s/demo/views/loaders.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,GAAG,EAAE,IAAI,EAAC,MAAM,KAAK,CAAA;AAC7B,OAAO,EAAC,EAAE,EAAC,MAAM,gBAAgB,CAAA;AACjC,OAAO,EAAC,MAAM,EAAC,MAAM,sBAAsB,CAAA;AAC3C,OAAO,EAAC,OAAO,EAAC,MAAM,uBAAuB,CAAA;AAC7C,OAAO,EAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAC,MAAM,qBAAqB,CAAA;AAEzE,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,EAAE;IACtC,OAAO,CAAC,SAAS,CAAC,CAAA;IAClB,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;IAE3B,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAA;IAEtC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,CAC5B,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QACnD,GAAG;QACH,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;KAC1B,CAAC,CAAC,CACH,CAAA;IAED,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,EAAC,GAAG,EAAE,MAAM,EAAC,EAAE,EAAE,CAAC,IAAI,CAAA;oBACvB,GAAG;WACZ,GAAG;WACH,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC;;EAE/B,CAAC,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,MAAM,MAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyCjB,CAAA"}
@@ -1,20 +1,5 @@
1
- export declare const CounterView: import("../../index.js").View<[start: number, step: number]>;
2
- declare const CounterComponent_base: import("../../index.js").ComponentClass<{
1
+ declare const TimeLight_base: {
3
2
  new (): {
4
- attrs: import("../../index.js").AttrTypes<{
5
- start: NumberConstructor;
6
- step: NumberConstructor;
7
- }>;
8
- readonly shadow: ShadowRoot;
9
- "__#private@#use": import("../../index.js").Use;
10
- "__#private@#mountCount": number;
11
- "__#private@#reactor": import("../../base/utils/reactor.js").Reactor;
12
- "__#private@#attrWatcher": import("../../base/utils/attr-watcher.js").AttrWatcher;
13
- "__#private@#part"?: import("lit-html").RootPart;
14
- createShadow(): ShadowRoot;
15
- render(_use: import("../../index.js").Use): import("../../index.js").Content;
16
- updateNow: () => void;
17
- update: import("@e280/stz").DebounceReturn<() => void>;
18
3
  connectedCallback(): void;
19
4
  disconnectedCallback(): void;
20
5
  accessKey: string;
@@ -368,8 +353,7 @@ declare const CounterComponent_base: import("../../index.js").ComponentClass<{
368
353
  blur(): void;
369
354
  focus(options?: FocusOptions): void;
370
355
  };
371
- styles: import("lit").CSSResultGroup | undefined;
372
- }, [start: number, step: number]>;
373
- export declare class CounterComponent extends CounterComponent_base {
356
+ };
357
+ export declare class TimeLight extends TimeLight_base {
374
358
  }
375
359
  export {};
@@ -0,0 +1,16 @@
1
+ import { html } from "lit";
2
+ import { cycle, nap } from "@e280/stz";
3
+ import { useMount, useSignal } from "../../view/index.js";
4
+ import { lightElement } from "../../view/elements/light.js";
5
+ export class TimeLight extends lightElement(() => {
6
+ const $time = useSignal(Date.now());
7
+ useMount(() => cycle(async () => {
8
+ await nap(100);
9
+ $time(Date.now());
10
+ }));
11
+ return html `
12
+ <p>${$time()}</p>
13
+ `;
14
+ }) {
15
+ }
16
+ //# sourceMappingURL=time-light.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"time-light.js","sourceRoot":"","sources":["../../../s/demo/views/time-light.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,IAAI,EAAC,MAAM,KAAK,CAAA;AACxB,OAAO,EAAC,KAAK,EAAE,GAAG,EAAC,MAAM,WAAW,CAAA;AACpC,OAAO,EAAC,QAAQ,EAAE,SAAS,EAAC,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAC,YAAY,EAAC,MAAM,8BAA8B,CAAA;AAEzD,MAAM,OAAO,SAAU,SAAQ,YAAY,CAAC,GAAG,EAAE;IAChD,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;IAEnC,QAAQ,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,IAAG,EAAE;QAC9B,MAAM,GAAG,CAAC,GAAG,CAAC,CAAA;QACd,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;IAClB,CAAC,CAAC,CAAC,CAAA;IAEH,OAAO,IAAI,CAAA;OACL,KAAK,EAAE;EACZ,CAAA;AACF,CAAC,CAAC;CAAG"}
@@ -0,0 +1,365 @@
1
+ declare const TimeShadow_base: {
2
+ new (): {
3
+ "__#private@#cx": import("../../view/parts/cx.js").ShadowCx;
4
+ "__#private@#hookscope": import("../../view/hooks/plumbing/hookscope.js").Hookscope;
5
+ "__#private@#reactivity": import("../../view/parts/reactivity.js").Reactivity;
6
+ "__#private@#shadow": ShadowRoot;
7
+ "__#private@#renderContent"(): import("../../view/types.js").Content;
8
+ render(): void;
9
+ connectedCallback(): void;
10
+ disconnectedCallback(): void;
11
+ accessKey: string;
12
+ readonly accessKeyLabel: string;
13
+ autocapitalize: string;
14
+ autocorrect: boolean;
15
+ dir: string;
16
+ draggable: boolean;
17
+ hidden: boolean;
18
+ inert: boolean;
19
+ innerText: string;
20
+ lang: string;
21
+ readonly offsetHeight: number;
22
+ readonly offsetLeft: number;
23
+ readonly offsetParent: Element | null;
24
+ readonly offsetTop: number;
25
+ readonly offsetWidth: number;
26
+ outerText: string;
27
+ popover: string | null;
28
+ spellcheck: boolean;
29
+ title: string;
30
+ translate: boolean;
31
+ writingSuggestions: string;
32
+ attachInternals(): ElementInternals;
33
+ click(): void;
34
+ hidePopover(): void;
35
+ showPopover(): void;
36
+ togglePopover(options?: boolean): boolean;
37
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
38
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
39
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
40
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
41
+ readonly attributes: NamedNodeMap;
42
+ get classList(): DOMTokenList;
43
+ set classList(value: string);
44
+ className: string;
45
+ readonly clientHeight: number;
46
+ readonly clientLeft: number;
47
+ readonly clientTop: number;
48
+ readonly clientWidth: number;
49
+ readonly currentCSSZoom: number;
50
+ id: string;
51
+ innerHTML: string;
52
+ readonly localName: string;
53
+ readonly namespaceURI: string | null;
54
+ onfullscreenchange: ((this: Element, ev: Event) => any) | null;
55
+ onfullscreenerror: ((this: Element, ev: Event) => any) | null;
56
+ outerHTML: string;
57
+ readonly ownerDocument: Document;
58
+ get part(): DOMTokenList;
59
+ set part(value: string);
60
+ readonly prefix: string | null;
61
+ readonly scrollHeight: number;
62
+ scrollLeft: number;
63
+ scrollTop: number;
64
+ readonly scrollWidth: number;
65
+ readonly shadowRoot: ShadowRoot | null;
66
+ slot: string;
67
+ readonly tagName: string;
68
+ attachShadow(init: ShadowRootInit): ShadowRoot;
69
+ checkVisibility(options?: CheckVisibilityOptions): boolean;
70
+ closest<K extends keyof HTMLElementTagNameMap>(selector: K): HTMLElementTagNameMap[K] | null;
71
+ closest<K extends keyof SVGElementTagNameMap>(selector: K): SVGElementTagNameMap[K] | null;
72
+ closest<K extends keyof MathMLElementTagNameMap>(selector: K): MathMLElementTagNameMap[K] | null;
73
+ closest<E extends Element = Element>(selectors: string): E | null;
74
+ computedStyleMap(): StylePropertyMapReadOnly;
75
+ getAttribute(qualifiedName: string): string | null;
76
+ getAttributeNS(namespace: string | null, localName: string): string | null;
77
+ getAttributeNames(): string[];
78
+ getAttributeNode(qualifiedName: string): Attr | null;
79
+ getAttributeNodeNS(namespace: string | null, localName: string): Attr | null;
80
+ getBoundingClientRect(): DOMRect;
81
+ getClientRects(): DOMRectList;
82
+ getElementsByClassName(classNames: string): HTMLCollectionOf<Element>;
83
+ getElementsByTagName<K extends keyof HTMLElementTagNameMap>(qualifiedName: K): HTMLCollectionOf<HTMLElementTagNameMap[K]>;
84
+ getElementsByTagName<K extends keyof SVGElementTagNameMap>(qualifiedName: K): HTMLCollectionOf<SVGElementTagNameMap[K]>;
85
+ getElementsByTagName<K extends keyof MathMLElementTagNameMap>(qualifiedName: K): HTMLCollectionOf<MathMLElementTagNameMap[K]>;
86
+ getElementsByTagName<K extends keyof HTMLElementDeprecatedTagNameMap>(qualifiedName: K): HTMLCollectionOf<HTMLElementDeprecatedTagNameMap[K]>;
87
+ getElementsByTagName(qualifiedName: string): HTMLCollectionOf<Element>;
88
+ getElementsByTagNameNS(namespaceURI: "http://www.w3.org/1999/xhtml", localName: string): HTMLCollectionOf<HTMLElement>;
89
+ getElementsByTagNameNS(namespaceURI: "http://www.w3.org/2000/svg", localName: string): HTMLCollectionOf<SVGElement>;
90
+ getElementsByTagNameNS(namespaceURI: "http://www.w3.org/1998/Math/MathML", localName: string): HTMLCollectionOf<MathMLElement>;
91
+ getElementsByTagNameNS(namespace: string | null, localName: string): HTMLCollectionOf<Element>;
92
+ getHTML(options?: GetHTMLOptions): string;
93
+ hasAttribute(qualifiedName: string): boolean;
94
+ hasAttributeNS(namespace: string | null, localName: string): boolean;
95
+ hasAttributes(): boolean;
96
+ hasPointerCapture(pointerId: number): boolean;
97
+ insertAdjacentElement(where: InsertPosition, element: Element): Element | null;
98
+ insertAdjacentHTML(position: InsertPosition, string: string): void;
99
+ insertAdjacentText(where: InsertPosition, data: string): void;
100
+ matches(selectors: string): boolean;
101
+ releasePointerCapture(pointerId: number): void;
102
+ removeAttribute(qualifiedName: string): void;
103
+ removeAttributeNS(namespace: string | null, localName: string): void;
104
+ removeAttributeNode(attr: Attr): Attr;
105
+ requestFullscreen(options?: FullscreenOptions): Promise<void>;
106
+ requestPointerLock(options?: PointerLockOptions): Promise<void>;
107
+ scroll(options?: ScrollToOptions): void;
108
+ scroll(x: number, y: number): void;
109
+ scrollBy(options?: ScrollToOptions): void;
110
+ scrollBy(x: number, y: number): void;
111
+ scrollIntoView(arg?: boolean | ScrollIntoViewOptions): void;
112
+ scrollTo(options?: ScrollToOptions): void;
113
+ scrollTo(x: number, y: number): void;
114
+ setAttribute(qualifiedName: string, value: string): void;
115
+ setAttributeNS(namespace: string | null, qualifiedName: string, value: string): void;
116
+ setAttributeNode(attr: Attr): Attr | null;
117
+ setAttributeNodeNS(attr: Attr): Attr | null;
118
+ setHTMLUnsafe(html: string): void;
119
+ setPointerCapture(pointerId: number): void;
120
+ toggleAttribute(qualifiedName: string, force?: boolean): boolean;
121
+ webkitMatchesSelector(selectors: string): boolean;
122
+ get textContent(): string;
123
+ set textContent(value: string | null);
124
+ readonly baseURI: string;
125
+ readonly childNodes: NodeListOf<ChildNode>;
126
+ readonly firstChild: ChildNode | null;
127
+ readonly isConnected: boolean;
128
+ readonly lastChild: ChildNode | null;
129
+ readonly nextSibling: ChildNode | null;
130
+ readonly nodeName: string;
131
+ readonly nodeType: number;
132
+ nodeValue: string | null;
133
+ readonly parentElement: HTMLElement | null;
134
+ readonly parentNode: ParentNode | null;
135
+ readonly previousSibling: ChildNode | null;
136
+ appendChild<T extends Node>(node: T): T;
137
+ cloneNode(subtree?: boolean): Node;
138
+ compareDocumentPosition(other: Node): number;
139
+ contains(other: Node | null): boolean;
140
+ getRootNode(options?: GetRootNodeOptions): Node;
141
+ hasChildNodes(): boolean;
142
+ insertBefore<T extends Node>(node: T, child: Node | null): T;
143
+ isDefaultNamespace(namespace: string | null): boolean;
144
+ isEqualNode(otherNode: Node | null): boolean;
145
+ isSameNode(otherNode: Node | null): boolean;
146
+ lookupNamespaceURI(prefix: string | null): string | null;
147
+ lookupPrefix(namespace: string | null): string | null;
148
+ normalize(): void;
149
+ removeChild<T extends Node>(child: T): T;
150
+ replaceChild<T extends Node>(node: Node, child: T): T;
151
+ readonly ELEMENT_NODE: 1;
152
+ readonly ATTRIBUTE_NODE: 2;
153
+ readonly TEXT_NODE: 3;
154
+ readonly CDATA_SECTION_NODE: 4;
155
+ readonly ENTITY_REFERENCE_NODE: 5;
156
+ readonly ENTITY_NODE: 6;
157
+ readonly PROCESSING_INSTRUCTION_NODE: 7;
158
+ readonly COMMENT_NODE: 8;
159
+ readonly DOCUMENT_NODE: 9;
160
+ readonly DOCUMENT_TYPE_NODE: 10;
161
+ readonly DOCUMENT_FRAGMENT_NODE: 11;
162
+ readonly NOTATION_NODE: 12;
163
+ readonly DOCUMENT_POSITION_DISCONNECTED: 1;
164
+ readonly DOCUMENT_POSITION_PRECEDING: 2;
165
+ readonly DOCUMENT_POSITION_FOLLOWING: 4;
166
+ readonly DOCUMENT_POSITION_CONTAINS: 8;
167
+ readonly DOCUMENT_POSITION_CONTAINED_BY: 16;
168
+ readonly DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: 32;
169
+ dispatchEvent(event: Event): boolean;
170
+ ariaActiveDescendantElement: Element | null;
171
+ ariaAtomic: string | null;
172
+ ariaAutoComplete: string | null;
173
+ ariaBrailleLabel: string | null;
174
+ ariaBrailleRoleDescription: string | null;
175
+ ariaBusy: string | null;
176
+ ariaChecked: string | null;
177
+ ariaColCount: string | null;
178
+ ariaColIndex: string | null;
179
+ ariaColIndexText: string | null;
180
+ ariaColSpan: string | null;
181
+ ariaControlsElements: ReadonlyArray<Element> | null;
182
+ ariaCurrent: string | null;
183
+ ariaDescribedByElements: ReadonlyArray<Element> | null;
184
+ ariaDescription: string | null;
185
+ ariaDetailsElements: ReadonlyArray<Element> | null;
186
+ ariaDisabled: string | null;
187
+ ariaErrorMessageElements: ReadonlyArray<Element> | null;
188
+ ariaExpanded: string | null;
189
+ ariaFlowToElements: ReadonlyArray<Element> | null;
190
+ ariaHasPopup: string | null;
191
+ ariaHidden: string | null;
192
+ ariaInvalid: string | null;
193
+ ariaKeyShortcuts: string | null;
194
+ ariaLabel: string | null;
195
+ ariaLabelledByElements: ReadonlyArray<Element> | null;
196
+ ariaLevel: string | null;
197
+ ariaLive: string | null;
198
+ ariaModal: string | null;
199
+ ariaMultiLine: string | null;
200
+ ariaMultiSelectable: string | null;
201
+ ariaOrientation: string | null;
202
+ ariaOwnsElements: ReadonlyArray<Element> | null;
203
+ ariaPlaceholder: string | null;
204
+ ariaPosInSet: string | null;
205
+ ariaPressed: string | null;
206
+ ariaReadOnly: string | null;
207
+ ariaRelevant: string | null;
208
+ ariaRequired: string | null;
209
+ ariaRoleDescription: string | null;
210
+ ariaRowCount: string | null;
211
+ ariaRowIndex: string | null;
212
+ ariaRowIndexText: string | null;
213
+ ariaRowSpan: string | null;
214
+ ariaSelected: string | null;
215
+ ariaSetSize: string | null;
216
+ ariaSort: string | null;
217
+ ariaValueMax: string | null;
218
+ ariaValueMin: string | null;
219
+ ariaValueNow: string | null;
220
+ ariaValueText: string | null;
221
+ role: string | null;
222
+ animate(keyframes: Keyframe[] | PropertyIndexedKeyframes | null, options?: number | KeyframeAnimationOptions): Animation;
223
+ getAnimations(options?: GetAnimationsOptions): Animation[];
224
+ after(...nodes: (Node | string)[]): void;
225
+ before(...nodes: (Node | string)[]): void;
226
+ remove(): void;
227
+ replaceWith(...nodes: (Node | string)[]): void;
228
+ readonly nextElementSibling: Element | null;
229
+ readonly previousElementSibling: Element | null;
230
+ readonly childElementCount: number;
231
+ readonly children: HTMLCollection;
232
+ readonly firstElementChild: Element | null;
233
+ readonly lastElementChild: Element | null;
234
+ append(...nodes: (Node | string)[]): void;
235
+ prepend(...nodes: (Node | string)[]): void;
236
+ querySelector<K extends keyof HTMLElementTagNameMap>(selectors: K): HTMLElementTagNameMap[K] | null;
237
+ querySelector<K extends keyof SVGElementTagNameMap>(selectors: K): SVGElementTagNameMap[K] | null;
238
+ querySelector<K extends keyof MathMLElementTagNameMap>(selectors: K): MathMLElementTagNameMap[K] | null;
239
+ querySelector<K extends keyof HTMLElementDeprecatedTagNameMap>(selectors: K): HTMLElementDeprecatedTagNameMap[K] | null;
240
+ querySelector<E extends Element = Element>(selectors: string): E | null;
241
+ querySelectorAll<K extends keyof HTMLElementTagNameMap>(selectors: K): NodeListOf<HTMLElementTagNameMap[K]>;
242
+ querySelectorAll<K extends keyof SVGElementTagNameMap>(selectors: K): NodeListOf<SVGElementTagNameMap[K]>;
243
+ querySelectorAll<K extends keyof MathMLElementTagNameMap>(selectors: K): NodeListOf<MathMLElementTagNameMap[K]>;
244
+ querySelectorAll<K extends keyof HTMLElementDeprecatedTagNameMap>(selectors: K): NodeListOf<HTMLElementDeprecatedTagNameMap[K]>;
245
+ querySelectorAll<E extends Element = Element>(selectors: string): NodeListOf<E>;
246
+ replaceChildren(...nodes: (Node | string)[]): void;
247
+ readonly assignedSlot: HTMLSlotElement | null;
248
+ readonly attributeStyleMap: StylePropertyMap;
249
+ get style(): CSSStyleDeclaration;
250
+ set style(cssText: string);
251
+ contentEditable: string;
252
+ enterKeyHint: string;
253
+ inputMode: string;
254
+ readonly isContentEditable: boolean;
255
+ onabort: ((this: GlobalEventHandlers, ev: UIEvent) => any) | null;
256
+ onanimationcancel: ((this: GlobalEventHandlers, ev: AnimationEvent) => any) | null;
257
+ onanimationend: ((this: GlobalEventHandlers, ev: AnimationEvent) => any) | null;
258
+ onanimationiteration: ((this: GlobalEventHandlers, ev: AnimationEvent) => any) | null;
259
+ onanimationstart: ((this: GlobalEventHandlers, ev: AnimationEvent) => any) | null;
260
+ onauxclick: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;
261
+ onbeforeinput: ((this: GlobalEventHandlers, ev: InputEvent) => any) | null;
262
+ onbeforematch: ((this: GlobalEventHandlers, ev: Event) => any) | null;
263
+ onbeforetoggle: ((this: GlobalEventHandlers, ev: ToggleEvent) => any) | null;
264
+ onblur: ((this: GlobalEventHandlers, ev: FocusEvent) => any) | null;
265
+ oncancel: ((this: GlobalEventHandlers, ev: Event) => any) | null;
266
+ oncanplay: ((this: GlobalEventHandlers, ev: Event) => any) | null;
267
+ oncanplaythrough: ((this: GlobalEventHandlers, ev: Event) => any) | null;
268
+ onchange: ((this: GlobalEventHandlers, ev: Event) => any) | null;
269
+ onclick: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;
270
+ onclose: ((this: GlobalEventHandlers, ev: Event) => any) | null;
271
+ oncontextlost: ((this: GlobalEventHandlers, ev: Event) => any) | null;
272
+ oncontextmenu: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;
273
+ oncontextrestored: ((this: GlobalEventHandlers, ev: Event) => any) | null;
274
+ oncopy: ((this: GlobalEventHandlers, ev: ClipboardEvent) => any) | null;
275
+ oncuechange: ((this: GlobalEventHandlers, ev: Event) => any) | null;
276
+ oncut: ((this: GlobalEventHandlers, ev: ClipboardEvent) => any) | null;
277
+ ondblclick: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;
278
+ ondrag: ((this: GlobalEventHandlers, ev: DragEvent) => any) | null;
279
+ ondragend: ((this: GlobalEventHandlers, ev: DragEvent) => any) | null;
280
+ ondragenter: ((this: GlobalEventHandlers, ev: DragEvent) => any) | null;
281
+ ondragleave: ((this: GlobalEventHandlers, ev: DragEvent) => any) | null;
282
+ ondragover: ((this: GlobalEventHandlers, ev: DragEvent) => any) | null;
283
+ ondragstart: ((this: GlobalEventHandlers, ev: DragEvent) => any) | null;
284
+ ondrop: ((this: GlobalEventHandlers, ev: DragEvent) => any) | null;
285
+ ondurationchange: ((this: GlobalEventHandlers, ev: Event) => any) | null;
286
+ onemptied: ((this: GlobalEventHandlers, ev: Event) => any) | null;
287
+ onended: ((this: GlobalEventHandlers, ev: Event) => any) | null;
288
+ onerror: OnErrorEventHandler;
289
+ onfocus: ((this: GlobalEventHandlers, ev: FocusEvent) => any) | null;
290
+ onformdata: ((this: GlobalEventHandlers, ev: FormDataEvent) => any) | null;
291
+ ongotpointercapture: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;
292
+ oninput: ((this: GlobalEventHandlers, ev: Event) => any) | null;
293
+ oninvalid: ((this: GlobalEventHandlers, ev: Event) => any) | null;
294
+ onkeydown: ((this: GlobalEventHandlers, ev: KeyboardEvent) => any) | null;
295
+ onkeypress: ((this: GlobalEventHandlers, ev: KeyboardEvent) => any) | null;
296
+ onkeyup: ((this: GlobalEventHandlers, ev: KeyboardEvent) => any) | null;
297
+ onload: ((this: GlobalEventHandlers, ev: Event) => any) | null;
298
+ onloadeddata: ((this: GlobalEventHandlers, ev: Event) => any) | null;
299
+ onloadedmetadata: ((this: GlobalEventHandlers, ev: Event) => any) | null;
300
+ onloadstart: ((this: GlobalEventHandlers, ev: Event) => any) | null;
301
+ onlostpointercapture: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;
302
+ onmousedown: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;
303
+ onmouseenter: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;
304
+ onmouseleave: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;
305
+ onmousemove: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;
306
+ onmouseout: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;
307
+ onmouseover: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;
308
+ onmouseup: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;
309
+ onpaste: ((this: GlobalEventHandlers, ev: ClipboardEvent) => any) | null;
310
+ onpause: ((this: GlobalEventHandlers, ev: Event) => any) | null;
311
+ onplay: ((this: GlobalEventHandlers, ev: Event) => any) | null;
312
+ onplaying: ((this: GlobalEventHandlers, ev: Event) => any) | null;
313
+ onpointercancel: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;
314
+ onpointerdown: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;
315
+ onpointerenter: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;
316
+ onpointerleave: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;
317
+ onpointermove: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;
318
+ onpointerout: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;
319
+ onpointerover: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;
320
+ onpointerrawupdate: ((this: GlobalEventHandlers, ev: Event) => any) | null;
321
+ onpointerup: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;
322
+ onprogress: ((this: GlobalEventHandlers, ev: ProgressEvent) => any) | null;
323
+ onratechange: ((this: GlobalEventHandlers, ev: Event) => any) | null;
324
+ onreset: ((this: GlobalEventHandlers, ev: Event) => any) | null;
325
+ onresize: ((this: GlobalEventHandlers, ev: UIEvent) => any) | null;
326
+ onscroll: ((this: GlobalEventHandlers, ev: Event) => any) | null;
327
+ onscrollend: ((this: GlobalEventHandlers, ev: Event) => any) | null;
328
+ onsecuritypolicyviolation: ((this: GlobalEventHandlers, ev: SecurityPolicyViolationEvent) => any) | null;
329
+ onseeked: ((this: GlobalEventHandlers, ev: Event) => any) | null;
330
+ onseeking: ((this: GlobalEventHandlers, ev: Event) => any) | null;
331
+ onselect: ((this: GlobalEventHandlers, ev: Event) => any) | null;
332
+ onselectionchange: ((this: GlobalEventHandlers, ev: Event) => any) | null;
333
+ onselectstart: ((this: GlobalEventHandlers, ev: Event) => any) | null;
334
+ onslotchange: ((this: GlobalEventHandlers, ev: Event) => any) | null;
335
+ onstalled: ((this: GlobalEventHandlers, ev: Event) => any) | null;
336
+ onsubmit: ((this: GlobalEventHandlers, ev: SubmitEvent) => any) | null;
337
+ onsuspend: ((this: GlobalEventHandlers, ev: Event) => any) | null;
338
+ ontimeupdate: ((this: GlobalEventHandlers, ev: Event) => any) | null;
339
+ ontoggle: ((this: GlobalEventHandlers, ev: ToggleEvent) => any) | null;
340
+ ontouchcancel?: ((this: GlobalEventHandlers, ev: TouchEvent) => any) | null | undefined;
341
+ ontouchend?: ((this: GlobalEventHandlers, ev: TouchEvent) => any) | null | undefined;
342
+ ontouchmove?: ((this: GlobalEventHandlers, ev: TouchEvent) => any) | null | undefined;
343
+ ontouchstart?: ((this: GlobalEventHandlers, ev: TouchEvent) => any) | null | undefined;
344
+ ontransitioncancel: ((this: GlobalEventHandlers, ev: TransitionEvent) => any) | null;
345
+ ontransitionend: ((this: GlobalEventHandlers, ev: TransitionEvent) => any) | null;
346
+ ontransitionrun: ((this: GlobalEventHandlers, ev: TransitionEvent) => any) | null;
347
+ ontransitionstart: ((this: GlobalEventHandlers, ev: TransitionEvent) => any) | null;
348
+ onvolumechange: ((this: GlobalEventHandlers, ev: Event) => any) | null;
349
+ onwaiting: ((this: GlobalEventHandlers, ev: Event) => any) | null;
350
+ onwebkitanimationend: ((this: GlobalEventHandlers, ev: Event) => any) | null;
351
+ onwebkitanimationiteration: ((this: GlobalEventHandlers, ev: Event) => any) | null;
352
+ onwebkitanimationstart: ((this: GlobalEventHandlers, ev: Event) => any) | null;
353
+ onwebkittransitionend: ((this: GlobalEventHandlers, ev: Event) => any) | null;
354
+ onwheel: ((this: GlobalEventHandlers, ev: WheelEvent) => any) | null;
355
+ autofocus: boolean;
356
+ readonly dataset: DOMStringMap;
357
+ nonce?: string;
358
+ tabIndex: number;
359
+ blur(): void;
360
+ focus(options?: FocusOptions): void;
361
+ };
362
+ };
363
+ export declare class TimeShadow extends TimeShadow_base {
364
+ }
365
+ export {};
@@ -0,0 +1,18 @@
1
+ import { css, html } from "lit";
2
+ import { cycle, nap } from "@e280/stz";
3
+ import { shadowElement } from "../../view/elements/shadow.js";
4
+ import { useCss, useMount, useName, useSignal } from "../../view/index.js";
5
+ export class TimeShadow extends shadowElement(() => {
6
+ useName("time-shadow");
7
+ useCss(css `:host{display:inline-block} button{color:cyan}`);
8
+ const $time = useSignal(Date.now());
9
+ useMount(() => cycle(async () => {
10
+ await nap(100);
11
+ $time(Date.now());
12
+ }));
13
+ return html `
14
+ <p>${$time()}</p>
15
+ `;
16
+ }) {
17
+ }
18
+ //# sourceMappingURL=time-shadow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"time-shadow.js","sourceRoot":"","sources":["../../../s/demo/views/time-shadow.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,GAAG,EAAE,IAAI,EAAC,MAAM,KAAK,CAAA;AAC7B,OAAO,EAAC,KAAK,EAAE,GAAG,EAAC,MAAM,WAAW,CAAA;AACpC,OAAO,EAAC,aAAa,EAAC,MAAM,+BAA+B,CAAA;AAC3D,OAAO,EAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAC,MAAM,qBAAqB,CAAA;AAExE,MAAM,OAAO,UAAW,SAAQ,aAAa,CAAC,GAAG,EAAE;IAClD,OAAO,CAAC,aAAa,CAAC,CAAA;IACtB,MAAM,CAAC,GAAG,CAAA,gDAAgD,CAAC,CAAA;IAE3D,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;IAEnC,QAAQ,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,IAAG,EAAE;QAC9B,MAAM,GAAG,CAAC,GAAG,CAAC,CAAA;QACd,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;IAClB,CAAC,CAAC,CAAC,CAAA;IAEH,OAAO,IAAI,CAAA;OACL,KAAK,EAAE;EACZ,CAAA;AACF,CAAC,CAAC;CAAG"}
@@ -1,10 +1,11 @@
1
1
  import { AttrSpec } from "../types.js";
2
+ import { AttrSpecOptions } from "./parts/attr-spec.js";
2
3
  export declare function attrs(element: HTMLElement): {
3
4
  strings: Record<string, string | undefined>;
4
5
  numbers: Record<string, number | undefined>;
5
6
  booleans: Record<string, boolean | undefined>;
6
- on: (fn: () => void) => () => void;
7
- spec: <A extends AttrSpec>(spec: A) => import("../types.js").AttrTypes<A>;
7
+ on: (fn: MutationCallback) => () => void;
8
+ spec: <A extends AttrSpec>(spec: A, options?: AttrSpecOptions) => import("../types.js").AttrTypes<A>;
8
9
  };
9
10
  export declare namespace attrs {
10
11
  var get: {
@@ -1,7 +1,7 @@
1
1
  import { onAttrs } from "./parts/on-attrs.js";
2
- import { attrSpec } from "./parts/attr-spec.js";
3
2
  import { AttrProxies } from "./parts/attr-proxies.js";
4
3
  import { attrGet, attrSet } from "./parts/attr-fns.js";
4
+ import { attrSpec } from "./parts/attr-spec.js";
5
5
  export function attrs(element) {
6
6
  const proxies = new AttrProxies(element);
7
7
  return {
@@ -9,7 +9,7 @@ export function attrs(element) {
9
9
  numbers: proxies.numbers,
10
10
  booleans: proxies.booleans,
11
11
  on: (fn) => onAttrs(element, fn),
12
- spec: (spec) => attrSpec(element, spec),
12
+ spec: (spec, options = {}) => attrSpec(element, spec, options),
13
13
  };
14
14
  }
15
15
  attrs.get = attrGet;
@@ -1 +1 @@
1
- {"version":3,"file":"attrs.js","sourceRoot":"","sources":["../../../s/dom/attrs/attrs.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,OAAO,EAAC,MAAM,qBAAqB,CAAA;AAC3C,OAAO,EAAC,QAAQ,EAAC,MAAM,sBAAsB,CAAA;AAC7C,OAAO,EAAC,WAAW,EAAC,MAAM,yBAAyB,CAAA;AACnD,OAAO,EAAC,OAAO,EAAE,OAAO,EAAC,MAAM,qBAAqB,CAAA;AAEpD,MAAM,UAAU,KAAK,CAAC,OAAoB;IACzC,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAA;IACxC,OAAO;QACN,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,EAAE,EAAE,CAAC,EAAc,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;QAC5C,IAAI,EAAE,CAAqB,IAAO,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC;KAC9D,CAAA;AACF,CAAC;AAED,KAAK,CAAC,GAAG,GAAG,OAAO,CAAA;AACnB,KAAK,CAAC,GAAG,GAAG,OAAO,CAAA"}
1
+ {"version":3,"file":"attrs.js","sourceRoot":"","sources":["../../../s/dom/attrs/attrs.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,OAAO,EAAC,MAAM,qBAAqB,CAAA;AAC3C,OAAO,EAAC,WAAW,EAAC,MAAM,yBAAyB,CAAA;AACnD,OAAO,EAAC,OAAO,EAAE,OAAO,EAAC,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAC,QAAQ,EAAkB,MAAM,sBAAsB,CAAA;AAE9D,MAAM,UAAU,KAAK,CAAC,OAAoB;IACzC,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAA;IACxC,OAAO;QACN,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,EAAE,EAAE,CAAC,EAAoB,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;QAClD,IAAI,EAAE,CAAqB,IAAO,EAAE,UAA2B,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC;KACtG,CAAA;AACF,CAAC;AAED,KAAK,CAAC,GAAG,GAAG,OAAO,CAAA;AACnB,KAAK,CAAC,GAAG,GAAG,OAAO,CAAA"}