@e280/sly 0.2.0-8 → 0.2.0

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 (293) hide show
  1. package/README.md +400 -98
  2. package/package.json +14 -7
  3. package/s/base/element.ts +76 -0
  4. package/s/base/index.ts +6 -0
  5. package/s/{views → base}/use.ts +22 -14
  6. package/s/base/utils/attr-watcher.ts +22 -0
  7. package/s/base/utils/reactor.ts +32 -0
  8. package/s/base/utils/states.ts +49 -0
  9. package/s/base/utils/use-attrs.ts +36 -0
  10. package/s/demo/demo.bundle.ts +6 -7
  11. package/s/demo/views/counter.ts +21 -24
  12. package/s/demo/views/demo.ts +9 -6
  13. package/s/demo/views/{incredi.ts → fastcount.ts} +7 -6
  14. package/s/demo/views/loaders.ts +7 -7
  15. package/s/dom/attrs/attrs.ts +21 -0
  16. package/s/dom/attrs/parts/attr-fns.ts +68 -0
  17. package/s/dom/attrs/parts/attr-proxies.ts +35 -0
  18. package/s/dom/attrs/parts/attr-spec.ts +29 -0
  19. package/s/dom/attrs/parts/on-attrs.ts +8 -0
  20. package/s/dom/dom.ts +23 -60
  21. package/s/dom/index.ts +4 -0
  22. package/s/dom/parts/dom-scope.ts +46 -0
  23. package/s/dom/parts/el.ts +14 -0
  24. package/s/dom/parts/elmer.ts +38 -0
  25. package/s/dom/parts/eve.ts +24 -0
  26. package/s/dom/parts/mk.ts +9 -0
  27. package/s/dom/parts/queries.ts +26 -0
  28. package/s/dom/{register.ts → parts/register.ts} +2 -10
  29. package/s/dom/types.ts +50 -0
  30. package/s/index.html.ts +4 -3
  31. package/s/index.ts +7 -20
  32. package/s/loaders/index.barrel.ts +10 -0
  33. package/s/loaders/index.ts +4 -0
  34. package/s/loaders/make.ts +14 -0
  35. package/s/loaders/mock.ts +11 -0
  36. package/s/{ops/loaders → loaders}/parts/anims.ts +1 -1
  37. package/s/{ops/loaders → loaders}/parts/ascii-anim.ts +6 -5
  38. package/s/{ops/loaders → loaders}/parts/error-display.ts +2 -2
  39. package/s/loaders/types.ts +6 -0
  40. package/s/loot/index.barrel.ts +5 -0
  41. package/s/loot/index.ts +2 -3
  42. package/s/ops/index.ts +5 -0
  43. package/s/ops/op.ts +1 -0
  44. package/s/spa/index.barrel.ts +6 -0
  45. package/s/spa/index.ts +4 -0
  46. package/s/spa/plumbing/braces.ts +76 -0
  47. package/s/spa/plumbing/primitives.ts +85 -0
  48. package/s/spa/plumbing/router-core.ts +49 -0
  49. package/s/spa/plumbing/types.ts +45 -0
  50. package/s/spa/router.ts +49 -0
  51. package/s/spa/spa.test.ts +91 -0
  52. package/s/tests.test.ts +4 -1
  53. package/s/view/index.ts +7 -0
  54. package/s/view/types.ts +39 -0
  55. package/s/view/utils/contextualize.ts +45 -0
  56. package/s/view/utils/make-component.ts +34 -0
  57. package/s/view/utils/make-view.ts +48 -0
  58. package/s/view/utils/parts/capsule.ts +67 -0
  59. package/s/view/utils/parts/chain.ts +40 -0
  60. package/s/view/utils/parts/context.ts +11 -0
  61. package/s/view/utils/parts/directive.ts +29 -0
  62. package/s/view/utils/parts/sly-view.ts +15 -0
  63. package/s/view/view.ts +24 -0
  64. package/x/base/css-reset.js.map +1 -0
  65. package/x/base/element.d.ts +19 -0
  66. package/x/base/element.js +52 -0
  67. package/x/base/element.js.map +1 -0
  68. package/x/base/index.d.ts +4 -0
  69. package/x/base/index.js +5 -0
  70. package/x/base/index.js.map +1 -0
  71. package/x/{views → base}/use.d.ts +6 -2
  72. package/x/{views → base}/use.js +13 -8
  73. package/x/base/use.js.map +1 -0
  74. package/x/base/utils/apply-styles.js.map +1 -0
  75. package/x/base/utils/attr-watcher.d.ts +8 -0
  76. package/x/base/utils/attr-watcher.js +20 -0
  77. package/x/base/utils/attr-watcher.js.map +1 -0
  78. package/x/base/utils/mounts.js.map +1 -0
  79. package/x/base/utils/reactor.d.ts +5 -0
  80. package/x/base/utils/reactor.js +25 -0
  81. package/x/base/utils/reactor.js.map +1 -0
  82. package/x/base/utils/states.d.ts +13 -0
  83. package/x/base/utils/states.js +41 -0
  84. package/x/base/utils/states.js.map +1 -0
  85. package/x/base/utils/use-attrs.d.ts +11 -0
  86. package/x/base/utils/use-attrs.js +18 -0
  87. package/x/base/utils/use-attrs.js.map +1 -0
  88. package/x/demo/demo.bundle.js +6 -6
  89. package/x/demo/demo.bundle.js.map +1 -1
  90. package/x/demo/demo.bundle.min.js +17 -23
  91. package/x/demo/demo.bundle.min.js.map +4 -4
  92. package/x/demo/views/counter.d.ts +374 -1
  93. package/x/demo/views/counter.js +19 -22
  94. package/x/demo/views/counter.js.map +1 -1
  95. package/x/demo/views/demo.d.ts +4 -1
  96. package/x/demo/views/demo.js +9 -5
  97. package/x/demo/views/demo.js.map +1 -1
  98. package/x/demo/views/{incredi.d.ts → fastcount.d.ts} +3 -3
  99. package/x/demo/views/{incredi.js → fastcount.js} +6 -6
  100. package/x/demo/views/fastcount.js.map +1 -0
  101. package/x/demo/views/loaders.js +6 -6
  102. package/x/demo/views/loaders.js.map +1 -1
  103. package/x/dom/attrs/attrs.d.ts +23 -0
  104. package/x/dom/attrs/attrs.js +17 -0
  105. package/x/dom/attrs/attrs.js.map +1 -0
  106. package/x/dom/attrs/parts/attr-fns.d.ts +16 -0
  107. package/x/dom/attrs/parts/attr-fns.js +64 -0
  108. package/x/dom/attrs/parts/attr-fns.js.map +1 -0
  109. package/x/dom/attrs/parts/attr-proxies.d.ts +8 -0
  110. package/x/dom/attrs/parts/attr-proxies.js +21 -0
  111. package/x/dom/attrs/parts/attr-proxies.js.map +1 -0
  112. package/x/dom/attrs/parts/attr-spec.d.ts +3 -0
  113. package/x/dom/attrs/parts/attr-spec.js +21 -0
  114. package/x/dom/attrs/parts/attr-spec.js.map +1 -0
  115. package/x/dom/attrs/parts/on-attrs.d.ts +2 -0
  116. package/x/dom/attrs/parts/on-attrs.js +7 -0
  117. package/x/dom/attrs/parts/on-attrs.js.map +1 -0
  118. package/x/dom/dom.d.ts +16 -22
  119. package/x/dom/dom.js +21 -47
  120. package/x/dom/dom.js.map +1 -1
  121. package/x/dom/index.d.ts +2 -0
  122. package/x/dom/index.js +3 -0
  123. package/x/dom/index.js.map +1 -0
  124. package/x/dom/parts/dashify.js.map +1 -0
  125. package/x/dom/parts/dom-scope.d.ts +15 -0
  126. package/x/dom/parts/dom-scope.js +35 -0
  127. package/x/dom/parts/dom-scope.js.map +1 -0
  128. package/x/dom/parts/el.d.ts +2 -0
  129. package/x/dom/parts/el.js +7 -0
  130. package/x/dom/parts/el.js.map +1 -0
  131. package/x/dom/parts/elmer.d.ts +11 -0
  132. package/x/dom/parts/elmer.js +32 -0
  133. package/x/dom/parts/elmer.js.map +1 -0
  134. package/x/dom/parts/eve.d.ts +7 -0
  135. package/x/dom/parts/eve.js +16 -0
  136. package/x/dom/parts/eve.js.map +1 -0
  137. package/x/dom/parts/mk.d.ts +2 -0
  138. package/x/dom/parts/mk.js +7 -0
  139. package/x/dom/parts/mk.js.map +1 -0
  140. package/x/dom/parts/queries.d.ts +4 -0
  141. package/x/dom/parts/queries.js +13 -0
  142. package/x/dom/parts/queries.js.map +1 -0
  143. package/x/dom/{register.d.ts → parts/register.d.ts} +2 -10
  144. package/x/dom/parts/register.js.map +1 -0
  145. package/x/dom/types.d.ts +22 -0
  146. package/x/{views → dom}/types.js.map +1 -1
  147. package/x/index.d.ts +7 -17
  148. package/x/index.html +6 -5
  149. package/x/index.html.js +4 -3
  150. package/x/index.html.js.map +1 -1
  151. package/x/index.js +7 -17
  152. package/x/index.js.map +1 -1
  153. package/x/loaders/index.barrel.d.ts +7 -0
  154. package/x/loaders/index.barrel.js +7 -0
  155. package/x/loaders/index.barrel.js.map +1 -0
  156. package/x/loaders/index.d.ts +2 -0
  157. package/x/loaders/index.js +2 -0
  158. package/x/loaders/index.js.map +1 -0
  159. package/x/loaders/make.d.ts +3 -0
  160. package/x/loaders/make.js +6 -0
  161. package/x/loaders/make.js.map +1 -0
  162. package/x/loaders/mock.d.ts +2 -0
  163. package/x/loaders/mock.js +8 -0
  164. package/x/loaders/mock.js.map +1 -0
  165. package/x/{ops/loaders → loaders}/parts/anims.d.ts +1 -1
  166. package/x/loaders/parts/anims.js.map +1 -0
  167. package/x/{ops/loaders → loaders}/parts/ascii-anim.d.ts +2 -2
  168. package/x/{ops/loaders → loaders}/parts/ascii-anim.js +4 -4
  169. package/x/loaders/parts/ascii-anim.js.map +1 -0
  170. package/x/loaders/parts/error-display.d.ts +1 -0
  171. package/x/{ops/loaders → loaders}/parts/error-display.js +2 -2
  172. package/x/loaders/parts/error-display.js.map +1 -0
  173. package/x/loaders/types.d.ts +3 -0
  174. package/x/loaders/types.js +2 -0
  175. package/x/loaders/types.js.map +1 -0
  176. package/x/loot/index.barrel.d.ts +3 -0
  177. package/x/loot/index.barrel.js +4 -0
  178. package/x/loot/index.barrel.js.map +1 -0
  179. package/x/loot/index.d.ts +2 -3
  180. package/x/loot/index.js +1 -3
  181. package/x/loot/index.js.map +1 -1
  182. package/x/ops/index.d.ts +3 -0
  183. package/x/ops/index.js +4 -0
  184. package/x/ops/index.js.map +1 -0
  185. package/x/ops/op.js +1 -0
  186. package/x/ops/op.js.map +1 -1
  187. package/x/spa/index.barrel.d.ts +4 -0
  188. package/x/spa/index.barrel.js +3 -0
  189. package/x/spa/index.barrel.js.map +1 -0
  190. package/x/spa/index.d.ts +2 -0
  191. package/x/spa/index.js +2 -0
  192. package/x/spa/index.js.map +1 -0
  193. package/x/spa/plumbing/braces.d.ts +12 -0
  194. package/x/spa/plumbing/braces.js +55 -0
  195. package/x/spa/plumbing/braces.js.map +1 -0
  196. package/x/spa/plumbing/primitives.d.ts +22 -0
  197. package/x/spa/plumbing/primitives.js +65 -0
  198. package/x/spa/plumbing/primitives.js.map +1 -0
  199. package/x/spa/plumbing/router-core.d.ts +13 -0
  200. package/x/spa/plumbing/router-core.js +38 -0
  201. package/x/spa/plumbing/router-core.js.map +1 -0
  202. package/x/spa/plumbing/types.d.ts +35 -0
  203. package/x/spa/plumbing/types.js +2 -0
  204. package/x/spa/plumbing/types.js.map +1 -0
  205. package/x/spa/router.d.ts +13 -0
  206. package/x/spa/router.js +39 -0
  207. package/x/spa/router.js.map +1 -0
  208. package/x/spa/spa.test.d.ts +15 -0
  209. package/x/spa/spa.test.js +78 -0
  210. package/x/spa/spa.test.js.map +1 -0
  211. package/x/tests.test.js +4 -1
  212. package/x/tests.test.js.map +1 -1
  213. package/x/view/index.d.ts +5 -0
  214. package/x/view/index.js +6 -0
  215. package/x/view/index.js.map +1 -0
  216. package/x/view/types.d.ts +21 -0
  217. package/x/view/types.js +2 -0
  218. package/x/view/types.js.map +1 -0
  219. package/x/view/utils/contextualize.d.ts +13 -0
  220. package/x/view/utils/contextualize.js +18 -0
  221. package/x/view/utils/contextualize.js.map +1 -0
  222. package/x/view/utils/make-component.d.ts +5 -0
  223. package/x/view/utils/make-component.js +17 -0
  224. package/x/view/utils/make-component.js.map +1 -0
  225. package/x/view/utils/make-view.d.ts +2 -0
  226. package/x/view/utils/make-view.js +24 -0
  227. package/x/view/utils/make-view.js.map +1 -0
  228. package/x/view/utils/parts/capsule.d.ts +13 -0
  229. package/x/view/utils/parts/capsule.js +49 -0
  230. package/x/view/utils/parts/capsule.js.map +1 -0
  231. package/x/view/utils/parts/chain.d.ts +13 -0
  232. package/x/view/utils/parts/chain.js +26 -0
  233. package/x/view/utils/parts/chain.js.map +1 -0
  234. package/x/view/utils/parts/context.d.ts +9 -0
  235. package/x/view/utils/parts/context.js +10 -0
  236. package/x/view/utils/parts/context.js.map +1 -0
  237. package/x/view/utils/parts/directive.d.ts +5 -0
  238. package/x/view/utils/parts/directive.js +18 -0
  239. package/x/view/utils/parts/directive.js.map +1 -0
  240. package/x/view/utils/parts/sly-view.d.ts +5 -0
  241. package/x/view/utils/parts/sly-view.js +13 -0
  242. package/x/view/utils/parts/sly-view.js.map +1 -0
  243. package/x/view/view.d.ts +11 -0
  244. package/x/view/view.js +15 -0
  245. package/x/view/view.js.map +1 -0
  246. package/s/dom/attributes.ts +0 -89
  247. package/s/ops/loaders/make-loader.ts +0 -18
  248. package/s/views/base-element.ts +0 -84
  249. package/s/views/types.ts +0 -40
  250. package/s/views/utils/apply-attrs.ts +0 -33
  251. package/s/views/view.ts +0 -150
  252. package/x/demo/views/incredi.js.map +0 -1
  253. package/x/dom/attributes.d.ts +0 -10
  254. package/x/dom/attributes.js +0 -46
  255. package/x/dom/attributes.js.map +0 -1
  256. package/x/dom/dashify.js.map +0 -1
  257. package/x/dom/register.js.map +0 -1
  258. package/x/ops/loaders/make-loader.d.ts +0 -5
  259. package/x/ops/loaders/make-loader.js +0 -7
  260. package/x/ops/loaders/make-loader.js.map +0 -1
  261. package/x/ops/loaders/parts/anims.js.map +0 -1
  262. package/x/ops/loaders/parts/ascii-anim.js.map +0 -1
  263. package/x/ops/loaders/parts/error-display.d.ts +0 -1
  264. package/x/ops/loaders/parts/error-display.js.map +0 -1
  265. package/x/views/base-element.d.ts +0 -14
  266. package/x/views/base-element.js +0 -62
  267. package/x/views/base-element.js.map +0 -1
  268. package/x/views/css-reset.js.map +0 -1
  269. package/x/views/types.d.ts +0 -31
  270. package/x/views/use.js.map +0 -1
  271. package/x/views/utils/apply-attrs.d.ts +0 -2
  272. package/x/views/utils/apply-attrs.js +0 -21
  273. package/x/views/utils/apply-attrs.js.map +0 -1
  274. package/x/views/utils/apply-styles.js.map +0 -1
  275. package/x/views/utils/mounts.js.map +0 -1
  276. package/x/views/view.d.ts +0 -9
  277. package/x/views/view.js +0 -116
  278. package/x/views/view.js.map +0 -1
  279. /package/s/{views → base}/css-reset.ts +0 -0
  280. /package/s/{views → base}/utils/apply-styles.ts +0 -0
  281. /package/s/{views → base}/utils/mounts.ts +0 -0
  282. /package/s/dom/{dashify.ts → parts/dashify.ts} +0 -0
  283. /package/x/{views → base}/css-reset.d.ts +0 -0
  284. /package/x/{views → base}/css-reset.js +0 -0
  285. /package/x/{views → base}/utils/apply-styles.d.ts +0 -0
  286. /package/x/{views → base}/utils/apply-styles.js +0 -0
  287. /package/x/{views → base}/utils/mounts.d.ts +0 -0
  288. /package/x/{views → base}/utils/mounts.js +0 -0
  289. /package/x/dom/{dashify.d.ts → parts/dashify.d.ts} +0 -0
  290. /package/x/dom/{dashify.js → parts/dashify.js} +0 -0
  291. /package/x/dom/{register.js → parts/register.js} +0 -0
  292. /package/x/{views → dom}/types.js +0 -0
  293. /package/x/{ops/loaders → loaders}/parts/anims.js +0 -0
