silentium-components 0.0.110 → 0.0.112
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/.husky/pre-commit +0 -1
- package/CHANGELOG.md +21 -0
- package/dist/silentium-components.cjs +20 -4
- package/dist/silentium-components.cjs.map +1 -1
- package/dist/silentium-components.d.ts +18 -5
- package/dist/silentium-components.js +20 -5
- package/dist/silentium-components.js.map +1 -1
- package/dist/silentium-components.min.js +1 -1
- package/dist/silentium-components.min.mjs +1 -1
- package/dist/silentium-components.min.mjs.map +1 -1
- package/dist/silentium-components.mjs +20 -5
- package/dist/silentium-components.mjs.map +1 -1
- package/package.json +1 -1
- package/src/behaviors/Switch.test.ts +132 -0
- package/src/behaviors/Switch.ts +29 -0
- package/src/behaviors/Task.ts +2 -0
- package/src/behaviors/Tick.ts +2 -1
- package/src/behaviors/Transformed.ts +2 -0
- package/src/behaviors/index.ts +1 -0
- package/src/navigation/Router._main.test.ts +60 -30
- package/src/navigation/Router.ts +8 -7
- package/src/strings/Template.ts +3 -1
- package/docs/assets/css/base.css +0 -30
- package/docs/assets/css/custom.css +0 -72
- package/docs/assets/img/github_16.jpg +0 -0
- package/docs/assets/img/logo.svg +0 -1522
- package/docs/build.sh +0 -25
- package/docs/buildRoutes.sh +0 -15
- package/docs/favicon.ico +0 -0
- package/docs/index-dev.html +0 -110
- package/docs/index.html +0 -110
- package/docs/layouts/default.html +0 -3
- package/docs/pages/404.html +0 -1
- package/docs/pages/behaviors/deadline.html +0 -44
- package/docs/pages/behaviors/dirty.html +0 -48
- package/docs/pages/behaviors/loading.html +0 -54
- package/docs/pages/behaviors/path.html +0 -41
- package/docs/pages/behaviors.html +0 -26
- package/docs/pages/en/404.html +0 -1
- package/docs/pages/en/behaviors/deadline.html +0 -44
- package/docs/pages/en/behaviors/dirty.html +0 -48
- package/docs/pages/en/behaviors/loading.html +0 -54
- package/docs/pages/en/behaviors/path.html +0 -41
- package/docs/pages/en/behaviors.html +0 -26
- package/docs/pages/en/index.html +0 -21
- package/docs/pages/en/structures/hash-table.html +0 -40
- package/docs/pages/en/structures.html +0 -11
- package/docs/pages/en/system/promised.html +0 -36
- package/docs/pages/en/system.html +0 -11
- package/docs/pages/index.html +0 -21
- package/docs/pages/structures/hash-table.html +0 -40
- package/docs/pages/structures.html +0 -11
- package/docs/pages/system/promised.html +0 -36
- package/docs/pages/system.html +0 -11
- package/docs/routes.json +0 -1
- package/docs/template.html +0 -110
package/.husky/pre-commit
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
npm run build-doc;
|
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,27 @@
|
|
|
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.112](https://github.com/silentium-lab/silentium-components/compare/v0.0.111...v0.0.112) (2026-02-02)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Features
|
|
9
|
+
|
|
10
|
+
* **main:** switch component ([fb983d4](https://github.com/silentium-lab/silentium-components/commit/fb983d4a6b0c51ad3d5b804a0669ef1ae5b8e8ea))
|
|
11
|
+
* **main:** switch component ([eaa08c6](https://github.com/silentium-lab/silentium-components/commit/eaa08c60d907984bd0f840fac02b1d0ef8690d67))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
### Bug Fixes
|
|
15
|
+
|
|
16
|
+
* **main:** minor fixes on docs ([d1dd2f4](https://github.com/silentium-lab/silentium-components/commit/d1dd2f4d2dfe1f0eef46b3cd80ede98b975f01fb))
|
|
17
|
+
|
|
18
|
+
### [0.0.111](https://github.com/silentium-lab/silentium-components/compare/v0.0.110...v0.0.111) (2026-01-30)
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
### Bug Fixes
|
|
22
|
+
|
|
23
|
+
* **main:** links to docs ([f4a2c19](https://github.com/silentium-lab/silentium-components/commit/f4a2c19f21e39cbfbc67280dc56d6f73a677541d))
|
|
24
|
+
* **main:** maybemessage in router ([96e2009](https://github.com/silentium-lab/silentium-components/commit/96e2009ac83b3af9ef24f235ca18e52e0ac41e33))
|
|
25
|
+
|
|
5
26
|
### [0.0.110](https://github.com/silentium-lab/silentium-components/compare/v0.0.109...v0.0.110) (2026-01-27)
|
|
6
27
|
|
|
7
28
|
|
|
@@ -306,6 +306,20 @@ function RecordTruncated(_record, _badValues) {
|
|
|
306
306
|
return silentium.Computed(processRecord, $record, $badValues);
|
|
307
307
|
}
|
|
308
308
|
|
|
309
|
+
function Switch(_base, options) {
|
|
310
|
+
const $base = silentium.Actual(_base);
|
|
311
|
+
return silentium.Message((resolve, reject) => {
|
|
312
|
+
const dc = silentium.DestroyContainer();
|
|
313
|
+
$base.then((v) => {
|
|
314
|
+
const msg = options.find((entry) => entry[0] === v);
|
|
315
|
+
if (msg) {
|
|
316
|
+
dc.add(msg[1].then(resolve).catch(reject));
|
|
317
|
+
}
|
|
318
|
+
}).catch(reject);
|
|
319
|
+
return dc.destructor;
|
|
320
|
+
});
|
|
321
|
+
}
|
|
322
|
+
|
|
309
323
|
function Task(baseSrc, delay = 0) {
|
|
310
324
|
const $base = silentium.Actual(baseSrc);
|
|
311
325
|
return silentium.Message(function TaskImpl(r) {
|
|
@@ -509,8 +523,9 @@ function Set(baseSrc, keySrc, valueSrc) {
|
|
|
509
523
|
});
|
|
510
524
|
}
|
|
511
525
|
|
|
512
|
-
function Router(
|
|
526
|
+
function Router(_url, routes, $default) {
|
|
513
527
|
const $routes = silentium.Actual(routes);
|
|
528
|
+
const $url = silentium.Actual(_url);
|
|
514
529
|
return silentium.Message(function RouterImpl(r) {
|
|
515
530
|
const dc = silentium.DestroyContainer();
|
|
516
531
|
const destructor = () => {
|
|
@@ -530,12 +545,12 @@ function Router($url, routes, $default) {
|
|
|
530
545
|
$matches.then((matches) => {
|
|
531
546
|
const index = matches.findIndex((v) => v === true);
|
|
532
547
|
if (index === -1) {
|
|
533
|
-
const instance = $default();
|
|
548
|
+
const instance = silentium.Actual($default());
|
|
534
549
|
dc.add(instance);
|
|
535
550
|
instance.then(r);
|
|
536
551
|
}
|
|
537
552
|
if (index > -1) {
|
|
538
|
-
const instance = routes2[index].message();
|
|
553
|
+
const instance = silentium.Actual(routes2[index].message());
|
|
539
554
|
dc.add(instance);
|
|
540
555
|
instance.then(r);
|
|
541
556
|
}
|
|
@@ -577,7 +592,7 @@ class TemplateImpl {
|
|
|
577
592
|
this.$places = $places;
|
|
578
593
|
this.escapeFn = escapeFn;
|
|
579
594
|
__publicField(this, "dc", silentium.DestroyContainer());
|
|
580
|
-
__publicField(this, "rejections",
|
|
595
|
+
__publicField(this, "rejections", silentium.Rejections());
|
|
581
596
|
__publicField(this, "vars", {
|
|
582
597
|
$TPL: silentium.Of("$TPL")
|
|
583
598
|
});
|
|
@@ -681,6 +696,7 @@ exports.RegexpMatched = RegexpMatched;
|
|
|
681
696
|
exports.RegexpReplaced = RegexpReplaced;
|
|
682
697
|
exports.Router = Router;
|
|
683
698
|
exports.Set = Set;
|
|
699
|
+
exports.Switch = Switch;
|
|
684
700
|
exports.Task = Task;
|
|
685
701
|
exports.Template = Template;
|
|
686
702
|
exports.TemplateImpl = TemplateImpl;
|
|
@@ -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/Polling.ts","../src/behaviors/RecordTruncated.ts","../src/behaviors/Task.ts","../src/behaviors/Tick.ts","../src/structures/HashTable.ts","../src/structures/Record.ts","../src/behaviors/Transformed.ts","../src/behaviors/TransformedList.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/strings/Template.ts"],"sourcesContent":["import {\n Actual,\n MaybeMessage,\n Message,\n MessageType,\n Primitive,\n} from \"silentium\";\n\n/**\n * Allows switching between left and right messages depending on condition\n * https://silentium.pw/article/branch/view\n */\nexport function Branch<Then, Else>(\n _condition: MaybeMessage<boolean>,\n _left: MaybeMessage<Then>,\n _right?: MaybeMessage<Else>,\n) {\n const $condition = Actual(_condition);\n const $left = Actual(_left);\n const $right = Actual(_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 as MessageType<Else>);\n }\n $condition.then((v) => {\n if (typeof v !== \"boolean\") {\n throw new Error(\"Branch received not boolean value\");\n }\n let result: Then | Else | null = null;\n if (v === true) {\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 Actual,\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 = Actual(_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, MessageType, Source } 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 Source<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 * @url https://silentium.pw/article/only-changed/view\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 Actual,\n All,\n isFilled,\n MaybeMessage,\n MessageSourceType,\n Primitive,\n Shared,\n Source,\n} from \"silentium\";\n\n/**\n * Return source Of record path\n * @url https://silentium.pw/article/part/view\n */\nexport function Part<\n R,\n T extends object | Array<any> = any,\n K extends string = any,\n>(\n $base: MessageSourceType<T>,\n key: MaybeMessage<K>,\n defaultValue?: R,\n): MessageSourceType<R> {\n const $baseShared = Shared($base);\n const $keyedShared = Shared(Actual(key));\n return Source(\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 } else if (defaultValue !== undefined) {\n r(defaultValue);\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 { Actual, All, Applied, MaybeMessage, MessageType } 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: MaybeMessage<T>, _keyed: MaybeMessage<K>, def?: MaybeMessage<R>) {\n const $base = Actual(_base);\n const $keyed = Actual(_keyed);\n const $def = Actual((def as any) ?? 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 {\n DestroyContainer,\n Message,\n MessageType,\n ResetSilenceCache,\n} from \"silentium\";\n\n/**\n * Active polling of $base message\n * synchronized with $trigger message\n * can return same values\n */\nexport function Polling<T>(\n $base: MessageType<T>,\n $trigger: MessageType<unknown>,\n) {\n return Message<T>(function PollingImpl(resolve, reject) {\n const dc = DestroyContainer();\n $trigger\n .then(() => {\n dc.destroy();\n resolve(ResetSilenceCache as T);\n dc.add($base.then(resolve).catch(reject));\n })\n .catch(reject);\n });\n}\n","import { Actual, Computed, MaybeMessage } from \"silentium\";\n\n/**\n * Helps eliminate unwanted values\n * that shouldn't exist in object fields\n */\nexport function RecordTruncated(\n _record: MaybeMessage<Record<string, unknown>>,\n _badValues: MaybeMessage<unknown[]>,\n) {\n const $record = Actual(_record);\n const $badValues = Actual(_badValues);\n const processRecord = (obj: any, badValues: unknown[]) => {\n if (obj === null || typeof obj !== \"object\" || Array.isArray(obj)) {\n return obj;\n }\n\n const result: Record<string, unknown> = {};\n\n for (const [key, value] of Object.entries(obj)) {\n if (badValues.includes(value)) continue;\n\n const processedValue = processRecord(value, badValues);\n\n if (\n processedValue !== undefined &&\n !(\n typeof processedValue === \"object\" &&\n processedValue !== null &&\n !Array.isArray(processedValue) &&\n Object.keys(processedValue).length === 0\n )\n ) {\n result[key] = processedValue;\n }\n }\n\n return result;\n };\n\n return Computed(processRecord, $record, $badValues);\n}\n","import { Actual, ExecutorApplied, MaybeMessage, Message } 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 = Actual(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 { 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 { Actual, 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] = Actual(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 Actual,\n ConstructorType,\n MaybeMessage,\n Message,\n Of,\n Once,\n} from \"silentium\";\n\nimport { Record } from \"../structures\";\n\n/**\n * Modify the object structure\n * with the ability to create new fields based on\n * existing ones in the object\n */\nexport function Transformed<T extends Record<string, any>>(\n _base: MaybeMessage<T>,\n transformRules: Record<string, ConstructorType<[MaybeMessage<any>]>>,\n) {\n const $base = Actual(_base);\n return Message((resolve) => {\n $base.then((v) => {\n const existedKeysMap: Record<string, number> = {};\n const sourceObject = Object.fromEntries(\n Object.entries(v).map((entry) => {\n if (transformRules[entry[0]]) {\n existedKeysMap[entry[0]] = 1;\n return [entry[0], transformRules[entry[0]](v)];\n }\n\n return [entry[0], Of(entry[1])];\n }),\n );\n\n Object.keys(transformRules).forEach((key) => {\n if (!existedKeysMap[key]) {\n sourceObject[key] = transformRules[key](v);\n }\n });\n const record = Once(Record(sourceObject));\n record.then(resolve);\n });\n });\n}\n","import { Actual, ConstructorType, Map, MaybeMessage } from \"silentium\";\n\nimport { Transformed } from \"../behaviors/Transformed\";\n\nexport function TransformedList<T extends any[]>(\n _base: MaybeMessage<T>,\n transformRules: Record<string, ConstructorType<[MaybeMessage<any>]>>,\n) {\n return Map(Actual(_base), (v) => Transformed(v, transformRules));\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 { Actual, 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 = Actual(patternSrc);\n const $value = Actual(valueSrc);\n const $flags = Actual(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 { Actual, 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 = Actual(patternSrc);\n const $value = Actual(valueSrc);\n const $flags = Actual(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 { Actual, 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 = Actual(valueSrc);\n const $pattern = Actual(patternSrc);\n const $replaceValue = Actual(replaceValueSrc);\n const $flags = Actual(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 { Actual, 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 = Actual(baseSrc);\n const $key = Actual(keySrc);\n const $value = Actual(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 Actual,\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 = Actual(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 {\n Actual,\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(Actual(src));\n }\n\n const t = new TemplateImpl($src, $places ? Actual($places) : undefined);\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\nexport class 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 private escapeFn = escaped,\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 * Register raw unsafe variable\n */\n public raw(src: MessageType<unknown>) {\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 /**\n * Register variable what will be safe in HTML by default\n * or with your custom escape logic\n */\n public escaped(src: MessageType<any>) {\n if (isDestroyable(src)) {\n this.dc.add(src);\n }\n return this.raw(Applied(src, this.escapeFn));\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\nconst escapeMap = {\n \"&\": \"&\",\n \"<\": \"<\",\n \">\": \">\",\n '\"': \""\",\n \"'\": \"'\",\n \"/\": \"/\",\n} as const;\n\n/**\n * String with html escaped\n */\nexport function escaped(base: string) {\n if (typeof base !== \"string\") {\n base = String(base);\n }\n return base.replace(\n /[&<>\"'/]/g,\n (match) => escapeMap[match as keyof typeof escapeMap],\n );\n}\n"],"names":["Actual","Message","Primitive","DestroyContainer","ResetSilenceCache","Shared","Filtered","isFilled","Late","Source","Applied","All","key","Computed","ExecutorApplied","record","Of","Once","Map","routes","r","isMessage","Rejections","isDestroyable"],"mappings":";;;;AAYgB,SAAA,MAAA,CACd,UACA,EAAA,KAAA,EACA,MACA,EAAA;AACA,EAAM,MAAA,UAAA,GAAaA,iBAAO,UAAU,CAAA;AACpC,EAAM,MAAA,KAAA,GAAQA,iBAAO,KAAK,CAAA;AAC1B,EAAM,MAAA,MAAA,GAASA,iBAAO,MAAM,CAAA;AAC5B,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,MAA2B,CAAA;AAAA;AAE/C,IAAW,UAAA,CAAA,IAAA,CAAK,CAAC,CAAM,KAAA;AACrB,MAAI,IAAA,OAAO,MAAM,SAAW,EAAA;AAC1B,QAAM,MAAA,IAAI,MAAM,mCAAmC,CAAA;AAAA;AAErD,MAAA,IAAI,MAA6B,GAAA,IAAA;AACjC,MAAA,IAAI,MAAM,IAAM,EAAA;AACd,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;;AC3BgB,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,EAAA,OAAOF,iBAAW,CAAA,SAAS,YAAa,CAAA,OAAA,EAAS,MAAQ,EAAA;AACvD,IAAA,QAAA,CAAS,KAAM,CAAA,MAAM,CAAE,CAAA,IAAA,CAAK,MAAM;AAChC,MAAA,OAAA,CAAQ,SAAS,CAAA;AAEjB,MAAA,OAAA,CAAQG,2BAAsB,CAAA;AAAA,KAC/B,CAAA;AAAA,GACF,CAAA;AACH;;ACJgB,SAAA,QAAA,CACd,OACA,QACA,EAAA;AACA,EAAM,MAAA,QAAA,GAAWJ,iBAAO,QAAQ,CAAA;AAChC,EAAA,OAAOC,iBAAW,CAAA,SAAS,YAAa,CAAA,OAAA,EAAS,MAAQ,EAAA;AACvD,IAAA,IAAI,KAAgD,GAAA,CAAA;AACpD,IAAM,MAAA,IAAA,GAAOI,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,OAAAL,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,IAAAK,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,OAAAN,iBAAA,CAAW,SAAS,YAAA,CAAa,CAAG,EAAA;AACzC,IAAA,MAAM,CAAI,GAAAC,mBAAA,CAAU,KAAK,CAAA,CAAE,SAAU,EAAA;AACrC,IAAI,IAAAK,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,EAAM,MAAA,UAAA,GAAaC,cAAQ,CAAA,EAAO,CAAA;AAClC,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,gBAAA;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,OAAAV,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,GAAAK,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,OAAAL,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,IAAQM,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,eAAeC,cAAQ,EAAA;AAC7B,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,OAAAP,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,CAKd,KACA,EAAA,GAAA,EACA,YACsB,EAAA;AACtB,EAAM,MAAA,WAAA,GAAcI,iBAAO,KAAK,CAAA;AAChC,EAAA,MAAM,YAAe,GAAAA,gBAAA,CAAOL,gBAAO,CAAA,GAAG,CAAC,CAAA;AACvC,EAAO,OAAAS,gBAAA;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,CAACC,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,SACd,MAAA,IAAW,iBAAiB,MAAW,EAAA;AACrC,UAAA,CAAA,CAAE,YAAY,CAAA;AAAA;AAChB,OACD,CAAA;AAAA,KACH;AAAA,IACA,CAAC,KAAU,KAAA;AACT,MAAMA,MAAAA,IAAAA,GAAMV,oBAAU,YAAY,CAAA;AAClC,MAAI,IAAAK,kBAAA,CAASK,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;;AClDA,MAAM,MAAA,GAAS,OAAO,SAAS,CAAA;AAMf,SAAA,IAAA,CAId,KAAwB,EAAA,MAAA,EAAyB,GAAuB,EAAA;AACxE,EAAM,MAAA,KAAA,GAAQZ,iBAAO,KAAK,CAAA;AAC1B,EAAM,MAAA,MAAA,GAASA,iBAAO,MAAM,CAAA;AAC5B,EAAM,MAAA,IAAA,GAAOA,gBAAQ,CAAA,GAAA,IAAe,MAAM,CAAA;AAC1C,EAAO,OAAAU,iBAAA,CAAQC,aAAI,CAAA,KAAA,EAAO,MAAQ,EAAA,IAAI,CAAG,EAAA,CAAC,CAAC,IAAA,EAAM,KAAO,EAAA,CAAC,CAAM,KAAA;AAC7D,IAAM,MAAA,IAAA,GAAO,KAAM,CAAA,KAAA,CAAM,GAAG,CAAA;AAC5B,IAAA,IAAI,KAAiB,GAAA,IAAA;AACrB,IAAK,IAAA,CAAA,OAAA,CAAQ,CAAC,GAAQ,KAAA;AACpB,MAAA,KAAA,GAAS,MAAkC,GAAG,CAAA;AAAA,KAC/C,CAAA;AACD,IAAI,IAAA,KAAA,KAAU,MAAa,IAAA,KAAA,KAAU,IAAM,EAAA;AACzC,MAAO,OAAA,KAAA;AAAA,KACT,MAAA,IAAW,MAAM,MAAQ,EAAA;AACvB,MAAO,OAAA,CAAA;AAAA;AACT,GACD,CAAA;AACH;;AChBgB,SAAA,OAAA,CACd,OACA,QACA,EAAA;AACA,EAAA,OAAOV,iBAAW,CAAA,SAAS,WAAY,CAAA,OAAA,EAAS,MAAQ,EAAA;AACtD,IAAA,MAAM,KAAKE,0BAAiB,EAAA;AAC5B,IAAA,QAAA,CACG,KAAK,MAAM;AACV,MAAA,EAAA,CAAG,OAAQ,EAAA;AACX,MAAA,OAAA,CAAQC,2BAAsB,CAAA;AAC9B,MAAA,EAAA,CAAG,IAAI,KAAM,CAAA,IAAA,CAAK,OAAO,CAAE,CAAA,KAAA,CAAM,MAAM,CAAC,CAAA;AAAA,KACzC,CACA,CAAA,KAAA,CAAM,MAAM,CAAA;AAAA,GAChB,CAAA;AACH;;ACpBgB,SAAA,eAAA,CACd,SACA,UACA,EAAA;AACA,EAAM,MAAA,OAAA,GAAUJ,iBAAO,OAAO,CAAA;AAC9B,EAAM,MAAA,UAAA,GAAaA,iBAAO,UAAU,CAAA;AACpC,EAAM,MAAA,aAAA,GAAgB,CAAC,GAAA,EAAU,SAAyB,KAAA;AACxD,IAAI,IAAA,GAAA,KAAQ,QAAQ,OAAO,GAAA,KAAQ,YAAY,KAAM,CAAA,OAAA,CAAQ,GAAG,CAAG,EAAA;AACjE,MAAO,OAAA,GAAA;AAAA;AAGT,IAAA,MAAM,SAAkC,EAAC;AAEzC,IAAA,KAAA,MAAW,CAAC,GAAK,EAAA,KAAK,KAAK,MAAO,CAAA,OAAA,CAAQ,GAAG,CAAG,EAAA;AAC9C,MAAI,IAAA,SAAA,CAAU,QAAS,CAAA,KAAK,CAAG,EAAA;AAE/B,MAAM,MAAA,cAAA,GAAiB,aAAc,CAAA,KAAA,EAAO,SAAS,CAAA;AAErD,MAAA,IACE,mBAAmB,MACnB,IAAA,EACE,OAAO,cAAmB,KAAA,QAAA,IAC1B,mBAAmB,IACnB,IAAA,CAAC,KAAM,CAAA,OAAA,CAAQ,cAAc,CAC7B,IAAA,MAAA,CAAO,KAAK,cAAc,CAAA,CAAE,WAAW,CAEzC,CAAA,EAAA;AACA,QAAA,MAAA,CAAO,GAAG,CAAI,GAAA,cAAA;AAAA;AAChB;AAGF,IAAO,OAAA,MAAA;AAAA,GACT;AAEA,EAAO,OAAAa,kBAAA,CAAS,aAAe,EAAA,OAAA,EAAS,UAAU,CAAA;AACpD;;AClCgB,SAAA,IAAA,CAAQ,OAA0B,EAAA,KAAA,GAAgB,CAAG,EAAA;AACnE,EAAM,MAAA,KAAA,GAAQb,iBAAO,OAAO,CAAA;AAC5B,EAAO,OAAAC,iBAAA,CAAW,SAAS,QAAA,CAAS,CAAG,EAAA;AACrC,IAAA,IAAI,SAA4B,GAAA,IAAA;AAChC,IAAgBa,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;;AChBO,SAAS,KAAQ,KAAuB,EAAA;AAC7C,EAAO,OAAAb,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;;ACtBO,SAAS,UAAa,KAAuC,EAAA;AAClE,EAAO,OAAAA,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,gBAAO,CAAA,MAAA,CAAO,GAAG,CAAC,CAAA;AAAA,KACjC,CAAA;AACD,IAAIW,aAAA,CAAA,GAAI,OAAO,MAAO,CAAA,MAAM,CAAS,CAAE,CAAA,IAAA,CAAK,CAAC,OAAY,KAAA;AACvD,MAAA,MAAMI,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;;ACNgB,SAAA,WAAA,CACd,OACA,cACA,EAAA;AACA,EAAM,MAAA,KAAA,GAAQf,iBAAO,KAAK,CAAA;AAC1B,EAAO,OAAAC,iBAAA,CAAQ,CAAC,OAAY,KAAA;AAC1B,IAAM,KAAA,CAAA,IAAA,CAAK,CAAC,CAAM,KAAA;AAChB,MAAA,MAAM,iBAAyC,EAAC;AAChD,MAAA,MAAM,eAAe,MAAO,CAAA,WAAA;AAAA,QAC1B,OAAO,OAAQ,CAAA,CAAC,CAAE,CAAA,GAAA,CAAI,CAAC,KAAU,KAAA;AAC/B,UAAA,IAAI,cAAe,CAAA,KAAA,CAAM,CAAC,CAAC,CAAG,EAAA;AAC5B,YAAe,cAAA,CAAA,KAAA,CAAM,CAAC,CAAC,CAAI,GAAA,CAAA;AAC3B,YAAO,OAAA,CAAC,KAAM,CAAA,CAAC,CAAG,EAAA,cAAA,CAAe,MAAM,CAAC,CAAC,CAAE,CAAA,CAAC,CAAC,CAAA;AAAA;AAG/C,UAAO,OAAA,CAAC,MAAM,CAAC,CAAA,EAAGe,aAAG,KAAM,CAAA,CAAC,CAAC,CAAC,CAAA;AAAA,SAC/B;AAAA,OACH;AAEA,MAAA,MAAA,CAAO,IAAK,CAAA,cAAc,CAAE,CAAA,OAAA,CAAQ,CAAC,GAAQ,KAAA;AAC3C,QAAI,IAAA,CAAC,cAAe,CAAA,GAAG,CAAG,EAAA;AACxB,UAAA,YAAA,CAAa,GAAG,CAAA,GAAI,cAAe,CAAA,GAAG,EAAE,CAAC,CAAA;AAAA;AAC3C,OACD,CAAA;AACD,MAAA,MAAM,MAAS,GAAAC,cAAA,CAAK,MAAO,CAAA,YAAY,CAAC,CAAA;AACxC,MAAA,MAAA,CAAO,KAAK,OAAO,CAAA;AAAA,KACpB,CAAA;AAAA,GACF,CAAA;AACH;;ACxCgB,SAAA,eAAA,CACd,OACA,cACA,EAAA;AACA,EAAO,OAAAC,aAAA,CAAIlB,iBAAO,KAAK,CAAA,EAAG,CAAC,CAAM,KAAA,WAAA,CAAY,CAAG,EAAA,cAAc,CAAC,CAAA;AACjE;;ACHgB,SAAA,GAAA,CAAI,MAA4B,IAA4B,EAAA;AAC1E,EAAO,OAAAC,iBAAA,CAAiB,SAAS,OAAA,CAAQ,CAAG,EAAA;AAC1C,IAAIU,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,OAAAV,iBAAA,CAAiB,SAAS,QAAA,CAAS,CAAG,EAAA;AAC3C,IAAAS,iBAAA,CAAQ,KAAO,EAAA,OAAO,CAAE,CAAA,IAAA,CAAK,CAAC,CAAA;AAAA,GAC/B,CAAA;AACH;;ACJO,SAAS,IAAI,KAA6B,EAAA;AAC/C,EAAO,OAAAT,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,IAAIU,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,OAAOV,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,IAAQS,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,GAAAM,YAAA,CAAG,EAAE,CACtC,EAAA;AACA,EAAM,MAAA,QAAA,GAAWhB,iBAAO,UAAU,CAAA;AAClC,EAAM,MAAA,MAAA,GAASA,iBAAO,QAAQ,CAAA;AAC9B,EAAM,MAAA,MAAA,GAASA,iBAAO,QAAQ,CAAA;AAC9B,EAAO,OAAAC,iBAAA,CAAkB,SAAS,eAAA,CAAgB,CAAG,EAAA;AACnD,IAAIU,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,GAAAK,YAAA,CAAG,EAAE,CACtC,EAAA;AACA,EAAM,MAAA,QAAA,GAAWhB,iBAAO,UAAU,CAAA;AAClC,EAAM,MAAA,MAAA,GAASA,iBAAO,QAAQ,CAAA;AAC9B,EAAM,MAAA,MAAA,GAASA,iBAAO,QAAQ,CAAA;AAC9B,EAAO,OAAAC,iBAAA,CAAiB,SAAS,iBAAA,CAAkB,CAAG,EAAA;AACpD,IAAIU,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,cACd,CAAA,QAAA,EACA,UACA,EAAA,eAAA,EACA,WAAiC,EACjC,EAAA;AACA,EAAM,MAAA,MAAA,GAASX,iBAAO,QAAQ,CAAA;AAC9B,EAAM,MAAA,QAAA,GAAWA,iBAAO,UAAU,CAAA;AAClC,EAAM,MAAA,aAAA,GAAgBA,iBAAO,eAAe,CAAA;AAC5C,EAAM,MAAA,MAAA,GAASA,iBAAO,QAAQ,CAAA;AAC9B,EAAO,OAAAU,iBAAA;AAAA,IACLC,aAAI,CAAA,QAAA,EAAU,MAAQ,EAAA,aAAA,EAAe,MAAM,CAAA;AAAA,IAC3C,CAAC,CAAC,OAAA,EAAS,KAAO,EAAA,YAAA,EAAc,KAAK,CAAM,KAAA;AACzC,MAAO,OAAA,MAAA,CAAO,KAAK,CAAE,CAAA,OAAA,CAAQ,IAAI,MAAO,CAAA,OAAA,EAAS,KAAK,CAAA,EAAG,YAAY,CAAA;AAAA;AACvE,GACF;AACF;;AChBgB,SAAA,GAAA,CACd,OACA,EAAA,MAAA,EACA,QACA,EAAA;AACA,EAAM,MAAA,KAAA,GAAQX,iBAAO,OAAO,CAAA;AAC5B,EAAM,MAAA,IAAA,GAAOA,iBAAO,MAAM,CAAA;AAC1B,EAAM,MAAA,MAAA,GAASA,iBAAO,QAAQ,CAAA;AAC9B,EAAO,OAAAC,iBAAA,CAAW,SAAS,OAAA,CAAQ,CAAG,EAAA;AACpC,IAAIU,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,GAAUX,iBAAO,MAAM,CAAA;AAC7B,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,IAAIQ,aAAA,CAAA,OAAA,EAAS,IAAI,CAAE,CAAA,IAAA,CAAK,CAAC,CAACQ,OAAAA,EAAQ,GAAG,CAAM,KAAA;AACzC,MAAW,UAAA,EAAA;AACX,MAAA,MAAM,QAAW,GAAAR,aAAA;AAAA,QACf,GAAGQ,OAAO,CAAA,GAAA;AAAA,UAAI,CAACC,EACb,KAAA,aAAA;AAAA,YACEJ,YAAA,CAAGI,GAAE,OAAO,CAAA;AAAA,YACZJ,aAAG,GAAG,CAAA;AAAA,YACNI,EAAE,CAAA,YAAA,GAAeJ,YAAGI,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,GAAAH,YAAA,CAAG,EAAE,CACxC,EAAA;AACA,EAAO,OAAAf,iBAAA,CAAgB,SAAS,gBAAA,CAAiB,CAAG,EAAA;AAClD,IAAIU,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;;;;;ACSO,SAAS,SACd,GAA4D,GAAA,EAAA,EAC5D,UAAiDK,YAAG,CAAA,EAAE,CACtD,EAAA;AACA,EAAA,MAAM,OAAOR,cAAa,EAAA;AAC1B,EAAA,IAAI,OAAO,GAAA,KAAQ,QAAY,IAAAa,mBAAA,CAAU,GAAG,CAAG,EAAA;AAC7C,IAAK,IAAA,CAAA,KAAA,CAAMrB,gBAAO,CAAA,GAAG,CAAC,CAAA;AAAA;AAGxB,EAAM,MAAA,CAAA,GAAI,IAAI,YAAa,CAAA,IAAA,EAAM,UAAUA,gBAAO,CAAA,OAAO,IAAI,MAAS,CAAA;AAEtE,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;AAEO,MAAM,YAA6D,CAAA;AAAA,EAOjE,WAAA,CACG,IAA4B,GAAAe,YAAA,CAAG,EAAE,CAAA,EACjC,OAAgD,GAAAA,YAAA,CAAG,EAAE,CACrD,EAAA,QAAA,GAAW,OACnB,EAAA;AAHQ,IAAA,IAAA,CAAA,IAAA,GAAA,IAAA;AACA,IAAA,IAAA,CAAA,OAAA,GAAA,OAAA;AACA,IAAA,IAAA,CAAA,QAAA,GAAA,QAAA;AATV,IAAA,aAAA,CAAA,IAAA,EAAQ,MAAKb,0BAAiB,EAAA,CAAA;AAC9B,IAAQ,aAAA,CAAA,IAAA,EAAA,YAAA,EAAa,IAAImB,oBAAW,EAAA,CAAA;AACpC,IAAA,aAAA,CAAA,IAAA,EAAQ,MAAoC,EAAA;AAAA,MAC1C,IAAA,EAAMN,aAAG,MAAM;AAAA,KACjB,CAAA;AAAA;AAMG,EAEI,KAAK,SAA4C,EAAA;AACtD,IAAM,MAAA,KAAA,GAAQ,MAAO,CAAA,IAAA,CAAK,IAAI,CAAA;AAC9B,IAAAN,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,GAAOK,aAAG,KAAK,CAAA;AAAA;AACtB;AAAA;AAAA;AAAA,EAKO,IAAI,GAA2B,EAAA;AACpC,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,IAAAO,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;AAAA;AAAA;AAAA;AAAA,EAMO,QAAQ,GAAuB,EAAA;AACpC,IAAI,IAAAA,uBAAA,CAAc,GAAG,CAAG,EAAA;AACtB,MAAK,IAAA,CAAA,EAAA,CAAG,IAAI,GAAG,CAAA;AAAA;AAEjB,IAAA,OAAO,KAAK,GAAI,CAAAb,iBAAA,CAAQ,GAAK,EAAA,IAAA,CAAK,QAAQ,CAAC,CAAA;AAAA;AAC7C,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;AAEA,MAAM,SAAY,GAAA;AAAA,EAChB,GAAK,EAAA,OAAA;AAAA,EACL,GAAK,EAAA,MAAA;AAAA,EACL,GAAK,EAAA,MAAA;AAAA,EACL,GAAK,EAAA,QAAA;AAAA,EACL,GAAK,EAAA,QAAA;AAAA,EACL,GAAK,EAAA;AACP,CAAA;AAKO,SAAS,QAAQ,IAAc,EAAA;AACpC,EAAI,IAAA,OAAO,SAAS,QAAU,EAAA;AAC5B,IAAA,IAAA,GAAO,OAAO,IAAI,CAAA;AAAA;AAEpB,EAAA,OAAO,IAAK,CAAA,OAAA;AAAA,IACV,WAAA;AAAA,IACA,CAAC,KAAU,KAAA,SAAA,CAAU,KAA+B;AAAA,GACtD;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
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/Polling.ts","../src/behaviors/RecordTruncated.ts","../src/behaviors/Switch.ts","../src/behaviors/Task.ts","../src/behaviors/Tick.ts","../src/structures/HashTable.ts","../src/structures/Record.ts","../src/behaviors/Transformed.ts","../src/behaviors/TransformedList.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/strings/Template.ts"],"sourcesContent":["import {\n Actual,\n MaybeMessage,\n Message,\n MessageType,\n Primitive,\n} from \"silentium\";\n\n/**\n * Allows switching between left and right messages depending on condition\n * https://silentium.pw/article/branch/view\n */\nexport function Branch<Then, Else>(\n _condition: MaybeMessage<boolean>,\n _left: MaybeMessage<Then>,\n _right?: MaybeMessage<Else>,\n) {\n const $condition = Actual(_condition);\n const $left = Actual(_left);\n const $right = Actual(_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 as MessageType<Else>);\n }\n $condition.then((v) => {\n if (typeof v !== \"boolean\") {\n throw new Error(\"Branch received not boolean value\");\n }\n let result: Then | Else | null = null;\n if (v === true) {\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 Actual,\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 = Actual(_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, MessageType, Source } 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 Source<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 * @url https://silentium.pw/article/only-changed/view\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 Actual,\n All,\n isFilled,\n MaybeMessage,\n MessageSourceType,\n Primitive,\n Shared,\n Source,\n} from \"silentium\";\n\n/**\n * Return source Of record path\n * @url https://silentium.pw/article/part/view\n */\nexport function Part<\n R,\n T extends object | Array<any> = any,\n K extends string = any,\n>(\n $base: MessageSourceType<T>,\n key: MaybeMessage<K>,\n defaultValue?: R,\n): MessageSourceType<R> {\n const $baseShared = Shared($base);\n const $keyedShared = Shared(Actual(key));\n return Source(\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 } else if (defaultValue !== undefined) {\n r(defaultValue);\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 { Actual, All, Applied, MaybeMessage, MessageType } 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: MaybeMessage<T>, _keyed: MaybeMessage<K>, def?: MaybeMessage<R>) {\n const $base = Actual(_base);\n const $keyed = Actual(_keyed);\n const $def = Actual((def as any) ?? 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 {\n DestroyContainer,\n Message,\n MessageType,\n ResetSilenceCache,\n} from \"silentium\";\n\n/**\n * Active polling of $base message\n * synchronized with $trigger message\n * can return same values\n */\nexport function Polling<T>(\n $base: MessageType<T>,\n $trigger: MessageType<unknown>,\n) {\n return Message<T>(function PollingImpl(resolve, reject) {\n const dc = DestroyContainer();\n $trigger\n .then(() => {\n dc.destroy();\n resolve(ResetSilenceCache as T);\n dc.add($base.then(resolve).catch(reject));\n })\n .catch(reject);\n });\n}\n","import { Actual, Computed, MaybeMessage } from \"silentium\";\n\n/**\n * Helps eliminate unwanted values\n * that shouldn't exist in object fields\n */\nexport function RecordTruncated(\n _record: MaybeMessage<Record<string, unknown>>,\n _badValues: MaybeMessage<unknown[]>,\n) {\n const $record = Actual(_record);\n const $badValues = Actual(_badValues);\n const processRecord = (obj: any, badValues: unknown[]) => {\n if (obj === null || typeof obj !== \"object\" || Array.isArray(obj)) {\n return obj;\n }\n\n const result: Record<string, unknown> = {};\n\n for (const [key, value] of Object.entries(obj)) {\n if (badValues.includes(value)) continue;\n\n const processedValue = processRecord(value, badValues);\n\n if (\n processedValue !== undefined &&\n !(\n typeof processedValue === \"object\" &&\n processedValue !== null &&\n !Array.isArray(processedValue) &&\n Object.keys(processedValue).length === 0\n )\n ) {\n result[key] = processedValue;\n }\n }\n\n return result;\n };\n\n return Computed(processRecord, $record, $badValues);\n}\n","import {\n Actual,\n DestroyContainer,\n MaybeMessage,\n Message,\n MessageType,\n} from \"silentium\";\n\n/**\n * Switch between many messages by known value\n */\nexport function Switch<T, K>(\n _base: MaybeMessage,\n options: [K, MessageType<T>][],\n) {\n const $base = Actual(_base);\n return Message<T>((resolve, reject) => {\n const dc = DestroyContainer();\n $base\n .then((v) => {\n const msg = options.find((entry) => entry[0] === v);\n if (msg) {\n dc.add(msg[1].then(resolve).catch(reject));\n }\n })\n .catch(reject);\n return dc.destructor;\n });\n}\n","import { Actual, ExecutorApplied, MaybeMessage, Message } 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 *\n * @url https://silentium.pw/article/task/view\n */\nexport function Task<T>(baseSrc: MaybeMessage<T>, delay: number = 0) {\n const $base = Actual(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 *\n * @url https://silentium.pw/article/tick/view\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 { 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 { Actual, 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] = Actual(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 Actual,\n ConstructorType,\n MaybeMessage,\n Message,\n Of,\n Once,\n} from \"silentium\";\n\nimport { Record } from \"../structures\";\n\n/**\n * Modify the object structure\n * with the ability to create new fields based on\n * existing ones in the object\n *\n * @url https://silentium.pw/article/transformed/view\n */\nexport function Transformed<T extends Record<string, any>>(\n _base: MaybeMessage<T>,\n transformRules: Record<string, ConstructorType<[MaybeMessage<any>]>>,\n) {\n const $base = Actual(_base);\n return Message((resolve) => {\n $base.then((v) => {\n const existedKeysMap: Record<string, number> = {};\n const sourceObject = Object.fromEntries(\n Object.entries(v).map((entry) => {\n if (transformRules[entry[0]]) {\n existedKeysMap[entry[0]] = 1;\n return [entry[0], transformRules[entry[0]](v)];\n }\n\n return [entry[0], Of(entry[1])];\n }),\n );\n\n Object.keys(transformRules).forEach((key) => {\n if (!existedKeysMap[key]) {\n sourceObject[key] = transformRules[key](v);\n }\n });\n const record = Once(Record(sourceObject));\n record.then(resolve);\n });\n });\n}\n","import { Actual, ConstructorType, Map, MaybeMessage } from \"silentium\";\n\nimport { Transformed } from \"../behaviors/Transformed\";\n\nexport function TransformedList<T extends any[]>(\n _base: MaybeMessage<T>,\n transformRules: Record<string, ConstructorType<[MaybeMessage<any>]>>,\n) {\n return Map(Actual(_base), (v) => Transformed(v, transformRules));\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 { Actual, 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 = Actual(patternSrc);\n const $value = Actual(valueSrc);\n const $flags = Actual(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 { Actual, 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 = Actual(patternSrc);\n const $value = Actual(valueSrc);\n const $flags = Actual(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 { Actual, 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 = Actual(valueSrc);\n const $pattern = Actual(patternSrc);\n const $replaceValue = Actual(replaceValueSrc);\n const $flags = Actual(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 { Actual, 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 = Actual(baseSrc);\n const $key = Actual(keySrc);\n const $value = Actual(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 Actual,\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<[], MaybeMessage<T>>;\n}\n\n/**\n * Router component what will return template if url matches pattern\n *\n * @url https://silentium.pw/article/router/view\n */\nexport function Router<T = string>(\n _url: MaybeMessage<string>,\n routes: MaybeMessage<Route<T>[]>,\n $default: ConstructorType<[], MaybeMessage<T>>,\n): MessageType<T> & DestroyableType {\n const $routes = Actual(routes);\n const $url = Actual(_url);\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 = Actual($default());\n dc.add(instance);\n instance.then(r);\n }\n\n if (index > -1) {\n const instance = Actual(routes[index].message());\n dc.add(instance);\n instance.then(r);\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 {\n Actual,\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 *\n * @url https://silentium.pw/article/template/view\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(Actual(src));\n }\n\n const t = new TemplateImpl($src, $places ? Actual($places) : undefined);\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\nexport class TemplateImpl implements MessageType<string>, DestroyableType {\n private dc = DestroyContainer();\n private rejections = 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 private escapeFn = escaped,\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 * Register raw unsafe variable\n */\n public raw(src: MessageType<unknown>) {\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 /**\n * Register variable what will be safe in HTML by default\n * or with your custom escape logic\n */\n public escaped(src: MessageType<any>) {\n if (isDestroyable(src)) {\n this.dc.add(src);\n }\n return this.raw(Applied(src, this.escapeFn));\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\nconst escapeMap = {\n \"&\": \"&\",\n \"<\": \"<\",\n \">\": \">\",\n '\"': \""\",\n \"'\": \"'\",\n \"/\": \"/\",\n} as const;\n\n/**\n * String with html escaped\n */\nexport function escaped(base: string) {\n if (typeof base !== \"string\") {\n base = String(base);\n }\n return base.replace(\n /[&<>\"'/]/g,\n (match) => escapeMap[match as keyof typeof escapeMap],\n );\n}\n"],"names":["Actual","Message","Primitive","DestroyContainer","ResetSilenceCache","Shared","Filtered","isFilled","Late","Source","Applied","All","key","Computed","ExecutorApplied","record","Of","Once","Map","routes","r","isMessage","Rejections","isDestroyable"],"mappings":"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"}
|
|
@@ -107,16 +107,24 @@ declare function Polling<T>($base: MessageType<T>, $trigger: MessageType<unknown
|
|
|
107
107
|
*/
|
|
108
108
|
declare function RecordTruncated(_record: MaybeMessage<Record<string, unknown>>, _badValues: MaybeMessage<unknown[]>): silentium.MessageImpl<any>;
|
|
109
109
|
|
|
110
|
+
/**
|
|
111
|
+
* Switch between many messages by known value
|
|
112
|
+
*/
|
|
113
|
+
declare function Switch<T, K>(_base: MaybeMessage, options: [K, MessageType<T>][]): silentium.MessageImpl<T>;
|
|
114
|
+
|
|
110
115
|
/**
|
|
111
116
|
* Defer a message to the event loop
|
|
112
117
|
* so that it executes once within
|
|
113
118
|
* a certain timer firing interval
|
|
119
|
+
*
|
|
120
|
+
* @url https://silentium.pw/article/task/view
|
|
114
121
|
*/
|
|
115
122
|
declare function Task<T>(baseSrc: MaybeMessage<T>, delay?: number): silentium.MessageImpl<T>;
|
|
116
123
|
|
|
117
124
|
/**
|
|
118
125
|
* Accumulates the last value Of the source and returns one result once per tick
|
|
119
|
-
*
|
|
126
|
+
*
|
|
127
|
+
* @url https://silentium.pw/article/tick/view
|
|
120
128
|
*/
|
|
121
129
|
declare function Tick<T>($base: MessageType<T>): silentium.MessageImpl<T>;
|
|
122
130
|
|
|
@@ -124,6 +132,8 @@ declare function Tick<T>($base: MessageType<T>): silentium.MessageImpl<T>;
|
|
|
124
132
|
* Modify the object structure
|
|
125
133
|
* with the ability to create new fields based on
|
|
126
134
|
* existing ones in the object
|
|
135
|
+
*
|
|
136
|
+
* @url https://silentium.pw/article/transformed/view
|
|
127
137
|
*/
|
|
128
138
|
declare function Transformed<T extends Record<string, any>>(_base: MaybeMessage<T>, transformRules: Record<string, ConstructorType<[MaybeMessage<any>]>>): silentium.MessageImpl<unknown>;
|
|
129
139
|
|
|
@@ -171,13 +181,14 @@ declare function First<T extends Array<unknown>>($base: MessageType<T>): silenti
|
|
|
171
181
|
interface Route<T> {
|
|
172
182
|
pattern: string;
|
|
173
183
|
patternFlags?: string;
|
|
174
|
-
message: ConstructorType<[],
|
|
184
|
+
message: ConstructorType<[], MaybeMessage<T>>;
|
|
175
185
|
}
|
|
176
186
|
/**
|
|
177
187
|
* Router component what will return template if url matches pattern
|
|
178
|
-
*
|
|
188
|
+
*
|
|
189
|
+
* @url https://silentium.pw/article/router/view
|
|
179
190
|
*/
|
|
180
|
-
declare function Router<T = string>(
|
|
191
|
+
declare function Router<T = string>(_url: MaybeMessage<string>, routes: MaybeMessage<Route<T>[]>, $default: ConstructorType<[], MaybeMessage<T>>): MessageType<T> & DestroyableType;
|
|
181
192
|
|
|
182
193
|
/**
|
|
183
194
|
* Join sources Of strings to one source
|
|
@@ -189,6 +200,8 @@ declare function Concatenated(sources: MessageType<string>[], joinPartSrc?: Mess
|
|
|
189
200
|
* Allows creating a string template with
|
|
190
201
|
* variables inserted into it; when variables change,
|
|
191
202
|
* the template value will change
|
|
203
|
+
*
|
|
204
|
+
* @url https://silentium.pw/article/template/view
|
|
192
205
|
*/
|
|
193
206
|
declare function Template(src?: MaybeMessage<string> | ((t: TemplateImpl) => string), $places?: MaybeMessage<Record<string, unknown>>): TemplateImpl;
|
|
194
207
|
declare class TemplateImpl implements MessageType<string>, DestroyableType {
|
|
@@ -256,5 +269,5 @@ declare function RegexpReplaced(valueSrc: MaybeMessage<string>, patternSrc: Mayb
|
|
|
256
269
|
*/
|
|
257
270
|
declare function Set<T extends Record<string, unknown>>(baseSrc: MessageType<T>, keySrc: MessageType<string>, valueSrc: MessageType<unknown>): silentium.MessageImpl<T>;
|
|
258
271
|
|
|
259
|
-
export { And, Bool, Branch, BranchLazy, Concatenated, Constant, Deadline, Deferred, Detached, Dirty, First, FromJson, HashTable, Loading, Lock, Memo, MergeAccumulation, Not, OnlyChanged, Or, Part, Path, Polling, Record$1 as Record, RecordTruncated, RegexpMatch, RegexpMatched, RegexpReplaced, Router, Set, Task, Template, TemplateImpl, Tick, ToJson, Transformed, TransformedList, escaped };
|
|
272
|
+
export { And, Bool, Branch, BranchLazy, Concatenated, Constant, Deadline, Deferred, Detached, Dirty, First, FromJson, HashTable, Loading, Lock, Memo, MergeAccumulation, Not, OnlyChanged, Or, Part, Path, Polling, Record$1 as Record, RecordTruncated, RegexpMatch, RegexpMatched, RegexpReplaced, Router, Set, Switch, Task, Template, TemplateImpl, Tick, ToJson, Transformed, TransformedList, escaped };
|
|
260
273
|
export type { Route };
|
|
@@ -304,6 +304,20 @@ function RecordTruncated(_record, _badValues) {
|
|
|
304
304
|
return Computed(processRecord, $record, $badValues);
|
|
305
305
|
}
|
|
306
306
|
|
|
307
|
+
function Switch(_base, options) {
|
|
308
|
+
const $base = Actual(_base);
|
|
309
|
+
return Message((resolve, reject) => {
|
|
310
|
+
const dc = DestroyContainer();
|
|
311
|
+
$base.then((v) => {
|
|
312
|
+
const msg = options.find((entry) => entry[0] === v);
|
|
313
|
+
if (msg) {
|
|
314
|
+
dc.add(msg[1].then(resolve).catch(reject));
|
|
315
|
+
}
|
|
316
|
+
}).catch(reject);
|
|
317
|
+
return dc.destructor;
|
|
318
|
+
});
|
|
319
|
+
}
|
|
320
|
+
|
|
307
321
|
function Task(baseSrc, delay = 0) {
|
|
308
322
|
const $base = Actual(baseSrc);
|
|
309
323
|
return Message(function TaskImpl(r) {
|
|
@@ -507,8 +521,9 @@ function Set(baseSrc, keySrc, valueSrc) {
|
|
|
507
521
|
});
|
|
508
522
|
}
|
|
509
523
|
|
|
510
|
-
function Router(
|
|
524
|
+
function Router(_url, routes, $default) {
|
|
511
525
|
const $routes = Actual(routes);
|
|
526
|
+
const $url = Actual(_url);
|
|
512
527
|
return Message(function RouterImpl(r) {
|
|
513
528
|
const dc = DestroyContainer();
|
|
514
529
|
const destructor = () => {
|
|
@@ -528,12 +543,12 @@ function Router($url, routes, $default) {
|
|
|
528
543
|
$matches.then((matches) => {
|
|
529
544
|
const index = matches.findIndex((v) => v === true);
|
|
530
545
|
if (index === -1) {
|
|
531
|
-
const instance = $default();
|
|
546
|
+
const instance = Actual($default());
|
|
532
547
|
dc.add(instance);
|
|
533
548
|
instance.then(r);
|
|
534
549
|
}
|
|
535
550
|
if (index > -1) {
|
|
536
|
-
const instance = routes2[index].message();
|
|
551
|
+
const instance = Actual(routes2[index].message());
|
|
537
552
|
dc.add(instance);
|
|
538
553
|
instance.then(r);
|
|
539
554
|
}
|
|
@@ -575,7 +590,7 @@ class TemplateImpl {
|
|
|
575
590
|
this.$places = $places;
|
|
576
591
|
this.escapeFn = escapeFn;
|
|
577
592
|
__publicField(this, "dc", DestroyContainer());
|
|
578
|
-
__publicField(this, "rejections",
|
|
593
|
+
__publicField(this, "rejections", Rejections());
|
|
579
594
|
__publicField(this, "vars", {
|
|
580
595
|
$TPL: Of("$TPL")
|
|
581
596
|
});
|
|
@@ -649,5 +664,5 @@ function escaped(base) {
|
|
|
649
664
|
);
|
|
650
665
|
}
|
|
651
666
|
|
|
652
|
-
export { And, Bool, Branch, BranchLazy, Concatenated, Constant, Deadline, Deferred, Detached, Dirty, First, FromJson, HashTable, Loading, Lock, Memo, MergeAccumulation, Not, OnlyChanged, Or, Part, Path, Polling, Record, RecordTruncated, RegexpMatch, RegexpMatched, RegexpReplaced, Router, Set, Task, Template, TemplateImpl, Tick, ToJson, Transformed, TransformedList, escaped };
|
|
667
|
+
export { And, Bool, Branch, BranchLazy, Concatenated, Constant, Deadline, Deferred, Detached, Dirty, First, FromJson, HashTable, Loading, Lock, Memo, MergeAccumulation, Not, OnlyChanged, Or, Part, Path, Polling, Record, RecordTruncated, RegexpMatch, RegexpMatched, RegexpReplaced, Router, Set, Switch, Task, Template, TemplateImpl, Tick, ToJson, Transformed, TransformedList, escaped };
|
|
653
668
|
//# sourceMappingURL=silentium-components.js.map
|