silentium-components 0.0.92 → 0.0.94

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.94](https://github.com/silentium-lab/silentium-components/compare/v0.0.93...v0.0.94) (2025-12-05)
6
+
7
+
8
+ ### Bug Fixes
9
+
10
+ * **main:** tests fixes ([3cde2c1](https://github.com/silentium-lab/silentium-components/commit/3cde2c19a458bd0f7e0a838831c6cc441ee1bb3a))
11
+
12
+ ### [0.0.93](https://github.com/silentium-lab/silentium-components/compare/v0.0.92...v0.0.93) (2025-12-02)
13
+
14
+
15
+ ### Bug Fixes
16
+
17
+ * **main:** dirty component initial value ([177876c](https://github.com/silentium-lab/silentium-components/commit/177876c370fe7689aca7e95162b6f14cfc67b8ab))
18
+
5
19
  ### [0.0.92](https://github.com/silentium-lab/silentium-components/compare/v0.0.91...v0.0.92) (2025-12-01)
6
20
 
7
21
 
@@ -50,9 +50,10 @@ function BranchLazy($condition, $left, $right) {
50
50
  }
51
51
 
52
52
  function Constant(permanent, $trigger) {
53
- return silentium.Message(function ConstantImpl(r) {
54
- $trigger.then(() => {
55
- r(permanent);
53
+ return silentium.Message(function ConstantImpl(resolve, reject) {
54
+ $trigger.catch(reject).then(() => {
55
+ resolve(permanent);
56
+ resolve(silentium.ResetSilenceCache);
56
57
  });
57
58
  });
58
59
  }
@@ -105,7 +106,7 @@ function Detached($base) {
105
106
  }
106
107
 
107
108
  function Dirty($base, keep = [], exclude = [], cloner) {
108
- const $comparing = silentium.Late();
109
+ const $comparing = silentium.Late({});
109
110
  if (cloner === void 0) {
110
111
  cloner = (value) => JSON.parse(JSON.stringify(value));
111
112
  }
@@ -168,7 +169,7 @@ function Memo($base) {
168
169
  }
169
170
 
170
171
  function MergeAccumulation($base, $reset) {
171
- const accumulation = silentium.LateShared();
172
+ const accumulation = silentium.Late();
172
173
  const lastAccumulated = {};
173
174
  $base.then((nextValue) => {
174
175
  accumulation.use(
@@ -250,22 +251,21 @@ function Part($base, key) {
250
251
  );
251
252
  }
252
253
 
254
+ const NotSet = Symbol("not-set");
253
255
  function Path($base, _keyed, def) {
254
256
  const $keyed = silentium.ActualMessage(_keyed);
255
- const $def = silentium.ActualMessage(def);
256
- return silentium.Message(function PathImpl(r) {
257
- silentium.All($base, $keyed, $def).then(([base, keyed, d]) => {
258
- const keys = keyed.split(".");
259
- let value = base;
260
- keys.forEach((key) => {
261
- value = value[key];
262
- });
263
- if (value !== void 0 && value !== base) {
264
- r(value);
265
- } else if (d !== void 0) {
266
- r(d);
267
- }
257
+ const $def = silentium.ActualMessage(def ?? NotSet);
258
+ return silentium.Applied(silentium.All($base, $keyed, $def), ([base, keyed, d]) => {
259
+ const keys = keyed.split(".");
260
+ let value = base;
261
+ keys.forEach((key) => {
262
+ value = value[key];
268
263
  });
264
+ if (value !== void 0 && value !== base) {
265
+ return value;
266
+ } else if (d !== NotSet) {
267
+ return d;
268
+ }
269
269
  });
270
270
  }
271
271
 
@@ -419,14 +419,17 @@ function RegexpMatched(patternSrc, valueSrc, flagsSrc = silentium.Of("")) {
419
419
  });
420
420
  }
421
421
 
422
- function RegexpReplaced(valueSrc, patternSrc, replaceValueSrc, flagsSrc = silentium.Of("")) {
423
- return silentium.Message(function RegexpReplacedImpl(r) {
424
- silentium.All(patternSrc, valueSrc, replaceValueSrc, flagsSrc).then(
425
- ([pattern, value, replaceValue, flags]) => {
426
- r(String(value).replace(new RegExp(pattern, flags), replaceValue));
427
- }
428
- );
429
- });
422
+ function RegexpReplaced(valueSrc, patternSrc, replaceValueSrc, flagsSrc = "") {
423
+ const $value = silentium.ActualMessage(valueSrc);
424
+ const $pattern = silentium.ActualMessage(patternSrc);
425
+ const $replaceValue = silentium.ActualMessage(replaceValueSrc);
426
+ const $flags = silentium.ActualMessage(flagsSrc);
427
+ return silentium.Applied(
428
+ silentium.All($pattern, $value, $replaceValue, $flags),
429
+ ([pattern, value, replaceValue, flags]) => {
430
+ return String(value).replace(new RegExp(pattern, flags), replaceValue);
431
+ }
432
+ );
430
433
  }
431
434
 
432
435
  function Set(baseSrc, keySrc, valueSrc) {
@@ -515,7 +518,7 @@ var __defProp = Object.defineProperty;
515
518
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
516
519
  var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
517
520
  function Template(src = "", $places = silentium.Of({})) {
518
- const $src = silentium.LateShared();
521
+ const $src = silentium.Late();
519
522
  if (typeof src === "string" || silentium.isMessage(src)) {
520
523
  $src.chain(silentium.ActualMessage(src));
521
524
  }
@@ -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/MergeAccumulation.ts","../src/behaviors/OnlyChanged.ts","../src/behaviors/Part.ts","../src/behaviors/Path.ts","../src/behaviors/PathExisted.ts","../src/behaviors/Polling.ts","../src/behaviors/Shot.ts","../src/behaviors/Task.ts","../src/behaviors/Tick.ts","../src/boolean/And.ts","../src/boolean/Bool.ts","../src/boolean/Not.ts","../src/boolean/Or.ts","../src/formats/FromJson.ts","../src/formats/ToJson.ts","../src/lists/First.ts","../src/system/RegexpMatch.ts","../src/system/RegexpMatched.ts","../src/system/RegexpReplaced.ts","../src/system/Set.ts","../src/navigation/Router.ts","../src/strings/Concatenated.ts","../src/structures/HashTable.ts","../src/structures/Record.ts","../src/strings/Template.ts"],"sourcesContent":["import { ActualMessage, MaybeMessage, Message, Primitive } from \"silentium\";\n\n/**\n * Allows switching between left and right messages depending on condition\n * https://silentium-lab.github.io/silentium-components/#/behaviors/branch\n */\nexport function Branch<Then, Else>(\n _condition: MaybeMessage<boolean>,\n _left: MaybeMessage<Then>,\n _right?: MaybeMessage<Else>,\n) {\n const $condition = ActualMessage(_condition);\n const $left = ActualMessage(_left);\n const $right = _right && ActualMessage(_right);\n return Message<Then | Else>(function BranchImpl(r) {\n const left = Primitive($left);\n let right: ReturnType<typeof Primitive<Else>>;\n if ($right !== undefined) {\n right = Primitive($right);\n }\n $condition.then((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 r(result);\n }\n });\n });\n}\n","import {\n ConstructorType,\n DestroyableType,\n DestroyContainer,\n Message,\n MessageType,\n} from \"silentium\";\n\n/**\n * Depending on the $condition message,\n * creates a new left or right message.\n * When condition changes, old messages are destroyed\n * and new ones are created.\n */\nexport function BranchLazy<Then, Else>(\n $condition: MessageType<boolean>,\n $left: ConstructorType<[], MessageType<Then>>,\n $right?: ConstructorType<[], MessageType<Else>>,\n): MessageType<Then | Else> & DestroyableType {\n return Message(function BranchLazyImpl(r) {\n const dc = DestroyContainer();\n const destructor = () => {\n dc.destroy();\n };\n $condition.then((v) => {\n destructor();\n let instance: MessageType<Then | Else> | undefined;\n if (v) {\n instance = $left();\n } else if ($right) {\n instance = $right();\n }\n if (instance !== undefined) {\n instance.then(r);\n dc.add(instance);\n }\n });\n return destructor;\n });\n}\n","import { Message, MessageType } from \"silentium\";\n\n/**\n * Constant value that will be\n * returned on each value from\n * the $trigger message\n */\nexport function Constant<T>(\n permanent: T,\n $trigger: MessageType,\n): MessageType<T> {\n return Message<T>(function ConstantImpl(r) {\n $trigger.then(() => {\n r(permanent);\n });\n });\n}\n","import {\n ActualMessage,\n Filtered,\n MaybeMessage,\n Message,\n MessageType,\n Shared,\n} from \"silentium\";\n\n/**\n * Will return an error via error transport if\n * time runs out from $timeout; if $base manages to\n * respond before $timeout then the value from base will be returned\n */\nexport function Deadline<T>(\n $base: MessageType<T>,\n _timeout: MaybeMessage<number>,\n) {\n const $timeout = ActualMessage(_timeout);\n return Message<T>(function DeadlineImpl(resolve, reject) {\n let timer: ReturnType<typeof setTimeout> | number = 0;\n const base = Shared($base);\n $timeout.then((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 reject(new Error(\"Timeout reached in Deadline\"));\n }, timeout);\n\n const f = Filtered(base, () => !timeoutReached);\n f.then(resolve);\n\n base.then(() => {\n timeoutReached = true;\n });\n });\n });\n}\n","import { isFilled, Message, MessageType, Primitive } 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: MessageType<T>,\n $trigger: MessageType<unknown>,\n) {\n return Message<T>(function DeferredImpl(r) {\n const base = Primitive($base);\n $trigger.then(() => {\n const value = base.primitive();\n if (isFilled(value)) {\n r(value);\n }\n });\n });\n}\n","import { isFilled, Message, MessageType, Primitive } from \"silentium\";\n\n/**\n * Message separate from the base\n * allows to take one value from the base\n * but not react to new values of the base message\n */\nexport function Detached<T>($base: MessageType<T>): MessageType<T> {\n return Message<T>(function DetachedImpl(r) {\n const v = Primitive($base).primitive();\n if (isFilled(v)) {\n r(v);\n }\n });\n}\n","import { All, Applied, Late, MessageSource, MessageType } 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: MessageType<T>,\n keep: string[] = [],\n exclude: string[] = [],\n cloner?: (v: T) => T,\n) {\n const $comparing = Late<T>();\n if (cloner === undefined) {\n cloner = (value) => JSON.parse(JSON.stringify(value));\n }\n return MessageSource<T>(\n function DirtyImpl(r) {\n const $comparingClone = Applied($comparing, cloner);\n All($comparingClone, $base).then(([comparing, base]) => {\n if (!comparing) {\n return;\n }\n r(\n Object.fromEntries(\n Object.entries(comparing).filter(([key, value]) => {\n if (keep.includes(key)) {\n return true;\n }\n if (exclude.includes(key)) {\n return false;\n }\n return value !== (base as Record<string, unknown>)[key];\n }),\n ) as T,\n );\n });\n },\n (v) => {\n $comparing.use(v);\n },\n );\n}\n","import { Message, MessageType } from \"silentium\";\n\n/**\n * Representation Of loading process\n * first message begins loading\n * second message stops loading\n * https://silentium-lab.github.io/silentium-components/#/behaviors/loading\n */\nexport function Loading(\n $start: MessageType<unknown>,\n $finish: MessageType<unknown>,\n) {\n return Message<boolean>(function LoadingImpl(r) {\n $start.then(() => r(true));\n $finish.then(() => r(false));\n });\n}\n","import { Filtered, Message, MessageType } from \"silentium\";\n\n/**\n * Allows locking messages\n * if a $lock message arrives\n * https://silentium-lab.github.io/silentium-components/#/behaviors/lock\n */\nexport function Lock<T>($base: MessageType<T>, $lock: MessageType<boolean>) {\n return Message<T>(function LockImpl(r) {\n let locked = false;\n $lock.then((newLock) => {\n locked = newLock;\n });\n const i = Filtered($base, () => !locked);\n i.then(r);\n });\n}\n","import { isFilled, Message, MessageType } 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: MessageType<T>) {\n return Message<T>(function MemoImpl(r) {\n let last: T | null = null;\n $base.then((v) => {\n if (v !== last && isFilled(v)) {\n r(v);\n last = v;\n }\n });\n });\n}\n","import { LateShared, MessageType } from \"silentium\";\n\n/**\n * Есть объект и каждое новое его значение нужно мержить с прошлым\n * чтобы накопить общие изменения\n */\nexport function MergeAccumulation<T extends object>(\n $base: MessageType<T>,\n $reset?: MessageType<T>,\n): MessageType<T> {\n const accumulation = LateShared<T>();\n const lastAccumulated = {};\n $base.then((nextValue) => {\n accumulation.use(\n mergeWith(lastAccumulated, nextValue, (value1: any, value2: any) => {\n if (Array.isArray(value1)) {\n return value1.concat(value2);\n }\n }),\n );\n });\n\n if ($reset) {\n $reset.then((resetValue) => {\n accumulation.use(resetValue);\n });\n }\n\n return accumulation;\n}\n\nfunction mergeWith<TObject, TSource>(\n target: TObject,\n source: TSource,\n customizer: (\n objValue: any,\n srcValue: any,\n key: string,\n object: any,\n source: any,\n ) => any,\n): TObject & TSource {\n if (source == null) {\n return target as TObject & TSource;\n }\n\n Object.keys(source).forEach((key) => {\n const srcValue = (source as any)[key];\n const objValue = (target as any)[key];\n const result = customizer(objValue, srcValue, key, target, source);\n\n if (result !== undefined) {\n (target as any)[key] = result;\n } else if (isObject(srcValue) && isObject(objValue)) {\n mergeWith(objValue, srcValue, customizer);\n } else {\n (target as any)[key] = srcValue;\n }\n });\n\n return target as TObject & TSource;\n}\n\nfunction isObject(value: any): value is \"object\" {\n return value != null && typeof value === \"object\";\n}\n","import { Message, MessageType } 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: MessageType<T>) {\n return Message<T>(function OnlyChangedImpl(r) {\n let first = false;\n $base.then((v) => {\n if (first === false) {\n first = true;\n } else {\n r(v);\n }\n });\n });\n}\n","import {\n ActualMessage,\n All,\n isFilled,\n MaybeMessage,\n MessageSource,\n MessageSourceType,\n Primitive,\n Shared,\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: MessageSourceType<T>, key: MaybeMessage<K>): MessageSourceType<R> {\n const $baseShared = Shared($base);\n const $keyedShared = Shared(ActualMessage(key));\n return MessageSource(\n function PartImpl(r) {\n All($baseShared, $keyedShared).then(([base, keyed]) => {\n const keys = keyed.split(\".\");\n let value: unknown = base;\n keys.forEach((key: string) => {\n value = (value as Record<string, unknown>)[key];\n });\n if (value !== undefined && value !== base) {\n r(value as R);\n }\n });\n },\n (value) => {\n const key = Primitive($keyedShared);\n if (isFilled(key)) {\n const base = Primitive($base);\n $base.use({\n ...base.primitiveWithException(),\n [key.primitiveWithException()]: value,\n } as T);\n }\n },\n );\n}\n","import {\n ActualMessage,\n All,\n MaybeMessage,\n Message,\n MessageType,\n} 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: MessageType<T>, _keyed: MaybeMessage<K>, def?: MaybeMessage<T>) {\n const $keyed = ActualMessage(_keyed);\n const $def = ActualMessage(def);\n return Message<R>(function PathImpl(r) {\n All($base, $keyed, $def).then(([base, keyed, d]) => {\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 r(value as R);\n } else if (d !== undefined) {\n r(d as R);\n }\n });\n });\n}\n","import { ActualMessage, Empty, MaybeMessage, Nothing } from \"silentium\";\n\nimport { Path } from \"../behaviors/Path\";\n\n/**\n * Path with separate empty message\n */\nexport function PathExisted<\n R,\n T extends object | Array<any> = any,\n K extends string = any,\n>(_base: MaybeMessage<T>, _keyed: MaybeMessage<K>) {\n const $base = ActualMessage(_base);\n const $keyed = ActualMessage(_keyed);\n return Empty(Path<R>($base, $keyed, Nothing));\n}\n","import { Message, MessageType } from \"silentium\";\n\n/**\n * Active polling of $base message\n * synchronized with $trigger message\n */\nexport function Polling<T>($base: MessageType<T>, $trigger: MessageType<T>) {\n return Message<T>(function PollingImpl(r) {\n $trigger.then(() => {\n $base.then(r);\n });\n });\n}\n","import { isFilled, Message, MessageType, Primitive } 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>($target: MessageType<T>, $trigger: MessageType) {\n return Message<T>(function ShotImpl(r) {\n const targetSync = Primitive($target);\n targetSync.primitive();\n $trigger.then(() => {\n const value = targetSync.primitive();\n if (isFilled(value)) {\n r(value);\n }\n });\n });\n}\n","import {\n ActualMessage,\n ExecutorApplied,\n MaybeMessage,\n Message,\n} from \"silentium\";\n\n/**\n * Defer a message to the event loop\n * so that it executes once within\n * a certain timer firing interval\n */\nexport function Task<T>(baseSrc: MaybeMessage<T>, delay: number = 0) {\n const $base = ActualMessage(baseSrc);\n return Message<T>(function TaskImpl(r) {\n let prevTimer: unknown | null = null;\n ExecutorApplied($base, (fn) => {\n return (v) => {\n if (prevTimer) {\n clearTimeout(prevTimer as number);\n }\n prevTimer = setTimeout(() => {\n fn(v);\n }, delay);\n };\n }).then(r);\n });\n}\n","import { Message, MessageType } 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: MessageType<T>) {\n return Message<T>(function TickImpl(r) {\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 r(lastValue);\n lastValue = null;\n }\n });\n };\n\n $base.then((v) => {\n lastValue = v;\n if (!microtaskScheduled) {\n scheduleMicrotask();\n }\n });\n });\n}\n","import { All, Message, MessageType } from \"silentium\";\n\n/**\n * Logical AND over two messages\n * https://silentium-lab.github.io/silentium-components/#/boolean/and\n */\nexport function And($one: MessageType<boolean>, $two: MessageType<boolean>) {\n return Message<boolean>(function AndImpl(r) {\n All($one, $two).then(([one, two]) => {\n r(!!(one && two));\n });\n });\n}\n","import { Applied, Message, MessageType } 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: MessageType) {\n return Message<boolean>(function BoolImpl(r) {\n Applied($base, Boolean).then(r);\n });\n}\n","import { Message, MessageType } from \"silentium\";\n\n/**\n * Logical negation of message\n * https://silentium-lab.github.io/silentium-components/#/boolean/not\n */\nexport function Not($base: MessageType<boolean>) {\n return Message<boolean>(function NotImpl(r) {\n $base.then((v) => {\n r(!v);\n });\n });\n}\n","import { All, Message, MessageType } from \"silentium\";\n\n/**\n * Logical OR over two messages\n * https://silentium-lab.github.io/silentium-components/#/boolean/or\n */\nexport function Or($one: MessageType<boolean>, $two: MessageType<boolean>) {\n return Message<boolean>(function OrImpl(r) {\n All($one, $two).then(([one, two]) => {\n r(!!(one || two));\n });\n });\n}\n","import { Message, MessageType } from \"silentium\";\n\n/**\n * Represents object from json\n */\nexport function FromJson<T = Record<string, unknown>>(\n $json: MessageType<string>,\n) {\n return Message<T>(function FromJsonImpl(resolve, reject) {\n $json.then((json) => {\n try {\n resolve(JSON.parse(json));\n } catch (e) {\n reject(new Error(`Failed to parse JSON: ${e}`));\n }\n });\n });\n}\n","import { Message, MessageType } from \"silentium\";\n\n/**\n * Represents json from object\n */\nexport function ToJson($data: MessageType) {\n return Message<string>(function ToJsonImpl(resolve, reject) {\n $data.then((data: unknown) => {\n try {\n resolve(JSON.stringify(data));\n } catch {\n reject(new Error(\"Failed to convert to JSON\"));\n }\n });\n });\n}\n","import { Applied, Message, MessageType } from \"silentium\";\n\n/**\n * Represents the first element Of an array.\n */\nexport function First<T extends Array<unknown>>($base: MessageType<T>) {\n return Message<T[0]>(function FirstImpl(r) {\n Applied($base, (a) => a[0]).then(r);\n });\n}\n","import { ActualMessage, All, MaybeMessage, Message, Of } 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: MaybeMessage<string>,\n valueSrc: MaybeMessage<string>,\n flagsSrc: MaybeMessage<string> = Of(\"\"),\n) {\n const $pattern = ActualMessage(patternSrc);\n const $value = ActualMessage(valueSrc);\n const $flags = ActualMessage(flagsSrc);\n return Message<string[]>(function RegexpMatchImpl(r) {\n All($pattern, $value, $flags).then(([pattern, value, flags]) => {\n const result = new RegExp(pattern, flags).exec(value);\n r(result ?? []);\n });\n });\n}\n","import { ActualMessage, All, MaybeMessage, Message, Of } 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: MaybeMessage<string>,\n valueSrc: MaybeMessage<string>,\n flagsSrc: MaybeMessage<string> = Of(\"\"),\n) {\n const $pattern = ActualMessage(patternSrc);\n const $value = ActualMessage(valueSrc);\n const $flags = ActualMessage(flagsSrc);\n return Message<boolean>(function RegexpMatchedImpl(r) {\n All($pattern, $value, $flags).then(([pattern, value, flags]) => {\n r(new RegExp(pattern, flags).test(value));\n });\n });\n}\n","import { All, Message, MessageType, Of } 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: MessageType<string>,\n patternSrc: MessageType<string>,\n replaceValueSrc: MessageType<string>,\n flagsSrc: MessageType<string> = Of(\"\"),\n) {\n return Message<string>(function RegexpReplacedImpl(r) {\n All(patternSrc, valueSrc, replaceValueSrc, flagsSrc).then(\n ([pattern, value, replaceValue, flags]) => {\n r(String(value).replace(new RegExp(pattern, flags), replaceValue));\n },\n );\n });\n}\n","import { ActualMessage, All, Message, MessageType } 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: MessageType<T>,\n keySrc: MessageType<string>,\n valueSrc: MessageType<unknown>,\n) {\n const $base = ActualMessage(baseSrc);\n const $key = ActualMessage(keySrc);\n const $value = ActualMessage(valueSrc);\n return Message<T>(function SetImpl(r) {\n All($base, $key, $value).then(([base, key, value]) => {\n (base as Record<string, unknown>)[key] = value;\n r(base);\n });\n });\n}\n","import {\n ActualMessage,\n All,\n ConstructorType,\n DestroyableType,\n DestroyContainer,\n MaybeMessage,\n Message,\n MessageType,\n Of,\n} from \"silentium\";\n\nimport { RegexpMatched } from \"../system\";\n\nexport interface Route<T> {\n pattern: string;\n patternFlags?: string;\n message: ConstructorType<[], MessageType<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: MessageType<string>,\n routes: MaybeMessage<Route<T>[]>,\n $default: ConstructorType<[], MessageType<T>>,\n): MessageType<T> & DestroyableType {\n const $routes = ActualMessage(routes);\n return Message<T>(function RouterImpl(r) {\n const dc = DestroyContainer();\n const destructor = () => {\n dc.destroy();\n };\n All($routes, $url).then(([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.then((matches) => {\n const index = matches.findIndex((v) => v === true);\n\n if (index === -1) {\n const instance = $default();\n dc.add(instance);\n instance.then(r);\n }\n\n if (index > -1) {\n const instance = routes[index].message();\n dc.add(instance);\n instance.then(r);\n }\n });\n });\n\n return destructor;\n });\n}\n","import { All, Message, MessageType, Of } 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: MessageType<string>[],\n joinPartSrc: MessageType<string> = Of(\"\"),\n) {\n return Message<string>(function ConcatenatedImpl(r) {\n All(joinPartSrc, ...sources).then(([joinPart, ...strings]) => {\n r(strings.join(joinPart));\n });\n });\n}\n","import { Message, MessageType } from \"silentium\";\n\n/**\n * By receiving a message with a key and value, collects a table\n * of all previously received messages in the form of a structure\n * https://silentium-lab.github.io/silentium-components/#/structures/hash-table\n */\nexport function HashTable<T>($base: MessageType<[string, unknown]>) {\n return Message<T>(function HashTableImpl(r) {\n const record: Record<string, unknown> = {};\n\n $base.then(([key, value]) => {\n record[key] = value;\n r(record as T);\n });\n });\n}\n","import { ActualMessage, All, Message, MessageType } from \"silentium\";\n\ntype UnWrap<T> = T extends MessageType<infer U> ? U : T;\n\n/**\n * Returns record Of data from record Of sources\n * https://silentium-lab.github.io/silentium-components/#/structures/record\n */\nexport function Record<T>(record: Record<string, T>) {\n return Message<Record<string, UnWrap<T>>>(function RecordImpl(r) {\n const keys = Object.keys(record);\n keys.forEach((key) => {\n record[key] = ActualMessage(record[key]) as any;\n });\n All(...(Object.values(record) as any)).then((entries) => {\n const record: Record<string, any> = {};\n entries.forEach((entry, index) => {\n record[keys[index]] = entry;\n });\n r(record);\n });\n });\n}\n","import {\n ActualMessage,\n All,\n Applied,\n ConstructorType,\n DestroyableType,\n DestroyContainer,\n isDestroyable,\n isMessage,\n LateShared,\n MaybeMessage,\n Message,\n MessageType,\n Of,\n Rejections,\n} from \"silentium\";\n\nimport { Record } from \"../structures\";\n\n/**\n * Allows creating a string template with\n * variables inserted into it; when variables change,\n * the template value will change\n */\nexport function Template(\n src: MaybeMessage<string> | ((t: TemplateImpl) => string) = \"\",\n $places: MaybeMessage<Record<string, unknown>> = Of({}),\n) {\n const $src = LateShared<string>();\n if (typeof src === \"string\" || isMessage(src)) {\n $src.chain(ActualMessage(src));\n }\n\n const t = new TemplateImpl(\n $src,\n $places ? ActualMessage($places) : undefined,\n );\n\n if (typeof src === \"function\") {\n $src.chain(\n Message((r) => {\n r(src(t));\n }),\n );\n }\n\n return t;\n}\n\nclass TemplateImpl implements MessageType<string>, DestroyableType {\n private dc = DestroyContainer();\n private rejections = new Rejections();\n private vars: Record<string, MessageType> = {\n $TPL: Of(\"$TPL\"),\n };\n\n public constructor(\n private $src: MessageType<string> = Of(\"\"),\n private $places: MessageType<Record<string, unknown>> = Of({}),\n ) {}\n\n public then(transport: ConstructorType<[string]>): this {\n const $vars = Record(this.vars);\n Applied(All(this.$src, this.$places, $vars), ([base, rules, vars]) => {\n try {\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 } catch (e) {\n this.rejections.reject(e);\n }\n\n return base;\n }).then(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: MessageType<string>) {\n const hash =\n Date.now().toString(36) + Math.random().toString(36).substring(2);\n const varName = `$var${hash}`;\n if (isDestroyable(src)) {\n this.dc.add(src);\n }\n this.vars[varName] = src;\n return varName;\n }\n\n public catch(rejected: ConstructorType<[unknown]>): this {\n this.rejections.catch(rejected);\n return this;\n }\n\n public destroy(): this {\n this.dc.destroy();\n return this;\n }\n}\n"],"names":["ActualMessage","Message","Primitive","DestroyContainer","Shared","Filtered","isFilled","Late","MessageSource","Applied","All","LateShared","key","Empty","Nothing","ExecutorApplied","Of","routes","r","record","isMessage","Rejections","isDestroyable"],"mappings":";;;;AAMgB,SAAA,MAAA,CACd,UACA,EAAA,KAAA,EACA,MACA,EAAA;AACA,EAAM,MAAA,UAAA,GAAaA,wBAAc,UAAU,CAAA;AAC3C,EAAM,MAAA,KAAA,GAAQA,wBAAc,KAAK,CAAA;AACjC,EAAM,MAAA,MAAA,GAAS,MAAU,IAAAA,uBAAA,CAAc,MAAM,CAAA;AAC7C,EAAO,OAAAC,iBAAA,CAAqB,SAAS,UAAA,CAAW,CAAG,EAAA;AACjD,IAAM,MAAA,IAAA,GAAOC,oBAAU,KAAK,CAAA;AAC5B,IAAI,IAAA,KAAA;AACJ,IAAA,IAAI,WAAW,MAAW,EAAA;AACxB,MAAA,KAAA,GAAQA,oBAAU,MAAM,CAAA;AAAA;AAE1B,IAAW,UAAA,CAAA,IAAA,CAAK,CAAC,CAAM,KAAA;AACrB,MAAA,IAAI,MAA6B,GAAA,IAAA;AACjC,MAAA,IAAI,CAAG,EAAA;AACL,QAAA,MAAA,GAAS,KAAK,SAAU,EAAA;AAAA,iBACf,KAAO,EAAA;AAChB,QAAA,MAAA,GAAS,MAAM,SAAU,EAAA;AAAA;AAE3B,MAAA,IAAI,WAAW,IAAM,EAAA;AACnB,QAAA,CAAA,CAAE,MAAM,CAAA;AAAA;AACV,KACD,CAAA;AAAA,GACF,CAAA;AACH;;AClBgB,SAAA,UAAA,CACd,UACA,EAAA,KAAA,EACA,MAC4C,EAAA;AAC5C,EAAO,OAAAD,iBAAA,CAAQ,SAAS,cAAA,CAAe,CAAG,EAAA;AACxC,IAAA,MAAM,KAAKE,0BAAiB,EAAA;AAC5B,IAAA,MAAM,aAAa,MAAM;AACvB,MAAA,EAAA,CAAG,OAAQ,EAAA;AAAA,KACb;AACA,IAAW,UAAA,CAAA,IAAA,CAAK,CAAC,CAAM,KAAA;AACrB,MAAW,UAAA,EAAA;AACX,MAAI,IAAA,QAAA;AACJ,MAAA,IAAI,CAAG,EAAA;AACL,QAAA,QAAA,GAAW,KAAM,EAAA;AAAA,iBACR,MAAQ,EAAA;AACjB,QAAA,QAAA,GAAW,MAAO,EAAA;AAAA;AAEpB,MAAA,IAAI,aAAa,MAAW,EAAA;AAC1B,QAAA,QAAA,CAAS,KAAK,CAAC,CAAA;AACf,QAAA,EAAA,CAAG,IAAI,QAAQ,CAAA;AAAA;AACjB,KACD,CAAA;AACD,IAAO,OAAA,UAAA;AAAA,GACR,CAAA;AACH;;AChCgB,SAAA,QAAA,CACd,WACA,QACgB,EAAA;AAChB,EAAO,OAAAF,iBAAA,CAAW,SAAS,YAAA,CAAa,CAAG,EAAA;AACzC,IAAA,QAAA,CAAS,KAAK,MAAM;AAClB,MAAA,CAAA,CAAE,SAAS,CAAA;AAAA,KACZ,CAAA;AAAA,GACF,CAAA;AACH;;ACFgB,SAAA,QAAA,CACd,OACA,QACA,EAAA;AACA,EAAM,MAAA,QAAA,GAAWD,wBAAc,QAAQ,CAAA;AACvC,EAAA,OAAOC,iBAAW,CAAA,SAAS,YAAa,CAAA,OAAA,EAAS,MAAQ,EAAA;AACvD,IAAA,IAAI,KAAgD,GAAA,CAAA;AACpD,IAAM,MAAA,IAAA,GAAOG,iBAAO,KAAK,CAAA;AACzB,IAAS,QAAA,CAAA,IAAA,CAAK,CAAC,OAAY,KAAA;AACzB,MAAA,IAAI,KAAO,EAAA;AACT,QAAA,YAAA,CAAa,KAAK,CAAA;AAAA;AAEpB,MAAA,IAAI,cAAiB,GAAA,KAAA;AAErB,MAAA,KAAA,GAAQ,WAAW,MAAM;AACvB,QAAA,IAAI,cAAgB,EAAA;AAClB,UAAA;AAAA;AAEF,QAAiB,cAAA,GAAA,IAAA;AACjB,QAAO,MAAA,CAAA,IAAI,KAAM,CAAA,6BAA6B,CAAC,CAAA;AAAA,SAC9C,OAAO,CAAA;AAEV,MAAA,MAAM,CAAI,GAAAC,kBAAA,CAAS,IAAM,EAAA,MAAM,CAAC,cAAc,CAAA;AAC9C,MAAA,CAAA,CAAE,KAAK,OAAO,CAAA;AAEd,MAAA,IAAA,CAAK,KAAK,MAAM;AACd,QAAiB,cAAA,GAAA,IAAA;AAAA,OAClB,CAAA;AAAA,KACF,CAAA;AAAA,GACF,CAAA;AACH;;ACtCgB,SAAA,QAAA,CACd,OACA,QACA,EAAA;AACA,EAAO,OAAAJ,iBAAA,CAAW,SAAS,YAAA,CAAa,CAAG,EAAA;AACzC,IAAM,MAAA,IAAA,GAAOC,oBAAU,KAAK,CAAA;AAC5B,IAAA,QAAA,CAAS,KAAK,MAAM;AAClB,MAAM,MAAA,KAAA,GAAQ,KAAK,SAAU,EAAA;AAC7B,MAAI,IAAAI,kBAAA,CAAS,KAAK,CAAG,EAAA;AACnB,QAAA,CAAA,CAAE,KAAK,CAAA;AAAA;AACT,KACD,CAAA;AAAA,GACF,CAAA;AACH;;ACZO,SAAS,SAAY,KAAuC,EAAA;AACjE,EAAO,OAAAL,iBAAA,CAAW,SAAS,YAAA,CAAa,CAAG,EAAA;AACzC,IAAA,MAAM,CAAI,GAAAC,mBAAA,CAAU,KAAK,CAAA,CAAE,SAAU,EAAA;AACrC,IAAI,IAAAI,kBAAA,CAAS,CAAC,CAAG,EAAA;AACf,MAAA,CAAA,CAAE,CAAC,CAAA;AAAA;AACL,GACD,CAAA;AACH;;ACPgB,SAAA,KAAA,CACd,OACA,IAAiB,GAAA,IACjB,OAAoB,GAAA,IACpB,MACA,EAAA;AACA,EAAA,MAAM,aAAaC,cAAQ,EAAA;AAC3B,EAAA,IAAI,WAAW,MAAW,EAAA;AACxB,IAAA,MAAA,GAAS,CAAC,KAAU,KAAA,IAAA,CAAK,MAAM,IAAK,CAAA,SAAA,CAAU,KAAK,CAAC,CAAA;AAAA;AAEtD,EAAO,OAAAC,uBAAA;AAAA,IACL,SAAS,UAAU,CAAG,EAAA;AACpB,MAAM,MAAA,eAAA,GAAkBC,iBAAQ,CAAA,UAAA,EAAY,MAAM,CAAA;AAClD,MAAIC,aAAA,CAAA,eAAA,EAAiB,KAAK,CAAE,CAAA,IAAA,CAAK,CAAC,CAAC,SAAA,EAAW,IAAI,CAAM,KAAA;AACtD,QAAA,IAAI,CAAC,SAAW,EAAA;AACd,UAAA;AAAA;AAEF,QAAA,CAAA;AAAA,UACE,MAAO,CAAA,WAAA;AAAA,YACL,MAAA,CAAO,QAAQ,SAAS,CAAA,CAAE,OAAO,CAAC,CAAC,GAAK,EAAA,KAAK,CAAM,KAAA;AACjD,cAAI,IAAA,IAAA,CAAK,QAAS,CAAA,GAAG,CAAG,EAAA;AACtB,gBAAO,OAAA,IAAA;AAAA;AAET,cAAI,IAAA,OAAA,CAAQ,QAAS,CAAA,GAAG,CAAG,EAAA;AACzB,gBAAO,OAAA,KAAA;AAAA;AAET,cAAO,OAAA,KAAA,KAAW,KAAiC,GAAG,CAAA;AAAA,aACvD;AAAA;AACH,SACF;AAAA,OACD,CAAA;AAAA,KACH;AAAA,IACA,CAAC,CAAM,KAAA;AACL,MAAA,UAAA,CAAW,IAAI,CAAC,CAAA;AAAA;AAClB,GACF;AACF;;ACnCgB,SAAA,OAAA,CACd,QACA,OACA,EAAA;AACA,EAAO,OAAAT,iBAAA,CAAiB,SAAS,WAAA,CAAY,CAAG,EAAA;AAC9C,IAAA,MAAA,CAAO,IAAK,CAAA,MAAM,CAAE,CAAA,IAAI,CAAC,CAAA;AACzB,IAAA,OAAA,CAAQ,IAAK,CAAA,MAAM,CAAE,CAAA,KAAK,CAAC,CAAA;AAAA,GAC5B,CAAA;AACH;;ACTgB,SAAA,IAAA,CAAQ,OAAuB,KAA6B,EAAA;AAC1E,EAAO,OAAAA,iBAAA,CAAW,SAAS,QAAA,CAAS,CAAG,EAAA;AACrC,IAAA,IAAI,MAAS,GAAA,KAAA;AACb,IAAM,KAAA,CAAA,IAAA,CAAK,CAAC,OAAY,KAAA;AACtB,MAAS,MAAA,GAAA,OAAA;AAAA,KACV,CAAA;AACD,IAAA,MAAM,CAAI,GAAAI,kBAAA,CAAS,KAAO,EAAA,MAAM,CAAC,MAAM,CAAA;AACvC,IAAA,CAAA,CAAE,KAAK,CAAC,CAAA;AAAA,GACT,CAAA;AACH;;ACVO,SAAS,KAAQ,KAAuB,EAAA;AAC7C,EAAO,OAAAJ,iBAAA,CAAW,SAAS,QAAA,CAAS,CAAG,EAAA;AACrC,IAAA,IAAI,IAAiB,GAAA,IAAA;AACrB,IAAM,KAAA,CAAA,IAAA,CAAK,CAAC,CAAM,KAAA;AAChB,MAAA,IAAI,CAAM,KAAA,IAAA,IAAQK,kBAAS,CAAA,CAAC,CAAG,EAAA;AAC7B,QAAA,CAAA,CAAE,CAAC,CAAA;AACH,QAAO,IAAA,GAAA,CAAA;AAAA;AACT,KACD,CAAA;AAAA,GACF,CAAA;AACH;;ACVgB,SAAA,iBAAA,CACd,OACA,MACgB,EAAA;AAChB,EAAA,MAAM,eAAeK,oBAAc,EAAA;AACnC,EAAA,MAAM,kBAAkB,EAAC;AACzB,EAAM,KAAA,CAAA,IAAA,CAAK,CAAC,SAAc,KAAA;AACxB,IAAa,YAAA,CAAA,GAAA;AAAA,MACX,SAAU,CAAA,eAAA,EAAiB,SAAW,EAAA,CAAC,QAAa,MAAgB,KAAA;AAClE,QAAI,IAAA,KAAA,CAAM,OAAQ,CAAA,MAAM,CAAG,EAAA;AACzB,UAAO,OAAA,MAAA,CAAO,OAAO,MAAM,CAAA;AAAA;AAC7B,OACD;AAAA,KACH;AAAA,GACD,CAAA;AAED,EAAA,IAAI,MAAQ,EAAA;AACV,IAAO,MAAA,CAAA,IAAA,CAAK,CAAC,UAAe,KAAA;AAC1B,MAAA,YAAA,CAAa,IAAI,UAAU,CAAA;AAAA,KAC5B,CAAA;AAAA;AAGH,EAAO,OAAA,YAAA;AACT;AAEA,SAAS,SAAA,CACP,MACA,EAAA,MAAA,EACA,UAOmB,EAAA;AACnB,EAAA,IAAI,UAAU,IAAM,EAAA;AAClB,IAAO,OAAA,MAAA;AAAA;AAGT,EAAA,MAAA,CAAO,IAAK,CAAA,MAAM,CAAE,CAAA,OAAA,CAAQ,CAAC,GAAQ,KAAA;AACnC,IAAM,MAAA,QAAA,GAAY,OAAe,GAAG,CAAA;AACpC,IAAM,MAAA,QAAA,GAAY,OAAe,GAAG,CAAA;AACpC,IAAA,MAAM,SAAS,UAAW,CAAA,QAAA,EAAU,QAAU,EAAA,GAAA,EAAK,QAAQ,MAAM,CAAA;AAEjE,IAAA,IAAI,WAAW,MAAW,EAAA;AACxB,MAAC,MAAA,CAAe,GAAG,CAAI,GAAA,MAAA;AAAA,eACd,QAAS,CAAA,QAAQ,CAAK,IAAA,QAAA,CAAS,QAAQ,CAAG,EAAA;AACnD,MAAU,SAAA,CAAA,QAAA,EAAU,UAAU,UAAU,CAAA;AAAA,KACnC,MAAA;AACL,MAAC,MAAA,CAAe,GAAG,CAAI,GAAA,QAAA;AAAA;AACzB,GACD,CAAA;AAED,EAAO,OAAA,MAAA;AACT;AAEA,SAAS,SAAS,KAA+B,EAAA;AAC/C,EAAO,OAAA,KAAA,IAAS,IAAQ,IAAA,OAAO,KAAU,KAAA,QAAA;AAC3C;;AC3DO,SAAS,YAAe,KAAuB,EAAA;AACpD,EAAO,OAAAV,iBAAA,CAAW,SAAS,eAAA,CAAgB,CAAG,EAAA;AAC5C,IAAA,IAAI,KAAQ,GAAA,KAAA;AACZ,IAAM,KAAA,CAAA,IAAA,CAAK,CAAC,CAAM,KAAA;AAChB,MAAA,IAAI,UAAU,KAAO,EAAA;AACnB,QAAQ,KAAA,GAAA,IAAA;AAAA,OACH,MAAA;AACL,QAAA,CAAA,CAAE,CAAC,CAAA;AAAA;AACL,KACD,CAAA;AAAA,GACF,CAAA;AACH;;ACFgB,SAAA,IAAA,CAId,OAA6B,GAA4C,EAAA;AACzE,EAAM,MAAA,WAAA,GAAcG,iBAAO,KAAK,CAAA;AAChC,EAAA,MAAM,YAAe,GAAAA,gBAAA,CAAOJ,uBAAc,CAAA,GAAG,CAAC,CAAA;AAC9C,EAAO,OAAAQ,uBAAA;AAAA,IACL,SAAS,SAAS,CAAG,EAAA;AACnB,MAAIE,aAAA,CAAA,WAAA,EAAa,YAAY,CAAE,CAAA,IAAA,CAAK,CAAC,CAAC,IAAA,EAAM,KAAK,CAAM,KAAA;AACrD,QAAM,MAAA,IAAA,GAAO,KAAM,CAAA,KAAA,CAAM,GAAG,CAAA;AAC5B,QAAA,IAAI,KAAiB,GAAA,IAAA;AACrB,QAAK,IAAA,CAAA,OAAA,CAAQ,CAACE,IAAgB,KAAA;AAC5B,UAAA,KAAA,GAAS,MAAkCA,IAAG,CAAA;AAAA,SAC/C,CAAA;AACD,QAAI,IAAA,KAAA,KAAU,MAAa,IAAA,KAAA,KAAU,IAAM,EAAA;AACzC,UAAA,CAAA,CAAE,KAAU,CAAA;AAAA;AACd,OACD,CAAA;AAAA,KACH;AAAA,IACA,CAAC,KAAU,KAAA;AACT,MAAMA,MAAAA,IAAAA,GAAMV,oBAAU,YAAY,CAAA;AAClC,MAAI,IAAAI,kBAAA,CAASM,IAAG,CAAG,EAAA;AACjB,QAAM,MAAA,IAAA,GAAOV,oBAAU,KAAK,CAAA;AAC5B,QAAA,KAAA,CAAM,GAAI,CAAA;AAAA,UACR,GAAG,KAAK,sBAAuB,EAAA;AAAA,UAC/B,CAACU,IAAAA,CAAI,sBAAuB,EAAC,GAAG;AAAA,SAC5B,CAAA;AAAA;AACR;AACF,GACF;AACF;;AClCgB,SAAA,IAAA,CAId,KAAuB,EAAA,MAAA,EAAyB,GAAuB,EAAA;AACvE,EAAM,MAAA,MAAA,GAASZ,wBAAc,MAAM,CAAA;AACnC,EAAM,MAAA,IAAA,GAAOA,wBAAc,GAAG,CAAA;AAC9B,EAAO,OAAAC,iBAAA,CAAW,SAAS,QAAA,CAAS,CAAG,EAAA;AACrC,IAAIS,aAAA,CAAA,KAAA,EAAO,MAAQ,EAAA,IAAI,CAAE,CAAA,IAAA,CAAK,CAAC,CAAC,IAAA,EAAM,KAAO,EAAA,CAAC,CAAM,KAAA;AAClD,MAAM,MAAA,IAAA,GAAO,KAAM,CAAA,KAAA,CAAM,GAAG,CAAA;AAC5B,MAAA,IAAI,KAAiB,GAAA,IAAA;AACrB,MAAK,IAAA,CAAA,OAAA,CAAQ,CAAC,GAAQ,KAAA;AACpB,QAAA,KAAA,GAAS,MAAkC,GAAG,CAAA;AAAA,OAC/C,CAAA;AACD,MAAI,IAAA,KAAA,KAAU,MAAa,IAAA,KAAA,KAAU,IAAM,EAAA;AACzC,QAAA,CAAA,CAAE,KAAU,CAAA;AAAA,OACd,MAAA,IAAW,MAAM,MAAW,EAAA;AAC1B,QAAA,CAAA,CAAE,CAAM,CAAA;AAAA;AACV,KACD,CAAA;AAAA,GACF,CAAA;AACH;;AC1BgB,SAAA,WAAA,CAId,OAAwB,MAAyB,EAAA;AACjD,EAAM,MAAA,KAAA,GAAQV,wBAAc,KAAK,CAAA;AACjC,EAAM,MAAA,MAAA,GAASA,wBAAc,MAAM,CAAA;AACnC,EAAA,OAAOa,eAAM,CAAA,IAAA,CAAQ,KAAO,EAAA,MAAA,EAAQC,iBAAO,CAAC,CAAA;AAC9C;;ACTgB,SAAA,OAAA,CAAW,OAAuB,QAA0B,EAAA;AAC1E,EAAO,OAAAb,iBAAA,CAAW,SAAS,WAAA,CAAY,CAAG,EAAA;AACxC,IAAA,QAAA,CAAS,KAAK,MAAM;AAClB,MAAA,KAAA,CAAM,KAAK,CAAC,CAAA;AAAA,KACb,CAAA;AAAA,GACF,CAAA;AACH;;ACNgB,SAAA,IAAA,CAAQ,SAAyB,QAAuB,EAAA;AACtE,EAAO,OAAAA,iBAAA,CAAW,SAAS,QAAA,CAAS,CAAG,EAAA;AACrC,IAAM,MAAA,UAAA,GAAaC,oBAAU,OAAO,CAAA;AACpC,IAAA,UAAA,CAAW,SAAU,EAAA;AACrB,IAAA,QAAA,CAAS,KAAK,MAAM;AAClB,MAAM,MAAA,KAAA,GAAQ,WAAW,SAAU,EAAA;AACnC,MAAI,IAAAI,kBAAA,CAAS,KAAK,CAAG,EAAA;AACnB,QAAA,CAAA,CAAE,KAAK,CAAA;AAAA;AACT,KACD,CAAA;AAAA,GACF,CAAA;AACH;;ACLgB,SAAA,IAAA,CAAQ,OAA0B,EAAA,KAAA,GAAgB,CAAG,EAAA;AACnE,EAAM,MAAA,KAAA,GAAQN,wBAAc,OAAO,CAAA;AACnC,EAAO,OAAAC,iBAAA,CAAW,SAAS,QAAA,CAAS,CAAG,EAAA;AACrC,IAAA,IAAI,SAA4B,GAAA,IAAA;AAChC,IAAgBc,yBAAA,CAAA,KAAA,EAAO,CAAC,EAAO,KAAA;AAC7B,MAAA,OAAO,CAAC,CAAM,KAAA;AACZ,QAAA,IAAI,SAAW,EAAA;AACb,UAAA,YAAA,CAAa,SAAmB,CAAA;AAAA;AAElC,QAAA,SAAA,GAAY,WAAW,MAAM;AAC3B,UAAA,EAAA,CAAG,CAAC,CAAA;AAAA,WACH,KAAK,CAAA;AAAA,OACV;AAAA,KACD,CAAE,CAAA,IAAA,CAAK,CAAC,CAAA;AAAA,GACV,CAAA;AACH;;ACrBO,SAAS,KAAQ,KAAuB,EAAA;AAC7C,EAAO,OAAAd,iBAAA,CAAW,SAAS,QAAA,CAAS,CAAG,EAAA;AACrC,IAAA,IAAI,kBAAqB,GAAA,KAAA;AACzB,IAAA,IAAI,SAAsB,GAAA,IAAA;AAE1B,IAAA,MAAM,oBAAoB,MAAM;AAC9B,MAAqB,kBAAA,GAAA,IAAA;AACrB,MAAA,cAAA,CAAe,MAAM;AACnB,QAAqB,kBAAA,GAAA,KAAA;AACrB,QAAA,IAAI,cAAc,IAAM,EAAA;AACtB,UAAA,CAAA,CAAE,SAAS,CAAA;AACX,UAAY,SAAA,GAAA,IAAA;AAAA;AACd,OACD,CAAA;AAAA,KACH;AAEA,IAAM,KAAA,CAAA,IAAA,CAAK,CAAC,CAAM,KAAA;AAChB,MAAY,SAAA,GAAA,CAAA;AACZ,MAAA,IAAI,CAAC,kBAAoB,EAAA;AACvB,QAAkB,iBAAA,EAAA;AAAA;AACpB,KACD,CAAA;AAAA,GACF,CAAA;AACH;;ACvBgB,SAAA,GAAA,CAAI,MAA4B,IAA4B,EAAA;AAC1E,EAAO,OAAAA,iBAAA,CAAiB,SAAS,OAAA,CAAQ,CAAG,EAAA;AAC1C,IAAIS,aAAA,CAAA,IAAA,EAAM,IAAI,CAAE,CAAA,IAAA,CAAK,CAAC,CAAC,GAAA,EAAK,GAAG,CAAM,KAAA;AACnC,MAAE,CAAA,CAAA,CAAC,EAAE,GAAA,IAAO,GAAI,CAAA,CAAA;AAAA,KACjB,CAAA;AAAA,GACF,CAAA;AACH;;ACNO,SAAS,KAAK,KAAoB,EAAA;AACvC,EAAO,OAAAT,iBAAA,CAAiB,SAAS,QAAA,CAAS,CAAG,EAAA;AAC3C,IAAAQ,iBAAA,CAAQ,KAAO,EAAA,OAAO,CAAE,CAAA,IAAA,CAAK,CAAC,CAAA;AAAA,GAC/B,CAAA;AACH;;ACJO,SAAS,IAAI,KAA6B,EAAA;AAC/C,EAAO,OAAAR,iBAAA,CAAiB,SAAS,OAAA,CAAQ,CAAG,EAAA;AAC1C,IAAM,KAAA,CAAA,IAAA,CAAK,CAAC,CAAM,KAAA;AAChB,MAAA,CAAA,CAAE,CAAC,CAAC,CAAA;AAAA,KACL,CAAA;AAAA,GACF,CAAA;AACH;;ACNgB,SAAA,EAAA,CAAG,MAA4B,IAA4B,EAAA;AACzE,EAAO,OAAAA,iBAAA,CAAiB,SAAS,MAAA,CAAO,CAAG,EAAA;AACzC,IAAIS,aAAA,CAAA,IAAA,EAAM,IAAI,CAAE,CAAA,IAAA,CAAK,CAAC,CAAC,GAAA,EAAK,GAAG,CAAM,KAAA;AACnC,MAAE,CAAA,CAAA,CAAC,EAAE,GAAA,IAAO,GAAI,CAAA,CAAA;AAAA,KACjB,CAAA;AAAA,GACF,CAAA;AACH;;ACPO,SAAS,SACd,KACA,EAAA;AACA,EAAA,OAAOT,iBAAW,CAAA,SAAS,YAAa,CAAA,OAAA,EAAS,MAAQ,EAAA;AACvD,IAAM,KAAA,CAAA,IAAA,CAAK,CAAC,IAAS,KAAA;AACnB,MAAI,IAAA;AACF,QAAQ,OAAA,CAAA,IAAA,CAAK,KAAM,CAAA,IAAI,CAAC,CAAA;AAAA,eACjB,CAAG,EAAA;AACV,QAAA,MAAA,CAAO,IAAI,KAAA,CAAM,CAAyB,sBAAA,EAAA,CAAC,EAAE,CAAC,CAAA;AAAA;AAChD,KACD,CAAA;AAAA,GACF,CAAA;AACH;;ACZO,SAAS,OAAO,KAAoB,EAAA;AACzC,EAAA,OAAOA,iBAAgB,CAAA,SAAS,UAAW,CAAA,OAAA,EAAS,MAAQ,EAAA;AAC1D,IAAM,KAAA,CAAA,IAAA,CAAK,CAAC,IAAkB,KAAA;AAC5B,MAAI,IAAA;AACF,QAAQ,OAAA,CAAA,IAAA,CAAK,SAAU,CAAA,IAAI,CAAC,CAAA;AAAA,OACtB,CAAA,MAAA;AACN,QAAO,MAAA,CAAA,IAAI,KAAM,CAAA,2BAA2B,CAAC,CAAA;AAAA;AAC/C,KACD,CAAA;AAAA,GACF,CAAA;AACH;;ACVO,SAAS,MAAgC,KAAuB,EAAA;AACrE,EAAO,OAAAA,iBAAA,CAAc,SAAS,SAAA,CAAU,CAAG,EAAA;AACzC,IAAQQ,iBAAA,CAAA,KAAA,EAAO,CAAC,CAAM,KAAA,CAAA,CAAE,CAAC,CAAC,CAAA,CAAE,KAAK,CAAC,CAAA;AAAA,GACnC,CAAA;AACH;;ACHO,SAAS,YACd,UACA,EAAA,QAAA,EACA,QAAiC,GAAAO,YAAA,CAAG,EAAE,CACtC,EAAA;AACA,EAAM,MAAA,QAAA,GAAWhB,wBAAc,UAAU,CAAA;AACzC,EAAM,MAAA,MAAA,GAASA,wBAAc,QAAQ,CAAA;AACrC,EAAM,MAAA,MAAA,GAASA,wBAAc,QAAQ,CAAA;AACrC,EAAO,OAAAC,iBAAA,CAAkB,SAAS,eAAA,CAAgB,CAAG,EAAA;AACnD,IAAIS,aAAA,CAAA,QAAA,EAAU,MAAQ,EAAA,MAAM,CAAE,CAAA,IAAA,CAAK,CAAC,CAAC,OAAA,EAAS,KAAO,EAAA,KAAK,CAAM,KAAA;AAC9D,MAAA,MAAM,SAAS,IAAI,MAAA,CAAO,SAAS,KAAK,CAAA,CAAE,KAAK,KAAK,CAAA;AACpD,MAAE,CAAA,CAAA,MAAA,IAAU,EAAE,CAAA;AAAA,KACf,CAAA;AAAA,GACF,CAAA;AACH;;ACdO,SAAS,cACd,UACA,EAAA,QAAA,EACA,QAAiC,GAAAM,YAAA,CAAG,EAAE,CACtC,EAAA;AACA,EAAM,MAAA,QAAA,GAAWhB,wBAAc,UAAU,CAAA;AACzC,EAAM,MAAA,MAAA,GAASA,wBAAc,QAAQ,CAAA;AACrC,EAAM,MAAA,MAAA,GAASA,wBAAc,QAAQ,CAAA;AACrC,EAAO,OAAAC,iBAAA,CAAiB,SAAS,iBAAA,CAAkB,CAAG,EAAA;AACpD,IAAIS,aAAA,CAAA,QAAA,EAAU,MAAQ,EAAA,MAAM,CAAE,CAAA,IAAA,CAAK,CAAC,CAAC,OAAA,EAAS,KAAO,EAAA,KAAK,CAAM,KAAA;AAC9D,MAAA,CAAA,CAAE,IAAI,MAAO,CAAA,OAAA,EAAS,KAAK,CAAE,CAAA,IAAA,CAAK,KAAK,CAAC,CAAA;AAAA,KACzC,CAAA;AAAA,GACF,CAAA;AACH;;ACbO,SAAS,eACd,QACA,EAAA,UAAA,EACA,iBACA,QAAgC,GAAAM,YAAA,CAAG,EAAE,CACrC,EAAA;AACA,EAAO,OAAAf,iBAAA,CAAgB,SAAS,kBAAA,CAAmB,CAAG,EAAA;AACpD,IAAAS,aAAA,CAAI,UAAY,EAAA,QAAA,EAAU,eAAiB,EAAA,QAAQ,CAAE,CAAA,IAAA;AAAA,MACnD,CAAC,CAAC,OAAA,EAAS,KAAO,EAAA,YAAA,EAAc,KAAK,CAAM,KAAA;AACzC,QAAE,CAAA,CAAA,MAAA,CAAO,KAAK,CAAA,CAAE,OAAQ,CAAA,IAAI,OAAO,OAAS,EAAA,KAAK,CAAG,EAAA,YAAY,CAAC,CAAA;AAAA;AACnE,KACF;AAAA,GACD,CAAA;AACH;;ACbgB,SAAA,GAAA,CACd,OACA,EAAA,MAAA,EACA,QACA,EAAA;AACA,EAAM,MAAA,KAAA,GAAQV,wBAAc,OAAO,CAAA;AACnC,EAAM,MAAA,IAAA,GAAOA,wBAAc,MAAM,CAAA;AACjC,EAAM,MAAA,MAAA,GAASA,wBAAc,QAAQ,CAAA;AACrC,EAAO,OAAAC,iBAAA,CAAW,SAAS,OAAA,CAAQ,CAAG,EAAA;AACpC,IAAIS,aAAA,CAAA,KAAA,EAAO,IAAM,EAAA,MAAM,CAAE,CAAA,IAAA,CAAK,CAAC,CAAC,IAAA,EAAM,GAAK,EAAA,KAAK,CAAM,KAAA;AACpD,MAAC,IAAA,CAAiC,GAAG,CAAI,GAAA,KAAA;AACzC,MAAA,CAAA,CAAE,IAAI,CAAA;AAAA,KACP,CAAA;AAAA,GACF,CAAA;AACH;;ACIgB,SAAA,MAAA,CACd,IACA,EAAA,MAAA,EACA,QACkC,EAAA;AAClC,EAAM,MAAA,OAAA,GAAUV,wBAAc,MAAM,CAAA;AACpC,EAAO,OAAAC,iBAAA,CAAW,SAAS,UAAA,CAAW,CAAG,EAAA;AACvC,IAAA,MAAM,KAAKE,0BAAiB,EAAA;AAC5B,IAAA,MAAM,aAAa,MAAM;AACvB,MAAA,EAAA,CAAG,OAAQ,EAAA;AAAA,KACb;AACA,IAAIO,aAAA,CAAA,OAAA,EAAS,IAAI,CAAE,CAAA,IAAA,CAAK,CAAC,CAACO,OAAAA,EAAQ,GAAG,CAAM,KAAA;AACzC,MAAW,UAAA,EAAA;AACX,MAAA,MAAM,QAAW,GAAAP,aAAA;AAAA,QACf,GAAGO,OAAO,CAAA,GAAA;AAAA,UAAI,CAACC,EACb,KAAA,aAAA;AAAA,YACEF,YAAA,CAAGE,GAAE,OAAO,CAAA;AAAA,YACZF,aAAG,GAAG,CAAA;AAAA,YACNE,EAAE,CAAA,YAAA,GAAeF,YAAGE,CAAAA,EAAAA,CAAE,YAAY,CAAI,GAAA;AAAA;AACxC;AACF,OACF;AACA,MAAS,QAAA,CAAA,IAAA,CAAK,CAAC,OAAY,KAAA;AACzB,QAAA,MAAM,QAAQ,OAAQ,CAAA,SAAA,CAAU,CAAC,CAAA,KAAM,MAAM,IAAI,CAAA;AAEjD,QAAA,IAAI,UAAU,EAAI,EAAA;AAChB,UAAA,MAAM,WAAW,QAAS,EAAA;AAC1B,UAAA,EAAA,CAAG,IAAI,QAAQ,CAAA;AACf,UAAA,QAAA,CAAS,KAAK,CAAC,CAAA;AAAA;AAGjB,QAAA,IAAI,QAAQ,EAAI,EAAA;AACd,UAAA,MAAM,QAAWD,GAAAA,OAAAA,CAAO,KAAK,CAAA,CAAE,OAAQ,EAAA;AACvC,UAAA,EAAA,CAAG,IAAI,QAAQ,CAAA;AACf,UAAA,QAAA,CAAS,KAAK,CAAC,CAAA;AAAA;AACjB,OACD,CAAA;AAAA,KACF,CAAA;AAED,IAAO,OAAA,UAAA;AAAA,GACR,CAAA;AACH;;AC3DO,SAAS,YACd,CAAA,OAAA,EACA,WAAmC,GAAAD,YAAA,CAAG,EAAE,CACxC,EAAA;AACA,EAAO,OAAAf,iBAAA,CAAgB,SAAS,gBAAA,CAAiB,CAAG,EAAA;AAClD,IAAIS,aAAA,CAAA,WAAA,EAAa,GAAG,OAAO,CAAA,CAAE,KAAK,CAAC,CAAC,QAAa,EAAA,GAAA,OAAO,CAAM,KAAA;AAC5D,MAAE,CAAA,CAAA,OAAA,CAAQ,IAAK,CAAA,QAAQ,CAAC,CAAA;AAAA,KACzB,CAAA;AAAA,GACF,CAAA;AACH;;ACRO,SAAS,UAAa,KAAuC,EAAA;AAClE,EAAO,OAAAT,iBAAA,CAAW,SAAS,aAAA,CAAc,CAAG,EAAA;AAC1C,IAAA,MAAM,SAAkC,EAAC;AAEzC,IAAA,KAAA,CAAM,IAAK,CAAA,CAAC,CAAC,GAAA,EAAK,KAAK,CAAM,KAAA;AAC3B,MAAA,MAAA,CAAO,GAAG,CAAI,GAAA,KAAA;AACd,MAAA,CAAA,CAAE,MAAW,CAAA;AAAA,KACd,CAAA;AAAA,GACF,CAAA;AACH;;ACRO,SAAS,OAAU,MAA2B,EAAA;AACnD,EAAO,OAAAA,iBAAA,CAAmC,SAAS,UAAA,CAAW,CAAG,EAAA;AAC/D,IAAM,MAAA,IAAA,GAAO,MAAO,CAAA,IAAA,CAAK,MAAM,CAAA;AAC/B,IAAK,IAAA,CAAA,OAAA,CAAQ,CAAC,GAAQ,KAAA;AACpB,MAAA,MAAA,CAAO,GAAG,CAAA,GAAID,uBAAc,CAAA,MAAA,CAAO,GAAG,CAAC,CAAA;AAAA,KACxC,CAAA;AACD,IAAIU,aAAA,CAAA,GAAI,OAAO,MAAO,CAAA,MAAM,CAAS,CAAE,CAAA,IAAA,CAAK,CAAC,OAAY,KAAA;AACvD,MAAA,MAAMS,UAA8B,EAAC;AACrC,MAAQ,OAAA,CAAA,OAAA,CAAQ,CAAC,KAAA,EAAO,KAAU,KAAA;AAChC,QAAAA,OAAO,CAAA,IAAA,CAAK,KAAK,CAAC,CAAI,GAAA,KAAA;AAAA,OACvB,CAAA;AACD,MAAA,CAAA,CAAEA,OAAM,CAAA;AAAA,KACT,CAAA;AAAA,GACF,CAAA;AACH;;;;;ACEO,SAAS,SACd,GAA4D,GAAA,EAAA,EAC5D,UAAiDH,YAAG,CAAA,EAAE,CACtD,EAAA;AACA,EAAA,MAAM,OAAOL,oBAAmB,EAAA;AAChC,EAAA,IAAI,OAAO,GAAA,KAAQ,QAAY,IAAAS,mBAAA,CAAU,GAAG,CAAG,EAAA;AAC7C,IAAK,IAAA,CAAA,KAAA,CAAMpB,uBAAc,CAAA,GAAG,CAAC,CAAA;AAAA;AAG/B,EAAA,MAAM,IAAI,IAAI,YAAA;AAAA,IACZ,IAAA;AAAA,IACA,OAAA,GAAUA,uBAAc,CAAA,OAAO,CAAI,GAAA;AAAA,GACrC;AAEA,EAAI,IAAA,OAAO,QAAQ,UAAY,EAAA;AAC7B,IAAK,IAAA,CAAA,KAAA;AAAA,MACHC,iBAAA,CAAQ,CAAC,CAAM,KAAA;AACb,QAAE,CAAA,CAAA,GAAA,CAAI,CAAC,CAAC,CAAA;AAAA,OACT;AAAA,KACH;AAAA;AAGF,EAAO,OAAA,CAAA;AACT;AAEA,MAAM,YAA6D,CAAA;AAAA,EAO1D,WAAA,CACG,OAA4Be,YAAG,CAAA,EAAE,GACjC,OAAgD,GAAAA,YAAA,CAAG,EAAE,CAC7D,EAAA;AAFQ,IAAA,IAAA,CAAA,IAAA,GAAA,IAAA;AACA,IAAA,IAAA,CAAA,OAAA,GAAA,OAAA;AARV,IAAA,aAAA,CAAA,IAAA,EAAQ,MAAKb,0BAAiB,EAAA,CAAA;AAC9B,IAAQ,aAAA,CAAA,IAAA,EAAA,YAAA,EAAa,IAAIkB,oBAAW,EAAA,CAAA;AACpC,IAAA,aAAA,CAAA,IAAA,EAAQ,MAAoC,EAAA;AAAA,MAC1C,IAAA,EAAML,aAAG,MAAM;AAAA,KACjB,CAAA;AAAA;AAKG,EAEI,KAAK,SAA4C,EAAA;AACtD,IAAM,MAAA,KAAA,GAAQ,MAAO,CAAA,IAAA,CAAK,IAAI,CAAA;AAC9B,IAAAP,iBAAA,CAAQC,aAAI,CAAA,IAAA,CAAK,IAAM,EAAA,IAAA,CAAK,OAAS,EAAA,KAAK,CAAG,EAAA,CAAC,CAAC,IAAA,EAAM,KAAO,EAAA,IAAI,CAAM,KAAA;AACpE,MAAI,IAAA;AACF,QAAO,MAAA,CAAA,OAAA,CAAQ,KAAK,CAAE,CAAA,OAAA,CAAQ,CAAC,CAAC,EAAA,EAAI,GAAG,CAAM,KAAA;AAC3C,UAAA,IAAA,GAAO,IAAK,CAAA,UAAA,CAAW,EAAI,EAAA,MAAA,CAAO,GAAG,CAAC,CAAA;AAAA,SACvC,CAAA;AACD,QAAO,MAAA,CAAA,OAAA,CAAQ,IAAI,CAAE,CAAA,OAAA,CAAQ,CAAC,CAAC,EAAA,EAAI,GAAG,CAAM,KAAA;AAC1C,UAAA,IAAA,GAAO,IAAK,CAAA,UAAA,CAAW,EAAI,EAAA,MAAA,CAAO,GAAG,CAAC,CAAA;AAAA,SACvC,CAAA;AAAA,eACM,CAAG,EAAA;AACV,QAAK,IAAA,CAAA,UAAA,CAAW,OAAO,CAAC,CAAA;AAAA;AAG1B,MAAO,OAAA,IAAA;AAAA,KACR,CAAE,CAAA,IAAA,CAAK,SAAS,CAAA;AACjB,IAAO,OAAA,IAAA;AAAA;AACT,EAEO,SAAS,KAAe,EAAA;AAC7B,IAAK,IAAA,CAAA,IAAA,GAAOM,aAAG,KAAK,CAAA;AAAA;AACtB;AAAA;AAAA;AAAA;AAAA,EAMO,IAAI,GAA0B,EAAA;AACnC,IAAA,MAAM,IACJ,GAAA,IAAA,CAAK,GAAI,EAAA,CAAE,SAAS,EAAE,CAAA,GAAI,IAAK,CAAA,MAAA,EAAS,CAAA,QAAA,CAAS,EAAE,CAAA,CAAE,UAAU,CAAC,CAAA;AAClE,IAAM,MAAA,OAAA,GAAU,OAAO,IAAI,CAAA,CAAA;AAC3B,IAAI,IAAAM,uBAAA,CAAc,GAAG,CAAG,EAAA;AACtB,MAAK,IAAA,CAAA,EAAA,CAAG,IAAI,GAAG,CAAA;AAAA;AAEjB,IAAK,IAAA,CAAA,IAAA,CAAK,OAAO,CAAI,GAAA,GAAA;AACrB,IAAO,OAAA,OAAA;AAAA;AACT,EAEO,MAAM,QAA4C,EAAA;AACvD,IAAK,IAAA,CAAA,UAAA,CAAW,MAAM,QAAQ,CAAA;AAC9B,IAAO,OAAA,IAAA;AAAA;AACT,EAEO,OAAgB,GAAA;AACrB,IAAA,IAAA,CAAK,GAAG,OAAQ,EAAA;AAChB,IAAO,OAAA,IAAA;AAAA;AAEX;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
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/MergeAccumulation.ts","../src/behaviors/OnlyChanged.ts","../src/behaviors/Part.ts","../src/behaviors/Path.ts","../src/behaviors/PathExisted.ts","../src/behaviors/Polling.ts","../src/behaviors/Shot.ts","../src/behaviors/Task.ts","../src/behaviors/Tick.ts","../src/boolean/And.ts","../src/boolean/Bool.ts","../src/boolean/Not.ts","../src/boolean/Or.ts","../src/formats/FromJson.ts","../src/formats/ToJson.ts","../src/lists/First.ts","../src/system/RegexpMatch.ts","../src/system/RegexpMatched.ts","../src/system/RegexpReplaced.ts","../src/system/Set.ts","../src/navigation/Router.ts","../src/strings/Concatenated.ts","../src/structures/HashTable.ts","../src/structures/Record.ts","../src/strings/Template.ts"],"sourcesContent":["import { ActualMessage, MaybeMessage, Message, Primitive } from \"silentium\";\n\n/**\n * Allows switching between left and right messages depending on condition\n * https://silentium-lab.github.io/silentium-components/#/behaviors/branch\n */\nexport function Branch<Then, Else>(\n _condition: MaybeMessage<boolean>,\n _left: MaybeMessage<Then>,\n _right?: MaybeMessage<Else>,\n) {\n const $condition = ActualMessage(_condition);\n const $left = ActualMessage(_left);\n const $right = _right && ActualMessage(_right);\n return Message<Then | Else>(function BranchImpl(r) {\n const left = Primitive($left);\n let right: ReturnType<typeof Primitive<Else>>;\n if ($right !== undefined) {\n right = Primitive($right);\n }\n $condition.then((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 r(result);\n }\n });\n });\n}\n","import {\n ConstructorType,\n DestroyableType,\n DestroyContainer,\n Message,\n MessageType,\n} from \"silentium\";\n\n/**\n * Depending on the $condition message,\n * creates a new left or right message.\n * When condition changes, old messages are destroyed\n * and new ones are created.\n */\nexport function BranchLazy<Then, Else>(\n $condition: MessageType<boolean>,\n $left: ConstructorType<[], MessageType<Then>>,\n $right?: ConstructorType<[], MessageType<Else>>,\n): MessageType<Then | Else> & DestroyableType {\n return Message(function BranchLazyImpl(r) {\n const dc = DestroyContainer();\n const destructor = () => {\n dc.destroy();\n };\n $condition.then((v) => {\n destructor();\n let instance: MessageType<Then | Else> | undefined;\n if (v) {\n instance = $left();\n } else if ($right) {\n instance = $right();\n }\n if (instance !== undefined) {\n instance.then(r);\n dc.add(instance);\n }\n });\n return destructor;\n });\n}\n","import { Message, MessageType, ResetSilenceCache } from \"silentium\";\n\n/**\n * Constant value that will be\n * returned on each value from\n * the $trigger message\n */\nexport function Constant<T>(\n permanent: T,\n $trigger: MessageType,\n): MessageType<T> {\n return Message<T>(function ConstantImpl(resolve, reject) {\n $trigger.catch(reject).then(() => {\n resolve(permanent);\n // Do cache reset, it gives ability to send constant of same value many times\n resolve(ResetSilenceCache as T);\n });\n });\n}\n","import {\n ActualMessage,\n Filtered,\n MaybeMessage,\n Message,\n MessageType,\n Shared,\n} from \"silentium\";\n\n/**\n * Will return an error via error transport if\n * time runs out from $timeout; if $base manages to\n * respond before $timeout then the value from base will be returned\n */\nexport function Deadline<T>(\n $base: MessageType<T>,\n _timeout: MaybeMessage<number>,\n) {\n const $timeout = ActualMessage(_timeout);\n return Message<T>(function DeadlineImpl(resolve, reject) {\n let timer: ReturnType<typeof setTimeout> | number = 0;\n const base = Shared($base);\n $timeout.then((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 reject(new Error(\"Timeout reached in Deadline\"));\n }, timeout);\n\n const f = Filtered(base, () => !timeoutReached);\n f.then(resolve);\n\n base.then(() => {\n timeoutReached = true;\n });\n });\n });\n}\n","import { isFilled, Message, MessageType, Primitive } 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: MessageType<T>,\n $trigger: MessageType<unknown>,\n) {\n return Message<T>(function DeferredImpl(r) {\n const base = Primitive($base);\n $trigger.then(() => {\n const value = base.primitive();\n if (isFilled(value)) {\n r(value);\n }\n });\n });\n}\n","import { isFilled, Message, MessageType, Primitive } from \"silentium\";\n\n/**\n * Message separate from the base\n * allows to take one value from the base\n * but not react to new values of the base message\n */\nexport function Detached<T>($base: MessageType<T>): MessageType<T> {\n return Message<T>(function DetachedImpl(r) {\n const v = Primitive($base).primitive();\n if (isFilled(v)) {\n r(v);\n }\n });\n}\n","import { All, Applied, Late, MessageSource, MessageType } 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 extends Record<string, unknown>>(\n $base: MessageType<T>,\n keep: string[] = [],\n exclude: string[] = [],\n cloner?: (v: T) => T,\n) {\n const $comparing = Late<T>({} as T);\n if (cloner === undefined) {\n cloner = (value) => JSON.parse(JSON.stringify(value));\n }\n return MessageSource<T>(\n function DirtyImpl(r) {\n const $comparingClone = Applied($comparing, cloner);\n All($comparingClone, $base).then(([comparing, base]) => {\n if (!comparing) {\n return;\n }\n r(\n Object.fromEntries(\n Object.entries(comparing).filter(([key, value]) => {\n if (keep.includes(key)) {\n return true;\n }\n if (exclude.includes(key)) {\n return false;\n }\n return value !== (base as Record<string, unknown>)[key];\n }),\n ) as T,\n );\n });\n },\n (v) => {\n $comparing.use(v);\n },\n );\n}\n","import { Message, MessageType } from \"silentium\";\n\n/**\n * Representation Of loading process\n * first message begins loading\n * second message stops loading\n * https://silentium-lab.github.io/silentium-components/#/behaviors/loading\n */\nexport function Loading(\n $start: MessageType<unknown>,\n $finish: MessageType<unknown>,\n) {\n return Message<boolean>(function LoadingImpl(r) {\n $start.then(() => r(true));\n $finish.then(() => r(false));\n });\n}\n","import { Filtered, Message, MessageType } from \"silentium\";\n\n/**\n * Allows locking messages\n * if a $lock message arrives\n * https://silentium-lab.github.io/silentium-components/#/behaviors/lock\n */\nexport function Lock<T>($base: MessageType<T>, $lock: MessageType<boolean>) {\n return Message<T>(function LockImpl(r) {\n let locked = false;\n $lock.then((newLock) => {\n locked = newLock;\n });\n const i = Filtered($base, () => !locked);\n i.then(r);\n });\n}\n","import { isFilled, Message, MessageType } 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: MessageType<T>) {\n return Message<T>(function MemoImpl(r) {\n let last: T | null = null;\n $base.then((v) => {\n if (v !== last && isFilled(v)) {\n r(v);\n last = v;\n }\n });\n });\n}\n","import { Late, MessageType } from \"silentium\";\n\n/**\n * Есть объект и каждое новое его значение нужно мержить с прошлым\n * чтобы накопить общие изменения\n */\nexport function MergeAccumulation<T extends object>(\n $base: MessageType<T>,\n $reset?: MessageType<T>,\n): MessageType<T> {\n const accumulation = Late<T>();\n const lastAccumulated = {};\n $base.then((nextValue) => {\n accumulation.use(\n mergeWith(lastAccumulated, nextValue, (value1: any, value2: any) => {\n if (Array.isArray(value1)) {\n return value1.concat(value2);\n }\n }),\n );\n });\n\n if ($reset) {\n $reset.then((resetValue) => {\n accumulation.use(resetValue);\n });\n }\n\n return accumulation;\n}\n\nfunction mergeWith<TObject, TSource>(\n target: TObject,\n source: TSource,\n customizer: (\n objValue: any,\n srcValue: any,\n key: string,\n object: any,\n source: any,\n ) => any,\n): TObject & TSource {\n if (source == null) {\n return target as TObject & TSource;\n }\n\n Object.keys(source).forEach((key) => {\n const srcValue = (source as any)[key];\n const objValue = (target as any)[key];\n const result = customizer(objValue, srcValue, key, target, source);\n\n if (result !== undefined) {\n (target as any)[key] = result;\n } else if (isObject(srcValue) && isObject(objValue)) {\n mergeWith(objValue, srcValue, customizer);\n } else {\n (target as any)[key] = srcValue;\n }\n });\n\n return target as TObject & TSource;\n}\n\nfunction isObject(value: any): value is \"object\" {\n return value != null && typeof value === \"object\";\n}\n","import { Message, MessageType } 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: MessageType<T>) {\n return Message<T>(function OnlyChangedImpl(r) {\n let first = false;\n $base.then((v) => {\n if (first === false) {\n first = true;\n } else {\n r(v);\n }\n });\n });\n}\n","import {\n ActualMessage,\n All,\n isFilled,\n MaybeMessage,\n MessageSource,\n MessageSourceType,\n Primitive,\n Shared,\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: MessageSourceType<T>, key: MaybeMessage<K>): MessageSourceType<R> {\n const $baseShared = Shared($base);\n const $keyedShared = Shared(ActualMessage(key));\n return MessageSource(\n function PartImpl(r) {\n All($baseShared, $keyedShared).then(([base, keyed]) => {\n const keys = keyed.split(\".\");\n let value: unknown = base;\n keys.forEach((key: string) => {\n value = (value as Record<string, unknown>)[key];\n });\n if (value !== undefined && value !== base) {\n r(value as R);\n }\n });\n },\n (value) => {\n const key = Primitive($keyedShared);\n if (isFilled(key)) {\n const base = Primitive($base);\n $base.use({\n ...base.primitiveWithException(),\n [key.primitiveWithException()]: value,\n } as T);\n }\n },\n );\n}\n","import {\n ActualMessage,\n All,\n Applied,\n MaybeMessage,\n MessageType,\n} from \"silentium\";\n\nconst NotSet = Symbol(\"not-set\");\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: MessageType<T>, _keyed: MaybeMessage<K>, def?: MaybeMessage<T>) {\n const $keyed = ActualMessage(_keyed);\n const $def = ActualMessage(def ?? NotSet);\n return Applied(All($base, $keyed, $def), ([base, keyed, d]) => {\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 return value as R;\n } else if (d !== NotSet) {\n return d as R;\n }\n }) as MessageType<R>;\n}\n","import { ActualMessage, Empty, MaybeMessage, Nothing } from \"silentium\";\n\nimport { Path } from \"../behaviors/Path\";\n\n/**\n * Path with separate empty message\n */\nexport function PathExisted<\n R,\n T extends object | Array<any> = any,\n K extends string = any,\n>(_base: MaybeMessage<T>, _keyed: MaybeMessage<K>) {\n const $base = ActualMessage(_base);\n const $keyed = ActualMessage(_keyed);\n return Empty(Path<R>($base, $keyed, Nothing));\n}\n","import { Message, MessageType } from \"silentium\";\n\n/**\n * Active polling of $base message\n * synchronized with $trigger message\n */\nexport function Polling<T>(\n $base: MessageType<T>,\n $trigger: MessageType<unknown>,\n) {\n return Message<T>(function PollingImpl(r) {\n $trigger.then(() => {\n $base.then(r);\n });\n });\n}\n","import { isFilled, Message, MessageType, Primitive } 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>($target: MessageType<T>, $trigger: MessageType) {\n return Message<T>(function ShotImpl(r) {\n const targetSync = Primitive($target);\n targetSync.primitive();\n $trigger.then(() => {\n const value = targetSync.primitive();\n if (isFilled(value)) {\n r(value);\n }\n });\n });\n}\n","import {\n ActualMessage,\n ExecutorApplied,\n MaybeMessage,\n Message,\n} from \"silentium\";\n\n/**\n * Defer a message to the event loop\n * so that it executes once within\n * a certain timer firing interval\n */\nexport function Task<T>(baseSrc: MaybeMessage<T>, delay: number = 0) {\n const $base = ActualMessage(baseSrc);\n return Message<T>(function TaskImpl(r) {\n let prevTimer: unknown | null = null;\n ExecutorApplied($base, (fn) => {\n return (v) => {\n if (prevTimer) {\n clearTimeout(prevTimer as number);\n }\n prevTimer = setTimeout(() => {\n fn(v);\n }, delay);\n };\n }).then(r);\n });\n}\n","import { Message, MessageType } 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: MessageType<T>) {\n return Message<T>(function TickImpl(r) {\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 r(lastValue);\n lastValue = null;\n }\n });\n };\n\n $base.then((v) => {\n lastValue = v;\n if (!microtaskScheduled) {\n scheduleMicrotask();\n }\n });\n });\n}\n","import { All, Message, MessageType } from \"silentium\";\n\n/**\n * Logical AND over two messages\n * https://silentium-lab.github.io/silentium-components/#/boolean/and\n */\nexport function And($one: MessageType<boolean>, $two: MessageType<boolean>) {\n return Message<boolean>(function AndImpl(r) {\n All($one, $two).then(([one, two]) => {\n r(!!(one && two));\n });\n });\n}\n","import { Applied, Message, MessageType } 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: MessageType) {\n return Message<boolean>(function BoolImpl(r) {\n Applied($base, Boolean).then(r);\n });\n}\n","import { Message, MessageType } from \"silentium\";\n\n/**\n * Logical negation of message\n * https://silentium-lab.github.io/silentium-components/#/boolean/not\n */\nexport function Not($base: MessageType<boolean>) {\n return Message<boolean>(function NotImpl(r) {\n $base.then((v) => {\n r(!v);\n });\n });\n}\n","import { All, Message, MessageType } from \"silentium\";\n\n/**\n * Logical OR over two messages\n * https://silentium-lab.github.io/silentium-components/#/boolean/or\n */\nexport function Or($one: MessageType<boolean>, $two: MessageType<boolean>) {\n return Message<boolean>(function OrImpl(r) {\n All($one, $two).then(([one, two]) => {\n r(!!(one || two));\n });\n });\n}\n","import { Message, MessageType } from \"silentium\";\n\n/**\n * Represents object from json\n */\nexport function FromJson<T = Record<string, unknown>>(\n $json: MessageType<string>,\n) {\n return Message<T>(function FromJsonImpl(resolve, reject) {\n $json.then((json) => {\n try {\n resolve(JSON.parse(json));\n } catch (e) {\n reject(new Error(`Failed to parse JSON: ${e}`));\n }\n });\n });\n}\n","import { Message, MessageType } from \"silentium\";\n\n/**\n * Represents json from object\n */\nexport function ToJson($data: MessageType) {\n return Message<string>(function ToJsonImpl(resolve, reject) {\n $data.then((data: unknown) => {\n try {\n resolve(JSON.stringify(data));\n } catch {\n reject(new Error(\"Failed to convert to JSON\"));\n }\n });\n });\n}\n","import { Applied, Message, MessageType } from \"silentium\";\n\n/**\n * Represents the first element Of an array.\n */\nexport function First<T extends Array<unknown>>($base: MessageType<T>) {\n return Message<T[0]>(function FirstImpl(r) {\n Applied($base, (a) => a[0]).then(r);\n });\n}\n","import { ActualMessage, All, MaybeMessage, Message, Of } 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: MaybeMessage<string>,\n valueSrc: MaybeMessage<string>,\n flagsSrc: MaybeMessage<string> = Of(\"\"),\n) {\n const $pattern = ActualMessage(patternSrc);\n const $value = ActualMessage(valueSrc);\n const $flags = ActualMessage(flagsSrc);\n return Message<string[]>(function RegexpMatchImpl(r) {\n All($pattern, $value, $flags).then(([pattern, value, flags]) => {\n const result = new RegExp(pattern, flags).exec(value);\n r(result ?? []);\n });\n });\n}\n","import { ActualMessage, All, MaybeMessage, Message, Of } 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: MaybeMessage<string>,\n valueSrc: MaybeMessage<string>,\n flagsSrc: MaybeMessage<string> = Of(\"\"),\n) {\n const $pattern = ActualMessage(patternSrc);\n const $value = ActualMessage(valueSrc);\n const $flags = ActualMessage(flagsSrc);\n return Message<boolean>(function RegexpMatchedImpl(r) {\n All($pattern, $value, $flags).then(([pattern, value, flags]) => {\n r(new RegExp(pattern, flags).test(value));\n });\n });\n}\n","import { ActualMessage, All, Applied, MaybeMessage } 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: MaybeMessage<string>,\n patternSrc: MaybeMessage<string>,\n replaceValueSrc: MaybeMessage<string>,\n flagsSrc: MaybeMessage<string> = \"\",\n) {\n const $value = ActualMessage(valueSrc);\n const $pattern = ActualMessage(patternSrc);\n const $replaceValue = ActualMessage(replaceValueSrc);\n const $flags = ActualMessage(flagsSrc);\n return Applied(\n All($pattern, $value, $replaceValue, $flags),\n ([pattern, value, replaceValue, flags]) => {\n return String(value).replace(new RegExp(pattern, flags), replaceValue);\n },\n );\n}\n","import { ActualMessage, All, Message, MessageType } 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: MessageType<T>,\n keySrc: MessageType<string>,\n valueSrc: MessageType<unknown>,\n) {\n const $base = ActualMessage(baseSrc);\n const $key = ActualMessage(keySrc);\n const $value = ActualMessage(valueSrc);\n return Message<T>(function SetImpl(r) {\n All($base, $key, $value).then(([base, key, value]) => {\n (base as Record<string, unknown>)[key] = value;\n r(base);\n });\n });\n}\n","import {\n ActualMessage,\n All,\n ConstructorType,\n DestroyableType,\n DestroyContainer,\n MaybeMessage,\n Message,\n MessageType,\n Of,\n} from \"silentium\";\n\nimport { RegexpMatched } from \"../system\";\n\nexport interface Route<T> {\n pattern: string;\n patternFlags?: string;\n message: ConstructorType<[], MessageType<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: MessageType<string>,\n routes: MaybeMessage<Route<T>[]>,\n $default: ConstructorType<[], MessageType<T>>,\n): MessageType<T> & DestroyableType {\n const $routes = ActualMessage(routes);\n return Message<T>(function RouterImpl(r) {\n const dc = DestroyContainer();\n const destructor = () => {\n dc.destroy();\n };\n All($routes, $url).then(([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.then((matches) => {\n const index = matches.findIndex((v) => v === true);\n\n if (index === -1) {\n const instance = $default();\n dc.add(instance);\n instance.then(r);\n }\n\n if (index > -1) {\n const instance = routes[index].message();\n dc.add(instance);\n instance.then(r);\n }\n });\n });\n\n return destructor;\n });\n}\n","import { All, Message, MessageType, Of } 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: MessageType<string>[],\n joinPartSrc: MessageType<string> = Of(\"\"),\n) {\n return Message<string>(function ConcatenatedImpl(r) {\n All(joinPartSrc, ...sources).then(([joinPart, ...strings]) => {\n r(strings.join(joinPart));\n });\n });\n}\n","import { Message, MessageType } from \"silentium\";\n\n/**\n * By receiving a message with a key and value, collects a table\n * of all previously received messages in the form of a structure\n * https://silentium-lab.github.io/silentium-components/#/structures/hash-table\n */\nexport function HashTable<T>($base: MessageType<[string, unknown]>) {\n return Message<T>(function HashTableImpl(r) {\n const record: Record<string, unknown> = {};\n\n $base.then(([key, value]) => {\n record[key] = value;\n r(record as T);\n });\n });\n}\n","import { ActualMessage, All, Message, MessageType } from \"silentium\";\n\ntype UnWrap<T> = T extends MessageType<infer U> ? U : T;\n\n/**\n * Returns record Of data from record Of sources\n * https://silentium-lab.github.io/silentium-components/#/structures/record\n */\nexport function Record<T>(record: Record<string, T>) {\n return Message<Record<string, UnWrap<T>>>(function RecordImpl(r) {\n const keys = Object.keys(record);\n keys.forEach((key) => {\n record[key] = ActualMessage(record[key]) as any;\n });\n All(...(Object.values(record) as any)).then((entries) => {\n const record: Record<string, any> = {};\n entries.forEach((entry, index) => {\n record[keys[index]] = entry;\n });\n r(record);\n });\n });\n}\n","import {\n ActualMessage,\n All,\n Applied,\n ConstructorType,\n DestroyableType,\n DestroyContainer,\n isDestroyable,\n isMessage,\n Late,\n MaybeMessage,\n Message,\n MessageType,\n Of,\n Rejections,\n} from \"silentium\";\n\nimport { Record } from \"../structures\";\n\n/**\n * Allows creating a string template with\n * variables inserted into it; when variables change,\n * the template value will change\n */\nexport function Template(\n src: MaybeMessage<string> | ((t: TemplateImpl) => string) = \"\",\n $places: MaybeMessage<Record<string, unknown>> = Of({}),\n) {\n const $src = Late<string>();\n if (typeof src === \"string\" || isMessage(src)) {\n $src.chain(ActualMessage(src));\n }\n\n const t = new TemplateImpl(\n $src,\n $places ? ActualMessage($places) : undefined,\n );\n\n if (typeof src === \"function\") {\n $src.chain(\n Message((r) => {\n r(src(t));\n }),\n );\n }\n\n return t;\n}\n\nclass TemplateImpl implements MessageType<string>, DestroyableType {\n private dc = DestroyContainer();\n private rejections = new Rejections();\n private vars: Record<string, MessageType> = {\n $TPL: Of(\"$TPL\"),\n };\n\n public constructor(\n private $src: MessageType<string> = Of(\"\"),\n private $places: MessageType<Record<string, unknown>> = Of({}),\n ) {}\n\n public then(transport: ConstructorType<[string]>): this {\n const $vars = Record(this.vars);\n Applied(All(this.$src, this.$places, $vars), ([base, rules, vars]) => {\n try {\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 } catch (e) {\n this.rejections.reject(e);\n }\n\n return base;\n }).then(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: MessageType<string>) {\n const hash =\n Date.now().toString(36) + Math.random().toString(36).substring(2);\n const varName = `$var${hash}`;\n if (isDestroyable(src)) {\n this.dc.add(src);\n }\n this.vars[varName] = src;\n return varName;\n }\n\n public catch(rejected: ConstructorType<[unknown]>): this {\n this.rejections.catch(rejected);\n return this;\n }\n\n public destroy(): this {\n this.dc.destroy();\n return this;\n }\n}\n"],"names":["ActualMessage","Message","Primitive","DestroyContainer","ResetSilenceCache","Shared","Filtered","isFilled","Late","MessageSource","Applied","All","key","Empty","Nothing","ExecutorApplied","Of","routes","r","record","isMessage","Rejections","isDestroyable"],"mappings":"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"}
@@ -47,7 +47,7 @@ declare function Detached<T>($base: MessageType<T>): MessageType<T>;
47
47
  * returns new record, what will contain only fields what was changed
48
48
  * https://silentium-lab.github.io/silentium-components/#/behaviors/dirty
49
49
  */
50
- declare function Dirty<T>($base: MessageType<T>, keep?: string[], exclude?: string[], cloner?: (v: T) => T): silentium.MessageSourceImpl<T>;
50
+ declare function Dirty<T extends Record<string, unknown>>($base: MessageType<T>, keep?: string[], exclude?: string[], cloner?: (v: T) => T): silentium.MessageSourceImpl<T>;
51
51
 
52
52
  /**
53
53
  * Representation Of loading process
@@ -92,7 +92,7 @@ declare function Part<R, T extends object | Array<any> = any, K extends string =
92
92
  * Return source Of record path
93
93
  * https://silentium-lab.github.io/silentium-components/#/behaviors/path
94
94
  */
95
- declare function Path<R, T extends object | Array<any> = any, K extends string = any>($base: MessageType<T>, _keyed: MaybeMessage<K>, def?: MaybeMessage<T>): silentium.MessageRx<R>;
95
+ declare function Path<R, T extends object | Array<any> = any, K extends string = any>($base: MessageType<T>, _keyed: MaybeMessage<K>, def?: MaybeMessage<T>): MessageType<R>;
96
96
 
97
97
  /**
98
98
  * Path with separate empty message
@@ -103,7 +103,7 @@ declare function PathExisted<R, T extends object | Array<any> = any, K extends s
103
103
  * Active polling of $base message
104
104
  * synchronized with $trigger message
105
105
  */
106
- declare function Polling<T>($base: MessageType<T>, $trigger: MessageType<T>): silentium.MessageRx<T>;
106
+ declare function Polling<T>($base: MessageType<T>, $trigger: MessageType<unknown>): silentium.MessageRx<T>;
107
107
 
108
108
  /**
109
109
  * Helps to represent only last fresh value Of some source, refreshing controls by shotSrc
@@ -234,7 +234,7 @@ declare function RegexpMatched(patternSrc: MaybeMessage<string>, valueSrc: Maybe
234
234
  * Returns string replaced by regular expression pattern
235
235
  * https://silentium-lab.github.io/silentium-components/#/system/regexp-replaced
236
236
  */
237
- declare function RegexpReplaced(valueSrc: MessageType<string>, patternSrc: MessageType<string>, replaceValueSrc: MessageType<string>, flagsSrc?: MessageType<string>): silentium.MessageRx<string>;
237
+ declare function RegexpReplaced(valueSrc: MaybeMessage<string>, patternSrc: MaybeMessage<string>, replaceValueSrc: MaybeMessage<string>, flagsSrc?: MaybeMessage<string>): silentium.MessageRx<string>;
238
238
 
239
239
  /**
240
240
  * Ability to mutate some object, helpful when integrate to procedure systems
@@ -1,4 +1,4 @@
1
- import { ActualMessage, Message, Primitive, DestroyContainer, Shared, Filtered, isFilled, Late, MessageSource, Applied, All, LateShared, Empty, Nothing, ExecutorApplied, Of, isMessage, Rejections, isDestroyable } from 'silentium';
1
+ import { ActualMessage, Message, Primitive, DestroyContainer, ResetSilenceCache, Shared, Filtered, isFilled, Late, MessageSource, Applied, All, Empty, Nothing, ExecutorApplied, Of, isMessage, Rejections, isDestroyable } from 'silentium';
2
2
 
3
3
  function Branch(_condition, _left, _right) {
4
4
  const $condition = ActualMessage(_condition);
@@ -48,9 +48,10 @@ function BranchLazy($condition, $left, $right) {
48
48
  }
49
49
 
50
50
  function Constant(permanent, $trigger) {
51
- return Message(function ConstantImpl(r) {
52
- $trigger.then(() => {
53
- r(permanent);
51
+ return Message(function ConstantImpl(resolve, reject) {
52
+ $trigger.catch(reject).then(() => {
53
+ resolve(permanent);
54
+ resolve(ResetSilenceCache);
54
55
  });
55
56
  });
56
57
  }
@@ -103,7 +104,7 @@ function Detached($base) {
103
104
  }
104
105
 
105
106
  function Dirty($base, keep = [], exclude = [], cloner) {
106
- const $comparing = Late();
107
+ const $comparing = Late({});
107
108
  if (cloner === void 0) {
108
109
  cloner = (value) => JSON.parse(JSON.stringify(value));
109
110
  }
@@ -166,7 +167,7 @@ function Memo($base) {
166
167
  }
167
168
 
168
169
  function MergeAccumulation($base, $reset) {
169
- const accumulation = LateShared();
170
+ const accumulation = Late();
170
171
  const lastAccumulated = {};
171
172
  $base.then((nextValue) => {
172
173
  accumulation.use(
@@ -248,22 +249,21 @@ function Part($base, key) {
248
249
  );
249
250
  }
250
251
 
252
+ const NotSet = Symbol("not-set");
251
253
  function Path($base, _keyed, def) {
252
254
  const $keyed = ActualMessage(_keyed);
253
- const $def = ActualMessage(def);
254
- return Message(function PathImpl(r) {
255
- All($base, $keyed, $def).then(([base, keyed, d]) => {
256
- const keys = keyed.split(".");
257
- let value = base;
258
- keys.forEach((key) => {
259
- value = value[key];
260
- });
261
- if (value !== void 0 && value !== base) {
262
- r(value);
263
- } else if (d !== void 0) {
264
- r(d);
265
- }
255
+ const $def = ActualMessage(def ?? NotSet);
256
+ return Applied(All($base, $keyed, $def), ([base, keyed, d]) => {
257
+ const keys = keyed.split(".");
258
+ let value = base;
259
+ keys.forEach((key) => {
260
+ value = value[key];
266
261
  });
262
+ if (value !== void 0 && value !== base) {
263
+ return value;
264
+ } else if (d !== NotSet) {
265
+ return d;
266
+ }
267
267
  });
268
268
  }
269
269
 
@@ -417,14 +417,17 @@ function RegexpMatched(patternSrc, valueSrc, flagsSrc = Of("")) {
417
417
  });
418
418
  }
419
419
 
420
- function RegexpReplaced(valueSrc, patternSrc, replaceValueSrc, flagsSrc = Of("")) {
421
- return Message(function RegexpReplacedImpl(r) {
422
- All(patternSrc, valueSrc, replaceValueSrc, flagsSrc).then(
423
- ([pattern, value, replaceValue, flags]) => {
424
- r(String(value).replace(new RegExp(pattern, flags), replaceValue));
425
- }
426
- );
427
- });
420
+ function RegexpReplaced(valueSrc, patternSrc, replaceValueSrc, flagsSrc = "") {
421
+ const $value = ActualMessage(valueSrc);
422
+ const $pattern = ActualMessage(patternSrc);
423
+ const $replaceValue = ActualMessage(replaceValueSrc);
424
+ const $flags = ActualMessage(flagsSrc);
425
+ return Applied(
426
+ All($pattern, $value, $replaceValue, $flags),
427
+ ([pattern, value, replaceValue, flags]) => {
428
+ return String(value).replace(new RegExp(pattern, flags), replaceValue);
429
+ }
430
+ );
428
431
  }
429
432
 
430
433
  function Set(baseSrc, keySrc, valueSrc) {
@@ -513,7 +516,7 @@ var __defProp = Object.defineProperty;
513
516
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
514
517
  var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
515
518
  function Template(src = "", $places = Of({})) {
516
- const $src = LateShared();
519
+ const $src = Late();
517
520
  if (typeof src === "string" || isMessage(src)) {
518
521
  $src.chain(ActualMessage(src));
519
522
  }