@@ -0,0 +1,64 @@
1
+ /** get html attributes */
2
+ export const attrGet = {
3
+ string: (e, key) => {
4
+ return e.getAttribute(key) ?? undefined;
5
+ },
6
+ number: (e, key) => {
7
+ const raw = e.getAttribute(key);
8
+ return (raw === null || !raw)
9
+ ? undefined
10
+ : Number(raw);
11
+ },
12
+ boolean: (e, key) => {
13
+ const raw = e.getAttribute(key);
14
+ return raw !== null;
15
+ },
16
+ };
17
+ /** set html attributes */
18
+ export const attrSet = {
19
+ string: (e, key, value) => {
20
+ if (value === undefined)
21
+ e.removeAttribute(key);
22
+ else
23
+ e.setAttribute(key, value);
24
+ return true;
25
+ },
26
+ number: (e, key, value) => {
27
+ if (value === undefined)
28
+ e.removeAttribute(key);
29
+ else
30
+ e.setAttribute(key, value.toString());
31
+ return true;
32
+ },
33
+ boolean: (e, key, value) => {
34
+ if (value)
35
+ e.setAttribute(key, "");
36
+ else
37
+ e.removeAttribute(key);
38
+ return true;
39
+ },
40
+ any: (element, key, value) => {
41
+ if (value === undefined || value === null)
42
+ element.removeAttribute(key);
43
+ else if (typeof value === "string")
44
+ element.setAttribute(key, value);
45
+ else if (typeof value === "number")
46
+ element.setAttribute(key, value.toString());
47
+ else if (typeof value === "boolean") {
48
+ if (value === true)
49
+ element.setAttribute(key, "");
50
+ else
51
+ element.removeAttribute(key);
52
+ }
53
+ else
54
+ console.warn(`invalid attribute "${key}" type is "${typeof value}"`);
55
+ },
56
+ entries: (element, entries) => {
57
+ for (const [key, value] of entries)
58
+ attrSet.any(element, key, value);
59
+ },
60
+ record: (element, record) => {
61
+ return attrSet.entries(element, Object.entries(record));
62
+ },
63
+ };
64
+ //# sourceMappingURL=attr-fns.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attr-fns.js","sourceRoot":"","sources":["../../../../s/dom/attrs/parts/attr-fns.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /** a typed proxy accessor for html attributes */
2
+ export declare class AttrProxies {
3
+ element: HTMLElement;
4
+ constructor(element: HTMLElement);
5
+ strings: Record<string, string | undefined>;
6
+ numbers: Record<string, number | undefined>;
7
+ booleans: Record<string, boolean | undefined>;
8
+ }
@@ -0,0 +1,21 @@
1
+ import { attrGet, attrSet } from "./attr-fns.js";
2
+ /** a typed proxy accessor for html attributes */
3
+ export class AttrProxies {
4
+ element;
5
+ constructor(element) {
6
+ this.element = element;
7
+ }
8
+ strings = new Proxy({}, {
9
+ get: (_t, key) => (attrGet.string(this.element, key)),
10
+ set: (_t, key, value) => (attrSet.string(this.element, key, value)),
11
+ });
12
+ numbers = new Proxy({}, {
13
+ get: (_t, key) => (attrGet.number(this.element, key)),
14
+ set: (_t, key, value) => (attrSet.number(this.element, key, value)),
15
+ });
16
+ booleans = new Proxy({}, {
17
+ get: (_t, key) => (attrGet.boolean(this.element, key)),
18
+ set: (_t, key, value) => (attrSet.boolean(this.element, key, value)),
19
+ });
20
+ }
21
+ //# sourceMappingURL=attr-proxies.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attr-proxies.js","sourceRoot":"","sources":["../../../../s/dom/attrs/parts/attr-proxies.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,OAAO,EAAE,OAAO,EAAC,MAAM,eAAe,CAAA;AAE9C,iDAAiD;AACjD,MAAM,OAAO,WAAW;IACJ;IAAnB,YAAmB,OAAoB;QAApB,YAAO,GAAP,OAAO,CAAa;IAAG,CAAC;IAE3C,OAAO,GAAG,IAAI,KAAK,CAAC,EAAE,EAAE;QACvB,GAAG,EAAE,CAAC,EAAE,EAAE,GAAW,EAAE,EAAE,CAAC,CACzB,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CACjC;QACD,GAAG,EAAE,CAAC,EAAE,EAAE,GAAW,EAAE,KAAyB,EAAE,EAAE,CAAC,CACpD,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,CACxC;KACD,CAAuC,CAAA;IAExC,OAAO,GAAG,IAAI,KAAK,CAAC,EAAE,EAAE;QACvB,GAAG,EAAE,CAAC,EAAE,EAAE,GAAW,EAAE,EAAE,CAAC,CACzB,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CACjC;QACD,GAAG,EAAE,CAAC,EAAE,EAAE,GAAW,EAAE,KAAyB,EAAE,EAAE,CAAC,CACpD,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,CACxC;KACD,CAAuC,CAAA;IAExC,QAAQ,GAAG,IAAI,KAAK,CAAC,EAAE,EAAE;QACxB,GAAG,EAAE,CAAC,EAAE,EAAE,GAAW,EAAE,EAAE,CAAC,CACzB,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAClC;QACD,GAAG,EAAE,CAAC,EAAE,EAAE,GAAW,EAAE,KAA0B,EAAE,EAAE,CAAC,CACrD,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,CACzC;KACD,CAAwC,CAAA;CACzC"}
@@ -0,0 +1,3 @@
1
+ import { AttrSpec, AttrTypes } from "../../types.js";
2
+ /** specify available html attributes and their types and create a proxy accessor */
3
+ export declare const attrSpec: <A extends AttrSpec>(e: HTMLElement, spec: A) => AttrTypes<A>;
@@ -0,0 +1,21 @@
1
+ import { attrGet, attrSet } from "./attr-fns.js";
2
+ /** specify available html attributes and their types and create a proxy accessor */
3
+ export const attrSpec = (e, spec) => new Proxy(spec, {
4
+ get: (_target, key) => {
5
+ switch (spec[key]) {
6
+ case String: return attrGet.string(e, key);
7
+ case Number: return attrGet.number(e, key);
8
+ case Boolean: return attrGet.boolean(e, key);
9
+ default: throw new Error(`invalid attribute type for "${key}"`);
10
+ }
11
+ },
12
+ set: (_target, key, value) => {
13
+ switch (spec[key]) {
14
+ case String: return attrSet.string(e, key, value);
15
+ case Number: return attrSet.number(e, key, value);
16
+ case Boolean: return attrSet.boolean(e, key, value);
17
+ default: throw new Error(`invalid attribute type for "${key}"`);
18
+ }
19
+ },
20
+ });
21
+ //# sourceMappingURL=attr-spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attr-spec.js","sourceRoot":"","sources":["../../../../s/dom/attrs/parts/attr-spec.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,OAAO,EAAE,OAAO,EAAC,MAAM,eAAe,CAAA;AAG9C,oFAAoF;AACpF,MAAM,CAAC,MAAM,QAAQ,GAAG,CACtB,CAAc,EACd,IAAO,EACN,EAAE,CAAC,IAAI,KAAK,CAAC,IAAI,EAAE;IAErB,GAAG,EAAE,CAAC,OAAO,EAAE,GAAW,EAAE,EAAE;QAC7B,QAAQ,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACnB,KAAK,MAAM,CAAC,CAAC,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;YAC1C,KAAK,MAAM,CAAC,CAAC,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;YAC1C,KAAK,OAAO,CAAC,CAAC,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;YAC5C,OAAO,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,+BAA+B,GAAG,GAAG,CAAC,CAAA;QAChE,CAAC;IACF,CAAC;IAED,GAAG,EAAE,CAAC,OAAO,EAAE,GAAW,EAAE,KAAU,EAAE,EAAE;QACzC,QAAQ,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACnB,KAAK,MAAM,CAAC,CAAC,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAA;YACjD,KAAK,MAAM,CAAC,CAAC,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAA;YACjD,KAAK,OAAO,CAAC,CAAC,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAA;YACnD,OAAO,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,+BAA+B,GAAG,GAAG,CAAC,CAAA;QAChE,CAAC;IACF,CAAC;CACD,CAAwB,CAAA"}
@@ -0,0 +1,2 @@
1
+ /** respond when any attribute changes on the html element */
2
+ export declare function onAttrs(element: HTMLElement, fn: () => void): () => void;
@@ -0,0 +1,7 @@
1
+ /** respond when any attribute changes on the html element */
2
+ export function onAttrs(element, fn) {
3
+ const observer = new MutationObserver(fn);
4
+ observer.observe(element, { attributes: true });
5
+ return () => observer.disconnect();
6
+ }
7
+ //# sourceMappingURL=on-attrs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"on-attrs.js","sourceRoot":"","sources":["../../../../s/dom/attrs/parts/on-attrs.ts"],"names":[],"mappings":"AACA,6DAA6D;AAC7D,MAAM,UAAU,OAAO,CAAC,OAAoB,EAAE,EAAc;IAC3D,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC,EAAE,CAAC,CAAA;IACzC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,EAAC,UAAU,EAAE,IAAI,EAAC,CAAC,CAAA;IAC7C,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAA;AACnC,CAAC"}
package/x/dom/dom.d.ts CHANGED
@@ -1,26 +1,20 @@
1
- import { Content } from "../views/types.js";
2
- import { AttrSpec, AttrTypes } from "./attributes.js";
3
- export type Renderable = HTMLElement | ShadowRoot | DocumentFragment;
4
- export type Queryable = HTMLElement | ShadowRoot | Element | Document | DocumentFragment;
5
- export declare class Dom<C extends Queryable> {
6
- element: C;
7
- constructor(element: C);
8
- in<E extends HTMLElement>(selectorOrElement: string | E): Dom<E>;
9
- require<E extends Element = HTMLElement>(selector: string): E;
10
- maybe<E extends Element = HTMLElement>(selector: string): E | null;
11
- all<E extends Element = HTMLElement>(selector: string): E[];
12
- render(...content: Content[]): import("lit-html").RootPart;
13
- attrs<A extends AttrSpec>(spec: A): AttrTypes<A>;
14
- }
15
- export declare function dom<E extends Queryable>(selector: string): E;
16
- export declare function dom<E extends Queryable>(element: E): Dom<E>;
1
+ import { eve } from "./parts/eve.js";
2
+ import { Content } from "../view/types.js";
3
+ import { Dom } from "./parts/dom-scope.js";
4
+ import { Queryable, Renderable } from "./types.js";
5
+ import { queryAll, queryMaybe, queryRequire } from "./parts/queries.js";
6
+ export declare function dom<E extends Element>(selector: string, container?: Queryable): E;
17
7
  export declare namespace dom {
18
- var _a: <E extends HTMLElement>(selectorOrElement: string | E) => Dom<E>;
19
- export var require: <E extends Element = HTMLElement>(selector: string) => E;
20
- export var maybe: <E extends Element = HTMLElement>(selector: string) => E | null;
21
- export var all: <E extends Element = HTMLElement>(selector: string) => E[];
22
- export var attrs: <A extends AttrSpec>(element: HTMLElement, spec: A) => AttrTypes<A>;
23
- export var register: typeof import("./register.js").register;
8
+ var _a: <E extends HTMLElement>(selectorOrElement: string | E, container?: Queryable) => Dom<E>;
9
+ export var require: typeof queryRequire;
10
+ export var maybe: typeof queryMaybe;
11
+ export var all: typeof queryAll;
12
+ export var el: typeof import("./parts/el.js").el;
13
+ export var elmer: typeof import("./parts/elmer.js").elmer;
14
+ export var mk: typeof import("./parts/mk.js").mk;
15
+ export var events: typeof eve;
16
+ export var attrs: typeof import("./attrs/attrs.js").attrs;
17
+ export var register: typeof import("./parts/register.js").register;
24
18
  export var render: (container: Renderable, ...content: Content[]) => import("lit-html").RootPart;
25
19
  export { _a as in };
26
20
  }
