silentium-components 0.0.76 → 0.0.78

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/CHANGELOG.md CHANGED
@@ -2,6 +2,20 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4
4
 
5
+ ### [0.0.78](https://github.com/silentium-lab/silentium-components/compare/v0.0.77...v0.0.78) (2025-11-08)
6
+
7
+
8
+ ### Bug Fixes
9
+
10
+ * **main:** router fixed route sequence is predicatable now ([bfd19a1](https://github.com/silentium-lab/silentium-components/commit/bfd19a190accfc3cd82a5afe55e9413a8e5cbe77))
11
+
12
+ ### [0.0.77](https://github.com/silentium-lab/silentium-components/compare/v0.0.76...v0.0.77) (2025-11-03)
13
+
14
+
15
+ ### Bug Fixes
16
+
17
+ * **main:** destroy template component variables ([5db198d](https://github.com/silentium-lab/silentium-components/commit/5db198d9710838ad5fe43d1b5d2bdde0be5e48ff))
18
+
5
19
  ### [0.0.76](https://github.com/silentium-lab/silentium-components/compare/v0.0.75...v0.0.76) (2025-11-03)
6
20
 
7
21
  ### [0.0.75](https://github.com/silentium-lab/silentium-components/compare/v0.0.74...v0.0.75) (2025-11-03)
@@ -440,6 +440,7 @@ class TemplateEvent {
440
440
  return varName;
441
441
  }
442
442
  destroy() {
443
+ this.dc.destroy();
443
444
  return this;
444
445
  }
445
446
  }
@@ -488,42 +489,45 @@ function Set(baseSrc, keySrc, valueSrc) {
488
489
  });
489
490
  }
490
491
 
491
- const $empty = silentium.TransportEvent(() => silentium.Of(false));
492
492
  function Router($url, $routes, $default) {
493
493
  return silentium.Event((transport) => {
494
- const destructors = [];
494
+ const destroyableList = [];
495
+ const checkDestroyable = (instance) => {
496
+ if (silentium.isDestroyable(instance)) {
497
+ destroyableList.push(instance);
498
+ }
499
+ };
495
500
  const destructor = () => {
496
- destructors.forEach((d) => d.destroy());
497
- destructors.length = 0;
501
+ destroyableList.forEach((d) => d.destroy());
502
+ destroyableList.length = 0;
498
503
  };
499
504
  silentium.All($routes, $url).event(
500
505
  silentium.Transport(([routes, url]) => {
501
506
  destructor();
502
- const instance = silentium.All(
503
- $default.use(),
504
- silentium.All(
505
- ...routes.map((r) => {
506
- const $template = silentium.TransportDestroyable(r.event);
507
- destructors.push($template);
508
- return BranchLazy(
509
- RegexpMatched(
510
- silentium.Of(r.pattern),
511
- silentium.Of(url),
512
- r.patternFlags ? silentium.Of(r.patternFlags) : void 0
513
- ),
514
- $template,
515
- $empty
516
- );
517
- })
507
+ const $matches = silentium.All(
508
+ ...routes.map(
509
+ (r) => RegexpMatched(
510
+ silentium.Of(r.pattern),
511
+ silentium.Of(url),
512
+ r.patternFlags ? silentium.Of(r.patternFlags) : void 0
513
+ )
518
514
  )
519
515
  );
520
- silentium.Applied(instance, (r) => {
521
- const first = r[1].find((r2) => r2 !== false);
522
- if (first) {
523
- return first;
524
- }
525
- return r[0];
526
- }).event(transport);
516
+ $matches.event(
517
+ silentium.Transport((matches) => {
518
+ const index = matches.findIndex((v) => v === true);
519
+ if (index === -1) {
520
+ const instance = $default.use();
521
+ checkDestroyable(instance);
522
+ instance.event(transport);
523
+ }
524
+ if (index > -1) {
525
+ const instance = routes[index].event.use();
526
+ checkDestroyable(instance);
527
+ instance.event(transport);
528
+ }
529
+ })
530
+ );
527
531
  })
528
532
  );
529
533
  return destructor;
@@ -1 +1 @@
1
- {"version":3,"file":"silentium-components.cjs","sources":["../src/behaviors/Branch.ts","../src/behaviors/BranchLazy.ts","../src/behaviors/Const.ts","../src/behaviors/Deadline.ts","../src/behaviors/Deferred.ts","../src/behaviors/Detached.ts","../src/behaviors/Dirty.ts","../src/behaviors/Loading.ts","../src/behaviors/Lock.ts","../src/behaviors/Memo.ts","../src/behaviors/OnlyChanged.ts","../src/behaviors/Part.ts","../src/behaviors/Path.ts","../src/behaviors/Polling.ts","../src/behaviors/Shot.ts","../src/behaviors/Task.ts","../src/behaviors/Tick.ts","../src/behaviors/Transaction.ts","../src/structures/HashTable.ts","../src/structures/RecordOf.ts","../src/strings/Concatenated.ts","../src/strings/Template.ts","../src/system/RegexpMatched.ts","../src/system/RegexpReplaced.ts","../src/system/RegexpMatch.ts","../src/system/Set.ts","../src/navigation/Router.ts","../src/boolean/And.ts","../src/boolean/Or.ts","../src/boolean/Not.ts","../src/boolean/Bool.ts","../src/formats/FromJson.ts","../src/formats/ToJson.ts","../src/lists/First.ts"],"sourcesContent":["import { Event, EventType, Primitive, Transport } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/branch\n */\nexport function Branch<Then, Else>(\n $condition: EventType<boolean>,\n $left: EventType<Then>,\n $right?: EventType<Else>,\n): EventType<Then | Else> {\n return Event((transport) => {\n const left = Primitive($left);\n let right: ReturnType<typeof Primitive<Else>>;\n if ($right !== undefined) {\n right = Primitive($right);\n }\n $condition.event(\n Transport((v) => {\n let result: Then | Else | null = null;\n if (v) {\n result = left.primitive();\n } else if (right) {\n result = right.primitive();\n }\n if (result !== null) {\n transport.use(result);\n }\n }),\n );\n });\n}\n","import {\n DestroyableType,\n Event,\n EventType,\n isDestroyable,\n Transport,\n TransportType,\n} from \"silentium\";\n\nexport function BranchLazy<Then, Else>(\n $condition: EventType<boolean>,\n $left: TransportType<void, EventType<Then>>,\n $right?: TransportType<void, EventType<Else>>,\n): EventType<Then | Else> & DestroyableType {\n return Event((transport) => {\n let destroyable: DestroyableType | undefined;\n const destructor = () => {\n if (destroyable !== undefined) {\n destroyable.destroy();\n destroyable = undefined;\n }\n };\n $condition.event(\n Transport((v) => {\n destructor();\n let instance: EventType<Then | Else> | undefined;\n if (v) {\n instance = $left.use();\n } else if ($right) {\n instance = $right.use();\n }\n if (instance !== undefined) {\n instance.event(transport);\n if (isDestroyable(instance)) {\n destroyable = instance;\n }\n }\n }),\n );\n return destructor;\n });\n}\n","import { Event, EventType, Transport } from \"silentium\";\n\nexport function Constant<T>(permanent: T, $trigger: EventType): EventType<T> {\n return Event((transport) => {\n $trigger.event(\n Transport(() => {\n transport.use(permanent);\n }),\n );\n });\n}\n","import {\n Event,\n EventType,\n TransportType,\n Filtered,\n Shared,\n Transport,\n} from \"silentium\";\n\nexport function Deadline<T>(\n error: TransportType<Error>,\n $base: EventType<T>,\n $timeout: EventType<number>,\n): EventType<T> {\n return Event((transport) => {\n let timer: ReturnType<typeof setTimeout> | number = 0;\n const base = Shared($base, true);\n $timeout.event(\n Transport((timeout) => {\n if (timer) {\n clearTimeout(timer);\n }\n let timeoutReached = false;\n\n timer = setTimeout(() => {\n if (timeoutReached) {\n return;\n }\n timeoutReached = true;\n error.use(new Error(\"Timeout reached in Deadline\"));\n }, timeout);\n\n const f = Filtered(base, () => !timeoutReached);\n f.event(transport);\n\n base.event(\n Transport(() => {\n timeoutReached = true;\n }),\n );\n }),\n );\n });\n}\n","import { Event, EventType, isFilled, Primitive, Transport } from \"silentium\";\n\n/**\n * Defer one source after another, gives values Of baseSrc only when triggerSrc responds\n * https://silentium-lab.github.io/silentium-components/#/behaviors/deferred\n */\nexport function Deferred<T>(\n $base: EventType<T>,\n $trigger: EventType<unknown>,\n): EventType<T> {\n return Event((transport) => {\n const base = Primitive($base);\n $trigger.event(\n Transport(() => {\n const value = base.primitive();\n if (isFilled(value)) {\n transport.use(value);\n }\n }),\n );\n });\n}\n","import { Event, EventType, isFilled, Primitive } from \"silentium\";\n\nexport function Detached<T>($base: EventType<T>): EventType<T> {\n return Event((transport) => {\n const v = Primitive($base).primitive();\n if (isFilled(v)) {\n transport.use(v);\n }\n });\n}\n","import {\n All,\n Applied,\n EventType,\n Late,\n SourceType,\n Transport,\n TransportType,\n} from \"silentium\";\n\n/**\n * Takes source and remember it first value\n * returns new record, what will contain only fields what was changed\n * https://silentium-lab.github.io/silentium-components/#/behaviors/dirty\n */\nexport function Dirty<T>(\n $base: EventType<T>,\n keep: string[] = [],\n exclude: string[] = [],\n cloner?: (v: T) => T,\n): SourceType<T> {\n return new DirtySource($base, keep, exclude, cloner);\n}\n\nclass DirtySource<T> implements SourceType<T> {\n private $comparing = Late<T>();\n private cloner: (v: T) => T;\n\n public constructor(\n private $base: EventType<T>,\n private keep: string[] = [],\n private exclude: string[] = [],\n cloner?: (v: T) => T,\n ) {\n if (cloner === undefined) {\n this.cloner = (value) => JSON.parse(JSON.stringify(value));\n } else {\n this.cloner = cloner;\n }\n }\n\n public event(transport: TransportType<T>) {\n const $comparing = Applied(this.$comparing, this.cloner);\n All($comparing, this.$base).event(\n Transport(([comparing, base]) => {\n if (!comparing) {\n return;\n }\n transport.use(\n Object.fromEntries(\n Object.entries(comparing).filter(([key, value]) => {\n if (this.keep.includes(key)) {\n return true;\n }\n if (this.exclude.includes(key)) {\n return false;\n }\n return value !== (base as Record<string, unknown>)[key];\n }),\n ) as T,\n );\n }),\n );\n return this;\n }\n\n public use(v: T) {\n this.$comparing.use(v);\n return this;\n }\n}\n","import { Event, EventType, Transport } from \"silentium\";\n\n/**\n * Representation Of loading process\n * first event begins loading\n * second event stops loading\n * https://silentium-lab.github.io/silentium-components/#/behaviors/loading\n */\nexport function Loading(\n $loadingStart: EventType<unknown>,\n $loadingFinish: EventType<unknown>,\n): EventType<boolean> {\n return Event((transport) => {\n $loadingStart.event(Transport(() => transport.use(true)));\n $loadingFinish.event(Transport(() => transport.use(false)));\n });\n}\n","import { Event, EventType, Filtered, Transport } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/lock\n */\nexport function Lock<T>(\n $base: EventType<T>,\n $lock: EventType<boolean>,\n): EventType<T> {\n return Event((transport) => {\n let locked = false;\n $lock.event(\n Transport((newLock) => {\n locked = newLock;\n }),\n );\n const i = Filtered($base, () => !locked);\n i.event(transport);\n });\n}\n","import { Event, EventType, isFilled, Transport } from \"silentium\";\n\n/**\n * Didn't respond if new value Of baseSrc equals to old value\n * https://silentium-lab.github.io/silentium-components/#/behaviors/memo\n */\nexport function Memo<T>($base: EventType<T>): EventType<T> {\n return Event((transport) => {\n let last: T | null = null;\n $base.event(\n Transport((v) => {\n if (v !== last && isFilled(v)) {\n transport.use(v);\n last = v;\n }\n }),\n );\n });\n}\n","import { Event, EventType, Transport } from \"silentium\";\n\n/**\n * Represents source what was changed at least once\n * https://silentium-lab.github.io/silentium-components/#/behaviors/only-changed\n */\nexport function OnlyChanged<T>($base: EventType<T>): EventType<T> {\n return Event((transport) => {\n let first = false;\n $base.event(\n Transport((v) => {\n if (first === false) {\n first = true;\n } else {\n transport.use(v);\n }\n }),\n );\n });\n}\n","import {\n All,\n EventType,\n isFilled,\n Primitive,\n Shared,\n SharedSource,\n SourceType,\n Transport,\n TransportType,\n} from \"silentium\";\n\n/**\n * Return source Of record path\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport function Part<\n R,\n T extends object | Array<any> = any,\n K extends string = any,\n>($base: SourceType<T>, $key: EventType<K>): SourceType<R> {\n return new PartEvent($base, $key);\n}\n\nclass PartEvent<R, T extends object | Array<any>, K extends string = any>\n implements SourceType<R>\n{\n private $base: SourceType<T>;\n private $keyed: EventType<K>;\n\n public constructor($base: SourceType<T>, $key: EventType<K>) {\n this.$base = SharedSource($base);\n this.$keyed = Shared($key);\n }\n\n public event(transport: TransportType<R, null>): this {\n All(this.$base, this.$keyed).event(\n Transport(([base, keyed]) => {\n const keys = keyed.split(\".\");\n let value: unknown = base;\n keys.forEach((key) => {\n value = (value as Record<string, unknown>)[key];\n });\n if (value !== undefined && value !== base) {\n transport.use(value as R);\n }\n }),\n );\n return this;\n }\n\n public use(value: R): this {\n const key = Primitive(this.$keyed);\n if (isFilled(key)) {\n const base = Primitive(this.$base);\n this.$base.use({\n ...base.primitiveWithException(),\n [key.primitiveWithException()]: value,\n } as T);\n }\n return this;\n }\n}\n","import { All, Event, EventType, Transport } from \"silentium\";\n\n/**\n * Return source Of record path\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport function Path<\n R,\n T extends object | Array<any> = any,\n K extends string = any,\n>($base: EventType<T>, $keyed: EventType<K>): EventType<R> {\n return Event((transport) => {\n All($base, $keyed).event(\n Transport(([base, keyed]) => {\n const keys = keyed.split(\".\");\n let value: unknown = base;\n keys.forEach((key) => {\n value = (value as Record<string, unknown>)[key];\n });\n if (value !== undefined && value !== base) {\n transport.use(value as R);\n }\n }),\n );\n });\n}\n","import { Event, EventType, Transport } from \"silentium\";\n\nexport function Polling<T>(\n $base: EventType<T>,\n $trigger: EventType<T>,\n): EventType<T> {\n return Event((transport) => {\n $trigger.event(\n Transport(() => {\n $base.event(transport);\n }),\n );\n });\n}\n","import { Event, EventType, isFilled, Primitive, Transport } from \"silentium\";\n\n/**\n * Helps to represent only last fresh value Of some source, refreshing controls by shotSrc\n * https://silentium-lab.github.io/silentium-components/#/behaviors/shot\n */\nexport function Shot<T>(\n $target: EventType<T>,\n $trigger: EventType,\n): EventType<T> {\n return Event((transport) => {\n const targetSync = Primitive($target);\n targetSync.primitive();\n\n $trigger.event(\n Transport(() => {\n const value = targetSync.primitive();\n if (isFilled(value)) {\n transport.use(value);\n }\n }),\n );\n });\n}\n","import { Event, EventType, ExecutorApplied } from \"silentium\";\n\nexport function Task<T>(\n baseSrc: EventType<T>,\n delay: number = 0,\n): EventType<T> {\n return Event((transport) => {\n let prevTimer: unknown | null = null;\n ExecutorApplied(baseSrc, (fn) => {\n return (v) => {\n if (prevTimer) {\n clearTimeout(prevTimer as number);\n }\n prevTimer = setTimeout(() => {\n fn(v);\n }, delay);\n };\n }).event(transport);\n });\n}\n","import { Event, EventType, Transport } from \"silentium\";\n\n/**\n * Accumulates the last value Of the source and returns one result once per tick\n * https://silentium-lab.github.io/silentium-components/#/behaviors/tick\n */\nexport function Tick<T>($base: EventType<T>): EventType<T> {\n return Event((transport) => {\n let microtaskScheduled = false;\n let lastValue: T | null = null;\n\n const scheduleMicrotask = () => {\n microtaskScheduled = true;\n queueMicrotask(() => {\n microtaskScheduled = false;\n if (lastValue !== null) {\n transport.use(lastValue);\n lastValue = null;\n }\n });\n };\n\n $base.event(\n Transport((v) => {\n lastValue = v;\n if (!microtaskScheduled) {\n scheduleMicrotask();\n }\n }),\n );\n });\n}\n","import {\n ConstructorType,\n DestroyableType,\n Event,\n EventType,\n LateShared,\n Of,\n Transport,\n} from \"silentium\";\nimport { Detached } from \"../behaviors/Detached\";\n\n/**\n * Do something on event value.\n * Each event value will create new eventBuilder instance\n */\nexport function Transaction<T, R = unknown>(\n $base: EventType<T>,\n eventBuilder: ConstructorType<\n [EventType<T>, ...EventType<any>[]],\n EventType<R>\n >,\n ...args: EventType[]\n): EventType<R> {\n return Event((transport) => {\n const $res = LateShared<R>();\n const destructors: DestroyableType[] = [];\n\n $base.event(\n Transport((v) => {\n const $event = eventBuilder(Of(v), ...args.map((a) => Detached(a)));\n destructors.push($event as unknown as DestroyableType);\n $event.event($res);\n }),\n );\n $res.event(transport);\n\n return () => {\n destructors.forEach((d) => d?.destroy());\n destructors.length = 0;\n };\n });\n}\n","import { Event, EventType, Transport } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/structures/hash-table\n */\nexport function HashTable<T>(\n $base: EventType<[string, unknown]>,\n): EventType<T> {\n return Event((transport) => {\n const record: Record<string, unknown> = {};\n\n $base.event(\n Transport(([key, value]) => {\n record[key] = value;\n transport.use(record as T);\n }),\n );\n });\n}\n","import { All, Event, EventType, Transport } from \"silentium\";\n\ntype UnInformation<T> = T extends EventType<infer U> ? U : never;\n\n/**\n * Returns record Of data from record Of sources\n * https://silentium-lab.github.io/silentium-components/#/structures/record\n */\nexport function RecordOf<T extends EventType>(\n record: Record<string, T>,\n): EventType<Record<string, UnInformation<T>>> {\n return Event((transport) => {\n const keys = Object.keys(record);\n All(...Object.values(record)).event(\n Transport((entries) => {\n const record: Record<string, any> = {};\n entries.forEach((entry, index) => {\n record[keys[index]] = entry;\n });\n transport.use(record);\n }),\n );\n });\n}\n","import { All, Event, EventType, Of, Transport } from \"silentium\";\n\n/**\n * Join sources Of strings to one source\n * https://silentium-lab.github.io/silentium-components/#/string/concatenated\n */\nexport function Concatenated(\n sources: EventType<string>[],\n joinPartSrc: EventType<string> = Of(\"\"),\n): EventType<string> {\n return Event((transport) => {\n All(joinPartSrc, ...sources).event(\n Transport(([joinPart, ...strings]) => {\n transport.use(strings.join(joinPart));\n }),\n );\n });\n}\n","import {\n All,\n Applied,\n DestroyableType,\n DestroyContainer,\n EventType,\n isDestroyable,\n Of,\n TransportType,\n} from \"silentium\";\nimport { RecordOf } from \"../structures\";\n\nexport function Template(\n $src: EventType<string> = Of(\"\"),\n $places: EventType<Record<string, unknown>> = Of({}),\n) {\n return new TemplateEvent($src, $places);\n}\n\nclass TemplateEvent implements EventType<string>, DestroyableType {\n private dc = DestroyContainer();\n private vars: Record<string, EventType> = {\n $TPL: Of(\"$TPL\"),\n };\n\n public constructor(\n private $src: EventType<string> = Of(\"\"),\n private $places: EventType<Record<string, unknown>> = Of({}),\n ) {}\n\n public event(transport: TransportType<string, null>): this {\n const $vars = RecordOf(this.vars);\n Applied(All(this.$src, this.$places, $vars), ([base, rules, vars]) => {\n Object.entries(rules).forEach(([ph, val]) => {\n base = base.replaceAll(ph, String(val));\n });\n Object.entries(vars).forEach(([ph, val]) => {\n base = base.replaceAll(ph, String(val));\n });\n\n return base;\n }).event(transport);\n return this;\n }\n\n public template(value: string) {\n this.$src = Of(value);\n }\n\n /**\n * Ability to register variable\n * in concrete place Of template\n */\n public var(src: EventType<string>) {\n const places = Object.keys(this.vars).length;\n const varName = `$var${places}`;\n if (isDestroyable(src)) {\n this.dc.add(src);\n }\n this.vars[varName] = src;\n return varName;\n }\n\n public destroy(): this {\n return this;\n }\n}\n","import { All, Event, EventType, Of, Transport } from \"silentium\";\n\n/**\n * Boolean source what checks what string matches pattern\n * https://silentium-lab.github.io/silentium-components/#/system/regexp-matched\n */\nexport function RegexpMatched(\n patternSrc: EventType<string>,\n valueSrc: EventType<string>,\n flagsSrc: EventType<string> = Of(\"\"),\n): EventType<boolean> {\n return Event((transport) => {\n All(patternSrc, valueSrc, flagsSrc).event(\n Transport(([pattern, value, flags]) => {\n transport.use(new RegExp(pattern, flags).test(value));\n }),\n );\n });\n}\n","import { All, Event, EventType, Of, Transport } from \"silentium\";\n\n/**\n * Returns string replaced by regular expression pattern\n * https://silentium-lab.github.io/silentium-components/#/system/regexp-replaced\n */\nexport function RegexpReplaced(\n valueSrc: EventType<string>,\n patternSrc: EventType<string>,\n replaceValueSrc: EventType<string>,\n flagsSrc: EventType<string> = Of(\"\"),\n): EventType<string> {\n return Event((transport) => {\n All(patternSrc, valueSrc, replaceValueSrc, flagsSrc).event(\n Transport(([pattern, value, replaceValue, flags]) => {\n transport.use(\n String(value).replace(new RegExp(pattern, flags), replaceValue),\n );\n }),\n );\n });\n}\n","import { All, Event, EventType, Of, Transport } from \"silentium\";\n\n/**\n * First match Of regexp\n * https://silentium-lab.github.io/silentium-components/#/system/regexp-matched\n */\nexport function RegexpMatch(\n patternSrc: EventType<string>,\n valueSrc: EventType<string>,\n flagsSrc: EventType<string> = Of(\"\"),\n): EventType<string[]> {\n return Event((transport) => {\n All(patternSrc, valueSrc, flagsSrc).event(\n Transport(([pattern, value, flags]) => {\n const result = new RegExp(pattern, flags).exec(value);\n transport.use(result ?? []);\n }),\n );\n });\n}\n","import { All, Event, EventType, Transport } from \"silentium\";\n\n/**\n * Ability to mutate some object, helpful when integrate to procedure systems\n * https://silentium-lab.github.io/silentium-components/#/system/set\n */\nexport function Set<T extends Record<string, unknown>>(\n baseSrc: EventType<T>,\n keySrc: EventType<string>,\n valueSrc: EventType<unknown>,\n): EventType<T> {\n return Event((transport) => {\n All(baseSrc, keySrc, valueSrc).event(\n Transport(([base, key, value]) => {\n (base as Record<string, unknown>)[key] = value;\n transport.use(base);\n }),\n );\n });\n}\n","import {\n All,\n Applied,\n DestroyableType,\n Event,\n EventType,\n Of,\n Transport,\n TransportDestroyable,\n TransportEvent,\n TransportType,\n} from \"silentium\";\nimport { BranchLazy } from \"../behaviors\";\nimport { RegexpMatched } from \"../system\";\n\nexport interface Route<T> {\n pattern: string;\n patternFlags?: string;\n event: TransportType<[], EventType<T>>;\n}\n\nconst $empty = TransportEvent(() => Of(false));\n\n/**\n * Router component what will return template if url matches pattern\n * https://silentium-lab.github.io/silentium-components/#/navigation/router\n */\nexport function Router<T = \"string\">(\n $url: EventType<string>,\n $routes: EventType<Route<T>[]>,\n $default: TransportType<void, EventType<T>>,\n): EventType<T> & DestroyableType {\n return Event<T>((transport) => {\n const destructors: DestroyableType[] = [];\n const destructor = () => {\n destructors.forEach((d) => d.destroy());\n destructors.length = 0;\n };\n All($routes, $url).event(\n Transport(([routes, url]) => {\n destructor();\n const instance = All(\n $default.use(),\n All(\n ...routes.map((r) => {\n const $template = TransportDestroyable(r.event);\n destructors.push($template);\n return BranchLazy(\n RegexpMatched(\n Of(r.pattern),\n Of(url),\n r.patternFlags ? Of(r.patternFlags) : undefined,\n ),\n $template,\n $empty,\n );\n }),\n ),\n );\n\n // Return first not false or default\n Applied(instance, (r) => {\n const first = r[1].find((r: unknown) => r !== false);\n if (first) {\n return first as T;\n }\n return r[0];\n }).event(transport);\n }),\n );\n\n return destructor;\n });\n}\n","import { All, Event, EventType, Transport } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/and\n */\nexport function And(\n $one: EventType<boolean>,\n $two: EventType<boolean>,\n): EventType<boolean> {\n return Event((transport) => {\n All($one, $two).event(\n Transport(([one, two]) => {\n transport.use(one && two);\n }),\n );\n });\n}\n","import { All, Event, EventType, Transport } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/or\n */\nexport function Or(\n $one: EventType<boolean>,\n $two: EventType<boolean>,\n): EventType<boolean> {\n return Event((transport) => {\n All($one, $two).event(\n Transport(([one, two]) => {\n transport.use(one || two);\n }),\n );\n });\n}\n","import { Event, EventType, Transport } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/not\n */\nexport function Not($base: EventType<boolean>): EventType<boolean> {\n return Event((transport) => {\n $base.event(\n Transport((v) => {\n transport.use(!v);\n }),\n );\n });\n}\n","import { Applied, Event, EventType } from \"silentium\";\n\n/**\n * Convert Any source to boolean source\n * https://silentium-lab.github.io/silentium-components/#/boolean/bool\n */\nexport function Bool($base: EventType): EventType<boolean> {\n return Event((transport) => {\n Applied($base, Boolean).event(transport);\n });\n}\n","import { Event, EventType, Transport, TransportType } from \"silentium\";\n\n/**\n * Represents object from json\n */\nexport function FromJson<T = Record<string, unknown>>(\n $json: EventType<string>,\n error?: TransportType,\n): EventType<T> {\n return Event((transport) => {\n $json.event(\n Transport((json) => {\n try {\n transport.use(JSON.parse(json));\n } catch (e) {\n error?.use(new Error(`Failed to parse JSON: ${e}`));\n }\n }),\n );\n });\n}\n","import { Event, EventType, Transport, TransportType } from \"silentium\";\n\n/**\n * Represents json from object\n */\nexport function ToJson(\n $data: EventType,\n error?: TransportType,\n): EventType<string> {\n return Event((transport) => {\n $data.event(\n Transport((data: unknown) => {\n try {\n transport.use(JSON.stringify(data));\n } catch {\n error?.use(new Error(\"Failed to convert to JSON\"));\n }\n }),\n );\n });\n}\n","import { Applied, Event, EventType } from \"silentium\";\n\n/**\n * Represents the first element Of an array.\n */\nexport function First<T extends Array<unknown>>(\n $base: EventType<T>,\n): EventType<T[0]> {\n return Event((transport) => {\n Applied($base, (a) => a[0]).event(transport);\n });\n}\n"],"names":["Event","Primitive","Transport","isDestroyable","Shared","Filtered","isFilled","__publicField","Late","Applied","All","SharedSource","ExecutorApplied","LateShared","Of","record","DestroyContainer","TransportEvent","TransportDestroyable","r"],"mappings":"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"}
1
+ {"version":3,"file":"silentium-components.cjs","sources":["../src/behaviors/Branch.ts","../src/behaviors/BranchLazy.ts","../src/behaviors/Const.ts","../src/behaviors/Deadline.ts","../src/behaviors/Deferred.ts","../src/behaviors/Detached.ts","../src/behaviors/Dirty.ts","../src/behaviors/Loading.ts","../src/behaviors/Lock.ts","../src/behaviors/Memo.ts","../src/behaviors/OnlyChanged.ts","../src/behaviors/Part.ts","../src/behaviors/Path.ts","../src/behaviors/Polling.ts","../src/behaviors/Shot.ts","../src/behaviors/Task.ts","../src/behaviors/Tick.ts","../src/behaviors/Transaction.ts","../src/structures/HashTable.ts","../src/structures/RecordOf.ts","../src/strings/Concatenated.ts","../src/strings/Template.ts","../src/system/RegexpMatched.ts","../src/system/RegexpReplaced.ts","../src/system/RegexpMatch.ts","../src/system/Set.ts","../src/navigation/Router.ts","../src/boolean/And.ts","../src/boolean/Or.ts","../src/boolean/Not.ts","../src/boolean/Bool.ts","../src/formats/FromJson.ts","../src/formats/ToJson.ts","../src/lists/First.ts"],"sourcesContent":["import { Event, EventType, Primitive, Transport } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/branch\n */\nexport function Branch<Then, Else>(\n $condition: EventType<boolean>,\n $left: EventType<Then>,\n $right?: EventType<Else>,\n): EventType<Then | Else> {\n return Event((transport) => {\n const left = Primitive($left);\n let right: ReturnType<typeof Primitive<Else>>;\n if ($right !== undefined) {\n right = Primitive($right);\n }\n $condition.event(\n Transport((v) => {\n let result: Then | Else | null = null;\n if (v) {\n result = left.primitive();\n } else if (right) {\n result = right.primitive();\n }\n if (result !== null) {\n transport.use(result);\n }\n }),\n );\n });\n}\n","import {\n DestroyableType,\n Event,\n EventType,\n isDestroyable,\n Transport,\n TransportType,\n} from \"silentium\";\n\nexport function BranchLazy<Then, Else>(\n $condition: EventType<boolean>,\n $left: TransportType<void, EventType<Then>>,\n $right?: TransportType<void, EventType<Else>>,\n): EventType<Then | Else> & DestroyableType {\n return Event((transport) => {\n let destroyable: DestroyableType | undefined;\n const destructor = () => {\n if (destroyable !== undefined) {\n destroyable.destroy();\n destroyable = undefined;\n }\n };\n $condition.event(\n Transport((v) => {\n destructor();\n let instance: EventType<Then | Else> | undefined;\n if (v) {\n instance = $left.use();\n } else if ($right) {\n instance = $right.use();\n }\n if (instance !== undefined) {\n instance.event(transport);\n if (isDestroyable(instance)) {\n destroyable = instance;\n }\n }\n }),\n );\n return destructor;\n });\n}\n","import { Event, EventType, Transport } from \"silentium\";\n\nexport function Constant<T>(permanent: T, $trigger: EventType): EventType<T> {\n return Event((transport) => {\n $trigger.event(\n Transport(() => {\n transport.use(permanent);\n }),\n );\n });\n}\n","import {\n Event,\n EventType,\n TransportType,\n Filtered,\n Shared,\n Transport,\n} from \"silentium\";\n\nexport function Deadline<T>(\n error: TransportType<Error>,\n $base: EventType<T>,\n $timeout: EventType<number>,\n): EventType<T> {\n return Event((transport) => {\n let timer: ReturnType<typeof setTimeout> | number = 0;\n const base = Shared($base, true);\n $timeout.event(\n Transport((timeout) => {\n if (timer) {\n clearTimeout(timer);\n }\n let timeoutReached = false;\n\n timer = setTimeout(() => {\n if (timeoutReached) {\n return;\n }\n timeoutReached = true;\n error.use(new Error(\"Timeout reached in Deadline\"));\n }, timeout);\n\n const f = Filtered(base, () => !timeoutReached);\n f.event(transport);\n\n base.event(\n Transport(() => {\n timeoutReached = true;\n }),\n );\n }),\n );\n });\n}\n","import { Event, EventType, isFilled, Primitive, Transport } from \"silentium\";\n\n/**\n * Defer one source after another, gives values Of baseSrc only when triggerSrc responds\n * https://silentium-lab.github.io/silentium-components/#/behaviors/deferred\n */\nexport function Deferred<T>(\n $base: EventType<T>,\n $trigger: EventType<unknown>,\n): EventType<T> {\n return Event((transport) => {\n const base = Primitive($base);\n $trigger.event(\n Transport(() => {\n const value = base.primitive();\n if (isFilled(value)) {\n transport.use(value);\n }\n }),\n );\n });\n}\n","import { Event, EventType, isFilled, Primitive } from \"silentium\";\n\nexport function Detached<T>($base: EventType<T>): EventType<T> {\n return Event((transport) => {\n const v = Primitive($base).primitive();\n if (isFilled(v)) {\n transport.use(v);\n }\n });\n}\n","import {\n All,\n Applied,\n EventType,\n Late,\n SourceType,\n Transport,\n TransportType,\n} from \"silentium\";\n\n/**\n * Takes source and remember it first value\n * returns new record, what will contain only fields what was changed\n * https://silentium-lab.github.io/silentium-components/#/behaviors/dirty\n */\nexport function Dirty<T>(\n $base: EventType<T>,\n keep: string[] = [],\n exclude: string[] = [],\n cloner?: (v: T) => T,\n): SourceType<T> {\n return new DirtySource($base, keep, exclude, cloner);\n}\n\nclass DirtySource<T> implements SourceType<T> {\n private $comparing = Late<T>();\n private cloner: (v: T) => T;\n\n public constructor(\n private $base: EventType<T>,\n private keep: string[] = [],\n private exclude: string[] = [],\n cloner?: (v: T) => T,\n ) {\n if (cloner === undefined) {\n this.cloner = (value) => JSON.parse(JSON.stringify(value));\n } else {\n this.cloner = cloner;\n }\n }\n\n public event(transport: TransportType<T>) {\n const $comparing = Applied(this.$comparing, this.cloner);\n All($comparing, this.$base).event(\n Transport(([comparing, base]) => {\n if (!comparing) {\n return;\n }\n transport.use(\n Object.fromEntries(\n Object.entries(comparing).filter(([key, value]) => {\n if (this.keep.includes(key)) {\n return true;\n }\n if (this.exclude.includes(key)) {\n return false;\n }\n return value !== (base as Record<string, unknown>)[key];\n }),\n ) as T,\n );\n }),\n );\n return this;\n }\n\n public use(v: T) {\n this.$comparing.use(v);\n return this;\n }\n}\n","import { Event, EventType, Transport } from \"silentium\";\n\n/**\n * Representation Of loading process\n * first event begins loading\n * second event stops loading\n * https://silentium-lab.github.io/silentium-components/#/behaviors/loading\n */\nexport function Loading(\n $loadingStart: EventType<unknown>,\n $loadingFinish: EventType<unknown>,\n): EventType<boolean> {\n return Event((transport) => {\n $loadingStart.event(Transport(() => transport.use(true)));\n $loadingFinish.event(Transport(() => transport.use(false)));\n });\n}\n","import { Event, EventType, Filtered, Transport } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/lock\n */\nexport function Lock<T>(\n $base: EventType<T>,\n $lock: EventType<boolean>,\n): EventType<T> {\n return Event((transport) => {\n let locked = false;\n $lock.event(\n Transport((newLock) => {\n locked = newLock;\n }),\n );\n const i = Filtered($base, () => !locked);\n i.event(transport);\n });\n}\n","import { Event, EventType, isFilled, Transport } from \"silentium\";\n\n/**\n * Didn't respond if new value Of baseSrc equals to old value\n * https://silentium-lab.github.io/silentium-components/#/behaviors/memo\n */\nexport function Memo<T>($base: EventType<T>): EventType<T> {\n return Event((transport) => {\n let last: T | null = null;\n $base.event(\n Transport((v) => {\n if (v !== last && isFilled(v)) {\n transport.use(v);\n last = v;\n }\n }),\n );\n });\n}\n","import { Event, EventType, Transport } from \"silentium\";\n\n/**\n * Represents source what was changed at least once\n * https://silentium-lab.github.io/silentium-components/#/behaviors/only-changed\n */\nexport function OnlyChanged<T>($base: EventType<T>): EventType<T> {\n return Event((transport) => {\n let first = false;\n $base.event(\n Transport((v) => {\n if (first === false) {\n first = true;\n } else {\n transport.use(v);\n }\n }),\n );\n });\n}\n","import {\n All,\n EventType,\n isFilled,\n Primitive,\n Shared,\n SharedSource,\n SourceType,\n Transport,\n TransportType,\n} from \"silentium\";\n\n/**\n * Return source Of record path\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport function Part<\n R,\n T extends object | Array<any> = any,\n K extends string = any,\n>($base: SourceType<T>, $key: EventType<K>): SourceType<R> {\n return new PartEvent($base, $key);\n}\n\nclass PartEvent<R, T extends object | Array<any>, K extends string = any>\n implements SourceType<R>\n{\n private $base: SourceType<T>;\n private $keyed: EventType<K>;\n\n public constructor($base: SourceType<T>, $key: EventType<K>) {\n this.$base = SharedSource($base);\n this.$keyed = Shared($key);\n }\n\n public event(transport: TransportType<R, null>): this {\n All(this.$base, this.$keyed).event(\n Transport(([base, keyed]) => {\n const keys = keyed.split(\".\");\n let value: unknown = base;\n keys.forEach((key) => {\n value = (value as Record<string, unknown>)[key];\n });\n if (value !== undefined && value !== base) {\n transport.use(value as R);\n }\n }),\n );\n return this;\n }\n\n public use(value: R): this {\n const key = Primitive(this.$keyed);\n if (isFilled(key)) {\n const base = Primitive(this.$base);\n this.$base.use({\n ...base.primitiveWithException(),\n [key.primitiveWithException()]: value,\n } as T);\n }\n return this;\n }\n}\n","import { All, Event, EventType, Transport } from \"silentium\";\n\n/**\n * Return source Of record path\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport function Path<\n R,\n T extends object | Array<any> = any,\n K extends string = any,\n>($base: EventType<T>, $keyed: EventType<K>): EventType<R> {\n return Event((transport) => {\n All($base, $keyed).event(\n Transport(([base, keyed]) => {\n const keys = keyed.split(\".\");\n let value: unknown = base;\n keys.forEach((key) => {\n value = (value as Record<string, unknown>)[key];\n });\n if (value !== undefined && value !== base) {\n transport.use(value as R);\n }\n }),\n );\n });\n}\n","import { Event, EventType, Transport } from \"silentium\";\n\nexport function Polling<T>(\n $base: EventType<T>,\n $trigger: EventType<T>,\n): EventType<T> {\n return Event((transport) => {\n $trigger.event(\n Transport(() => {\n $base.event(transport);\n }),\n );\n });\n}\n","import { Event, EventType, isFilled, Primitive, Transport } from \"silentium\";\n\n/**\n * Helps to represent only last fresh value Of some source, refreshing controls by shotSrc\n * https://silentium-lab.github.io/silentium-components/#/behaviors/shot\n */\nexport function Shot<T>(\n $target: EventType<T>,\n $trigger: EventType,\n): EventType<T> {\n return Event((transport) => {\n const targetSync = Primitive($target);\n targetSync.primitive();\n\n $trigger.event(\n Transport(() => {\n const value = targetSync.primitive();\n if (isFilled(value)) {\n transport.use(value);\n }\n }),\n );\n });\n}\n","import { Event, EventType, ExecutorApplied } from \"silentium\";\n\nexport function Task<T>(\n baseSrc: EventType<T>,\n delay: number = 0,\n): EventType<T> {\n return Event((transport) => {\n let prevTimer: unknown | null = null;\n ExecutorApplied(baseSrc, (fn) => {\n return (v) => {\n if (prevTimer) {\n clearTimeout(prevTimer as number);\n }\n prevTimer = setTimeout(() => {\n fn(v);\n }, delay);\n };\n }).event(transport);\n });\n}\n","import { Event, EventType, Transport } from \"silentium\";\n\n/**\n * Accumulates the last value Of the source and returns one result once per tick\n * https://silentium-lab.github.io/silentium-components/#/behaviors/tick\n */\nexport function Tick<T>($base: EventType<T>): EventType<T> {\n return Event((transport) => {\n let microtaskScheduled = false;\n let lastValue: T | null = null;\n\n const scheduleMicrotask = () => {\n microtaskScheduled = true;\n queueMicrotask(() => {\n microtaskScheduled = false;\n if (lastValue !== null) {\n transport.use(lastValue);\n lastValue = null;\n }\n });\n };\n\n $base.event(\n Transport((v) => {\n lastValue = v;\n if (!microtaskScheduled) {\n scheduleMicrotask();\n }\n }),\n );\n });\n}\n","import {\n ConstructorType,\n DestroyableType,\n Event,\n EventType,\n LateShared,\n Of,\n Transport,\n} from \"silentium\";\nimport { Detached } from \"../behaviors/Detached\";\n\n/**\n * Do something on event value.\n * Each event value will create new eventBuilder instance\n */\nexport function Transaction<T, R = unknown>(\n $base: EventType<T>,\n eventBuilder: ConstructorType<\n [EventType<T>, ...EventType<any>[]],\n EventType<R>\n >,\n ...args: EventType[]\n): EventType<R> {\n return Event((transport) => {\n const $res = LateShared<R>();\n const destructors: DestroyableType[] = [];\n\n $base.event(\n Transport((v) => {\n const $event = eventBuilder(Of(v), ...args.map((a) => Detached(a)));\n destructors.push($event as unknown as DestroyableType);\n $event.event($res);\n }),\n );\n $res.event(transport);\n\n return () => {\n destructors.forEach((d) => d?.destroy());\n destructors.length = 0;\n };\n });\n}\n","import { Event, EventType, Transport } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/structures/hash-table\n */\nexport function HashTable<T>(\n $base: EventType<[string, unknown]>,\n): EventType<T> {\n return Event((transport) => {\n const record: Record<string, unknown> = {};\n\n $base.event(\n Transport(([key, value]) => {\n record[key] = value;\n transport.use(record as T);\n }),\n );\n });\n}\n","import { All, Event, EventType, Transport } from \"silentium\";\n\ntype UnInformation<T> = T extends EventType<infer U> ? U : never;\n\n/**\n * Returns record Of data from record Of sources\n * https://silentium-lab.github.io/silentium-components/#/structures/record\n */\nexport function RecordOf<T extends EventType>(\n record: Record<string, T>,\n): EventType<Record<string, UnInformation<T>>> {\n return Event((transport) => {\n const keys = Object.keys(record);\n All(...Object.values(record)).event(\n Transport((entries) => {\n const record: Record<string, any> = {};\n entries.forEach((entry, index) => {\n record[keys[index]] = entry;\n });\n transport.use(record);\n }),\n );\n });\n}\n","import { All, Event, EventType, Of, Transport } from \"silentium\";\n\n/**\n * Join sources Of strings to one source\n * https://silentium-lab.github.io/silentium-components/#/string/concatenated\n */\nexport function Concatenated(\n sources: EventType<string>[],\n joinPartSrc: EventType<string> = Of(\"\"),\n): EventType<string> {\n return Event((transport) => {\n All(joinPartSrc, ...sources).event(\n Transport(([joinPart, ...strings]) => {\n transport.use(strings.join(joinPart));\n }),\n );\n });\n}\n","import {\n All,\n Applied,\n DestroyableType,\n DestroyContainer,\n EventType,\n isDestroyable,\n Of,\n TransportType,\n} from \"silentium\";\nimport { RecordOf } from \"../structures\";\n\nexport function Template(\n $src: EventType<string> = Of(\"\"),\n $places: EventType<Record<string, unknown>> = Of({}),\n) {\n return new TemplateEvent($src, $places);\n}\n\nclass TemplateEvent implements EventType<string>, DestroyableType {\n private dc = DestroyContainer();\n private vars: Record<string, EventType> = {\n $TPL: Of(\"$TPL\"),\n };\n\n public constructor(\n private $src: EventType<string> = Of(\"\"),\n private $places: EventType<Record<string, unknown>> = Of({}),\n ) {}\n\n public event(transport: TransportType<string, null>): this {\n const $vars = RecordOf(this.vars);\n Applied(All(this.$src, this.$places, $vars), ([base, rules, vars]) => {\n Object.entries(rules).forEach(([ph, val]) => {\n base = base.replaceAll(ph, String(val));\n });\n Object.entries(vars).forEach(([ph, val]) => {\n base = base.replaceAll(ph, String(val));\n });\n\n return base;\n }).event(transport);\n return this;\n }\n\n public template(value: string) {\n this.$src = Of(value);\n }\n\n /**\n * Ability to register variable\n * in concrete place Of template\n */\n public var(src: EventType<string>) {\n const places = Object.keys(this.vars).length;\n const varName = `$var${places}`;\n if (isDestroyable(src)) {\n this.dc.add(src);\n }\n this.vars[varName] = src;\n return varName;\n }\n\n public destroy(): this {\n this.dc.destroy();\n return this;\n }\n}\n","import { All, Event, EventType, Of, Transport } from \"silentium\";\n\n/**\n * Boolean source what checks what string matches pattern\n * https://silentium-lab.github.io/silentium-components/#/system/regexp-matched\n */\nexport function RegexpMatched(\n patternSrc: EventType<string>,\n valueSrc: EventType<string>,\n flagsSrc: EventType<string> = Of(\"\"),\n): EventType<boolean> {\n return Event((transport) => {\n All(patternSrc, valueSrc, flagsSrc).event(\n Transport(([pattern, value, flags]) => {\n transport.use(new RegExp(pattern, flags).test(value));\n }),\n );\n });\n}\n","import { All, Event, EventType, Of, Transport } from \"silentium\";\n\n/**\n * Returns string replaced by regular expression pattern\n * https://silentium-lab.github.io/silentium-components/#/system/regexp-replaced\n */\nexport function RegexpReplaced(\n valueSrc: EventType<string>,\n patternSrc: EventType<string>,\n replaceValueSrc: EventType<string>,\n flagsSrc: EventType<string> = Of(\"\"),\n): EventType<string> {\n return Event((transport) => {\n All(patternSrc, valueSrc, replaceValueSrc, flagsSrc).event(\n Transport(([pattern, value, replaceValue, flags]) => {\n transport.use(\n String(value).replace(new RegExp(pattern, flags), replaceValue),\n );\n }),\n );\n });\n}\n","import { All, Event, EventType, Of, Transport } from \"silentium\";\n\n/**\n * First match Of regexp\n * https://silentium-lab.github.io/silentium-components/#/system/regexp-matched\n */\nexport function RegexpMatch(\n patternSrc: EventType<string>,\n valueSrc: EventType<string>,\n flagsSrc: EventType<string> = Of(\"\"),\n): EventType<string[]> {\n return Event((transport) => {\n All(patternSrc, valueSrc, flagsSrc).event(\n Transport(([pattern, value, flags]) => {\n const result = new RegExp(pattern, flags).exec(value);\n transport.use(result ?? []);\n }),\n );\n });\n}\n","import { All, Event, EventType, Transport } from \"silentium\";\n\n/**\n * Ability to mutate some object, helpful when integrate to procedure systems\n * https://silentium-lab.github.io/silentium-components/#/system/set\n */\nexport function Set<T extends Record<string, unknown>>(\n baseSrc: EventType<T>,\n keySrc: EventType<string>,\n valueSrc: EventType<unknown>,\n): EventType<T> {\n return Event((transport) => {\n All(baseSrc, keySrc, valueSrc).event(\n Transport(([base, key, value]) => {\n (base as Record<string, unknown>)[key] = value;\n transport.use(base);\n }),\n );\n });\n}\n","import {\n All,\n DestroyableType,\n Event,\n EventType,\n isDestroyable,\n Of,\n Transport,\n TransportType,\n} from \"silentium\";\nimport { RegexpMatched } from \"../system\";\n\nexport interface Route<T> {\n pattern: string;\n patternFlags?: string;\n event: TransportType<void, EventType<T>>;\n}\n\n/**\n * Router component what will return template if url matches pattern\n * https://silentium-lab.github.io/silentium-components/#/navigation/router\n */\nexport function Router<T = \"string\">(\n $url: EventType<string>,\n $routes: EventType<Route<T>[]>,\n $default: TransportType<void, EventType<T>>,\n): EventType<T> & DestroyableType {\n return Event<T>((transport) => {\n const destroyableList: DestroyableType[] = [];\n const checkDestroyable = (instance: unknown) => {\n if (isDestroyable(instance)) {\n destroyableList.push(instance);\n }\n };\n const destructor = () => {\n destroyableList.forEach((d) => d.destroy());\n destroyableList.length = 0;\n };\n All($routes, $url).event(\n Transport(([routes, url]) => {\n destructor();\n const $matches = All(\n ...routes.map((r) =>\n RegexpMatched(\n Of(r.pattern),\n Of(url),\n r.patternFlags ? Of(r.patternFlags) : undefined,\n ),\n ),\n );\n $matches.event(\n Transport((matches) => {\n const index = matches.findIndex((v) => v === true);\n\n if (index === -1) {\n const instance = $default.use();\n checkDestroyable(instance);\n instance.event(transport);\n }\n\n if (index > -1) {\n const instance = routes[index].event.use();\n checkDestroyable(instance);\n instance.event(transport);\n }\n }),\n );\n }),\n );\n\n return destructor;\n });\n}\n","import { All, Event, EventType, Transport } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/and\n */\nexport function And(\n $one: EventType<boolean>,\n $two: EventType<boolean>,\n): EventType<boolean> {\n return Event((transport) => {\n All($one, $two).event(\n Transport(([one, two]) => {\n transport.use(one && two);\n }),\n );\n });\n}\n","import { All, Event, EventType, Transport } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/or\n */\nexport function Or(\n $one: EventType<boolean>,\n $two: EventType<boolean>,\n): EventType<boolean> {\n return Event((transport) => {\n All($one, $two).event(\n Transport(([one, two]) => {\n transport.use(one || two);\n }),\n );\n });\n}\n","import { Event, EventType, Transport } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/not\n */\nexport function Not($base: EventType<boolean>): EventType<boolean> {\n return Event((transport) => {\n $base.event(\n Transport((v) => {\n transport.use(!v);\n }),\n );\n });\n}\n","import { Applied, Event, EventType } from \"silentium\";\n\n/**\n * Convert Any source to boolean source\n * https://silentium-lab.github.io/silentium-components/#/boolean/bool\n */\nexport function Bool($base: EventType): EventType<boolean> {\n return Event((transport) => {\n Applied($base, Boolean).event(transport);\n });\n}\n","import { Event, EventType, Transport, TransportType } from \"silentium\";\n\n/**\n * Represents object from json\n */\nexport function FromJson<T = Record<string, unknown>>(\n $json: EventType<string>,\n error?: TransportType,\n): EventType<T> {\n return Event((transport) => {\n $json.event(\n Transport((json) => {\n try {\n transport.use(JSON.parse(json));\n } catch (e) {\n error?.use(new Error(`Failed to parse JSON: ${e}`));\n }\n }),\n );\n });\n}\n","import { Event, EventType, Transport, TransportType } from \"silentium\";\n\n/**\n * Represents json from object\n */\nexport function ToJson(\n $data: EventType,\n error?: TransportType,\n): EventType<string> {\n return Event((transport) => {\n $data.event(\n Transport((data: unknown) => {\n try {\n transport.use(JSON.stringify(data));\n } catch {\n error?.use(new Error(\"Failed to convert to JSON\"));\n }\n }),\n );\n });\n}\n","import { Applied, Event, EventType } from \"silentium\";\n\n/**\n * Represents the first element Of an array.\n */\nexport function First<T extends Array<unknown>>(\n $base: EventType<T>,\n): EventType<T[0]> {\n return Event((transport) => {\n Applied($base, (a) => a[0]).event(transport);\n });\n}\n"],"names":["Event","Primitive","Transport","isDestroyable","Shared","Filtered","isFilled","__publicField","Late","Applied","All","SharedSource","ExecutorApplied","LateShared","Of","record","DestroyContainer"],"mappings":"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"}
@@ -126,7 +126,7 @@ declare class TemplateEvent implements EventType<string>, DestroyableType {
126
126
  interface Route<T> {
127
127
  pattern: string;
128
128
  patternFlags?: string;
129
- event: TransportType<[], EventType<T>>;
129
+ event: TransportType<void, EventType<T>>;
130
130
  }
131
131
  /**
132
132
  * Router component what will return template if url matches pattern
@@ -1,4 +1,4 @@
1
- import { Event, Primitive, Transport, isDestroyable, Shared, Filtered, isFilled, Late, Applied, All, SharedSource, ExecutorApplied, LateShared, Of, DestroyContainer, TransportEvent, TransportDestroyable } from 'silentium';
1
+ import { Event, Primitive, Transport, isDestroyable, Shared, Filtered, isFilled, Late, Applied, All, SharedSource, ExecutorApplied, LateShared, Of, DestroyContainer } from 'silentium';
2
2
 
3
3
  function Branch($condition, $left, $right) {
4
4
  return Event((transport) => {
@@ -438,6 +438,7 @@ class TemplateEvent {
438
438
  return varName;
439
439
  }
440
440
  destroy() {
441
+ this.dc.destroy();
441
442
  return this;
442
443
  }
443
444
  }
@@ -486,42 +487,45 @@ function Set(baseSrc, keySrc, valueSrc) {
486
487
  });
487
488
  }
488
489
 
489
- const $empty = TransportEvent(() => Of(false));
490
490
  function Router($url, $routes, $default) {
491
491
  return Event((transport) => {
492
- const destructors = [];
492
+ const destroyableList = [];
493
+ const checkDestroyable = (instance) => {
494
+ if (isDestroyable(instance)) {
495
+ destroyableList.push(instance);
496
+ }
497
+ };
493
498
  const destructor = () => {
494
- destructors.forEach((d) => d.destroy());
495
- destructors.length = 0;
499
+ destroyableList.forEach((d) => d.destroy());
500
+ destroyableList.length = 0;
496
501
  };
497
502
  All($routes, $url).event(
498
503
  Transport(([routes, url]) => {
499
504
  destructor();
500
- const instance = All(
501
- $default.use(),
502
- All(
503
- ...routes.map((r) => {
504
- const $template = TransportDestroyable(r.event);
505
- destructors.push($template);
506
- return BranchLazy(
507
- RegexpMatched(
508
- Of(r.pattern),
509
- Of(url),
510
- r.patternFlags ? Of(r.patternFlags) : void 0
511
- ),
512
- $template,
513
- $empty
514
- );
515
- })
505
+ const $matches = All(
506
+ ...routes.map(
507
+ (r) => RegexpMatched(
508
+ Of(r.pattern),
509
+ Of(url),
510
+ r.patternFlags ? Of(r.patternFlags) : void 0
511
+ )
516
512
  )
517
513
  );
518
- Applied(instance, (r) => {
519
- const first = r[1].find((r2) => r2 !== false);
520
- if (first) {
521
- return first;
522
- }
523
- return r[0];
524
- }).event(transport);
514
+ $matches.event(
515
+ Transport((matches) => {
516
+ const index = matches.findIndex((v) => v === true);
517
+ if (index === -1) {
518
+ const instance = $default.use();
519
+ checkDestroyable(instance);
520
+ instance.event(transport);
521
+ }
522
+ if (index > -1) {
523
+ const instance = routes[index].event.use();
524
+ checkDestroyable(instance);
525
+ instance.event(transport);
526
+ }
527
+ })
528
+ );
525
529
  })
526
530
  );
527
531
  return destructor;