@e280/sly 0.2.0-3 → 0.2.0-30

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 (304) hide show
  1. package/README.md +624 -97
  2. package/package.json +13 -6
  3. package/s/base/element.ts +76 -0
  4. package/s/base/index.ts +6 -0
  5. package/s/{views → base}/use.ts +25 -16
  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 +9 -5
  11. package/s/demo/views/counter.ts +21 -24
  12. package/s/demo/views/demo.ts +10 -6
  13. package/s/demo/views/fastcount.ts +29 -0
  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 +22 -38
  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 -7
  29. package/s/dom/types.ts +42 -0
  30. package/s/index.html.ts +4 -2
  31. package/s/index.ts +7 -19
  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/drag-and-drops.ts +82 -0
  41. package/s/loot/{drop.ts → drops.ts} +8 -17
  42. package/s/loot/helpers.ts +3 -3
  43. package/s/loot/index.barrel.ts +5 -0
  44. package/s/loot/index.ts +2 -3
  45. package/s/ops/index.ts +5 -0
  46. package/s/ops/op.ts +1 -0
  47. package/s/spa/index.barrel.ts +6 -0
  48. package/s/spa/index.ts +4 -0
  49. package/s/spa/plumbing/braces.ts +76 -0
  50. package/s/spa/plumbing/primitives.ts +85 -0
  51. package/s/spa/plumbing/router-core.ts +49 -0
  52. package/s/spa/plumbing/types.ts +45 -0
  53. package/s/spa/router.ts +49 -0
  54. package/s/spa/spa.test.ts +91 -0
  55. package/s/tests.test.ts +4 -1
  56. package/s/view/index.ts +7 -0
  57. package/s/view/types.ts +39 -0
  58. package/s/view/utils/contextualize.ts +45 -0
  59. package/s/view/utils/make-component.ts +34 -0
  60. package/s/view/utils/make-view.ts +48 -0
  61. package/s/view/utils/parts/capsule.ts +67 -0
  62. package/s/view/utils/parts/chain.ts +40 -0
  63. package/s/view/utils/parts/context.ts +11 -0
  64. package/s/view/utils/parts/directive.ts +29 -0
  65. package/s/view/utils/parts/sly-view.ts +15 -0
  66. package/s/view/view.ts +24 -0
  67. package/x/base/css-reset.js.map +1 -0
  68. package/x/base/element.d.ts +19 -0
  69. package/x/base/element.js +52 -0
  70. package/x/base/element.js.map +1 -0
  71. package/x/base/index.d.ts +4 -0
  72. package/x/base/index.js +5 -0
  73. package/x/base/index.js.map +1 -0
  74. package/x/{views → base}/use.d.ts +8 -4
  75. package/x/{views → base}/use.js +15 -9
  76. package/x/base/use.js.map +1 -0
  77. package/x/base/utils/apply-styles.js.map +1 -0
  78. package/x/base/utils/attr-watcher.d.ts +8 -0
  79. package/x/base/utils/attr-watcher.js +20 -0
  80. package/x/base/utils/attr-watcher.js.map +1 -0
  81. package/x/base/utils/mounts.js.map +1 -0
  82. package/x/base/utils/reactor.d.ts +5 -0
  83. package/x/base/utils/reactor.js +25 -0
  84. package/x/base/utils/reactor.js.map +1 -0
  85. package/x/base/utils/states.d.ts +13 -0
  86. package/x/base/utils/states.js +41 -0
  87. package/x/base/utils/states.js.map +1 -0
  88. package/x/base/utils/use-attrs.d.ts +11 -0
  89. package/x/base/utils/use-attrs.js +18 -0
  90. package/x/base/utils/use-attrs.js.map +1 -0
  91. package/x/demo/demo.bundle.js +8 -4
  92. package/x/demo/demo.bundle.js.map +1 -1
  93. package/x/demo/demo.bundle.min.js +19 -22
  94. package/x/demo/demo.bundle.min.js.map +4 -4
  95. package/x/demo/views/counter.d.ts +374 -1
  96. package/x/demo/views/counter.js +19 -22
  97. package/x/demo/views/counter.js.map +1 -1
  98. package/x/demo/views/demo.d.ts +4 -1
  99. package/x/demo/views/demo.js +10 -5
  100. package/x/demo/views/demo.js.map +1 -1
  101. package/x/demo/views/fastcount.d.ts +12 -0
  102. package/x/demo/views/fastcount.js +21 -0
  103. package/x/demo/views/fastcount.js.map +1 -0
  104. package/x/demo/views/loaders.js +6 -6
  105. package/x/demo/views/loaders.js.map +1 -1
  106. package/x/dom/attrs/attrs.d.ts +23 -0
  107. package/x/dom/attrs/attrs.js +17 -0
  108. package/x/dom/attrs/attrs.js.map +1 -0
  109. package/x/dom/attrs/parts/attr-fns.d.ts +16 -0
  110. package/x/dom/attrs/parts/attr-fns.js +64 -0
  111. package/x/dom/attrs/parts/attr-fns.js.map +1 -0
  112. package/x/dom/attrs/parts/attr-proxies.d.ts +8 -0
  113. package/x/dom/attrs/parts/attr-proxies.js +21 -0
  114. package/x/dom/attrs/parts/attr-proxies.js.map +1 -0
  115. package/x/dom/attrs/parts/attr-spec.d.ts +3 -0
  116. package/x/dom/attrs/parts/attr-spec.js +21 -0
  117. package/x/dom/attrs/parts/attr-spec.js.map +1 -0
  118. package/x/dom/attrs/parts/on-attrs.d.ts +2 -0
  119. package/x/dom/attrs/parts/on-attrs.js +7 -0
  120. package/x/dom/attrs/parts/on-attrs.js.map +1 -0
  121. package/x/dom/dom.d.ts +15 -16
  122. package/x/dom/dom.js +21 -34
  123. package/x/dom/dom.js.map +1 -1
  124. package/x/dom/index.d.ts +2 -0
  125. package/x/dom/index.js +3 -0
  126. package/x/dom/index.js.map +1 -0
  127. package/x/dom/parts/dashify.js.map +1 -0
  128. package/x/dom/parts/dom-scope.d.ts +15 -0
  129. package/x/dom/parts/dom-scope.js +35 -0
  130. package/x/dom/parts/dom-scope.js.map +1 -0
  131. package/x/dom/parts/el.d.ts +2 -0
  132. package/x/dom/parts/el.js +7 -0
  133. package/x/dom/parts/el.js.map +1 -0
  134. package/x/dom/parts/elmer.d.ts +11 -0
  135. package/x/dom/parts/elmer.js +32 -0
  136. package/x/dom/parts/elmer.js.map +1 -0
  137. package/x/dom/parts/eve.d.ts +7 -0
  138. package/x/dom/parts/eve.js +16 -0
  139. package/x/dom/parts/eve.js.map +1 -0
  140. package/x/dom/parts/mk.d.ts +2 -0
  141. package/x/dom/parts/mk.js +7 -0
  142. package/x/dom/parts/mk.js.map +1 -0
  143. package/x/dom/parts/queries.d.ts +4 -0
  144. package/x/dom/parts/queries.js +13 -0
  145. package/x/dom/parts/queries.js.map +1 -0
  146. package/x/dom/{register.d.ts → parts/register.d.ts} +2 -6
  147. package/x/dom/parts/register.js.map +1 -0
  148. package/x/dom/types.d.ts +15 -0
  149. package/x/index.d.ts +7 -16
  150. package/x/index.html +6 -4
  151. package/x/index.html.js +4 -2
  152. package/x/index.html.js.map +1 -1
  153. package/x/index.js +7 -16
  154. package/x/index.js.map +1 -1
  155. package/x/loaders/index.barrel.d.ts +7 -0
  156. package/x/loaders/index.barrel.js +7 -0
  157. package/x/loaders/index.barrel.js.map +1 -0
  158. package/x/loaders/index.d.ts +2 -0
  159. package/x/loaders/index.js +2 -0
  160. package/x/loaders/index.js.map +1 -0
  161. package/x/loaders/make.d.ts +3 -0
  162. package/x/loaders/make.js +6 -0
  163. package/x/loaders/make.js.map +1 -0
  164. package/x/loaders/mock.d.ts +2 -0
  165. package/x/loaders/mock.js +8 -0
  166. package/x/loaders/mock.js.map +1 -0
  167. package/x/{ops/loaders → loaders}/parts/anims.d.ts +1 -1
  168. package/x/loaders/parts/anims.js.map +1 -0
  169. package/x/{ops/loaders → loaders}/parts/ascii-anim.d.ts +2 -2
  170. package/x/{ops/loaders → loaders}/parts/ascii-anim.js +4 -4
  171. package/x/loaders/parts/ascii-anim.js.map +1 -0
  172. package/x/loaders/parts/error-display.d.ts +1 -0
  173. package/x/{ops/loaders → loaders}/parts/error-display.js +2 -2
  174. package/x/loaders/parts/error-display.js.map +1 -0
  175. package/x/loaders/types.d.ts +3 -0
  176. package/x/loaders/types.js.map +1 -0
  177. package/x/loot/drag-and-drops.d.ts +30 -0
  178. package/x/loot/drag-and-drops.js +63 -0
  179. package/x/loot/drag-and-drops.js.map +1 -0
  180. package/x/loot/{drop.d.ts → drops.d.ts} +3 -5
  181. package/x/loot/drops.js +25 -0
  182. package/x/loot/drops.js.map +1 -0
  183. package/x/loot/helpers.d.ts +3 -3
  184. package/x/loot/helpers.js +3 -3
  185. package/x/loot/helpers.js.map +1 -1
  186. package/x/loot/index.barrel.d.ts +3 -0
  187. package/x/loot/index.barrel.js +4 -0
  188. package/x/loot/index.barrel.js.map +1 -0
  189. package/x/loot/index.d.ts +2 -3
  190. package/x/loot/index.js +1 -3
  191. package/x/loot/index.js.map +1 -1
  192. package/x/ops/index.d.ts +3 -0
  193. package/x/ops/index.js +4 -0
  194. package/x/ops/index.js.map +1 -0
  195. package/x/ops/op.js +1 -0
  196. package/x/ops/op.js.map +1 -1
  197. package/x/spa/index.barrel.d.ts +4 -0
  198. package/x/spa/index.barrel.js +3 -0
  199. package/x/spa/index.barrel.js.map +1 -0
  200. package/x/spa/index.d.ts +2 -0
  201. package/x/spa/index.js +2 -0
  202. package/x/spa/index.js.map +1 -0
  203. package/x/spa/plumbing/braces.d.ts +12 -0
  204. package/x/spa/plumbing/braces.js +55 -0
  205. package/x/spa/plumbing/braces.js.map +1 -0
  206. package/x/spa/plumbing/primitives.d.ts +22 -0
  207. package/x/spa/plumbing/primitives.js +65 -0
  208. package/x/spa/plumbing/primitives.js.map +1 -0
  209. package/x/spa/plumbing/router-core.d.ts +13 -0
  210. package/x/spa/plumbing/router-core.js +38 -0
  211. package/x/spa/plumbing/router-core.js.map +1 -0
  212. package/x/spa/plumbing/types.d.ts +35 -0
  213. package/x/spa/plumbing/types.js +2 -0
  214. package/x/spa/plumbing/types.js.map +1 -0
  215. package/x/spa/router.d.ts +16 -0
  216. package/x/spa/router.js +39 -0
  217. package/x/spa/router.js.map +1 -0
  218. package/x/spa/spa.test.d.ts +15 -0
  219. package/x/spa/spa.test.js +78 -0
  220. package/x/spa/spa.test.js.map +1 -0
  221. package/x/tests.test.js +4 -1
  222. package/x/tests.test.js.map +1 -1
  223. package/x/view/index.d.ts +5 -0
  224. package/x/view/index.js +6 -0
  225. package/x/view/index.js.map +1 -0
  226. package/x/view/types.d.ts +21 -0
  227. package/x/view/types.js +2 -0
  228. package/x/{views → view}/types.js.map +1 -1
  229. package/x/view/utils/contextualize.d.ts +13 -0
  230. package/x/view/utils/contextualize.js +18 -0
  231. package/x/view/utils/contextualize.js.map +1 -0
  232. package/x/view/utils/make-component.d.ts +5 -0
  233. package/x/view/utils/make-component.js +17 -0
  234. package/x/view/utils/make-component.js.map +1 -0
  235. package/x/view/utils/make-view.d.ts +2 -0
  236. package/x/view/utils/make-view.js +24 -0
  237. package/x/view/utils/make-view.js.map +1 -0
  238. package/x/view/utils/parts/capsule.d.ts +13 -0
  239. package/x/view/utils/parts/capsule.js +49 -0
  240. package/x/view/utils/parts/capsule.js.map +1 -0
  241. package/x/view/utils/parts/chain.d.ts +13 -0
  242. package/x/view/utils/parts/chain.js +26 -0
  243. package/x/view/utils/parts/chain.js.map +1 -0
  244. package/x/view/utils/parts/context.d.ts +9 -0
  245. package/x/view/utils/parts/context.js +10 -0
  246. package/x/view/utils/parts/context.js.map +1 -0
  247. package/x/view/utils/parts/directive.d.ts +5 -0
  248. package/x/view/utils/parts/directive.js +18 -0
  249. package/x/view/utils/parts/directive.js.map +1 -0
  250. package/x/view/utils/parts/sly-view.d.ts +5 -0
  251. package/x/view/utils/parts/sly-view.js +13 -0
  252. package/x/view/utils/parts/sly-view.js.map +1 -0
  253. package/x/view/view.d.ts +11 -0
  254. package/x/view/view.js +15 -0
  255. package/x/view/view.js.map +1 -0
  256. package/s/loot/drag-drop.ts +0 -76
  257. package/s/ops/loaders/make-loader.ts +0 -18
  258. package/s/views/attributes.ts +0 -89
  259. package/s/views/types.ts +0 -40
  260. package/s/views/utils/apply-attrs.ts +0 -33
  261. package/s/views/view.ts +0 -150
  262. package/x/dom/dashify.js.map +0 -1
  263. package/x/dom/register.js.map +0 -1
  264. package/x/loot/drag-drop.d.ts +0 -29
  265. package/x/loot/drag-drop.js +0 -54
  266. package/x/loot/drag-drop.js.map +0 -1
  267. package/x/loot/drop.js +0 -32
  268. package/x/loot/drop.js.map +0 -1
  269. package/x/ops/loaders/make-loader.d.ts +0 -5
  270. package/x/ops/loaders/make-loader.js +0 -7
  271. package/x/ops/loaders/make-loader.js.map +0 -1
  272. package/x/ops/loaders/parts/anims.js.map +0 -1
  273. package/x/ops/loaders/parts/ascii-anim.js.map +0 -1
  274. package/x/ops/loaders/parts/error-display.d.ts +0 -1
  275. package/x/ops/loaders/parts/error-display.js.map +0 -1
  276. package/x/views/attributes.d.ts +0 -10
  277. package/x/views/attributes.js +0 -46
  278. package/x/views/attributes.js.map +0 -1
  279. package/x/views/css-reset.js.map +0 -1
  280. package/x/views/types.d.ts +0 -31
  281. package/x/views/use.js.map +0 -1
  282. package/x/views/utils/apply-attrs.d.ts +0 -2
  283. package/x/views/utils/apply-attrs.js +0 -21
  284. package/x/views/utils/apply-attrs.js.map +0 -1
  285. package/x/views/utils/apply-styles.js.map +0 -1
  286. package/x/views/utils/mounts.js.map +0 -1
  287. package/x/views/view.d.ts +0 -9
  288. package/x/views/view.js +0 -116
  289. package/x/views/view.js.map +0 -1
  290. /package/s/{views → base}/css-reset.ts +0 -0
  291. /package/s/{views → base}/utils/apply-styles.ts +0 -0
  292. /package/s/{views → base}/utils/mounts.ts +0 -0
  293. /package/s/dom/{dashify.ts → parts/dashify.ts} +0 -0
  294. /package/x/{views → base}/css-reset.d.ts +0 -0
  295. /package/x/{views → base}/css-reset.js +0 -0
  296. /package/x/{views → base}/utils/apply-styles.d.ts +0 -0
  297. /package/x/{views → base}/utils/apply-styles.js +0 -0
  298. /package/x/{views → base}/utils/mounts.d.ts +0 -0
  299. /package/x/{views → base}/utils/mounts.js +0 -0
  300. /package/x/dom/{dashify.d.ts → parts/dashify.d.ts} +0 -0
  301. /package/x/dom/{dashify.js → parts/dashify.js} +0 -0
  302. /package/x/dom/{register.js → parts/register.js} +0 -0
  303. /package/x/{ops/loaders → loaders}/parts/anims.js +0 -0
  304. /package/x/{views → loaders}/types.js +0 -0
