@typed/template 0.1.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 (285) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +5 -0
  3. package/dist/cjs/Directive.js +76 -0
  4. package/dist/cjs/Directive.js.map +1 -0
  5. package/dist/cjs/ElementRef.js +83 -0
  6. package/dist/cjs/ElementRef.js.map +1 -0
  7. package/dist/cjs/ElementSource.js +244 -0
  8. package/dist/cjs/ElementSource.js.map +1 -0
  9. package/dist/cjs/Entry.js +6 -0
  10. package/dist/cjs/Entry.js.map +1 -0
  11. package/dist/cjs/EventHandler.js +65 -0
  12. package/dist/cjs/EventHandler.js.map +1 -0
  13. package/dist/cjs/Html.js +169 -0
  14. package/dist/cjs/Html.js.map +1 -0
  15. package/dist/cjs/HtmlChunk.js +257 -0
  16. package/dist/cjs/HtmlChunk.js.map +1 -0
  17. package/dist/cjs/Hydrate.js +49 -0
  18. package/dist/cjs/Hydrate.js.map +1 -0
  19. package/dist/cjs/Many.js +45 -0
  20. package/dist/cjs/Many.js.map +1 -0
  21. package/dist/cjs/Meta.js +37 -0
  22. package/dist/cjs/Meta.js.map +1 -0
  23. package/dist/cjs/Parser.js +331 -0
  24. package/dist/cjs/Parser.js.map +1 -0
  25. package/dist/cjs/Part.js +6 -0
  26. package/dist/cjs/Part.js.map +1 -0
  27. package/dist/cjs/Placeholder.js +38 -0
  28. package/dist/cjs/Placeholder.js.map +1 -0
  29. package/dist/cjs/Platform.js +64 -0
  30. package/dist/cjs/Platform.js.map +1 -0
  31. package/dist/cjs/Render.js +39 -0
  32. package/dist/cjs/Render.js.map +1 -0
  33. package/dist/cjs/RenderContext.js +130 -0
  34. package/dist/cjs/RenderContext.js.map +1 -0
  35. package/dist/cjs/RenderEvent.js +44 -0
  36. package/dist/cjs/RenderEvent.js.map +1 -0
  37. package/dist/cjs/RenderTemplate.js +41 -0
  38. package/dist/cjs/RenderTemplate.js.map +1 -0
  39. package/dist/cjs/Renderable.js +6 -0
  40. package/dist/cjs/Renderable.js.map +1 -0
  41. package/dist/cjs/Template.js +266 -0
  42. package/dist/cjs/Template.js.map +1 -0
  43. package/dist/cjs/TemplateInstance.js +51 -0
  44. package/dist/cjs/TemplateInstance.js.map +1 -0
  45. package/dist/cjs/Test.js +90 -0
  46. package/dist/cjs/Test.js.map +1 -0
  47. package/dist/cjs/Token.js +270 -0
  48. package/dist/cjs/Token.js.map +1 -0
  49. package/dist/cjs/Tokenizer.js +18 -0
  50. package/dist/cjs/Tokenizer.js.map +1 -0
  51. package/dist/cjs/Vitest.js +44 -0
  52. package/dist/cjs/Vitest.js.map +1 -0
  53. package/dist/cjs/index.js +147 -0
  54. package/dist/cjs/index.js.map +1 -0
  55. package/dist/cjs/internal/HydrateContext.js +13 -0
  56. package/dist/cjs/internal/HydrateContext.js.map +1 -0
  57. package/dist/cjs/internal/browser.js +109 -0
  58. package/dist/cjs/internal/browser.js.map +1 -0
  59. package/dist/cjs/internal/chunks.js +54 -0
  60. package/dist/cjs/internal/chunks.js.map +1 -0
  61. package/dist/cjs/internal/errors.js +23 -0
  62. package/dist/cjs/internal/errors.js.map +1 -0
  63. package/dist/cjs/internal/hydrate.js +197 -0
  64. package/dist/cjs/internal/hydrate.js.map +1 -0
  65. package/dist/cjs/internal/indexRefCounter.js +32 -0
  66. package/dist/cjs/internal/indexRefCounter.js.map +1 -0
  67. package/dist/cjs/internal/module-augmentation.js +6 -0
  68. package/dist/cjs/internal/module-augmentation.js.map +1 -0
  69. package/dist/cjs/internal/parser.js +492 -0
  70. package/dist/cjs/internal/parser.js.map +1 -0
  71. package/dist/cjs/internal/parts.js +350 -0
  72. package/dist/cjs/internal/parts.js.map +1 -0
  73. package/dist/cjs/internal/readAttribute.js +34 -0
  74. package/dist/cjs/internal/readAttribute.js.map +1 -0
  75. package/dist/cjs/internal/render.js +332 -0
  76. package/dist/cjs/internal/render.js.map +1 -0
  77. package/dist/cjs/internal/server.js +219 -0
  78. package/dist/cjs/internal/server.js.map +1 -0
  79. package/dist/cjs/internal/tokenizer.js +264 -0
  80. package/dist/cjs/internal/tokenizer.js.map +1 -0
  81. package/dist/cjs/internal/utils.js +68 -0
  82. package/dist/cjs/internal/utils.js.map +1 -0
  83. package/dist/dts/Directive.d.ts +70 -0
  84. package/dist/dts/Directive.d.ts.map +1 -0
  85. package/dist/dts/ElementRef.d.ts +40 -0
  86. package/dist/dts/ElementRef.d.ts.map +1 -0
  87. package/dist/dts/ElementSource.d.ts +72 -0
  88. package/dist/dts/ElementSource.d.ts.map +1 -0
  89. package/dist/dts/Entry.d.ts +26 -0
  90. package/dist/dts/Entry.d.ts.map +1 -0
  91. package/dist/dts/EventHandler.d.ts +61 -0
  92. package/dist/dts/EventHandler.d.ts.map +1 -0
  93. package/dist/dts/Html.d.ts +17 -0
  94. package/dist/dts/Html.d.ts.map +1 -0
  95. package/dist/dts/HtmlChunk.d.ts +56 -0
  96. package/dist/dts/HtmlChunk.d.ts.map +1 -0
  97. package/dist/dts/Hydrate.d.ts +20 -0
  98. package/dist/dts/Hydrate.d.ts.map +1 -0
  99. package/dist/dts/Many.d.ts +32 -0
  100. package/dist/dts/Many.d.ts.map +1 -0
  101. package/dist/dts/Meta.d.ts +24 -0
  102. package/dist/dts/Meta.d.ts.map +1 -0
  103. package/dist/dts/Parser.d.ts +16 -0
  104. package/dist/dts/Parser.d.ts.map +1 -0
  105. package/dist/dts/Part.d.ts +147 -0
  106. package/dist/dts/Part.d.ts.map +1 -0
  107. package/dist/dts/Placeholder.d.ts +51 -0
  108. package/dist/dts/Placeholder.d.ts.map +1 -0
  109. package/dist/dts/Platform.d.ts +23 -0
  110. package/dist/dts/Platform.d.ts.map +1 -0
  111. package/dist/dts/Render.d.ts +23 -0
  112. package/dist/dts/Render.d.ts.map +1 -0
  113. package/dist/dts/RenderContext.d.ts +88 -0
  114. package/dist/dts/RenderContext.d.ts.map +1 -0
  115. package/dist/dts/RenderEvent.d.ts +37 -0
  116. package/dist/dts/RenderEvent.d.ts.map +1 -0
  117. package/dist/dts/RenderTemplate.d.ts +38 -0
  118. package/dist/dts/RenderTemplate.d.ts.map +1 -0
  119. package/dist/dts/Renderable.d.ts +28 -0
  120. package/dist/dts/Renderable.d.ts.map +1 -0
  121. package/dist/dts/Template.d.ts +218 -0
  122. package/dist/dts/Template.d.ts.map +1 -0
  123. package/dist/dts/TemplateInstance.d.ts +32 -0
  124. package/dist/dts/TemplateInstance.d.ts.map +1 -0
  125. package/dist/dts/Test.d.ts +58 -0
  126. package/dist/dts/Test.d.ts.map +1 -0
  127. package/dist/dts/Token.d.ts +202 -0
  128. package/dist/dts/Token.d.ts.map +1 -0
  129. package/dist/dts/Tokenizer.d.ts +6 -0
  130. package/dist/dts/Tokenizer.d.ts.map +1 -0
  131. package/dist/dts/Vitest.d.ts +28 -0
  132. package/dist/dts/Vitest.d.ts.map +1 -0
  133. package/dist/dts/index.d.ts +65 -0
  134. package/dist/dts/index.d.ts.map +1 -0
  135. package/dist/dts/internal/HydrateContext.d.ts +2 -0
  136. package/dist/dts/internal/HydrateContext.d.ts.map +1 -0
  137. package/dist/dts/internal/browser.d.ts +8 -0
  138. package/dist/dts/internal/browser.d.ts.map +1 -0
  139. package/dist/dts/internal/chunks.d.ts +22 -0
  140. package/dist/dts/internal/chunks.d.ts.map +1 -0
  141. package/dist/dts/internal/errors.d.ts +9 -0
  142. package/dist/dts/internal/errors.d.ts.map +1 -0
  143. package/dist/dts/internal/hydrate.d.ts +37 -0
  144. package/dist/dts/internal/hydrate.d.ts.map +1 -0
  145. package/dist/dts/internal/indexRefCounter.d.ts +6 -0
  146. package/dist/dts/internal/indexRefCounter.d.ts.map +1 -0
  147. package/dist/dts/internal/module-augmentation.d.ts +36 -0
  148. package/dist/dts/internal/module-augmentation.d.ts.map +1 -0
  149. package/dist/dts/internal/parser.d.ts +12 -0
  150. package/dist/dts/internal/parser.d.ts.map +1 -0
  151. package/dist/dts/internal/parts.d.ts +304 -0
  152. package/dist/dts/internal/parts.d.ts.map +1 -0
  153. package/dist/dts/internal/readAttribute.d.ts +9 -0
  154. package/dist/dts/internal/readAttribute.d.ts.map +1 -0
  155. package/dist/dts/internal/render.d.ts +30 -0
  156. package/dist/dts/internal/render.d.ts.map +1 -0
  157. package/dist/dts/internal/server.d.ts +31 -0
  158. package/dist/dts/internal/server.d.ts.map +1 -0
  159. package/dist/dts/internal/tokenizer.d.ts +3 -0
  160. package/dist/dts/internal/tokenizer.d.ts.map +1 -0
  161. package/dist/dts/internal/utils.d.ts +15 -0
  162. package/dist/dts/internal/utils.d.ts.map +1 -0
  163. package/dist/esm/Directive.js +64 -0
  164. package/dist/esm/Directive.js.map +1 -0
  165. package/dist/esm/ElementRef.js +72 -0
  166. package/dist/esm/ElementRef.js.map +1 -0
  167. package/dist/esm/ElementSource.js +237 -0
  168. package/dist/esm/ElementSource.js.map +1 -0
  169. package/dist/esm/Entry.js +2 -0
  170. package/dist/esm/Entry.js.map +1 -0
  171. package/dist/esm/EventHandler.js +52 -0
  172. package/dist/esm/EventHandler.js.map +1 -0
  173. package/dist/esm/Html.js +167 -0
  174. package/dist/esm/Html.js.map +1 -0
  175. package/dist/esm/HtmlChunk.js +274 -0
  176. package/dist/esm/HtmlChunk.js.map +1 -0
  177. package/dist/esm/Hydrate.js +37 -0
  178. package/dist/esm/Hydrate.js.map +1 -0
  179. package/dist/esm/Many.js +33 -0
  180. package/dist/esm/Many.js.map +1 -0
  181. package/dist/esm/Meta.js +29 -0
  182. package/dist/esm/Meta.js.map +1 -0
  183. package/dist/esm/Parser.js +342 -0
  184. package/dist/esm/Parser.js.map +1 -0
  185. package/dist/esm/Part.js +5 -0
  186. package/dist/esm/Part.js.map +1 -0
  187. package/dist/esm/Placeholder.js +30 -0
  188. package/dist/esm/Placeholder.js.map +1 -0
  189. package/dist/esm/Platform.js +41 -0
  190. package/dist/esm/Platform.js.map +1 -0
  191. package/dist/esm/Render.js +27 -0
  192. package/dist/esm/Render.js.map +1 -0
  193. package/dist/esm/RenderContext.js +113 -0
  194. package/dist/esm/RenderContext.js.map +1 -0
  195. package/dist/esm/RenderEvent.js +36 -0
  196. package/dist/esm/RenderEvent.js.map +1 -0
  197. package/dist/esm/RenderTemplate.js +26 -0
  198. package/dist/esm/RenderTemplate.js.map +1 -0
  199. package/dist/esm/Renderable.js +2 -0
  200. package/dist/esm/Renderable.js.map +1 -0
  201. package/dist/esm/Template.js +239 -0
  202. package/dist/esm/Template.js.map +1 -0
  203. package/dist/esm/TemplateInstance.js +43 -0
  204. package/dist/esm/TemplateInstance.js.map +1 -0
  205. package/dist/esm/Test.js +68 -0
  206. package/dist/esm/Test.js.map +1 -0
  207. package/dist/esm/Token.js +264 -0
  208. package/dist/esm/Token.js.map +1 -0
  209. package/dist/esm/Tokenizer.js +9 -0
  210. package/dist/esm/Tokenizer.js.map +1 -0
  211. package/dist/esm/Vitest.js +29 -0
  212. package/dist/esm/Vitest.js.map +1 -0
  213. package/dist/esm/index.js +65 -0
  214. package/dist/esm/index.js.map +1 -0
  215. package/dist/esm/internal/HydrateContext.js +7 -0
  216. package/dist/esm/internal/HydrateContext.js.map +1 -0
  217. package/dist/esm/internal/browser.js +102 -0
  218. package/dist/esm/internal/browser.js.map +1 -0
  219. package/dist/esm/internal/chunks.js +47 -0
  220. package/dist/esm/internal/chunks.js.map +1 -0
  221. package/dist/esm/internal/errors.js +15 -0
  222. package/dist/esm/internal/errors.js.map +1 -0
  223. package/dist/esm/internal/hydrate.js +165 -0
  224. package/dist/esm/internal/hydrate.js.map +1 -0
  225. package/dist/esm/internal/indexRefCounter.js +24 -0
  226. package/dist/esm/internal/indexRefCounter.js.map +1 -0
  227. package/dist/esm/internal/module-augmentation.js +2 -0
  228. package/dist/esm/internal/module-augmentation.js.map +1 -0
  229. package/dist/esm/internal/parser.js +493 -0
  230. package/dist/esm/internal/parser.js.map +1 -0
  231. package/dist/esm/internal/parts.js +291 -0
  232. package/dist/esm/internal/parts.js.map +1 -0
  233. package/dist/esm/internal/readAttribute.js +24 -0
  234. package/dist/esm/internal/readAttribute.js.map +1 -0
  235. package/dist/esm/internal/render.js +329 -0
  236. package/dist/esm/internal/render.js.map +1 -0
  237. package/dist/esm/internal/server.js +174 -0
  238. package/dist/esm/internal/server.js.map +1 -0
  239. package/dist/esm/internal/tokenizer.js +296 -0
  240. package/dist/esm/internal/tokenizer.js.map +1 -0
  241. package/dist/esm/internal/utils.js +52 -0
  242. package/dist/esm/internal/utils.js.map +1 -0
  243. package/dist/esm/package.json +4 -0
  244. package/package.json +242 -0
  245. package/src/Directive.ts +114 -0
  246. package/src/ElementRef.ts +123 -0
  247. package/src/ElementSource.ts +417 -0
  248. package/src/Entry.ts +28 -0
  249. package/src/EventHandler.ts +104 -0
  250. package/src/Html.ts +258 -0
  251. package/src/HtmlChunk.ts +346 -0
  252. package/src/Hydrate.ts +53 -0
  253. package/src/Many.ts +128 -0
  254. package/src/Meta.ts +32 -0
  255. package/src/Parser.ts +457 -0
  256. package/src/Part.ts +186 -0
  257. package/src/Placeholder.ts +70 -0
  258. package/src/Platform.ts +71 -0
  259. package/src/Render.ts +45 -0
  260. package/src/RenderContext.ts +221 -0
  261. package/src/RenderEvent.ts +67 -0
  262. package/src/RenderTemplate.ts +88 -0
  263. package/src/Renderable.ts +34 -0
  264. package/src/Template.ts +284 -0
  265. package/src/TemplateInstance.ts +83 -0
  266. package/src/Test.ts +151 -0
  267. package/src/Token.ts +269 -0
  268. package/src/Tokenizer.ts +10 -0
  269. package/src/Vitest.ts +61 -0
  270. package/src/index.ts +66 -0
  271. package/src/internal/HydrateContext.ts +23 -0
  272. package/src/internal/browser.ts +132 -0
  273. package/src/internal/chunks.ts +73 -0
  274. package/src/internal/errors.ts +11 -0
  275. package/src/internal/external.d.ts +11 -0
  276. package/src/internal/hydrate.ts +262 -0
  277. package/src/internal/indexRefCounter.ts +33 -0
  278. package/src/internal/module-augmentation.ts +48 -0
  279. package/src/internal/parser.ts +637 -0
  280. package/src/internal/parts.ts +527 -0
  281. package/src/internal/readAttribute.ts +28 -0
  282. package/src/internal/render.ts +529 -0
  283. package/src/internal/server.ts +293 -0
  284. package/src/internal/tokenizer.ts +338 -0
  285. package/src/internal/utils.ts +73 -0