package/x/dom/dom.js CHANGED
@@ -1,52 +1,26 @@
1
1
  import { render } from "lit";
2
- import { register } from "./register.js";
3
- import { attributes } from "./attributes.js";
4
- function require(container, selector) {
5
- const e = container.querySelector(selector);
6
- if (!e)
7
- throw new Error(`element not found (${selector})`);
8
- return e;
2
+ import { el } from "./parts/el.js";
3
+ import { mk } from "./parts/mk.js";
4
+ import { eve } from "./parts/eve.js";
5
+ import { attrs } from "./attrs/attrs.js";
6
+ import { elmer } from "./parts/elmer.js";
7
+ import { Dom } from "./parts/dom-scope.js";
8
+ import { register } from "./parts/register.js";
9
+ import { queryAll, queryMaybe, queryRequire } from "./parts/queries.js";
10
+ export function dom(selector, container = document) {
11
+ return queryRequire(selector, container);
9
12
  }
10
- export class Dom {
11
- element;
12
- constructor(element) {
13
- this.element = element;
14
- }
15
- in(selectorOrElement) {
16
- return new Dom((typeof selectorOrElement === "string")
17
- ? require(this.element, selectorOrElement)
18
- : selectorOrElement);
19
- }
20
- require(selector) {
21
- const e = this.element.querySelector(selector);
22
- if (!e)
23
- throw new Error(`element not found (${selector})`);
24
- return e;
25
- }
26
- maybe(selector) {
27
- return this.element.querySelector(selector);
28
- }
29
- all(selector) {
30
- return Array.from(this.element.querySelectorAll(selector));
31
- }
32
- render(...content) {
33
- return render(content, this.element);
34
- }
35
- attrs(spec) {
36
- return attributes(this.element, spec);
37
- }
38
- }
39
- export function dom(selectorOrElement) {
40
- return (typeof selectorOrElement === "string")
41
- ? require(document, selectorOrElement)
42
- : new Dom(selectorOrElement);
43
- }
44
- const doc = new Dom(document);
45
- dom.in = doc.in.bind(doc);
46
- dom.require = doc.require.bind(doc);
47
- dom.maybe = doc.maybe.bind(doc);
48
- dom.all = doc.all.bind(doc);
49
- dom.attrs = attributes;
13
+ dom.in = (selectorOrElement, container = document) => {
14
+ return new Dom(container).in(selectorOrElement);
15
+ };
16
+ dom.require = queryRequire;
17
+ dom.maybe = queryMaybe;
18
+ dom.all = queryAll;
19
+ dom.el = el;
20
+ dom.elmer = elmer;
21
+ dom.mk = mk;
22
+ dom.events = eve;
23
+ dom.attrs = attrs;
50
24
  dom.register = register;
51
25
  dom.render = (container, ...content) => {
52
26
  return render(content, container);
package/x/dom/dom.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"dom.js","sourceRoot":"","sources":["../../s/dom/dom.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,MAAM,EAAC,MAAM,KAAK,CAAA;AAC1B,OAAO,EAAC,QAAQ,EAAC,MAAM,eAAe,CAAA;AAEtC,OAAO,EAAC,UAAU,EAAsB,MAAM,iBAAiB,CAAA;AAK/D,SAAS,OAAO,CACd,SAAoB,EACpB,QAAgB;IAEjB,MAAM,CAAC,GAAG,SAAS,CAAC,aAAa,CAAI,QAAQ,CAAC,CAAA;IAC9C,IAAI,CAAC,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,QAAQ,GAAG,CAAC,CAAA;IAC1D,OAAO,CAAC,CAAA;AACT,CAAC;AAED,MAAM,OAAO,GAAG;IACI;IAAnB,YAAmB,OAAU;QAAV,YAAO,GAAP,OAAO,CAAG;IAAG,CAAC;IAEjC,EAAE,CAAwB,iBAA6B;QACtD,OAAO,IAAI,GAAG,CACb,CAAC,OAAO,iBAAiB,KAAK,QAAQ,CAAC;YACtC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,iBAAiB,CAAM;YAC/C,CAAC,CAAC,iBAAiB,CACpB,CAAA;IACF,CAAC;IAED,OAAO,CAAkC,QAAgB;QACxD,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAI,QAAQ,CAAC,CAAA;QACjD,IAAI,CAAC,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,QAAQ,GAAG,CAAC,CAAA;QAC1D,OAAO,CAAC,CAAA;IACT,CAAC;IAED,KAAK,CAAkC,QAAgB;QACtD,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAI,QAAQ,CAAC,CAAA;IAC/C,CAAC;IAED,GAAG,CAAkC,QAAgB;QACpD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAI,QAAQ,CAAC,CAAC,CAAA;IAC9D,CAAC;IAED,MAAM,CAAC,GAAG,OAAkB;QAC3B,OAAO,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,OAAqB,CAAC,CAAA;IACnD,CAAC;IAED,KAAK,CAAqB,IAAO;QAChC,OAAO,UAAU,CAAC,IAAI,CAAC,OAAsB,EAAE,IAAI,CAAC,CAAA;IACrD,CAAC;CACD;AAID,MAAM,UAAU,GAAG,CAAsB,iBAA6B;IACrE,OAAO,CAAC,OAAO,iBAAiB,KAAK,QAAQ,CAAC;QAC7C,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,iBAAiB,CAAM;QAC3C,CAAC,CAAC,IAAI,GAAG,CAAC,iBAAiB,CAAC,CAAA;AAC9B,CAAC;AAED,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAA;AAC7B,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACzB,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACnC,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAC/B,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAE3B,GAAG,CAAC,KAAK,GAAG,UAAU,CAAA;AACtB,GAAG,CAAC,QAAQ,GAAG,QAAQ,CAAA;AACvB,GAAG,CAAC,MAAM,GAAG,CAAC,SAAqB,EAAE,GAAG,OAAkB,EAAE,EAAE;IAC7D,OAAO,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;AAClC,CAAC,CAAA"}
1
+ {"version":3,"file":"dom.js","sourceRoot":"","sources":["../../s/dom/dom.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,MAAM,EAAC,MAAM,KAAK,CAAA;AAC1B,OAAO,EAAC,EAAE,EAAC,MAAM,eAAe,CAAA;AAChC,OAAO,EAAC,EAAE,EAAC,MAAM,eAAe,CAAA;AAChC,OAAO,EAAC,GAAG,EAAC,MAAM,gBAAgB,CAAA;AAClC,OAAO,EAAC,KAAK,EAAC,MAAM,kBAAkB,CAAA;AACtC,OAAO,EAAC,KAAK,EAAC,MAAM,kBAAkB,CAAA;AAEtC,OAAO,EAAC,GAAG,EAAC,MAAM,sBAAsB,CAAA;AACxC,OAAO,EAAC,QAAQ,EAAC,MAAM,qBAAqB,CAAA;AAE5C,OAAO,EAAC,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAC,MAAM,oBAAoB,CAAA;AAErE,MAAM,UAAU,GAAG,CAAoB,QAAgB,EAAE,YAAuB,QAAQ;IACvF,OAAO,YAAY,CAAI,QAAQ,EAAE,SAAS,CAAC,CAAA;AAC5C,CAAC;AAED,GAAG,CAAC,EAAE,GAAG,CAAwB,iBAA6B,EAAE,YAAuB,QAAQ,EAAE,EAAE;IAClG,OAAO,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAA;AAChD,CAAC,CAAA;AAED,GAAG,CAAC,OAAO,GAAG,YAAY,CAAA;AAC1B,GAAG,CAAC,KAAK,GAAG,UAAU,CAAA;AACtB,GAAG,CAAC,GAAG,GAAG,QAAQ,CAAA;AAElB,GAAG,CAAC,EAAE,GAAG,EAAE,CAAA;AACX,GAAG,CAAC,KAAK,GAAG,KAAK,CAAA;AACjB,GAAG,CAAC,EAAE,GAAG,EAAE,CAAA;AACX,GAAG,CAAC,MAAM,GAAG,GAAG,CAAA;AAChB,GAAG,CAAC,KAAK,GAAG,KAAK,CAAA;AACjB,GAAG,CAAC,QAAQ,GAAG,QAAQ,CAAA;AACvB,GAAG,CAAC,MAAM,GAAG,CAAC,SAAqB,EAAE,GAAG,OAAkB,EAAE,EAAE;IAC7D,OAAO,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;AAClC,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export * from "./types.js";
2
+ export * from "./dom.js";
package/x/dom/index.js ADDED
@@ -0,0 +1,3 @@
1
+ export * from "./types.js";
2
+ export * from "./dom.js";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../s/dom/index.ts"],"names":[],"mappings":"AACA,cAAc,YAAY,CAAA;AAC1B,cAAc,UAAU,CAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashify.js","sourceRoot":"","sources":["../../../s/dom/parts/dashify.ts"],"names":[],"mappings":"AACA;;;;;GAKG;AACH,MAAM,UAAU,OAAO,CAAC,KAAa;IACpC,OAAO,KAAK,CAAC,OAAO,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC,WAAW,EAAE,CAAA;AAClE,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { EveSpec } from "./eve.js";
2
+ import { Content } from "../../view/types.js";
3
+ import { Attrs, Queryable } from "../types.js";
4
+ export declare class Dom<C extends Queryable> {
5
+ #private;
6
+ element: C;
7
+ constructor(element: C);
8
+ in<E extends HTMLElement>(selectorOrElement: string | E): Dom<E>;
9
+ require<E extends Element = HTMLElement>(selector: string): E;
10
+ maybe<E extends Element = HTMLElement>(selector: string): E | null;
11
+ all<E extends Element = HTMLElement>(selector: string): E[];
12
+ render(...content: Content[]): import("lit-html").RootPart;
13
+ get attrs(): Attrs;
14
+ events(spec: EveSpec): () => void;
15
+ }
@@ -0,0 +1,35 @@
1
+ import { render } from "lit";
2
+ import { eve } from "./eve.js";
3
+ import { attrs } from "../attrs/attrs.js";
4
+ import { queryAll, queryMaybe, queryRequire } from "./queries.js";
5
+ export class Dom {
6
+ element;
7
+ #attrs;
8
+ constructor(element) {
9
+ this.element = element;
10
+ }
11
+ in(selectorOrElement) {
12
+ return new Dom((typeof selectorOrElement === "string")
13
+ ? queryRequire(selectorOrElement, this.element)
14
+ : selectorOrElement);
15
+ }
16
+ require(selector) {
17
+ return queryRequire(selector, this.element);
18
+ }
19
+ maybe(selector) {
20
+ return queryMaybe(selector, this.element);
21
+ }
22
+ all(selector) {
23
+ return queryAll(selector, this.element);
24
+ }
25
+ render(...content) {
26
+ return render(content, this.element);
27
+ }
28
+ get attrs() {
29
+ return this.#attrs ??= attrs(this.element);
30
+ }
31
+ events(spec) {
32
+ return eve(this.element, spec);
33
+ }
34
+ }
35
+ //# sourceMappingURL=dom-scope.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dom-scope.js","sourceRoot":"","sources":["../../../s/dom/parts/dom-scope.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,MAAM,EAAC,MAAM,KAAK,CAAA;AAC1B,OAAO,EAAC,GAAG,EAAU,MAAM,UAAU,CAAA;AACrC,OAAO,EAAC,KAAK,EAAC,MAAM,mBAAmB,CAAA;AAGvC,OAAO,EAAC,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAC,MAAM,cAAc,CAAA;AAE/D,MAAM,OAAO,GAAG;IAGI;IAFnB,MAAM,CAAQ;IAEd,YAAmB,OAAU;QAAV,YAAO,GAAP,OAAO,CAAG;IAAG,CAAC;IAEjC,EAAE,CAAwB,iBAA6B;QACtD,OAAO,IAAI,GAAG,CACb,CAAC,OAAO,iBAAiB,KAAK,QAAQ,CAAC;YACtC,CAAC,CAAC,YAAY,CAAC,iBAAiB,EAAE,IAAI,CAAC,OAAO,CAAM;YACpD,CAAC,CAAC,iBAAiB,CACpB,CAAA;IACF,CAAC;IAED,OAAO,CAAkC,QAAgB;QACxD,OAAO,YAAY,CAAI,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;IAC/C,CAAC;IAED,KAAK,CAAkC,QAAgB;QACtD,OAAO,UAAU,CAAI,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;IAC7C,CAAC;IAED,GAAG,CAAkC,QAAgB;QACpD,OAAO,QAAQ,CAAI,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;IAC3C,CAAC;IAED,MAAM,CAAC,GAAG,OAAkB;QAC3B,OAAO,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,OAAqB,CAAC,CAAA;IACnD,CAAC;IAED,IAAI,KAAK;QACR,OAAO,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,IAAI,CAAC,OAAsB,CAAC,CAAA;IAC1D,CAAC;IAED,MAAM,CAAC,IAAa;QACnB,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;IAC/B,CAAC;CACD"}
@@ -0,0 +1,2 @@
1
+ import { AttrValue } from "../types.js";
2
+ export declare function el<E extends HTMLElement>(tagName: string, attrs?: Record<string, AttrValue>): E;
@@ -0,0 +1,7 @@
1
+ import { attrSet } from "../attrs/parts/attr-fns.js";
2
+ export function el(tagName, attrs = {}) {
3
+ const element = document.createElement(tagName);
4
+ attrSet.record(element, attrs);
5
+ return element;
6
+ }
7
+ //# sourceMappingURL=el.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"el.js","sourceRoot":"","sources":["../../../s/dom/parts/el.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,OAAO,EAAC,MAAM,4BAA4B,CAAA;AAElD,MAAM,UAAU,EAAE,CAChB,OAAe,EACf,QAAmC,EAAE;IAGtC,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAM,CAAA;IACpD,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;IAC9B,OAAO,OAAO,CAAA;AACf,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { AttrValue } from "../types.js";
2
+ export declare function elmer<E extends HTMLElement = HTMLElement>(tagName: string): Elmer<E>;
3
+ export declare class Elmer<E extends HTMLElement = HTMLElement> {
4
+ #private;
5
+ tagName: string;
6
+ constructor(tagName: string);
7
+ attr(key: string, value?: AttrValue): this;
8
+ attrs(record: Record<string, AttrValue>): this;
9
+ children(...elements: (Node | string)[]): this;
10
+ done(): E;
11
+ }
@@ -0,0 +1,32 @@
1
+ import { attrSet } from "../attrs/parts/attr-fns.js";
2
+ export function elmer(tagName) {
3
+ return new Elmer(tagName);
4
+ }
5
+ export class Elmer {
6
+ tagName;
7
+ #attrs = new Map();
8
+ #children = [];
9
+ constructor(tagName) {
10
+ this.tagName = tagName;
11
+ }
12
+ attr(key, value = true) {
13
+ this.#attrs.set(key, value);
14
+ return this;
15
+ }
16
+ attrs(record) {
17
+ for (const [key, value] of Object.entries(record))
18
+ this.attr(key, value);
19
+ return this;
20
+ }
21
+ children(...elements) {
22
+ this.#children.push(...elements);
23
+ return this;
24
+ }
25
+ done() {
26
+ const element = document.createElement(this.tagName);
27
+ attrSet.entries(element, this.#attrs);
28
+ element.append(...this.#children);
29
+ return element;
30
+ }
31
+ }
32
+ //# sourceMappingURL=elmer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elmer.js","sourceRoot":"","sources":["../../../s/dom/parts/elmer.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,OAAO,EAAC,MAAM,4BAA4B,CAAA;AAElD,MAAM,UAAU,KAAK,CAAsC,OAAe;IACzE,OAAO,IAAI,KAAK,CAAI,OAAO,CAAC,CAAA;AAC7B,CAAC;AAED,MAAM,OAAO,KAAK;IAIE;IAHnB,MAAM,GAAG,IAAI,GAAG,EAAqB,CAAA;IACrC,SAAS,GAAsB,EAAE,CAAA;IAEjC,YAAmB,OAAe;QAAf,YAAO,GAAP,OAAO,CAAQ;IAAG,CAAC;IAEtC,IAAI,CAAC,GAAW,EAAE,QAAmB,IAAI;QACxC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;QAC3B,OAAO,IAAI,CAAA;IACZ,CAAC;IAED,KAAK,CAAC,MAAiC;QACtC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;YAChD,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;QACtB,OAAO,IAAI,CAAA;IACZ,CAAC;IAED,QAAQ,CAAC,GAAG,QAA2B;QACtC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAA;QAChC,OAAO,IAAI,CAAA;IACZ,CAAC;IAED,IAAI;QACH,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACpD,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;QACrC,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAA;QACjC,OAAO,OAAY,CAAA;IACpB,CAAC;CACD"}
@@ -0,0 +1,7 @@
1
+ export type EveFn = (event: any) => void;
2
+ export type EveConfig = [options: AddEventListenerOptions, fn: EveFn];
3
+ export type EveHandler = EveFn | EveConfig;
4
+ export type EveSpec = {
5
+ [eventName: string]: EveHandler;
6
+ };
7
+ export declare function eve(target: EventTarget, events: EveSpec): () => void;
@@ -0,0 +1,16 @@
1
+ export function eve(target, events) {
2
+ let detachers = [];
3
+ for (const [eventName, handler] of Object.entries(events)) {
4
+ if (typeof handler === "function") {
5
+ target.addEventListener(eventName, handler);
6
+ detachers.push(() => target.removeEventListener(eventName, handler));
7
+ }
8
+ else {
9
+ const [options, fn] = handler;
10
+ target.addEventListener(eventName, fn, options);
11
+ detachers.push(() => target.removeEventListener(eventName, fn));
12
+ }
13
+ }
14
+ return () => detachers.forEach(d => d());
15
+ }
16
+ //# sourceMappingURL=eve.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eve.js","sourceRoot":"","sources":["../../../s/dom/parts/eve.ts"],"names":[],"mappings":"AAMA,MAAM,UAAU,GAAG,CAAC,MAAmB,EAAE,MAAe;IACvD,IAAI,SAAS,GAAmB,EAAE,CAAA;IAElC,KAAK,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3D,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE,CAAC;YACnC,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;YAC3C,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAA;QACrE,CAAC;aACI,CAAC;YACL,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,OAAO,CAAA;YAC7B,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,EAAE,EAAE,OAAO,CAAC,CAAA;YAC/C,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAA;QAChE,CAAC;IACF,CAAC;IAED,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAA;AACzC,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { TemplateResult } from "lit";
2
+ export declare function mk<E extends Element = HTMLElement>(template: TemplateResult): E;
@@ -0,0 +1,7 @@
1
+ import { render } from "lit";
2
+ export function mk(template) {
3
+ const fragment = document.createDocumentFragment();
4
+ render(template, fragment);
5
+ return fragment.firstElementChild;
6
+ }
7
+ //# sourceMappingURL=mk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mk.js","sourceRoot":"","sources":["../../../s/dom/parts/mk.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,MAAM,EAAiB,MAAM,KAAK,CAAA;AAE1C,MAAM,UAAU,EAAE,CAAkC,QAAwB;IAC3E,MAAM,QAAQ,GAAG,QAAQ,CAAC,sBAAsB,EAAE,CAAA;IAClD,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;IAC1B,OAAO,QAAQ,CAAC,iBAAsB,CAAA;AACvC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { Queryable } from "../types.js";
2
+ export declare function queryRequire<E extends Element>(selector: string, container?: Queryable): E;
3
+ export declare function queryMaybe<E extends Element>(selector: string, container?: Queryable): E | null;
4
+ export declare function queryAll<E extends Element>(selector: string, container?: Queryable): E[];
@@ -0,0 +1,13 @@
1
+ export function queryRequire(selector, container = document) {
2
+ const e = container.querySelector(selector);
3
+ if (!e)
4
+ throw new Error(`element not found (${selector})`);
5
+ return e;
6
+ }
7
+ export function queryMaybe(selector, container = document) {
8
+ return container.querySelector(selector);
9
+ }
10
+ export function queryAll(selector, container = document) {
11
+ return Array.from(container.querySelectorAll(selector));
12
+ }
13
+ //# sourceMappingURL=queries.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queries.js","sourceRoot":"","sources":["../../../s/dom/parts/queries.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,YAAY,CAC1B,QAAgB,EAChB,YAAuB,QAAQ;IAEhC,MAAM,CAAC,GAAG,SAAS,CAAC,aAAa,CAAI,QAAQ,CAAC,CAAA;IAC9C,IAAI,CAAC,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,QAAQ,GAAG,CAAC,CAAA;IAC1D,OAAO,CAAC,CAAA;AACT,CAAC;AAED,MAAM,UAAU,UAAU,CACxB,QAAgB,EAChB,YAAuB,QAAQ;IAEhC,OAAO,SAAS,CAAC,aAAa,CAAI,QAAQ,CAAC,CAAA;AAC5C,CAAC;AAED,MAAM,UAAU,QAAQ,CACtB,QAAgB,EAChB,YAAuB,QAAQ;IAEhC,OAAO,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAI,QAAQ,CAAC,CAAC,CAAA;AAC3D,CAAC"}
@@ -1,12 +1,4 @@
1
- export type HTMLElementClasses = {
2
- [key: string]: {
3
- new (...args: any[]): HTMLElement;
4
- };
5
- };
6
- export type RegistrationOptions = {
7
- soft: boolean;
8
- upgrade: boolean;
9
- };
1
+ import { HTMLElementClasses, RegisterOptions } from "../types.js";
10
2
  /**
11
3
  * register custom elements (web components) to the dom
12
4
  * - takes an object full of custom html elements, and automatically dashes the names
@@ -19,4 +11,4 @@ export type RegistrationOptions = {
19
11
  * - `true` (default) will run `customElements.upgrade` where appropriate
20
12
  * - `false` will NOT upgrade any existing elements on the page
21
13
  */
22
- export declare function register<E extends HTMLElementClasses>(elements: E, options?: Partial<RegistrationOptions>): void;
14
+ export declare function register<E extends HTMLElementClasses>(elements: E, options?: Partial<RegisterOptions>): void;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register.js","sourceRoot":"","sources":["../../../s/dom/parts/register.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,OAAO,EAAC,MAAM,cAAc,CAAA;AAGpC;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,QAAQ,CACtB,QAAW,EACX,UAAoC,EAAE;IAGvC,MAAM,EACL,IAAI,GAAG,KAAK,EACZ,OAAO,GAAG,IAAI,GACd,GAAG,OAAO,CAAA;IAEX,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACxD,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;QACzB,MAAM,OAAO,GAAG,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAEvC,IAAI,IAAI,IAAI,OAAO;YAClB,SAAQ;QAET,cAAc,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;QAEnC,IAAI,OAAO;YACV,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;gBAChD,IAAI,OAAO,CAAC,WAAW,KAAK,WAAW;oBACtC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;YACjC,CAAC,CAAC,CAAA;IACJ,CAAC;AACF,CAAC"}
@@ -0,0 +1,22 @@
1
+ import { attrs } from "./attrs/attrs.js";
2
+ export type Renderable = HTMLElement | ShadowRoot | DocumentFragment;
3
+ export type Queryable = HTMLElement | ShadowRoot | Element | Document | DocumentFragment;
4
+ export type AttrValue = string | boolean | number | undefined | null | void;
5
+ export type AttrKind = (typeof String | typeof Number | typeof Boolean);
6
+ export type AttrType<H extends AttrKind> = (H extends typeof String ? string | undefined : H extends typeof Number ? number | undefined : H extends typeof Boolean ? boolean : never);
7
+ export type AttrSpec = {
8
+ [key: string]: AttrKind;
9
+ };
10
+ export type AttrTypes<A extends AttrSpec> = {
11
+ [P in keyof A]: AttrType<A[P]>;
12
+ };
13
+ export type Attrs = ReturnType<typeof attrs>;
14
+ export type HTMLElementClasses = {
15
+ [key: string]: {
16
+ new (...args: any[]): HTMLElement;
17
+ };
18
+ };
19
+ export type RegisterOptions = {
20
+ soft: boolean;
21
+ upgrade: boolean;
22
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../s/views/types.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../s/dom/types.ts"],"names":[],"mappings":""}
package/x/index.d.ts CHANGED
@@ -1,17 +1,7 @@
1
- export * from "./dom/attributes.js";
2
- export * from "./dom/dashify.js";
3
- export * from "./dom/dom.js";
4
- export * from "./dom/register.js";
5
- export * from "./ops/loaders/make-loader.js";
6
- export * from "./ops/loaders/parts/ascii-anim.js";
7
- export * from "./ops/loaders/parts/error-display.js";
8
- export * from "./ops/op.js";
9
- export * from "./ops/podium.js";
10
- export * from "./ops/types.js";
11
- export * as loot from "./loot/index.js";
12
- export * from "./dom/attributes.js";
13
- export * from "./views/base-element.js";
14
- export * from "./views/css-reset.js";
15
- export * from "./views/types.js";
16
- export * from "./views/use.js";
17
- export * from "./views/view.js";
1
+ export * from "./base/index.js";
2
+ export * from "./dom/index.js";
3
+ export * from "./loaders/index.js";
4
+ export * from "./loot/index.js";
5
+ export * from "./ops/index.js";
6
+ export * from "./spa/index.js";
7
+ export * from "./view/index.js";
package/x/index.html CHANGED
@@ -111,7 +111,7 @@ body {
111
111
  }
112
112
 
113
113
  </style>
114
- <script type=module src="demo/demo.bundle.min.js?v=dcfffff3734c"></script>
114
+ <script type=module src="demo/demo.bundle.min.js?v=8fbd7f34c36b"></script>
115
115
  <link rel="icon" href="assets/favicon.png?v=4dc161ed79b3"/>
116
116
 
117
117
  <meta name="theme-color" content="#95ff7b">
@@ -131,10 +131,11 @@ body {
131
131
  <img class=icon alt="" src="/assets/favicon.png"/>
132
132
  <h1>sly testing page</h1>
133
133
  <p><a href="https://github.com/e280/sly">github.com/e280/sly</a></p>
134
- <p class=lil>v0.2.0-8</p>
135
- <incredi-element></incredi-element>
136
- <demo-counter>component</demo-counter>
137
- <div class=demo></div>
134
+ <p class=lil>v0.2.0</p>
135
+
136
+ <fastcount-element></fastcount-element>
137
+ <counter-component start=280 step=2>component</counter-component>
138
+ <demo-component></demo-component>
138
139
 
139
140
  </body>
140
141
  </html>
package/x/index.html.js CHANGED
@@ -24,9 +24,10 @@ export default ssg.page(import.meta.url, async (orb) => ({
24
24
  <h1>sly testing page</h1>
25
25
  <p><a href="https://github.com/e280/sly">github.com/e280/sly</a></p>
26
26
  <p class=lil>v${orb.packageVersion()}</p>
27
- <incredi-element></incredi-element>
28
- <demo-counter>component</demo-counter>
29
- <div class=demo></div>
27
+
28
+ <fastcount-element></fastcount-element>
29
+ <counter-component start=280 step=2>component</counter-component>
30
+ <demo-component></demo-component>
30
31
  `,
31
32
  }));
32
33
  //# sourceMappingURL=index.html.js.map