@@ -0,0 +1,10 @@
1
+ /** the information we need to render a view. */
2
+ export class ViewContext {
3
+ props;
4
+ attrs = new Map();
5
+ children = [];
6
+ constructor(props) {
7
+ this.props = props;
8
+ }
9
+ }
10
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../../s/view/utils/parts/context.ts"],"names":[],"mappings":"AAIA,gDAAgD;AAChD,MAAM,OAAO,WAAW;IAGJ;IAFnB,KAAK,GAAG,IAAI,GAAG,EAAqB,CAAA;IACpC,QAAQ,GAAc,EAAE,CAAA;IACxB,YAAmB,KAAY;QAAZ,UAAK,GAAL,KAAK,CAAO;IAAG,CAAC;CACnC"}
@@ -0,0 +1,5 @@
1
+ import { DirectiveResult } from "lit/async-directive.js";
2
+ import { ViewFn } from "../../types.js";
3
+ import { ViewContext } from "./context.js";
4
+ /** creates a lit directive fn, which when called, emits a funky lit thing to inject in your html templates. */
5
+ export declare function makeViewDirective<Props extends any[]>(viewFn: ViewFn<Props>, settings: ShadowRootInit): (context: ViewContext<Props>) => DirectiveResult;
@@ -0,0 +1,18 @@
1
+ import { AsyncDirective, directive } from "lit/async-directive.js";
2
+ import { ViewCapsule } from "./capsule.js";
3
+ /** creates a lit directive fn, which when called, emits a funky lit thing to inject in your html templates. */
4
+ export function makeViewDirective(viewFn, settings) {
5
+ return directive(class ViewDirective extends AsyncDirective {
6
+ #capsule = new ViewCapsule(viewFn, settings);
7
+ render(context) {
8
+ return this.#capsule.update(context);
9
+ }
10
+ disconnected() {
11
+ this.#capsule.disconnected();
12
+ }
13
+ reconnected() {
14
+ this.#capsule.reconnected();
15
+ }
16
+ });
17
+ }
18
+ //# sourceMappingURL=directive.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"directive.js","sourceRoot":"","sources":["../../../../s/view/utils/parts/directive.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,cAAc,EAAE,SAAS,EAAkB,MAAM,wBAAwB,CAAA;AAEjF,OAAO,EAAC,WAAW,EAAC,MAAM,cAAc,CAAA;AAGxC,+GAA+G;AAC/G,MAAM,UAAU,iBAAiB,CAC/B,MAAqB,EACrB,QAAwB;IAGzB,OAAO,SAAS,CAAC,MAAM,aAAc,SAAQ,cAAc;QAC1D,QAAQ,GAAG,IAAI,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;QAE5C,MAAM,CAAC,OAA2B;YACjC,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QACrC,CAAC;QAED,YAAY;YACX,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAA;QAC7B,CAAC;QAED,WAAW;YACV,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAA;QAC5B,CAAC;KACD,CAAqD,CAAA;AACvD,CAAC"}
@@ -0,0 +1,5 @@
1
+ /** <sly-view> element that views are rendered into. */
2
+ export declare class SlyView extends HTMLElement {
3
+ #private;
4
+ static make(): SlyView;
5
+ }
@@ -0,0 +1,13 @@
1
+ import { dom } from "../../../dom/dom.js";
2
+ /** <sly-view> element that views are rendered into. */
3
+ export class SlyView extends HTMLElement {
4
+ static #registered = false;
5
+ static make() {
6
+ if (!this.#registered) {
7
+ dom.register({ SlyView }, { soft: true, upgrade: true });
8
+ this.#registered = true;
9
+ }
10
+ return document.createElement("sly-view");
11
+ }
12
+ }
13
+ //# sourceMappingURL=sly-view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sly-view.js","sourceRoot":"","sources":["../../../../s/view/utils/parts/sly-view.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,GAAG,EAAC,MAAM,qBAAqB,CAAA;AAEvC,uDAAuD;AACvD,MAAM,OAAO,OAAQ,SAAQ,WAAW;IACvC,MAAM,CAAC,WAAW,GAAG,KAAK,CAAA;IAC1B,MAAM,CAAC,IAAI;QACV,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACvB,GAAG,CAAC,QAAQ,CAAC,EAAC,OAAO,EAAC,EAAE,EAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC,CAAA;YACpD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAA;QACxB,CAAC;QACD,OAAO,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAY,CAAA;IACrD,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { Content, ViewFn } from "./types.js";
2
+ import { BaseElement } from "../base/element.js";
3
+ import { Use } from "../base/use.js";
4
+ export declare function view<Props extends any[]>(fn: ViewFn<Props>): import("./types.js").View<Props>;
5
+ export declare namespace view {
6
+ var settings: (settings: ShadowRootInit) => {
7
+ render: <Props extends any[]>(fn: ViewFn<Props>) => import("./types.js").View<Props>;
8
+ };
9
+ var render: typeof view;
10
+ var component: (fn: (use: Use) => Content) => import("./types.js").ComponentClass<typeof BaseElement, []>;
11
+ }
package/x/view/view.js ADDED
@@ -0,0 +1,15 @@
1
+ import { makeView } from "./utils/make-view.js";
2
+ import { BaseElement } from "../base/element.js";
3
+ export function view(fn) {
4
+ return makeView(fn, { mode: "open" });
5
+ }
6
+ view.settings = (settings) => ({
7
+ render: (fn) => {
8
+ return makeView(fn, settings);
9
+ }
10
+ });
11
+ view.render = view;
12
+ view.component = (fn) => (view(use => () => fn(use))
13
+ .component(BaseElement)
14
+ .props(() => []));
15
+ //# sourceMappingURL=view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"view.js","sourceRoot":"","sources":["../../s/view/view.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,QAAQ,EAAC,MAAM,sBAAsB,CAAA;AAC7C,OAAO,EAAC,WAAW,EAAC,MAAM,oBAAoB,CAAA;AAG9C,MAAM,UAAU,IAAI,CAAsB,EAAiB;IAC1D,OAAO,QAAQ,CAAC,EAAE,EAAE,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC,CAAA;AACpC,CAAC;AAED,IAAI,CAAC,QAAQ,GAAG,CAAC,QAAwB,EAAE,EAAE,CAAC,CAAC;IAC9C,MAAM,EAAE,CAAsB,EAAiB,EAAE,EAAE;QAClD,OAAO,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAA;IAC9B,CAAC;CACD,CAAC,CAAA;AAEF,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;AAElB,IAAI,CAAC,SAAS,GAAG,CAAC,EAAyB,EAAE,EAAE,CAAC,CAC/C,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;KACxB,SAAS,CAAC,WAAW,CAAC;KACtB,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CACjB,CAAA"}
@@ -1,76 +0,0 @@
1
-
2
- import {signal} from "@e280/strata"
3
- import {dragIsOutsideCurrentTarget} from "./helpers.js"
4
-
5
- /** system for dragging-and-dropping things around on a webpage */
6
- export class DragDrop<Grabbed, Hovering> {
7
- #$grabbed = signal<Grabbed | undefined>(undefined)
8
- #$hovering = signal<Hovering | undefined>(undefined)
9
-
10
- constructor(private params: {
11
-
12
- /** accept a dropped item that was declared within this system */
13
- acceptDrop: (event: DragEvent, grabbed: Grabbed, hovering: Hovering) => void
14
-
15
- /** accept undeclared drops from outside this system */
16
- fromOutside?: {
17
- predicate: (event: DragEvent, hovering: Hovering) => boolean
18
- acceptDrop: (event: DragEvent, hovering: Hovering) => void
19
- }
20
- }) {}
21
-
22
- /** make event listeners to attach to your dragzone(s) */
23
- readonly dragzone = {
24
- draggable: () => "true",
25
-
26
- dragstart: (grabbed: Grabbed) => (_: DragEvent) => {
27
- this.#$grabbed.value = grabbed
28
- },
29
-
30
- dragend: () => (_: DragEvent) => {
31
- this.#$grabbed.value = undefined
32
- this.#$hovering.value = undefined
33
- },
34
- }
35
-
36
- /** make event listeners to attach to your dropzones(s) */
37
- readonly dropzone = {
38
- dragenter: () => (_: DragEvent) => {},
39
-
40
- dragleave: () => (event: DragEvent) => {
41
- if (dragIsOutsideCurrentTarget(event))
42
- this.#$hovering.value = undefined
43
- },
44
-
45
- dragover: (hovering: Hovering) => (event: DragEvent) => {
46
- event.preventDefault()
47
- const {fromOutside} = this.params
48
-
49
- if (this.#$grabbed() || (fromOutside && fromOutside.predicate(event, hovering)))
50
- this.#$hovering.value = hovering
51
- },
52
-
53
- drop: (hovering: Hovering) => (event: DragEvent) => {
54
- event.preventDefault()
55
- const {acceptDrop, fromOutside} = this.params
56
-
57
- const grabbed = this.#$grabbed()
58
- this.#$grabbed.value = undefined
59
- this.#$hovering.value = undefined
60
-
61
- if (grabbed)
62
- acceptDrop(event, grabbed, hovering)
63
- else if (fromOutside && fromOutside.predicate(event, hovering))
64
- fromOutside.acceptDrop(event, hovering)
65
- },
66
- }
67
-
68
- get grabbed() {
69
- return this.#$grabbed()
70
- }
71
-
72
- get hovering() {
73
- return this.#$hovering()
74
- }
75
- }
76
-
@@ -1,18 +0,0 @@
1
-
2
- import {Op} from "../op.js"
3
- import {braille} from "./parts/anims.js"
4
- import {Content} from "../../views/types.js"
5
- import {ErrorDisplay} from "./parts/error-display.js"
6
-
7
- export * as anims from "./parts/anims.js"
8
-
9
- export type Loader = <V>(op: Op<V>, ready: (value: V) => Content) => Content
10
-
11
- export function makeLoader(
12
- loading: () => Content = braille,
13
- error: (error: any) => Content = (error: any) => ErrorDisplay(error),
14
- ): Loader {
15
-
16
- return (op, ready) => op.select({loading, ready, error})
17
- }
18
-
@@ -1,89 +0,0 @@
1
-
2
- export type AttrKind = (
3
- | typeof String
4
- | typeof Number
5
- | typeof Boolean
6
- )
7
-
8
- export type AttrType<H extends AttrKind> = (
9
- H extends typeof String
10
- ? string | undefined
11
-
12
- : H extends typeof Number
13
- ? number | undefined
14
-
15
- : H extends typeof Boolean
16
- ? boolean
17
-
18
- : never
19
- )
20
-
21
- export type AttrSpec = {
22
- [key: string]: AttrKind
23
- }
24
-
25
- export type AttrTypes<A extends AttrSpec> = {
26
- [P in keyof A]: AttrType<A[P]>
27
- }
28
-
29
- export const attributes = <A extends AttrSpec>(
30
- element: HTMLElement,
31
- spec: A,
32
- ) => new Proxy(spec, {
33
-
34
- get: (_target, name: string) => {
35
- const type = spec[name]
36
- const raw = element.getAttribute(name)
37
-
38
- switch (type) {
39
- case String:
40
- return raw ?? undefined
41
-
42
- case Number:
43
- return raw !== null
44
- ? Number(raw)
45
- : undefined
46
-
47
- case Boolean:
48
- return raw !== null
49
-
50
- default:
51
- throw new Error(`invalid attribute type for "${name}"`)
52
- }
53
- },
54
-
55
- set: (_target, name: string, value: any) => {
56
- const type = spec[name]
57
-
58
- switch (type) {
59
- case String: {
60
- element.setAttribute(name, value)
61
- return true
62
- }
63
-
64
- case Number: {
65
- element.setAttribute(name, value.toString())
66
- return true
67
- }
68
-
69
- case Boolean: {
70
- if (value)
71
- element.setAttribute(name, "")
72
- else
73
- element.removeAttribute(name)
74
- return true
75
- }
76
-
77
- default:
78
- throw new Error(`invalid attribute type for "${name}"`)
79
- }
80
- },
81
-
82
- }) as any as AttrTypes<A>
83
-
84
- export function onAttrChange(element: HTMLElement, fn: () => void) {
85
- const observer = new MutationObserver(fn)
86
- observer.observe(element, {attributes: true})
87
- return () => observer.disconnect()
88
- }
89
-
package/s/views/types.ts DELETED
@@ -1,40 +0,0 @@
1
-
2
- import {Constructor} from "@e280/stz"
3
- import {DirectiveResult} from "lit/directive.js"
4
- import {CSSResultGroup, TemplateResult} from "lit"
5
-
6
- import {Use} from "./use.js"
7
-
8
- export type Content = TemplateResult | DirectiveResult | HTMLElement | string | null | undefined | void | Content[]
9
- export type AttrValue = string | boolean | number | undefined | null | void
10
-
11
- export type Component<Props extends any[] = []> = {
12
- render(...props: Props): void
13
- } & HTMLElement
14
-
15
- export type ComponentFn = (use: Use) => Content
16
- export type ViewFn<Props extends any[]> = (use: Use) => (...props: Props) => Content
17
- export type BasicView<Props extends any[]> = (...props: Props) => DirectiveResult<any>
18
- export type View<Props extends any[]> = BasicView<Props> & {
19
- props: (...props: Props) => ViewChain
20
- component: (...props: Props) => Constructor<Component>
21
- }
22
-
23
- export type ViewSettings = ShadowRootInit & {
24
- tag?: string
25
- name?: string
26
- styles?: CSSResultGroup
27
- }
28
-
29
- export type ViewChain = {
30
- children(...c: Content[]): ViewChain
31
- attrs(a: Record<string, AttrValue>): ViewChain
32
- attr(n: string, v: AttrValue): ViewChain
33
- render(): DirectiveResult<any>
34
- }
35
-
36
- export type ViewContext = {
37
- children: Content[]
38
- attrs: Record<string, AttrValue>
39
- }
40
-
@@ -1,33 +0,0 @@
1
-
2
- import {AttrValue} from "../types.js"
3
-
4
- export function applyAttrs(
5
- element: HTMLElement,
6
- attrs: Record<string, AttrValue>,
7
- ) {
8
-
9
- for (const [key, value] of Object.entries(attrs)) {
10
- if (value === undefined)
11
- element.removeAttribute(key)
12
-
13
- else if (value === null)
14
- element.removeAttribute(key)
15
-
16
- else if (typeof value === "string")
17
- element.setAttribute(key, value)
18
-
19
- else if (typeof value === "number")
20
- element.setAttribute(key, value.toString())
21
-
22
- else if (typeof value === "boolean") {
23
- if (value === true)
24
- element.setAttribute(key, "")
25
- else
26
- element.removeAttribute(key)
27
- }
28
-
29
- else
30
- console.warn(`invalid attribute type ${key} is ${typeof value}`)
31
- }
32
- }
33
-
package/s/views/view.ts DELETED
@@ -1,150 +0,0 @@
1
-
2
- import {render} from "lit"
3
- import {debounce, MapG} from "@e280/stz"
4
- import {directive} from "lit/directive.js"
5
- import {tracker} from "@e280/strata/tracker"
6
- import {AsyncDirective} from "lit/async-directive.js"
7
-
8
- import {register} from "../dom/register.js"
9
- import {applyAttrs} from "./utils/apply-attrs.js"
10
- import {applyStyles} from "./utils/apply-styles.js"
11
- import {Use, _wrap, _disconnect, _reconnect} from "./use.js"
12
- import {AttrValue, ComponentFn, Content, View, ViewFn, ViewSettings, ViewContext} from "./types.js"
13
-
14
- export const view = setupView({mode: "open"})
15
- export class SlyView extends HTMLElement {}
16
- register({SlyView}, {soft: true, upgrade: true})
17
-
18
- function setupView(settings: ViewSettings) {
19
- function view<Props extends any[]>(fn: ViewFn<Props>): View<Props> {
20
- type Situation = {
21
- getElement: () => HTMLElement
22
- isComponent: boolean
23
- }
24
-
25
- const make = (situation: Situation) => class ViewDirective extends AsyncDirective {
26
- #element = situation.getElement()
27
- #shadow = this.#element.attachShadow(settings)
28
- #renderDebounced = debounce(0, () => this.#renderNow())
29
- #tracking = new MapG<any, () => void>
30
- #params!: {context: ViewContext, props: Props}
31
-
32
- #use = new Use(
33
- this.#element,
34
- this.#shadow,
35
- () => this.#renderNow(),
36
- this.#renderDebounced,
37
- )
38
-
39
- #fn = (() => {
40
- const fn2 = fn(this.#use)
41
- this.#element.setAttribute("view", settings.name ?? "")
42
- if (settings.styles) applyStyles(this.#shadow, settings.styles)
43
- return fn2
44
- })()
45
-
46
- #renderNow() {
47
- if (!this.#params) return
48
- if (!this.isConnected) return
49
- const {context: w, props} = this.#params
50
-
51
- this.#use[_wrap](() => {
52
- // apply html attributes
53
- applyAttrs(this.#element, w.attrs)
54
-
55
- // render the template, tracking strata items
56
- const {result, seen} = tracker.observe(() => this.#fn(...props))
57
-
58
- // inject the template
59
- render(result, this.#shadow)
60
-
61
- // reacting to changes
62
- for (const item of seen)
63
- this.#tracking.guarantee(
64
- item,
65
- () => tracker.subscribe(item, async() => this.#renderDebounced()),
66
- )
67
-
68
- // inject content into light dom
69
- if (!situation.isComponent)
70
- render(w.children, this.#element)
71
- })
72
- }
73
-
74
- render(context: ViewContext, props: Props) {
75
- this.#params = {context: context, props}
76
- this.#renderNow()
77
- return situation.isComponent ? null : this.#element
78
- }
79
-
80
- disconnected() {
81
- this.#use[_disconnect]()
82
- for (const untrack of this.#tracking.values())
83
- untrack()
84
- this.#tracking.clear()
85
- }
86
-
87
- reconnected() {
88
- this.#use[_reconnect]()
89
- }
90
- }
91
-
92
- const d = directive(make({
93
- getElement: () => document.createElement(settings.tag ?? "sly-view"),
94
- isComponent: false,
95
- }))
96
-
97
- const freshViewContext = (): ViewContext => ({attrs: {}, children: []})
98
-
99
- function rendy(...props: Props) {
100
- return d(freshViewContext(), props)
101
- }
102
-
103
- rendy.props = (...props: Props) => {
104
- let ctx = freshViewContext()
105
- const chain = {
106
- children(...children: Content[]) {
107
- ctx = {...ctx, children: [...ctx.children, ...children]}
108
- return chain
109
- },
110
- attrs(attrs: Record<string, AttrValue>) {
111
- ctx = {...ctx, attrs: {...ctx.attrs, ...attrs}}
112
- return chain
113
- },
114
- attr(name: string, value: AttrValue) {
115
- ctx = {...ctx, attrs: {...ctx.attrs, [name]: value}}
116
- return chain
117
- },
118
- render() {
119
- return d(ctx, props)
120
- },
121
- }
122
- return chain
123
- }
124
-
125
- rendy.component = (...props: Props) => class extends HTMLElement {
126
- #directive = directive(
127
- make({
128
- getElement: () => this,
129
- isComponent: true,
130
- })
131
- )
132
- constructor() {
133
- super()
134
- this.render(...props)
135
- }
136
- render(...props: Props) {
137
- if (this.isConnected)
138
- render(this.#directive(freshViewContext(), props), this)
139
- }
140
- }
141
-
142
- return rendy
143
- }
144
-
145
- view.declare = view
146
- view.settings = (settings2: Partial<ViewSettings>) => setupView({...settings, ...settings2})
147
- view.component = (fn: ComponentFn) => view(use => () => fn(use)).component()
148
- return view
149
- }
150
-
@@ -1 +0,0 @@
1
- {"version":3,"file":"dashify.js","sourceRoot":"","sources":["../../s/dom/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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"register.js","sourceRoot":"","sources":["../../s/dom/register.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,OAAO,EAAC,MAAM,cAAc,CAAA;AAQpC;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,QAAQ,CACtB,QAAW,EACX,UAAwC,EAAE;IAG3C,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"}
@@ -1,29 +0,0 @@
1
- /** system for dragging-and-dropping things around on a webpage */
2
- export declare class DragDrop<Grabbed, Hovering> {
3
- #private;
4
- private params;
5
- constructor(params: {
6
- /** accept a dropped item that was declared within this system */
7
- acceptDrop: (event: DragEvent, grabbed: Grabbed, hovering: Hovering) => void;
8
- /** accept undeclared drops from outside this system */
9
- fromOutside?: {
10
- predicate: (event: DragEvent, hovering: Hovering) => boolean;
11
- acceptDrop: (event: DragEvent, hovering: Hovering) => void;
12
- };
13
- });
14
- /** make event listeners to attach to your dragzone(s) */
15
- readonly dragzone: {
16
- draggable: () => string;
17
- dragstart: (grabbed: Grabbed) => (_: DragEvent) => void;
18
- dragend: () => (_: DragEvent) => void;
19
- };
20
- /** make event listeners to attach to your dropzones(s) */
21
- readonly dropzone: {
22
- dragenter: () => (_: DragEvent) => void;
23
- dragleave: () => (event: DragEvent) => void;
24
- dragover: (hovering: Hovering) => (event: DragEvent) => void;
25
- drop: (hovering: Hovering) => (event: DragEvent) => void;
26
- };
27
- get grabbed(): Grabbed | undefined;
28
- get hovering(): Hovering | undefined;
29
- }
@@ -1,54 +0,0 @@
1
- import { signal } from "@e280/strata";
2
- import { dragIsOutsideCurrentTarget } from "./helpers.js";
3
- /** system for dragging-and-dropping things around on a webpage */
4
- export class DragDrop {
5
- params;
6
- #$grabbed = signal(undefined);
7
- #$hovering = signal(undefined);
8
- constructor(params) {
9
- this.params = params;
10
- }
11
- /** make event listeners to attach to your dragzone(s) */
12
- dragzone = {
13
- draggable: () => "true",
14
- dragstart: (grabbed) => (_) => {
15
- this.#$grabbed.value = grabbed;
16
- },
17
- dragend: () => (_) => {
18
- this.#$grabbed.value = undefined;
19
- this.#$hovering.value = undefined;
20
- },
21
- };
22
- /** make event listeners to attach to your dropzones(s) */
23
- dropzone = {
24
- dragenter: () => (_) => { },
25
- dragleave: () => (event) => {
26
- if (dragIsOutsideCurrentTarget(event))
27
- this.#$hovering.value = undefined;
28
- },
29
- dragover: (hovering) => (event) => {
30
- event.preventDefault();
31
- const { fromOutside } = this.params;
32
- if (this.#$grabbed() || (fromOutside && fromOutside.predicate(event, hovering)))
33
- this.#$hovering.value = hovering;
34
- },
35
- drop: (hovering) => (event) => {
36
- event.preventDefault();
37
- const { acceptDrop, fromOutside } = this.params;
38
- const grabbed = this.#$grabbed();
39
- this.#$grabbed.value = undefined;
40
- this.#$hovering.value = undefined;
41
- if (grabbed)
42
- acceptDrop(event, grabbed, hovering);
43
- else if (fromOutside && fromOutside.predicate(event, hovering))
44
- fromOutside.acceptDrop(event, hovering);
45
- },
46
- };
47
- get grabbed() {
48
- return this.#$grabbed();
49
- }
50
- get hovering() {
51
- return this.#$hovering();
52
- }
53
- }
54
- //# sourceMappingURL=drag-drop.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"drag-drop.js","sourceRoot":"","sources":["../../s/loot/drag-drop.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,MAAM,EAAC,MAAM,cAAc,CAAA;AACnC,OAAO,EAAC,0BAA0B,EAAC,MAAM,cAAc,CAAA;AAEvD,kEAAkE;AAClE,MAAM,OAAO,QAAQ;IAIA;IAHpB,SAAS,GAAG,MAAM,CAAsB,SAAS,CAAC,CAAA;IAClD,UAAU,GAAG,MAAM,CAAuB,SAAS,CAAC,CAAA;IAEpD,YAAoB,MAUnB;QAVmB,WAAM,GAAN,MAAM,CAUzB;IAAG,CAAC;IAEL,yDAAyD;IAChD,QAAQ,GAAG;QACnB,SAAS,EAAE,GAAG,EAAE,CAAC,MAAM;QAEvB,SAAS,EAAE,CAAC,OAAgB,EAAE,EAAE,CAAC,CAAC,CAAY,EAAE,EAAE;YACjD,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,OAAO,CAAA;QAC/B,CAAC;QAED,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,CAAY,EAAE,EAAE;YAC/B,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,CAAA;YAChC,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,SAAS,CAAA;QAClC,CAAC;KACD,CAAA;IAED,0DAA0D;IACjD,QAAQ,GAAG;QACnB,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC,CAAY,EAAE,EAAE,GAAE,CAAC;QAErC,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC,KAAgB,EAAE,EAAE;YACrC,IAAI,0BAA0B,CAAC,KAAK,CAAC;gBACpC,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,SAAS,CAAA;QACnC,CAAC;QAED,QAAQ,EAAE,CAAC,QAAkB,EAAE,EAAE,CAAC,CAAC,KAAgB,EAAE,EAAE;YACtD,KAAK,CAAC,cAAc,EAAE,CAAA;YACtB,MAAM,EAAC,WAAW,EAAC,GAAG,IAAI,CAAC,MAAM,CAAA;YAEjC,IAAI,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;gBAC9E,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,QAAQ,CAAA;QAClC,CAAC;QAED,IAAI,EAAE,CAAC,QAAkB,EAAE,EAAE,CAAC,CAAC,KAAgB,EAAE,EAAE;YAClD,KAAK,CAAC,cAAc,EAAE,CAAA;YACtB,MAAM,EAAC,UAAU,EAAE,WAAW,EAAC,GAAG,IAAI,CAAC,MAAM,CAAA;YAE7C,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,CAAA;YAChC,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,CAAA;YAChC,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,SAAS,CAAA;YAEjC,IAAI,OAAO;gBACV,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAA;iBAChC,IAAI,WAAW,IAAI,WAAW,CAAC,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC;gBAC7D,WAAW,CAAC,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;QACzC,CAAC;KACD,CAAA;IAED,IAAI,OAAO;QACV,OAAO,IAAI,CAAC,SAAS,EAAE,CAAA;IACxB,CAAC;IAED,IAAI,QAAQ;QACX,OAAO,IAAI,CAAC,UAAU,EAAE,CAAA;IACzB,CAAC;CACD"}
package/x/loot/drop.js DELETED
@@ -1,32 +0,0 @@
1
- import { signal } from "@e280/strata";
2
- import { dragIsOutsideCurrentTarget } from "./helpers.js";
3
- /** dropzone that accepts dropped stuff like files */
4
- export class Drop {
5
- params;
6
- #$indicator = signal(false);
7
- constructor(params) {
8
- this.params = params;
9
- }
10
- get indicator() {
11
- return this.#$indicator.value;
12
- }
13
- resetIndicator = () => {
14
- this.#$indicator.value = false;
15
- };
16
- dragover = (event) => {
17
- event.preventDefault();
18
- if (this.params.predicate(event))
19
- this.#$indicator.value = true;
20
- };
21
- dragleave = (event) => {
22
- if (dragIsOutsideCurrentTarget(event))
23
- this.#$indicator.value = false;
24
- };
25
- drop = (event) => {
26
- event.preventDefault();
27
- this.#$indicator.value = false;
28
- if (this.params.predicate(event))
29
- this.params.acceptDrop(event);
30
- };
31
- }
32
- //# sourceMappingURL=drop.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"drop.js","sourceRoot":"","sources":["../../s/loot/drop.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,MAAM,EAAC,MAAM,cAAc,CAAA;AACnC,OAAO,EAAC,0BAA0B,EAAC,MAAM,cAAc,CAAA;AAEvD,qDAAqD;AACrD,MAAM,OAAO,IAAI;IAGI;IAFpB,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;IAE3B,YAAoB,MAOnB;QAPmB,WAAM,GAAN,MAAM,CAOzB;IAAG,CAAC;IAEL,IAAI,SAAS;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAA;IAC9B,CAAC;IAED,cAAc,GAAG,GAAG,EAAE;QACrB,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,KAAK,CAAA;IAC/B,CAAC,CAAA;IAED,QAAQ,GAAG,CAAC,KAAgB,EAAE,EAAE;QAC/B,KAAK,CAAC,cAAc,EAAE,CAAA;QACtB,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC;YAC/B,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,IAAI,CAAA;IAC/B,CAAC,CAAA;IAED,SAAS,GAAG,CAAC,KAAgB,EAAE,EAAE;QAChC,IAAI,0BAA0B,CAAC,KAAK,CAAC;YACpC,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,KAAK,CAAA;IAChC,CAAC,CAAA;IAED,IAAI,GAAG,CAAC,KAAgB,EAAE,EAAE;QAC3B,KAAK,CAAC,cAAc,EAAE,CAAA;QACtB,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,KAAK,CAAA;QAC9B,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC;YAC/B,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;IAC/B,CAAC,CAAA;CACD"}
@@ -1,5 +0,0 @@
1
- import { Op } from "../op.js";
2
- import { Content } from "../../views/types.js";
3
- export * as anims from "./parts/anims.js";
4
- export type Loader = <V>(op: Op<V>, ready: (value: V) => Content) => Content;
5
- export declare function makeLoader(loading?: () => Content, error?: (error: any) => Content): Loader;
@@ -1,7 +0,0 @@
1
- import { braille } from "./parts/anims.js";
2
- import { ErrorDisplay } from "./parts/error-display.js";
3
- export * as anims from "./parts/anims.js";
4
- export function makeLoader(loading = braille, error = (error) => ErrorDisplay(error)) {
5
- return (op, ready) => op.select({ loading, ready, error });
6
- }
7
- //# sourceMappingURL=make-loader.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"make-loader.js","sourceRoot":"","sources":["../../../s/ops/loaders/make-loader.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,OAAO,EAAC,MAAM,kBAAkB,CAAA;AAExC,OAAO,EAAC,YAAY,EAAC,MAAM,0BAA0B,CAAA;AAErD,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAA;AAIzC,MAAM,UAAU,UAAU,CACxB,UAAyB,OAAO,EAChC,QAAiC,CAAC,KAAU,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC;IAGrE,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,EAAC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAC,CAAC,CAAA;AACzD,CAAC"}