@@ -0,0 +1,30 @@
1
+ import type { Rendered } from "@typed/wire";
2
+ import { Effect } from "effect";
3
+ import type { Cause } from "effect/Cause";
4
+ import type { Scope } from "effect/Scope";
5
+ import * as ElementRef from "../ElementRef";
6
+ import type { BrowserEntry } from "../Entry";
7
+ import type { Part, Parts, SparsePart } from "../Part";
8
+ import type { Placeholder } from "../Placeholder";
9
+ import type { ToRendered } from "../Render";
10
+ import type { Renderable } from "../Renderable";
11
+ import type { RenderContext } from "../RenderContext";
12
+ import type { RenderEvent } from "../RenderEvent";
13
+ import type { RenderTemplate } from "../RenderTemplate";
14
+ import type * as Template from "../Template";
15
+ import { HydrateContext } from "./HydrateContext";
16
+ import type { IndexRefCounter } from "./indexRefCounter";
17
+ import type { ParentChildNodes } from "./utils";
18
+ /**
19
+ * Here for "standard" browser rendering, a TemplateInstance is effectively a live
20
+ * view into the contents rendered by the Template.
21
+ */
22
+ export declare const renderTemplate: (document: Document, ctx: RenderContext) => RenderTemplate;
23
+ export declare function renderValues<Values extends ReadonlyArray<Renderable<any, any>>>(values: Values, parts: Parts, refCounter: IndexRefCounter, onCause: (cause: Cause<Placeholder.Error<Values[number]>>) => Effect.Effect<never, never, unknown>, makeHydrateContext?: (index: number) => HydrateContext): Effect.Effect<Placeholder.Context<Values[number]> | Scope, never, void>;
24
+ export declare function renderSparsePart(values: ReadonlyArray<Renderable<any, any>>, part: SparsePart, refCounter: IndexRefCounter): Effect.Effect<unknown, never, import("effect/Fiber").RuntimeFiber<unknown, void>>;
25
+ export declare function renderPart<Values extends ReadonlyArray<Renderable<any, any>>>(values: Values, part: Part, refCounter: IndexRefCounter, onCause: (cause: Cause<Placeholder.Error<Values[number]>>) => Effect.Effect<never, never, unknown>, hydrateCtx?: () => HydrateContext): Effect.Effect<any, never, void>;
26
+ export declare function attachRoot<T extends RenderEvent | null>(cache: RenderContext["renderCache"], where: HTMLElement, what: RenderEvent | null): Effect.Effect<never, never, ToRendered<T>>;
27
+ export declare function getBrowserEntry(document: Document, ctx: RenderContext, templateStrings: TemplateStringsArray): BrowserEntry;
28
+ export declare function buildParts<T extends Rendered, E>(document: Document, ctx: RenderContext, template: Template.Template, content: ParentChildNodes, ref: ElementRef.ElementRef<T>, onCause: (cause: Cause<E>) => Effect.Effect<never, never, void>, isHydrating: boolean): Effect.Effect<Scope, never, Parts>;
29
+ export declare function buildTemplate(document: Document, { nodes }: Template.Template): DocumentFragment;
30
+ //# sourceMappingURL=render.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../../src/internal/render.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import * as Effect from "effect/Effect";
2
+ import type { HtmlChunk, PartChunk, SparsePartChunk } from "../HtmlChunk";
3
+ import type { Part, SparsePart } from "../Part";
4
+ import type { Renderable } from "../Renderable";
5
+ import type { PartNode } from "../Template";
6
+ export type RenderChunk<R, E> = TextRenderChunk | PartRenderChunk<R, E> | SparsePartRenderChunk<R, E>;
7
+ export declare class TextRenderChunk {
8
+ readonly index: number;
9
+ readonly value: string;
10
+ readonly type = "text";
11
+ constructor(index: number, value: string);
12
+ }
13
+ export declare class PartRenderChunk<R, E> {
14
+ readonly index: number;
15
+ readonly chunk: PartChunk;
16
+ readonly part: Part;
17
+ readonly renderable: Renderable<R, E>;
18
+ readonly type = "part";
19
+ constructor(index: number, chunk: PartChunk, part: Part, renderable: Renderable<R, E>);
20
+ }
21
+ export declare class SparsePartRenderChunk<R, E> {
22
+ readonly index: number;
23
+ readonly chunk: SparsePartChunk;
24
+ readonly part: SparsePart;
25
+ readonly renderables: Array<Renderable<R, E>>;
26
+ readonly type = "sparse-part";
27
+ constructor(index: number, chunk: SparsePartChunk, part: SparsePart, renderables: Array<Renderable<R, E>>);
28
+ }
29
+ export declare function htmlChunksToRenderChunks<R, E>(chunks: ReadonlyArray<HtmlChunk>, values: ReadonlyArray<Renderable<R, E>>, onChunk: (index: number, value: string) => Effect.Effect<never, never, void>): RenderChunk<R, E>[];
30
+ export declare function partNodeToPart(node: PartNode, onChunk: (value: unknown) => Effect.Effect<never, never, void>): Part;
31
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/internal/server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AACzE,OAAO,KAAK,EAIV,IAAI,EAIJ,UAAU,EAEX,MAAM,SAAS,CAAA;AAChB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC/C,OAAO,KAAK,EAAE,QAAQ,EAA0E,MAAM,aAAa,CAAA;AAgBnH,MAAM,MAAM,WAAW,CAAC,CAAC,EAAE,CAAC,IACxB,eAAe,GACf,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,GACrB,qBAAqB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AAE/B,qBAAa,eAAe;IAIxB,QAAQ,CAAC,KAAK,EAAE,MAAM;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM;IAJxB,QAAQ,CAAC,IAAI,UAAS;gBAGX,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM;CAEzB;AAED,qBAAa,eAAe,CAAC,CAAC,EAAE,CAAC;IAI7B,QAAQ,CAAC,KAAK,EAAE,MAAM;IACtB,QAAQ,CAAC,KAAK,EAAE,SAAS;IACzB,QAAQ,CAAC,IAAI,EAAE,IAAI;IACnB,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC;IANvC,QAAQ,CAAC,IAAI,UAAS;gBAGX,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,SAAS,EAChB,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC;CAExC;AAED,qBAAa,qBAAqB,CAAC,CAAC,EAAE,CAAC;IAInC,QAAQ,CAAC,KAAK,EAAE,MAAM;IACtB,QAAQ,CAAC,KAAK,EAAE,eAAe;IAC/B,QAAQ,CAAC,IAAI,EAAE,UAAU;IACzB,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAN/C,QAAQ,CAAC,IAAI,iBAAgB;gBAGlB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,eAAe,EACtB,IAAI,EAAE,UAAU,EAChB,WAAW,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CAEhD;AAgCD,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,CAAC,EAC3C,MAAM,EAAE,aAAa,CAAC,SAAS,CAAC,EAChC,MAAM,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EACvC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,uBAU7E;AA0BD,wBAAgB,cAAc,CAC5B,IAAI,EAAE,QAAQ,EACd,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,GAC7D,IAAI,CAEN"}
@@ -0,0 +1,3 @@
1
+ import * as Token from "../Token";
2
+ export declare function tokenize(template: ReadonlyArray<string>): Iterable<Token.Token>;
3
+ //# sourceMappingURL=tokenizer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenizer.d.ts","sourceRoot":"","sources":["../../../src/internal/tokenizer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,UAAU,CAAA;AAoBjC,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAE/E"}
@@ -0,0 +1,15 @@
1
+ import * as Chunk from "effect/Chunk";
2
+ import type * as Duration from "effect/Duration";
3
+ import * as Effect from "effect/Effect";
4
+ export declare function isComment(node: Node): node is Comment;
5
+ export declare function isCommentWithValue(node: Node, value: string): node is Comment;
6
+ export declare function isHtmlElement(node: Node): node is HTMLElement;
7
+ export declare function findHoleComment(parent: Element, index: number): Comment;
8
+ export declare function getPreviousNodes(comment: Node, index: number): Node[];
9
+ export declare const findPath: (node: ParentChildNodes, path: Chunk.Chunk<number>) => Node;
10
+ export interface ParentChildNodes {
11
+ readonly parentNode: Node | null;
12
+ readonly childNodes: ArrayLike<Node>;
13
+ }
14
+ export declare function adjustTime(input?: Duration.DurationInput): Effect.Effect<never, never, void>;
15
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/internal/utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,KAAK,QAAQ,MAAM,iBAAiB,CAAA;AAChD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAKvC,wBAAgB,SAAS,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,IAAI,OAAO,CAErD;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,IAAI,OAAO,CAE7E;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,IAAI,WAAW,CAE7D;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,WAY7D;AAID,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,UAe5D;AAED,eAAO,MAAM,QAAQ,SAAU,gBAAgB,QAAQ,WAAW,CAAC,MAAM,CAAC,KAAG,IACG,CAAA;AAEhF,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,UAAU,EAAE,IAAI,GAAG,IAAI,CAAA;IAChC,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC,IAAI,CAAC,CAAA;CACrC;AAED,wBAAgB,UAAU,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,aAAa,qCAWxD"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * @since 1.0.0
3
+ */
4
+ import * as Effect from "effect/Effect";
5
+ /**
6
+ * @since 1.0.0
7
+ */
8
+ export const DirectiveTypeId = Symbol.for(".Directive");
9
+ /**
10
+ * @since 1.0.0
11
+ */
12
+ export function Directive(directive) {
13
+ return Object.assign((p) => directive(p), {
14
+ [DirectiveTypeId]: DirectiveTypeId
15
+ });
16
+ }
17
+ const withTag = (tag) => (directive) => Directive((part) => part._tag === tag ? directive(part) : Effect.logDebug(`Expected ${tag} Part but received ${part._tag}`));
18
+ /**
19
+ * @since 1.0.0
20
+ */
21
+ export const attribute = withTag("attribute");
22
+ /**
23
+ * @since 1.0.0
24
+ */
25
+ export const boolean = withTag("boolean");
26
+ /**
27
+ * @since 1.0.0
28
+ */
29
+ export const className = withTag("className");
30
+ /**
31
+ * @since 1.0.0
32
+ */
33
+ export const data = withTag("data");
34
+ /**
35
+ * @since 1.0.0
36
+ */
37
+ export const event = withTag("event");
38
+ /**
39
+ * @since 1.0.0
40
+ */
41
+ export const property = withTag("property");
42
+ /**
43
+ * @since 1.0.0
44
+ */
45
+ export const ref = withTag("ref");
46
+ /**
47
+ * @since 1.0.0
48
+ */
49
+ export const comment = withTag("comment");
50
+ /**
51
+ * @since 1.0.0
52
+ */
53
+ export const text = withTag("text");
54
+ /**
55
+ * @since 1.0.0
56
+ */
57
+ export const node = withTag("node");
58
+ /**
59
+ * @since 1.0.0
60
+ */
61
+ export function isDirective(renderable) {
62
+ return typeof renderable === "function" && DirectiveTypeId in renderable;
63
+ }
64
+ //# sourceMappingURL=Directive.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Directive.js","sourceRoot":"","sources":["../../src/Directive.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAIvC;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;AAevD;;GAEG;AACH,MAAM,UAAU,SAAS,CACvB,SAA4D;IAE5D,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAY,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;QACnD,CAAC,eAAe,CAAC,EAAE,eAAe;KACnC,CAAoB,CAAA;AACvB,CAAC;AAED,MAAM,OAAO,GAAG,CAA8B,GAAM,EAAE,EAAE,CACxD,CACE,SAA2F,EAC1E,EAAE,CACnB,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CACjB,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,IAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,GAAG,sBAAsB,IAAI,CAAC,IAAI,EAAE,CAAC,CAC/G,CAAA;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAEC,OAAO,CAAC,WAAW,CAAC,CAAA;AAE3C;;GAEG;AACH,MAAM,CAAC,MAAM,OAAO,GAClB,OAAO,CAAC,SAAS,CAAC,CAAA;AAEpB;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAEC,OAAO,CAAC,WAAW,CAAC,CAAA;AAE3C;;GAEG;AACH,MAAM,CAAC,MAAM,IAAI,GACf,OAAO,CAAC,MAAM,CAAC,CAAA;AAEjB;;GAEG;AACH,MAAM,CAAC,MAAM,KAAK,GAChB,OAAO,CAAC,OAAO,CAAC,CAAA;AAElB;;GAEG;AACH,MAAM,CAAC,MAAM,QAAQ,GACnB,OAAO,CAAC,UAAU,CAAC,CAAA;AAErB;;GAEG;AACH,MAAM,CAAC,MAAM,GAAG,GAA+F,OAAO,CACpH,KAAK,CACN,CAAA;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,OAAO,GAClB,OAAO,CAAC,SAAS,CAAC,CAAA;AAEpB;;GAEG;AACH,MAAM,CAAC,MAAM,IAAI,GACf,OAAO,CAAC,MAAM,CAAC,CAAA;AAEjB;;GAEG;AACH,MAAM,CAAC,MAAM,IAAI,GACf,OAAO,CAAC,MAAM,CAAC,CAAA;AAEjB;;GAEG;AACH,MAAM,UAAU,WAAW,CAAO,UAAmB;IACnD,OAAO,OAAO,UAAU,KAAK,UAAU,IAAI,eAAe,IAAK,UAAkB,CAAA;AACnF,CAAC"}
@@ -0,0 +1,72 @@
1
+ import { compact } from "@typed/fx/Fx";
2
+ import { FxEffectBase } from "@typed/fx/internal/protos";
3
+ import * as RefSubject from "@typed/fx/RefSubject";
4
+ import { Effect, Option } from "effect";
5
+ import { dual } from "effect/Function";
6
+ import { ElementSource, getElements } from "./ElementSource";
7
+ import { adjustTime } from "./internal/utils";
8
+ export const ElementRefTypeId = Symbol.for("./ElementRef");
9
+ const strictEqual = Option.getEquivalence((a, b) => a === b);
10
+ /**
11
+ * @since 1.0.0
12
+ */
13
+ export function make() {
14
+ return Effect.map(RefSubject.of(Option.none(), strictEqual), (ref) => new ElementRefImpl(ref));
15
+ }
16
+ /**
17
+ * @since 1.0.0
18
+ */
19
+ export function of(rendered) {
20
+ return Effect.map(RefSubject.of(Option.some(rendered), strictEqual), (ref) => new ElementRefImpl(ref));
21
+ }
22
+ // @ts-expect-error placeholder issues
23
+ class ElementRefImpl extends FxEffectBase {
24
+ ref;
25
+ [ElementRefTypeId];
26
+ source;
27
+ query;
28
+ events;
29
+ elements;
30
+ version;
31
+ dispatchEvent;
32
+ constructor(ref) {
33
+ super();
34
+ this.ref = ref;
35
+ this[ElementRefTypeId] = ref;
36
+ this.source = ElementSource(RefSubject.compact(ref));
37
+ this.query = this.source.query;
38
+ this.events = this.source.events;
39
+ this.elements = this.source.elements;
40
+ this.dispatchEvent = this.source.dispatchEvent;
41
+ this.version = ref.version;
42
+ }
43
+ toFx() {
44
+ return compact(this.ref);
45
+ }
46
+ toEffect() {
47
+ return Effect.flatten(this.ref.get);
48
+ }
49
+ }
50
+ /**
51
+ * @since 1.0.0
52
+ */
53
+ export const set = dual(2, function set(elementRef, value) {
54
+ return Effect.as(elementRef[ElementRefTypeId].set(Option.some(value)), value);
55
+ });
56
+ /**
57
+ * @since 1.0.0
58
+ */
59
+ export function dispatchEvent(ref, event) {
60
+ return ref.pipe(Effect.flatMap((rendered) => {
61
+ const elements = getElements(rendered);
62
+ if (elements.length === 0)
63
+ return Option.none();
64
+ // TODO: How should we manage multiple elements?
65
+ return Effect.sync(() => elements[0].dispatchEvent(event));
66
+ }),
67
+ // Allow changes to take place
68
+ Effect.zipRight(adjustTime(1)),
69
+ // Allow additional fibers to start
70
+ Effect.zipRight(adjustTime(1)));
71
+ }
72
+ //# sourceMappingURL=ElementRef.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ElementRef.js","sourceRoot":"","sources":["../../src/ElementRef.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,KAAK,UAAU,MAAM,sBAAsB,CAAA;AAIlD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAEvC,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAEtC,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAG7C,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;AAkB1D,MAAM,WAAW,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAA;AAE5D;;GAEG;AACH,MAAM,UAAU,IAAI;IAClB,OAAO,MAAM,CAAC,GAAG,CACf,UAAU,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,EAAK,EAAE,WAAW,CAAC,EAC5C,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,cAAc,CAAC,GAAG,CAAyB,CACzD,CAAA;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,EAAE,CAAqB,QAAW;IAChD,OAAO,MAAM,CAAC,GAAG,CACf,UAAU,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAI,QAAQ,CAAC,EAAE,WAAW,CAAC,EACpD,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,cAAc,CAAC,GAAG,CAAyB,CACzD,CAAA;AACH,CAAC;AAED,sCAAsC;AACtC,MAAM,cAAmC,SAAQ,YAA+D;IAiBzF;IAbZ,CAAC,gBAAgB,CAAC,CAAuD;IAE1E,MAAM,CAGb;IAEQ,KAAK,CAAwB;IAC7B,MAAM,CAAyB;IAC/B,QAAQ,CAA2B;IACnC,OAAO,CAA0B;IACjC,aAAa,CAAgC;IAEtD,YAAqB,GAA0D;QAC7E,KAAK,EAAE,CAAA;QADY,QAAG,GAAH,GAAG,CAAuD;QAE7E,IAAI,CAAC,gBAAgB,CAAC,GAAG,GAAG,CAAA;QAC5B,IAAI,CAAC,MAAM,GAAG,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAA;QACpD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAA;QAC9B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAA;QAChC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAA;QACpC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAA;QAC9C,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,CAAA;IAC5B,CAAC;IAES,IAAI;QACZ,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAC1B,CAAC;IAES,QAAQ;QAChB,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IACrC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,GAAG,GAGZ,IAAI,CAAC,CAAC,EAAE,SAAS,GAAG,CAAqB,UAAyB,EAAE,KAAQ;IAC9E,OAAO,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;AAC/E,CAAC,CAAC,CAAA;AAEF;;GAEG;AACH,MAAM,UAAU,aAAa,CAAqB,GAAkB,EAAE,KAAY;IAChF,OAAO,GAAG,CAAC,IAAI,CACb,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;QAC1B,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAA;QACtC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,MAAM,CAAC,IAAI,EAAE,CAAA;QAC/C,gDAAgD;QAChD,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAA;IAC5D,CAAC,CAAC;IACF,8BAA8B;IAC9B,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAC9B,mCAAmC;IACnC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAC/B,CAAA;AACH,CAAC"}
@@ -0,0 +1,237 @@
1
+ /**
2
+ * @since 1.0.0
3
+ */
4
+ import { addEventListener } from "@typed/dom/EventTarget";
5
+ import { Filtered } from "@typed/fx/Filtered";
6
+ import * as Fx from "@typed/fx/Fx";
7
+ import { FxEffectBase } from "@typed/fx/internal/protos";
8
+ import * as Versioned from "@typed/fx/Versioned";
9
+ import { isWire } from "@typed/wire";
10
+ import * as Effect from "effect/Effect";
11
+ import { pipe } from "effect/Function";
12
+ import * as Scope from "effect/Scope";
13
+ import { adjustTime } from "./internal/utils";
14
+ import { PlaceholderTypeId } from "./Placeholder";
15
+ /**
16
+ * @since 1.0.0
17
+ */
18
+ export function ElementSource(rootElement) {
19
+ return new ElementSourceImpl(rootElement);
20
+ }
21
+ /**
22
+ * @since 1.0.0
23
+ */
24
+ export const ROOT_CSS_SELECTOR = `:root`;
25
+ /**
26
+ * @since 1.0.0
27
+ */
28
+ export function getElements(element) {
29
+ if (Array.isArray(element))
30
+ return element.flatMap(getElements);
31
+ if (isWire(element)) {
32
+ return Array.from(element.valueOf().children);
33
+ }
34
+ if (isElement(element))
35
+ return [element];
36
+ if (isDocumentFragment(element)) {
37
+ return Array.from(element.children);
38
+ }
39
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
40
+ if (element.parentElement)
41
+ return [element.parentElement];
42
+ return [];
43
+ }
44
+ function findMostSpecificElement(cssSelectors) {
45
+ return function (element) {
46
+ const elements = getElements(element);
47
+ for (let i = 0; i < cssSelectors.length; ++i) {
48
+ const cssSelector = dropLast(i, cssSelectors).join(" ");
49
+ for (let j = 0; j < elements.length; ++j) {
50
+ const node = elements[j].querySelector(cssSelector);
51
+ if (node)
52
+ return node;
53
+ }
54
+ }
55
+ return element;
56
+ };
57
+ }
58
+ function findMatchingElements(cssSelectors) {
59
+ if (cssSelectors.length === 0)
60
+ return getElements;
61
+ const cssSelector = cssSelectors.join(" ");
62
+ return function (element) {
63
+ const elements = getElements(element);
64
+ const nodes = elements.flatMap((element) => Array.from(element.querySelectorAll(cssSelector)));
65
+ const matchedElements = elements.filter((element) => element.matches(cssSelector));
66
+ if (matchedElements.length > 0)
67
+ return [...matchedElements, ...nodes];
68
+ return nodes;
69
+ };
70
+ }
71
+ function dropLast(i, cssSelectors) {
72
+ return cssSelectors.slice(0, cssSelectors.length - i);
73
+ }
74
+ function makeEventStream(cssSelectors, eventName, options = {}) {
75
+ return function (element) {
76
+ const { capture } = options;
77
+ const cssSelector = cssSelectors.join(" ");
78
+ const lastTwoCssSelectors = cssSelectors.slice(-2).join("");
79
+ const elements = getElements(element);
80
+ const event$ = Fx.merge(elements.map((element) => Fx.filter(Fx.withScopedFork(({ scope, sink }) => Effect.zipRight(Effect.provideService(addEventListener(element, {
81
+ eventName,
82
+ handler: (ev) => sink.onSuccess(ev)
83
+ }), Scope.Scope, scope), Effect.never)), (event) => ensureMatches(cssSelector, element, event, capture) ||
84
+ ensureMatches(lastTwoCssSelectors, element, event, capture))));
85
+ if (capture) {
86
+ return pipe(event$, Fx.map(findCurrentTarget(cssSelector, element)));
87
+ }
88
+ return event$;
89
+ };
90
+ }
91
+ function makeElementEventStream(currentTarget, eventName, options = {}) {
92
+ return function (rendered) {
93
+ const { capture } = options;
94
+ const elements = getElements(rendered);
95
+ const event$ = Fx.merge(elements.map((element) => Fx.filter(Fx.withScopedFork(({ scope, sink }) => Effect.zipRight(Effect.provideService(addEventListener(element, {
96
+ eventName,
97
+ handler: (ev) => sink.onSuccess(ev)
98
+ }), Scope.Scope, scope), Effect.never)), (event) => event.target ? currentTarget.contains(event.target) : false)));
99
+ if (capture) {
100
+ return event$.pipe(Fx.map((ev) => cloneEvent(ev, currentTarget)));
101
+ }
102
+ return event$;
103
+ };
104
+ }
105
+ function findCurrentTarget(cssSelector, element) {
106
+ const elements = getElements(element);
107
+ const length = elements.length;
108
+ return function (event) {
109
+ for (let i = 0; i < length; ++i) {
110
+ const element = elements[i];
111
+ const isCurrentTarget = !cssSelector || element.matches(cssSelector);
112
+ if (isCurrentTarget)
113
+ return cloneEvent(event, element);
114
+ const nodes = element.querySelectorAll(cssSelector);
115
+ for (let i = 0; i < nodes.length; ++i) {
116
+ const node = nodes[i];
117
+ const containsEventTarget = node.contains(event.target);
118
+ if (containsEventTarget)
119
+ return cloneEvent(event, node);
120
+ }
121
+ }
122
+ return event;
123
+ };
124
+ }
125
+ const EVENT_PROPERTY_TO_REPLACE = "currentTarget";
126
+ function cloneEvent(event, currentTarget) {
127
+ return new Proxy(event, {
128
+ get(target, property) {
129
+ return property === EVENT_PROPERTY_TO_REPLACE ? currentTarget : target[property];
130
+ }
131
+ });
132
+ }
133
+ function ensureMatches(cssSelector, element, ev, capture = false) {
134
+ let target = ev.target;
135
+ if (!cssSelector)
136
+ return (capture && element.contains(target)) || target === element;
137
+ for (; target && target !== element; target = target.parentElement) {
138
+ if (target.matches(cssSelector))
139
+ return true;
140
+ }
141
+ return element.matches(cssSelector);
142
+ }
143
+ function isDocumentFragment(element) {
144
+ return element.nodeType === element.DOCUMENT_FRAGMENT_NODE;
145
+ }
146
+ function isElement(element) {
147
+ return element.nodeType === element.ELEMENT_NODE;
148
+ }
149
+ /**
150
+ * @internal
151
+ * @since 1.0.0
152
+ */
153
+ // @ts-expect-error
154
+ export class ElementSourceImpl extends FxEffectBase {
155
+ rootElement;
156
+ selector;
157
+ [PlaceholderTypeId];
158
+ bubbleMap = new Map();
159
+ captureMap = new Map();
160
+ elements;
161
+ version;
162
+ constructor(rootElement, selector = CssSelectors([])) {
163
+ super();
164
+ this.rootElement = rootElement;
165
+ this.selector = selector;
166
+ this.query = this.query.bind(this);
167
+ this.events = this.events.bind(this);
168
+ this.elements = this.selector._tag === "css" ?
169
+ this.rootElement.map(findMatchingElements(this.selector.selectors)) :
170
+ Filtered(Versioned.of(this.selector.element), (x) => Effect.succeedSome([x]));
171
+ this.version = this.elements.version;
172
+ }
173
+ static fromElement(rootElement) {
174
+ return new ElementSourceImpl(Filtered(Versioned.of(rootElement), Effect.succeedSome));
175
+ }
176
+ toEffect() {
177
+ return this.elements;
178
+ }
179
+ toFx() {
180
+ return this.elements;
181
+ }
182
+ query(selector) {
183
+ if (selector === ROOT_CSS_SELECTOR) {
184
+ return this;
185
+ }
186
+ else if (typeof selector === "string") {
187
+ if (this.selector._tag === "css") {
188
+ return new ElementSourceImpl(this.rootElement, CssSelectors([...this.selector.selectors, selector]));
189
+ }
190
+ else {
191
+ return ElementSourceImpl.fromElement(this.selector.element).query(selector);
192
+ }
193
+ }
194
+ else {
195
+ return new ElementSourceImpl(this.rootElement, ElementSelector(selector));
196
+ }
197
+ }
198
+ events(type, options) {
199
+ const capture = options?.capture === true;
200
+ const map = capture ? this.captureMap : this.bubbleMap;
201
+ let current = map.get(type);
202
+ if (current === undefined) {
203
+ if (this.selector._tag === "css") {
204
+ current = this.rootElement.map(findMostSpecificElement(this.selector.selectors)).pipe(Fx.switchMap(makeEventStream(this.selector.selectors, type, options)), Fx.multicast);
205
+ }
206
+ else {
207
+ current = this.rootElement.pipe(Fx.switchMap(makeElementEventStream(this.selector.element, type, options)), Fx.multicast);
208
+ }
209
+ map.set(type, current);
210
+ }
211
+ return current;
212
+ }
213
+ dispatchEvent(event, wait) {
214
+ return Effect.zipRight(Effect.flatMap(this.elements, (elements) => Effect.sync(() => elements.length > 0 ? elements[0].dispatchEvent(event) : null)),
215
+ // Allow time to move forward
216
+ adjustTime(wait));
217
+ }
218
+ }
219
+ /**
220
+ * @since 1.0.0
221
+ */
222
+ export function CssSelectors(selectors) {
223
+ return {
224
+ _tag: "css",
225
+ selectors
226
+ };
227
+ }
228
+ /**
229
+ * @since 1.0.0
230
+ */
231
+ export function ElementSelector(element) {
232
+ return {
233
+ _tag: "element",
234
+ element
235
+ };
236
+ }
237
+ //# sourceMappingURL=ElementSource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ElementSource.js","sourceRoot":"","sources":["../../src/ElementSource.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Entry.js","sourceRoot":"","sources":["../../src/Entry.ts"],"names":[],"mappings":""}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * @since 1.0.0
3
+ */
4
+ import { isUsingKeyModifier } from "@typed/dom/EventTarget";
5
+ import { unit } from "effect/Effect";
6
+ /**
7
+ * @since 1.0.0
8
+ */
9
+ export const EventHandlerTypeId = Symbol.for("./EventHandler");
10
+ /**
11
+ * @since 1.0.0
12
+ */
13
+ export function make(handler, options) {
14
+ return {
15
+ [EventHandlerTypeId]: EventHandlerTypeId,
16
+ handler,
17
+ options
18
+ };
19
+ }
20
+ /**
21
+ * @since 1.0.0
22
+ */
23
+ export function preventDefault(handler, options) {
24
+ return make((ev) => (ev.preventDefault(), handler(ev)), options);
25
+ }
26
+ /**
27
+ * @since 1.0.0
28
+ */
29
+ export function stopPropagation(handler, options) {
30
+ return make((ev) => (ev.stopPropagation(), handler(ev)), options);
31
+ }
32
+ /**
33
+ * @since 1.0.0
34
+ */
35
+ export function stopImmediatePropagation(handler, options) {
36
+ return make((ev) => (ev.stopImmediatePropagation(), handler(ev)), options);
37
+ }
38
+ /**
39
+ * @since 1.0.0
40
+ */
41
+ export function target() {
42
+ return (handler, options) => {
43
+ return make(handler, options);
44
+ };
45
+ }
46
+ /**
47
+ * @since 1.0.0
48
+ */
49
+ export function keys(...keys) {
50
+ return (handler, options) => make((ev) => !isUsingKeyModifier(ev) && keys.includes(ev.key) ? handler(ev) : unit, options);
51
+ }
52
+ //# sourceMappingURL=EventHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventHandler.js","sourceRoot":"","sources":["../../src/EventHandler.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAwB,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AACjF,OAAO,EAAe,IAAI,EAAE,MAAM,eAAe,CAAA;AAGjD;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;AA4B9D;;GAEG;AACH,MAAM,UAAU,IAAI,CAClB,OAA6C,EAC7C,OAAiC;IAEjC,OAAO;QACL,CAAC,kBAAkB,CAAC,EAAE,kBAAkB;QACxC,OAAO;QACP,OAAO;KACD,CAAA;AACV,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAC5B,OAA6C,EAC7C,OAAiC;IAEjC,OAAO,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,cAAc,EAAE,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;AAClE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAC7B,OAA6C,EAC7C,OAAiC;IAEjC,OAAO,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,eAAe,EAAE,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;AACnE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,wBAAwB,CACtC,OAA6C,EAC7C,OAAiC;IAEjC,OAAO,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,wBAAwB,EAAE,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;AAC5E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,MAAM;IACpB,OAAO,CACL,OAAiE,EACjE,OAAiC,EACW,EAAE;QAC9C,OAAO,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;IAC/B,CAAC,CAAA;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,IAAI,CAAqC,GAAG,IAAU;IACpE,OAAO,CACL,OAAgF,EAChF,OAAiC,EACE,EAAE,CACrC,IAAI,CAAC,CAAC,EAAiB,EAAE,EAAE,CAAC,CAAC,kBAAkB,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;AACtH,CAAC"}