@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.
- package/LICENSE +21 -0
- package/README.md +5 -0
- package/dist/cjs/Directive.js +76 -0
- package/dist/cjs/Directive.js.map +1 -0
- package/dist/cjs/ElementRef.js +83 -0
- package/dist/cjs/ElementRef.js.map +1 -0
- package/dist/cjs/ElementSource.js +244 -0
- package/dist/cjs/ElementSource.js.map +1 -0
- package/dist/cjs/Entry.js +6 -0
- package/dist/cjs/Entry.js.map +1 -0
- package/dist/cjs/EventHandler.js +65 -0
- package/dist/cjs/EventHandler.js.map +1 -0
- package/dist/cjs/Html.js +169 -0
- package/dist/cjs/Html.js.map +1 -0
- package/dist/cjs/HtmlChunk.js +257 -0
- package/dist/cjs/HtmlChunk.js.map +1 -0
- package/dist/cjs/Hydrate.js +49 -0
- package/dist/cjs/Hydrate.js.map +1 -0
- package/dist/cjs/Many.js +45 -0
- package/dist/cjs/Many.js.map +1 -0
- package/dist/cjs/Meta.js +37 -0
- package/dist/cjs/Meta.js.map +1 -0
- package/dist/cjs/Parser.js +331 -0
- package/dist/cjs/Parser.js.map +1 -0
- package/dist/cjs/Part.js +6 -0
- package/dist/cjs/Part.js.map +1 -0
- package/dist/cjs/Placeholder.js +38 -0
- package/dist/cjs/Placeholder.js.map +1 -0
- package/dist/cjs/Platform.js +64 -0
- package/dist/cjs/Platform.js.map +1 -0
- package/dist/cjs/Render.js +39 -0
- package/dist/cjs/Render.js.map +1 -0
- package/dist/cjs/RenderContext.js +130 -0
- package/dist/cjs/RenderContext.js.map +1 -0
- package/dist/cjs/RenderEvent.js +44 -0
- package/dist/cjs/RenderEvent.js.map +1 -0
- package/dist/cjs/RenderTemplate.js +41 -0
- package/dist/cjs/RenderTemplate.js.map +1 -0
- package/dist/cjs/Renderable.js +6 -0
- package/dist/cjs/Renderable.js.map +1 -0
- package/dist/cjs/Template.js +266 -0
- package/dist/cjs/Template.js.map +1 -0
- package/dist/cjs/TemplateInstance.js +51 -0
- package/dist/cjs/TemplateInstance.js.map +1 -0
- package/dist/cjs/Test.js +90 -0
- package/dist/cjs/Test.js.map +1 -0
- package/dist/cjs/Token.js +270 -0
- package/dist/cjs/Token.js.map +1 -0
- package/dist/cjs/Tokenizer.js +18 -0
- package/dist/cjs/Tokenizer.js.map +1 -0
- package/dist/cjs/Vitest.js +44 -0
- package/dist/cjs/Vitest.js.map +1 -0
- package/dist/cjs/index.js +147 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/internal/HydrateContext.js +13 -0
- package/dist/cjs/internal/HydrateContext.js.map +1 -0
- package/dist/cjs/internal/browser.js +109 -0
- package/dist/cjs/internal/browser.js.map +1 -0
- package/dist/cjs/internal/chunks.js +54 -0
- package/dist/cjs/internal/chunks.js.map +1 -0
- package/dist/cjs/internal/errors.js +23 -0
- package/dist/cjs/internal/errors.js.map +1 -0
- package/dist/cjs/internal/hydrate.js +197 -0
- package/dist/cjs/internal/hydrate.js.map +1 -0
- package/dist/cjs/internal/indexRefCounter.js +32 -0
- package/dist/cjs/internal/indexRefCounter.js.map +1 -0
- package/dist/cjs/internal/module-augmentation.js +6 -0
- package/dist/cjs/internal/module-augmentation.js.map +1 -0
- package/dist/cjs/internal/parser.js +492 -0
- package/dist/cjs/internal/parser.js.map +1 -0
- package/dist/cjs/internal/parts.js +350 -0
- package/dist/cjs/internal/parts.js.map +1 -0
- package/dist/cjs/internal/readAttribute.js +34 -0
- package/dist/cjs/internal/readAttribute.js.map +1 -0
- package/dist/cjs/internal/render.js +332 -0
- package/dist/cjs/internal/render.js.map +1 -0
- package/dist/cjs/internal/server.js +219 -0
- package/dist/cjs/internal/server.js.map +1 -0
- package/dist/cjs/internal/tokenizer.js +264 -0
- package/dist/cjs/internal/tokenizer.js.map +1 -0
- package/dist/cjs/internal/utils.js +68 -0
- package/dist/cjs/internal/utils.js.map +1 -0
- package/dist/dts/Directive.d.ts +70 -0
- package/dist/dts/Directive.d.ts.map +1 -0
- package/dist/dts/ElementRef.d.ts +40 -0
- package/dist/dts/ElementRef.d.ts.map +1 -0
- package/dist/dts/ElementSource.d.ts +72 -0
- package/dist/dts/ElementSource.d.ts.map +1 -0
- package/dist/dts/Entry.d.ts +26 -0
- package/dist/dts/Entry.d.ts.map +1 -0
- package/dist/dts/EventHandler.d.ts +61 -0
- package/dist/dts/EventHandler.d.ts.map +1 -0
- package/dist/dts/Html.d.ts +17 -0
- package/dist/dts/Html.d.ts.map +1 -0
- package/dist/dts/HtmlChunk.d.ts +56 -0
- package/dist/dts/HtmlChunk.d.ts.map +1 -0
- package/dist/dts/Hydrate.d.ts +20 -0
- package/dist/dts/Hydrate.d.ts.map +1 -0
- package/dist/dts/Many.d.ts +32 -0
- package/dist/dts/Many.d.ts.map +1 -0
- package/dist/dts/Meta.d.ts +24 -0
- package/dist/dts/Meta.d.ts.map +1 -0
- package/dist/dts/Parser.d.ts +16 -0
- package/dist/dts/Parser.d.ts.map +1 -0
- package/dist/dts/Part.d.ts +147 -0
- package/dist/dts/Part.d.ts.map +1 -0
- package/dist/dts/Placeholder.d.ts +51 -0
- package/dist/dts/Placeholder.d.ts.map +1 -0
- package/dist/dts/Platform.d.ts +23 -0
- package/dist/dts/Platform.d.ts.map +1 -0
- package/dist/dts/Render.d.ts +23 -0
- package/dist/dts/Render.d.ts.map +1 -0
- package/dist/dts/RenderContext.d.ts +88 -0
- package/dist/dts/RenderContext.d.ts.map +1 -0
- package/dist/dts/RenderEvent.d.ts +37 -0
- package/dist/dts/RenderEvent.d.ts.map +1 -0
- package/dist/dts/RenderTemplate.d.ts +38 -0
- package/dist/dts/RenderTemplate.d.ts.map +1 -0
- package/dist/dts/Renderable.d.ts +28 -0
- package/dist/dts/Renderable.d.ts.map +1 -0
- package/dist/dts/Template.d.ts +218 -0
- package/dist/dts/Template.d.ts.map +1 -0
- package/dist/dts/TemplateInstance.d.ts +32 -0
- package/dist/dts/TemplateInstance.d.ts.map +1 -0
- package/dist/dts/Test.d.ts +58 -0
- package/dist/dts/Test.d.ts.map +1 -0
- package/dist/dts/Token.d.ts +202 -0
- package/dist/dts/Token.d.ts.map +1 -0
- package/dist/dts/Tokenizer.d.ts +6 -0
- package/dist/dts/Tokenizer.d.ts.map +1 -0
- package/dist/dts/Vitest.d.ts +28 -0
- package/dist/dts/Vitest.d.ts.map +1 -0
- package/dist/dts/index.d.ts +65 -0
- package/dist/dts/index.d.ts.map +1 -0
- package/dist/dts/internal/HydrateContext.d.ts +2 -0
- package/dist/dts/internal/HydrateContext.d.ts.map +1 -0
- package/dist/dts/internal/browser.d.ts +8 -0
- package/dist/dts/internal/browser.d.ts.map +1 -0
- package/dist/dts/internal/chunks.d.ts +22 -0
- package/dist/dts/internal/chunks.d.ts.map +1 -0
- package/dist/dts/internal/errors.d.ts +9 -0
- package/dist/dts/internal/errors.d.ts.map +1 -0
- package/dist/dts/internal/hydrate.d.ts +37 -0
- package/dist/dts/internal/hydrate.d.ts.map +1 -0
- package/dist/dts/internal/indexRefCounter.d.ts +6 -0
- package/dist/dts/internal/indexRefCounter.d.ts.map +1 -0
- package/dist/dts/internal/module-augmentation.d.ts +36 -0
- package/dist/dts/internal/module-augmentation.d.ts.map +1 -0
- package/dist/dts/internal/parser.d.ts +12 -0
- package/dist/dts/internal/parser.d.ts.map +1 -0
- package/dist/dts/internal/parts.d.ts +304 -0
- package/dist/dts/internal/parts.d.ts.map +1 -0
- package/dist/dts/internal/readAttribute.d.ts +9 -0
- package/dist/dts/internal/readAttribute.d.ts.map +1 -0
- package/dist/dts/internal/render.d.ts +30 -0
- package/dist/dts/internal/render.d.ts.map +1 -0
- package/dist/dts/internal/server.d.ts +31 -0
- package/dist/dts/internal/server.d.ts.map +1 -0
- package/dist/dts/internal/tokenizer.d.ts +3 -0
- package/dist/dts/internal/tokenizer.d.ts.map +1 -0
- package/dist/dts/internal/utils.d.ts +15 -0
- package/dist/dts/internal/utils.d.ts.map +1 -0
- package/dist/esm/Directive.js +64 -0
- package/dist/esm/Directive.js.map +1 -0
- package/dist/esm/ElementRef.js +72 -0
- package/dist/esm/ElementRef.js.map +1 -0
- package/dist/esm/ElementSource.js +237 -0
- package/dist/esm/ElementSource.js.map +1 -0
- package/dist/esm/Entry.js +2 -0
- package/dist/esm/Entry.js.map +1 -0
- package/dist/esm/EventHandler.js +52 -0
- package/dist/esm/EventHandler.js.map +1 -0
- package/dist/esm/Html.js +167 -0
- package/dist/esm/Html.js.map +1 -0
- package/dist/esm/HtmlChunk.js +274 -0
- package/dist/esm/HtmlChunk.js.map +1 -0
- package/dist/esm/Hydrate.js +37 -0
- package/dist/esm/Hydrate.js.map +1 -0
- package/dist/esm/Many.js +33 -0
- package/dist/esm/Many.js.map +1 -0
- package/dist/esm/Meta.js +29 -0
- package/dist/esm/Meta.js.map +1 -0
- package/dist/esm/Parser.js +342 -0
- package/dist/esm/Parser.js.map +1 -0
- package/dist/esm/Part.js +5 -0
- package/dist/esm/Part.js.map +1 -0
- package/dist/esm/Placeholder.js +30 -0
- package/dist/esm/Placeholder.js.map +1 -0
- package/dist/esm/Platform.js +41 -0
- package/dist/esm/Platform.js.map +1 -0
- package/dist/esm/Render.js +27 -0
- package/dist/esm/Render.js.map +1 -0
- package/dist/esm/RenderContext.js +113 -0
- package/dist/esm/RenderContext.js.map +1 -0
- package/dist/esm/RenderEvent.js +36 -0
- package/dist/esm/RenderEvent.js.map +1 -0
- package/dist/esm/RenderTemplate.js +26 -0
- package/dist/esm/RenderTemplate.js.map +1 -0
- package/dist/esm/Renderable.js +2 -0
- package/dist/esm/Renderable.js.map +1 -0
- package/dist/esm/Template.js +239 -0
- package/dist/esm/Template.js.map +1 -0
- package/dist/esm/TemplateInstance.js +43 -0
- package/dist/esm/TemplateInstance.js.map +1 -0
- package/dist/esm/Test.js +68 -0
- package/dist/esm/Test.js.map +1 -0
- package/dist/esm/Token.js +264 -0
- package/dist/esm/Token.js.map +1 -0
- package/dist/esm/Tokenizer.js +9 -0
- package/dist/esm/Tokenizer.js.map +1 -0
- package/dist/esm/Vitest.js +29 -0
- package/dist/esm/Vitest.js.map +1 -0
- package/dist/esm/index.js +65 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/internal/HydrateContext.js +7 -0
- package/dist/esm/internal/HydrateContext.js.map +1 -0
- package/dist/esm/internal/browser.js +102 -0
- package/dist/esm/internal/browser.js.map +1 -0
- package/dist/esm/internal/chunks.js +47 -0
- package/dist/esm/internal/chunks.js.map +1 -0
- package/dist/esm/internal/errors.js +15 -0
- package/dist/esm/internal/errors.js.map +1 -0
- package/dist/esm/internal/hydrate.js +165 -0
- package/dist/esm/internal/hydrate.js.map +1 -0
- package/dist/esm/internal/indexRefCounter.js +24 -0
- package/dist/esm/internal/indexRefCounter.js.map +1 -0
- package/dist/esm/internal/module-augmentation.js +2 -0
- package/dist/esm/internal/module-augmentation.js.map +1 -0
- package/dist/esm/internal/parser.js +493 -0
- package/dist/esm/internal/parser.js.map +1 -0
- package/dist/esm/internal/parts.js +291 -0
- package/dist/esm/internal/parts.js.map +1 -0
- package/dist/esm/internal/readAttribute.js +24 -0
- package/dist/esm/internal/readAttribute.js.map +1 -0
- package/dist/esm/internal/render.js +329 -0
- package/dist/esm/internal/render.js.map +1 -0
- package/dist/esm/internal/server.js +174 -0
- package/dist/esm/internal/server.js.map +1 -0
- package/dist/esm/internal/tokenizer.js +296 -0
- package/dist/esm/internal/tokenizer.js.map +1 -0
- package/dist/esm/internal/utils.js +52 -0
- package/dist/esm/internal/utils.js.map +1 -0
- package/dist/esm/package.json +4 -0
- package/package.json +242 -0
- package/src/Directive.ts +114 -0
- package/src/ElementRef.ts +123 -0
- package/src/ElementSource.ts +417 -0
- package/src/Entry.ts +28 -0
- package/src/EventHandler.ts +104 -0
- package/src/Html.ts +258 -0
- package/src/HtmlChunk.ts +346 -0
- package/src/Hydrate.ts +53 -0
- package/src/Many.ts +128 -0
- package/src/Meta.ts +32 -0
- package/src/Parser.ts +457 -0
- package/src/Part.ts +186 -0
- package/src/Placeholder.ts +70 -0
- package/src/Platform.ts +71 -0
- package/src/Render.ts +45 -0
- package/src/RenderContext.ts +221 -0
- package/src/RenderEvent.ts +67 -0
- package/src/RenderTemplate.ts +88 -0
- package/src/Renderable.ts +34 -0
- package/src/Template.ts +284 -0
- package/src/TemplateInstance.ts +83 -0
- package/src/Test.ts +151 -0
- package/src/Token.ts +269 -0
- package/src/Tokenizer.ts +10 -0
- package/src/Vitest.ts +61 -0
- package/src/index.ts +66 -0
- package/src/internal/HydrateContext.ts +23 -0
- package/src/internal/browser.ts +132 -0
- package/src/internal/chunks.ts +73 -0
- package/src/internal/errors.ts +11 -0
- package/src/internal/external.d.ts +11 -0
- package/src/internal/hydrate.ts +262 -0
- package/src/internal/indexRefCounter.ts +33 -0
- package/src/internal/module-augmentation.ts +48 -0
- package/src/internal/parser.ts +637 -0
- package/src/internal/parts.ts +527 -0
- package/src/internal/readAttribute.ts +28 -0
- package/src/internal/render.ts +529 -0
- package/src/internal/server.ts +293 -0
- package/src/internal/tokenizer.ts +338 -0
- 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 @@
|
|
|
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":"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"}
|
|
@@ -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 @@
|
|
|
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"}
|