silentium-components 0.0.69 → 0.0.70

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,13 @@
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.70](https://github.com/silentium-lab/silentium-components/compare/v0.0.69...v0.0.70) (2025-10-20)
6
+
7
+
8
+ ### Bug Fixes
9
+
10
+ * **main:** transaction fix ([6abc387](https://github.com/silentium-lab/silentium-components/commit/6abc3875a3b6892f13992df25e01fdddc6bf5079))
11
+
5
12
  ### [0.0.69](https://github.com/silentium-lab/silentium-components/compare/v0.0.68...v0.0.69) (2025-10-19)
6
13
 
7
14
 
@@ -288,16 +288,16 @@ function Tick(baseSrc) {
288
288
  }
289
289
 
290
290
  function Transaction($base, eventBuilder, ...args) {
291
- const $res = silentium.LateShared();
292
- const destructors = [];
293
- $base((v) => {
294
- const $event = silentium.Destructor(
295
- eventBuilder(silentium.Of(v), ...args.map((a) => Detached(a)))
296
- );
297
- destructors.push($event);
298
- $event.event($res.use);
299
- });
300
291
  return (user) => {
292
+ const $res = silentium.LateShared();
293
+ const destructors = [];
294
+ $base((v) => {
295
+ const $event = silentium.Destructor(
296
+ eventBuilder(silentium.Of(v), ...args.map((a) => Detached(a)))
297
+ );
298
+ destructors.push($event);
299
+ $event.event($res.use);
300
+ });
301
301
  $res.event(user);
302
302
  return () => {
303
303
  destructors.forEach((d) => d.destroy());
@@ -1 +1 @@
1
- {"version":3,"file":"silentium-components.cjs","sources":["../src/behaviors/Branch.ts","../src/behaviors/BranchLazy.ts","../src/behaviors/Const.ts","../src/behaviors/Deadline.ts","../src/behaviors/Deferred.ts","../src/behaviors/Detached.ts","../src/behaviors/Dirty.ts","../src/behaviors/Loading.ts","../src/behaviors/Lock.ts","../src/behaviors/Memo.ts","../src/behaviors/OnlyChanged.ts","../src/behaviors/Part.ts","../src/behaviors/Path.ts","../src/behaviors/Polling.ts","../src/behaviors/Shot.ts","../src/behaviors/Task.ts","../src/behaviors/Tick.ts","../src/behaviors/Transaction.ts","../src/structures/HashTable.ts","../src/structures/RecordOf.ts","../src/strings/Concatenated.ts","../src/strings/Template.ts","../src/system/RegexpMatched.ts","../src/system/RegexpReplaced.ts","../src/system/RegexpMatch.ts","../src/system/Set.ts","../src/navigation/Router.ts","../src/boolean/And.ts","../src/boolean/Or.ts","../src/boolean/Not.ts","../src/boolean/Bool.ts","../src/formats/FromJson.ts","../src/formats/ToJson.ts","../src/lists/First.ts"],"sourcesContent":["import { EventType, Primitive } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/branch\n */\nexport function Branch<Then, Else>(\n conditionSrc: EventType<boolean>,\n leftSrc: EventType<Then>,\n rightSrc?: EventType<Else>,\n): EventType<Then | Else> {\n return (user) => {\n const leftSync = Primitive(leftSrc);\n let rightSync: ReturnType<typeof Primitive<Else>>;\n\n if (rightSrc !== undefined) {\n rightSync = Primitive(rightSrc);\n }\n\n conditionSrc((v) => {\n let result: Then | Else | null = null;\n if (v) {\n result = leftSync.primitive();\n } else if (rightSync) {\n result = rightSync.primitive();\n }\n\n if (result !== null) {\n user(result);\n }\n });\n };\n}\n","import { EventType, DestructorType, ConstructorType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/branch\n */\nexport function BranchLazy<Then, Else>(\n conditionSrc: EventType<boolean>,\n leftSrc: ConstructorType<[], EventType<Then>>,\n rightSrc?: ConstructorType<[], EventType<Else>>,\n): EventType<Then | Else> {\n return (user) => {\n let Destructor: DestructorType | void;\n conditionSrc((v) => {\n if (Destructor !== undefined && typeof Destructor === \"function\") {\n Destructor();\n }\n let instance: EventType<Then | Else> | null = null;\n if (v) {\n instance = leftSrc();\n } else if (rightSrc) {\n instance = rightSrc();\n }\n if (instance) {\n Destructor = instance(user);\n }\n });\n\n return () => {\n Destructor?.();\n };\n };\n}\n","import { EventType } from \"silentium\";\n\nexport function Constant<T>(\n permanentValue: T,\n triggerSrc: EventType,\n): EventType<T> {\n return (user) => {\n triggerSrc(() => {\n user(permanentValue);\n });\n };\n}\n","import { EventType, Filtered, Shared, EventUserType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport function Deadline<T>(\n error: EventUserType<Error>,\n baseSrc: EventType<T>,\n timeoutSrc: EventType<number>,\n): EventType<T> {\n return (user) => {\n let timerHead: unknown = null;\n\n const s = Shared(baseSrc, true);\n\n timeoutSrc((timeout) => {\n if (timerHead) {\n clearTimeout(timerHead as number);\n }\n let timeoutReached = false;\n\n timerHead = setTimeout(() => {\n if (timeoutReached) {\n return;\n }\n timeoutReached = true;\n error(new Error(\"Timeout reached in Deadline class\"));\n }, timeout);\n\n const f = Filtered(s.event, () => !timeoutReached);\n f(user);\n\n s.event(() => {\n timeoutReached = true;\n });\n });\n };\n}\n","import { EventType, isFilled, 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 baseSrc: EventType<T>,\n triggerSrc: EventType<unknown>,\n): EventType<T> {\n return (user) => {\n const baseSync = Primitive(baseSrc);\n triggerSrc(() => {\n const value = baseSync.primitive();\n if (isFilled(value)) {\n user(value);\n }\n });\n };\n}\n","import { EventType, isFilled, Primitive } from \"silentium\";\n\nexport function Detached<T>(baseSrc: EventType<T>): EventType<T> {\n return function Detached(user) {\n const v = Primitive(baseSrc).primitive();\n if (isFilled(v)) {\n user(v);\n }\n };\n}\n","import { All, Applied, EventType, Late, SourceType } 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 baseEntitySource: EventType<T>,\n alwaysKeep: string[] = [],\n excludeKeys: string[] = [],\n cloneFn?: (v: T) => T,\n): SourceType<T> {\n const comparingSrc = Late<T>();\n\n if (cloneFn === undefined) {\n cloneFn = (value) => JSON.parse(JSON.stringify(value));\n }\n\n return {\n event: (user) => {\n const comparingDetached = Applied(comparingSrc.event, cloneFn);\n\n All(\n comparingDetached,\n baseEntitySource,\n )(([comparing, base]) => {\n if (!comparing) {\n return;\n }\n\n user(\n Object.fromEntries(\n Object.entries(comparing).filter(([key, value]) => {\n if (alwaysKeep.includes(key)) {\n return true;\n }\n if (excludeKeys.includes(key)) {\n return false;\n }\n return value !== (base as any)[key];\n }),\n ) as T,\n );\n });\n },\n use: (v) => {\n comparingSrc.use(v);\n },\n };\n}\n","import { EventType } from \"silentium\";\n\n/**\n * Representation Of loading process\n * first informatin source begins loading\n * second information source stops loading\n * https://silentium-lab.github.io/silentium-components/#/behaviors/loading\n */\nexport function Loading(\n loadingStartSrc: EventType<unknown>,\n loadingFinishSrc: EventType<unknown>,\n): EventType<boolean> {\n return (user) => {\n loadingStartSrc(() => user(true));\n loadingFinishSrc(() => user(false));\n };\n}\n","import { EventType, Filtered } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/lock\n */\nexport function Lock<T>(\n baseSrc: EventType<T>,\n lockSrc: EventType<boolean>,\n): EventType<T> {\n return (user) => {\n let locked = false;\n lockSrc((newLock) => {\n locked = newLock;\n });\n const i = Filtered(baseSrc, () => !locked);\n i(user);\n };\n}\n","import { EventType } 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>(baseSrc: EventType<T>): EventType<T> {\n return (user) => {\n let lastValue: T | null = null;\n\n baseSrc((v) => {\n if (v !== lastValue) {\n user(v);\n lastValue = v;\n }\n });\n };\n}\n","import { EventType } 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>(baseSrc: EventType<T>): EventType<T> {\n return (user) => {\n let firstValue = false;\n\n baseSrc((v) => {\n if (firstValue === false) {\n firstValue = true;\n } else {\n user(v);\n }\n });\n };\n}\n","import { All, EventType, isFilled, Primitive, SourceType } from \"silentium\";\n\n/**\n * Return source Of record path\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport function Part<R, T extends object | Array<any>, K extends string = any>(\n baseSrc: SourceType<T>,\n keySrc: EventType<K>,\n): SourceType<R> {\n const baseSync = Primitive(baseSrc.event);\n const keySync = Primitive(keySrc);\n return {\n event: (user) => {\n All(\n baseSrc.event,\n keySrc,\n )(([base, key]) => {\n const keyChunks = key.split(\".\");\n let value: unknown = base;\n keyChunks.forEach((keyChunk) => {\n value = (value as Record<string, unknown>)[keyChunk];\n });\n\n if (value !== undefined && value !== base) {\n user(value as R);\n }\n });\n },\n use: (value: R) => {\n const key = keySync.primitive();\n if (isFilled(key)) {\n baseSrc.use({\n ...baseSync.primitive(),\n [key]: value,\n } as T);\n }\n },\n };\n}\n","import { All, EventType } from \"silentium\";\n\n/**\n * Return source Of record path\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport function Path<R, T extends object | Array<any>, K extends string = any>(\n baseSrc: EventType<T>,\n keySrc: EventType<K>,\n): EventType<R> {\n return (user) => {\n All(\n baseSrc,\n keySrc,\n )(([base, key]) => {\n const keyChunks = key.split(\".\");\n let value: unknown = base;\n keyChunks.forEach((keyChunk) => {\n value = (value as Record<string, unknown>)[keyChunk];\n });\n\n if (value !== undefined && value !== base) {\n user(value as R);\n }\n });\n };\n}\n","import { EventType } from \"silentium\";\n\nexport function Polling<T>(\n baseSrc: EventType<T>,\n triggerSrc: EventType<T>,\n): EventType<T> {\n return (user) => {\n triggerSrc(() => {\n baseSrc(user);\n });\n };\n}\n","import { EventType, isFilled, 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>(\n targetSrc: EventType<T>,\n triggerSrc: EventType,\n): EventType<T> {\n return (user) => {\n const targetSync = Primitive(targetSrc);\n\n triggerSrc(() => {\n const value = targetSync.primitive();\n if (isFilled(value)) {\n user(value);\n }\n });\n };\n}\n","import { EventType, ExecutorApplied } from \"silentium\";\n\nexport function Task<T>(\n baseSrc: EventType<T>,\n delay: number = 0,\n): EventType<T> {\n return (user) => {\n let prevTimer: unknown | null = null;\n ExecutorApplied(baseSrc, (fn) => {\n return (v) => {\n if (prevTimer) {\n clearTimeout(prevTimer as number);\n }\n prevTimer = setTimeout(() => {\n fn(v);\n }, delay);\n };\n })(user);\n };\n}\n","import { EventType } 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>(baseSrc: EventType<T>): EventType<T> {\n return (user) => {\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 user(lastValue);\n lastValue = null;\n }\n });\n };\n\n baseSrc((v) => {\n lastValue = v;\n if (!microtaskScheduled) {\n scheduleMicrotask();\n }\n });\n };\n}\n","import {\n ConstructorType,\n DestroyableType,\n Destructor,\n EventType,\n LateShared,\n Of,\n} from \"silentium\";\nimport { Detached } from \"../behaviors/Detached\";\n\n/**\n * Do something on event value.\n * Each event value will create new eventBuilder instance\n */\nexport function Transaction<T, R = unknown>(\n $base: EventType<T>,\n eventBuilder: ConstructorType<\n [EventType<T>, ...EventType<any>[]],\n EventType<R>\n >,\n ...args: EventType[]\n): EventType<R> {\n const $res = LateShared<R>();\n const destructors: DestroyableType[] = [];\n\n $base((v) => {\n const $event = Destructor(\n eventBuilder(Of(v), ...args.map((a) => Detached(a))),\n );\n destructors.push($event);\n $event.event($res.use);\n });\n\n return (user) => {\n $res.event(user);\n\n return () => {\n destructors.forEach((d) => d.destroy());\n destructors.length = 0;\n };\n };\n}\n","import { EventType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/structures/hash-table\n */\nexport function HashTable<T>(\n baseSrc: EventType<[string, unknown]>,\n): EventType<T> {\n return (user) => {\n const record: Record<string, unknown> = {};\n\n baseSrc(([key, value]) => {\n record[key] = value;\n user(record as T);\n });\n };\n}\n","import { All, EventType } from \"silentium\";\n\ntype UnInformation<T> = T extends EventType<infer U> ? U : never;\n\n/**\n * Returns record Of data from record Of sources\n * https://silentium-lab.github.io/silentium-components/#/structures/record\n */\nexport function RecordOf<T extends EventType>(\n recordSrc: Record<string, T>,\n): EventType<Record<string, UnInformation<T>>> {\n return (user) => {\n const keys = Object.keys(recordSrc);\n All(...Object.values(recordSrc))((entries) => {\n const record: Record<string, any> = {};\n entries.forEach((entry, index) => {\n record[keys[index]] = entry;\n });\n user(record);\n });\n };\n}\n","import { All, EventType, 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: EventType<string>[],\n joinPartSrc: EventType<string> = Of(\"\"),\n): EventType<string> {\n return (user) => {\n All(\n joinPartSrc,\n ...sources,\n )(([joinPart, ...strings]) => {\n user(strings.join(joinPart));\n });\n };\n}\n","import {\n All,\n Applied,\n EventType,\n Destructor,\n DestructorType,\n Of,\n} from \"silentium\";\nimport { RecordOf } from \"../structures\";\n\nexport function Template(\n theSrc: EventType<string> = Of(\"\"),\n placesSrc: EventType<Record<string, unknown>> = Of({}),\n) {\n let placesCounter = 0;\n const vars: Record<string, EventType> = {\n $TPL: Of(\"$TPL\"),\n };\n const destructors: DestructorType[] = [];\n return {\n value: <EventType<string>>((user) => {\n const varsSrc = RecordOf(vars);\n Applied(All(theSrc, placesSrc, varsSrc), ([base, rules, vars]) => {\n Object.entries(rules).forEach(([ph, val]) => {\n base = base.replaceAll(ph, String(val));\n });\n Object.entries(vars).forEach(([ph, val]) => {\n base = base.replaceAll(ph, String(val));\n });\n\n return base;\n })(user);\n }),\n template: (value: string) => {\n theSrc = Of(value);\n },\n /**\n * Ability to register variable\n * in concrete place Of template\n */\n var: (src: EventType<string>) => {\n const varName = `$var${placesCounter}`;\n placesCounter += 1;\n vars[varName] = Destructor(src, (d: DestructorType) => {\n destructors.push(d);\n }).event;\n return varName;\n },\n destroy() {\n destructors.forEach((d) => d());\n },\n };\n}\n","import { All, EventType, 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: EventType<string>,\n valueSrc: EventType<string>,\n flagsSrc: EventType<string> = Of(\"\"),\n): EventType<boolean> {\n return (user) => {\n All(\n patternSrc,\n valueSrc,\n flagsSrc,\n )(([pattern, value, flags]) => {\n user(new RegExp(pattern, flags).test(value));\n });\n };\n}\n","import { All, EventType, 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: EventType<string>,\n patternSrc: EventType<string>,\n replaceValueSrc: EventType<string>,\n flagsSrc: EventType<string> = Of(\"\"),\n): EventType<string> {\n return (user) => {\n All(\n patternSrc,\n valueSrc,\n replaceValueSrc,\n flagsSrc,\n )(([pattern, value, replaceValue, flags]) => {\n user(String(value).replace(new RegExp(pattern, flags), replaceValue));\n });\n };\n}\n","import { All, EventType, 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: EventType<string>,\n valueSrc: EventType<string>,\n flagsSrc: EventType<string> = Of(\"\"),\n): EventType<string[]> {\n return (user) => {\n All(\n patternSrc,\n valueSrc,\n flagsSrc,\n )(([pattern, value, flags]) => {\n const result = new RegExp(pattern, flags).exec(value);\n user(result ?? []);\n });\n };\n}\n","import { All, EventType } from \"silentium\";\n\n/**\n * Ability to mutate some object, helpful when integrate to procedure systems\n * https://silentium-lab.github.io/silentium-components/#/system/set\n */\nexport function Set<T extends Record<string, unknown>>(\n baseSrc: EventType<T>,\n keySrc: EventType<string>,\n valueSrc: EventType<unknown>,\n): EventType<T> {\n return (user) => {\n All(\n baseSrc,\n keySrc,\n valueSrc,\n )(([base, key, value]) => {\n (base as Record<string, unknown>)[key] = value;\n user(base);\n });\n };\n}\n","import {\n All,\n Applied,\n EventType,\n Destructor,\n DestructorType,\n Of,\n ConstructorType,\n} from \"silentium\";\nimport { RegexpMatched } from \"../system\";\nimport { BranchLazy } from \"../behaviors\";\n\nexport interface Route<T> {\n pattern: string;\n patternFlags?: string;\n template: ConstructorType<[], EventType<T>>;\n}\n\nconst emptySrc = () => Of(false);\n\n/**\n * Router component what will return template if url matches pattern\n * https://silentium-lab.github.io/silentium-components/#/navigation/router\n */\nexport function Router<T = \"string\">(\n urlSrc: EventType<string>,\n routesSrc: EventType<Route<T>[]>,\n defaultSrc: ConstructorType<[], EventType<T>>,\n): EventType<T> {\n return (user) => {\n const destructors: DestructorType[] = [];\n const destroyAllData = () => {\n destructors.forEach((d) => d());\n destructors.length = 0;\n };\n All(\n routesSrc,\n urlSrc,\n )(([routes, url]) => {\n destroyAllData();\n const instance = All(\n defaultSrc(),\n All(\n ...routes.map(\n (r) =>\n Destructor(\n BranchLazy(\n RegexpMatched(\n Of(r.pattern),\n Of(url),\n r.patternFlags ? Of(r.patternFlags) : undefined,\n ),\n r.template,\n emptySrc,\n ),\n (d: DestructorType) => destructors.push(d),\n ).event,\n ),\n ),\n );\n\n // Return first not false or default\n Applied(instance, (r) => {\n const firstReal = r[1].find((r) => r !== false);\n\n if (firstReal) {\n return firstReal as T;\n }\n\n return r[0];\n })(user);\n });\n\n return destroyAllData;\n };\n}\n","import { All, EventType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/and\n */\nexport function And(\n oneSrc: EventType<boolean>,\n twoSrc: EventType<boolean>,\n): EventType<boolean> {\n return (user) => {\n All(\n oneSrc,\n twoSrc,\n )(([one, two]) => {\n user(one && two);\n });\n };\n}\n","import { All, EventType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/or\n */\nexport function Or(\n oneSrc: EventType<boolean>,\n twoSrc: EventType<boolean>,\n): EventType<boolean> {\n return (user) => {\n All(\n oneSrc,\n twoSrc,\n )(([one, two]) => {\n user(one || two);\n });\n };\n}\n","import { EventType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/not\n */\nexport function Not(baseSrc: EventType<boolean>): EventType<boolean> {\n return (user) => {\n baseSrc((v) => {\n user(!v);\n });\n };\n}\n","import { Applied, EventType } from \"silentium\";\n\n/**\n * Convert Any source to boolean source\n * https://silentium-lab.github.io/silentium-components/#/boolean/bool\n */\nexport function Bool(baseSrc: EventType): EventType<boolean> {\n return (user) => {\n Applied(baseSrc, Boolean)(user);\n };\n}\n","import { EventType, EventUserType } from \"silentium\";\n\n/**\n * Represents object from json\n */\nexport function FromJson<T = Record<string, unknown>>(\n jsonSrc: EventType<string>,\n errorOwner?: EventUserType,\n): EventType<T> {\n return (user) => {\n jsonSrc((json) => {\n try {\n user(JSON.parse(json));\n } catch (error) {\n errorOwner?.(new Error(`Failed to parse JSON: ${error}`));\n }\n });\n };\n}\n","import { EventType, EventUserType } from \"silentium\";\n\n/**\n * Represents json from object\n */\nexport function ToJson(\n dataSrc: EventType,\n errorOwner?: EventUserType,\n): EventType<string> {\n return (user) => {\n dataSrc((data: unknown) => {\n try {\n user(JSON.stringify(data));\n } catch {\n errorOwner?.(new Error(\"Failed to convert to JSON\"));\n }\n });\n };\n}\n","import { Applied, EventType } from \"silentium\";\n\n/**\n * Represents the first element Of an array.\n */\nexport function First<T extends Array<unknown>>(\n baseSrc: EventType<T>,\n): EventType<T[0]> {\n return (user) => {\n Applied(baseSrc, (a) => a[0])(user);\n };\n}\n"],"names":["Primitive","Shared","Filtered","isFilled","Detached","Late","Applied","All","ExecutorApplied","LateShared","Destructor","Of","vars","r"],"mappings":"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"}
1
+ {"version":3,"file":"silentium-components.cjs","sources":["../src/behaviors/Branch.ts","../src/behaviors/BranchLazy.ts","../src/behaviors/Const.ts","../src/behaviors/Deadline.ts","../src/behaviors/Deferred.ts","../src/behaviors/Detached.ts","../src/behaviors/Dirty.ts","../src/behaviors/Loading.ts","../src/behaviors/Lock.ts","../src/behaviors/Memo.ts","../src/behaviors/OnlyChanged.ts","../src/behaviors/Part.ts","../src/behaviors/Path.ts","../src/behaviors/Polling.ts","../src/behaviors/Shot.ts","../src/behaviors/Task.ts","../src/behaviors/Tick.ts","../src/behaviors/Transaction.ts","../src/structures/HashTable.ts","../src/structures/RecordOf.ts","../src/strings/Concatenated.ts","../src/strings/Template.ts","../src/system/RegexpMatched.ts","../src/system/RegexpReplaced.ts","../src/system/RegexpMatch.ts","../src/system/Set.ts","../src/navigation/Router.ts","../src/boolean/And.ts","../src/boolean/Or.ts","../src/boolean/Not.ts","../src/boolean/Bool.ts","../src/formats/FromJson.ts","../src/formats/ToJson.ts","../src/lists/First.ts"],"sourcesContent":["import { EventType, Primitive } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/branch\n */\nexport function Branch<Then, Else>(\n conditionSrc: EventType<boolean>,\n leftSrc: EventType<Then>,\n rightSrc?: EventType<Else>,\n): EventType<Then | Else> {\n return (user) => {\n const leftSync = Primitive(leftSrc);\n let rightSync: ReturnType<typeof Primitive<Else>>;\n\n if (rightSrc !== undefined) {\n rightSync = Primitive(rightSrc);\n }\n\n conditionSrc((v) => {\n let result: Then | Else | null = null;\n if (v) {\n result = leftSync.primitive();\n } else if (rightSync) {\n result = rightSync.primitive();\n }\n\n if (result !== null) {\n user(result);\n }\n });\n };\n}\n","import { EventType, DestructorType, ConstructorType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/branch\n */\nexport function BranchLazy<Then, Else>(\n conditionSrc: EventType<boolean>,\n leftSrc: ConstructorType<[], EventType<Then>>,\n rightSrc?: ConstructorType<[], EventType<Else>>,\n): EventType<Then | Else> {\n return (user) => {\n let Destructor: DestructorType | void;\n conditionSrc((v) => {\n if (Destructor !== undefined && typeof Destructor === \"function\") {\n Destructor();\n }\n let instance: EventType<Then | Else> | null = null;\n if (v) {\n instance = leftSrc();\n } else if (rightSrc) {\n instance = rightSrc();\n }\n if (instance) {\n Destructor = instance(user);\n }\n });\n\n return () => {\n Destructor?.();\n };\n };\n}\n","import { EventType } from \"silentium\";\n\nexport function Constant<T>(\n permanentValue: T,\n triggerSrc: EventType,\n): EventType<T> {\n return (user) => {\n triggerSrc(() => {\n user(permanentValue);\n });\n };\n}\n","import { EventType, Filtered, Shared, EventUserType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport function Deadline<T>(\n error: EventUserType<Error>,\n baseSrc: EventType<T>,\n timeoutSrc: EventType<number>,\n): EventType<T> {\n return (user) => {\n let timerHead: unknown = null;\n\n const s = Shared(baseSrc, true);\n\n timeoutSrc((timeout) => {\n if (timerHead) {\n clearTimeout(timerHead as number);\n }\n let timeoutReached = false;\n\n timerHead = setTimeout(() => {\n if (timeoutReached) {\n return;\n }\n timeoutReached = true;\n error(new Error(\"Timeout reached in Deadline class\"));\n }, timeout);\n\n const f = Filtered(s.event, () => !timeoutReached);\n f(user);\n\n s.event(() => {\n timeoutReached = true;\n });\n });\n };\n}\n","import { EventType, isFilled, 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 baseSrc: EventType<T>,\n triggerSrc: EventType<unknown>,\n): EventType<T> {\n return (user) => {\n const baseSync = Primitive(baseSrc);\n triggerSrc(() => {\n const value = baseSync.primitive();\n if (isFilled(value)) {\n user(value);\n }\n });\n };\n}\n","import { EventType, isFilled, Primitive } from \"silentium\";\n\nexport function Detached<T>(baseSrc: EventType<T>): EventType<T> {\n return function Detached(user) {\n const v = Primitive(baseSrc).primitive();\n if (isFilled(v)) {\n user(v);\n }\n };\n}\n","import { All, Applied, EventType, Late, SourceType } 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 baseEntitySource: EventType<T>,\n alwaysKeep: string[] = [],\n excludeKeys: string[] = [],\n cloneFn?: (v: T) => T,\n): SourceType<T> {\n const comparingSrc = Late<T>();\n\n if (cloneFn === undefined) {\n cloneFn = (value) => JSON.parse(JSON.stringify(value));\n }\n\n return {\n event: (user) => {\n const comparingDetached = Applied(comparingSrc.event, cloneFn);\n\n All(\n comparingDetached,\n baseEntitySource,\n )(([comparing, base]) => {\n if (!comparing) {\n return;\n }\n\n user(\n Object.fromEntries(\n Object.entries(comparing).filter(([key, value]) => {\n if (alwaysKeep.includes(key)) {\n return true;\n }\n if (excludeKeys.includes(key)) {\n return false;\n }\n return value !== (base as any)[key];\n }),\n ) as T,\n );\n });\n },\n use: (v) => {\n comparingSrc.use(v);\n },\n };\n}\n","import { EventType } from \"silentium\";\n\n/**\n * Representation Of loading process\n * first informatin source begins loading\n * second information source stops loading\n * https://silentium-lab.github.io/silentium-components/#/behaviors/loading\n */\nexport function Loading(\n loadingStartSrc: EventType<unknown>,\n loadingFinishSrc: EventType<unknown>,\n): EventType<boolean> {\n return (user) => {\n loadingStartSrc(() => user(true));\n loadingFinishSrc(() => user(false));\n };\n}\n","import { EventType, Filtered } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/lock\n */\nexport function Lock<T>(\n baseSrc: EventType<T>,\n lockSrc: EventType<boolean>,\n): EventType<T> {\n return (user) => {\n let locked = false;\n lockSrc((newLock) => {\n locked = newLock;\n });\n const i = Filtered(baseSrc, () => !locked);\n i(user);\n };\n}\n","import { EventType } 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>(baseSrc: EventType<T>): EventType<T> {\n return (user) => {\n let lastValue: T | null = null;\n\n baseSrc((v) => {\n if (v !== lastValue) {\n user(v);\n lastValue = v;\n }\n });\n };\n}\n","import { EventType } 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>(baseSrc: EventType<T>): EventType<T> {\n return (user) => {\n let firstValue = false;\n\n baseSrc((v) => {\n if (firstValue === false) {\n firstValue = true;\n } else {\n user(v);\n }\n });\n };\n}\n","import { All, EventType, isFilled, Primitive, SourceType } from \"silentium\";\n\n/**\n * Return source Of record path\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport function Part<R, T extends object | Array<any>, K extends string = any>(\n baseSrc: SourceType<T>,\n keySrc: EventType<K>,\n): SourceType<R> {\n const baseSync = Primitive(baseSrc.event);\n const keySync = Primitive(keySrc);\n return {\n event: (user) => {\n All(\n baseSrc.event,\n keySrc,\n )(([base, key]) => {\n const keyChunks = key.split(\".\");\n let value: unknown = base;\n keyChunks.forEach((keyChunk) => {\n value = (value as Record<string, unknown>)[keyChunk];\n });\n\n if (value !== undefined && value !== base) {\n user(value as R);\n }\n });\n },\n use: (value: R) => {\n const key = keySync.primitive();\n if (isFilled(key)) {\n baseSrc.use({\n ...baseSync.primitive(),\n [key]: value,\n } as T);\n }\n },\n };\n}\n","import { All, EventType } from \"silentium\";\n\n/**\n * Return source Of record path\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport function Path<R, T extends object | Array<any>, K extends string = any>(\n baseSrc: EventType<T>,\n keySrc: EventType<K>,\n): EventType<R> {\n return (user) => {\n All(\n baseSrc,\n keySrc,\n )(([base, key]) => {\n const keyChunks = key.split(\".\");\n let value: unknown = base;\n keyChunks.forEach((keyChunk) => {\n value = (value as Record<string, unknown>)[keyChunk];\n });\n\n if (value !== undefined && value !== base) {\n user(value as R);\n }\n });\n };\n}\n","import { EventType } from \"silentium\";\n\nexport function Polling<T>(\n baseSrc: EventType<T>,\n triggerSrc: EventType<T>,\n): EventType<T> {\n return (user) => {\n triggerSrc(() => {\n baseSrc(user);\n });\n };\n}\n","import { EventType, isFilled, 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>(\n targetSrc: EventType<T>,\n triggerSrc: EventType,\n): EventType<T> {\n return (user) => {\n const targetSync = Primitive(targetSrc);\n\n triggerSrc(() => {\n const value = targetSync.primitive();\n if (isFilled(value)) {\n user(value);\n }\n });\n };\n}\n","import { EventType, ExecutorApplied } from \"silentium\";\n\nexport function Task<T>(\n baseSrc: EventType<T>,\n delay: number = 0,\n): EventType<T> {\n return (user) => {\n let prevTimer: unknown | null = null;\n ExecutorApplied(baseSrc, (fn) => {\n return (v) => {\n if (prevTimer) {\n clearTimeout(prevTimer as number);\n }\n prevTimer = setTimeout(() => {\n fn(v);\n }, delay);\n };\n })(user);\n };\n}\n","import { EventType } 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>(baseSrc: EventType<T>): EventType<T> {\n return (user) => {\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 user(lastValue);\n lastValue = null;\n }\n });\n };\n\n baseSrc((v) => {\n lastValue = v;\n if (!microtaskScheduled) {\n scheduleMicrotask();\n }\n });\n };\n}\n","import {\n ConstructorType,\n DestroyableType,\n Destructor,\n EventType,\n LateShared,\n Of,\n} from \"silentium\";\nimport { Detached } from \"../behaviors/Detached\";\n\n/**\n * Do something on event value.\n * Each event value will create new eventBuilder instance\n */\nexport function Transaction<T, R = unknown>(\n $base: EventType<T>,\n eventBuilder: ConstructorType<\n [EventType<T>, ...EventType<any>[]],\n EventType<R>\n >,\n ...args: EventType[]\n): EventType<R> {\n return (user) => {\n const $res = LateShared<R>();\n const destructors: DestroyableType[] = [];\n\n $base((v) => {\n const $event = Destructor(\n eventBuilder(Of(v), ...args.map((a) => Detached(a))),\n );\n destructors.push($event);\n $event.event($res.use);\n });\n $res.event(user);\n\n return () => {\n destructors.forEach((d) => d.destroy());\n destructors.length = 0;\n };\n };\n}\n","import { EventType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/structures/hash-table\n */\nexport function HashTable<T>(\n baseSrc: EventType<[string, unknown]>,\n): EventType<T> {\n return (user) => {\n const record: Record<string, unknown> = {};\n\n baseSrc(([key, value]) => {\n record[key] = value;\n user(record as T);\n });\n };\n}\n","import { All, EventType } from \"silentium\";\n\ntype UnInformation<T> = T extends EventType<infer U> ? U : never;\n\n/**\n * Returns record Of data from record Of sources\n * https://silentium-lab.github.io/silentium-components/#/structures/record\n */\nexport function RecordOf<T extends EventType>(\n recordSrc: Record<string, T>,\n): EventType<Record<string, UnInformation<T>>> {\n return (user) => {\n const keys = Object.keys(recordSrc);\n All(...Object.values(recordSrc))((entries) => {\n const record: Record<string, any> = {};\n entries.forEach((entry, index) => {\n record[keys[index]] = entry;\n });\n user(record);\n });\n };\n}\n","import { All, EventType, 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: EventType<string>[],\n joinPartSrc: EventType<string> = Of(\"\"),\n): EventType<string> {\n return (user) => {\n All(\n joinPartSrc,\n ...sources,\n )(([joinPart, ...strings]) => {\n user(strings.join(joinPart));\n });\n };\n}\n","import {\n All,\n Applied,\n EventType,\n Destructor,\n DestructorType,\n Of,\n} from \"silentium\";\nimport { RecordOf } from \"../structures\";\n\nexport function Template(\n theSrc: EventType<string> = Of(\"\"),\n placesSrc: EventType<Record<string, unknown>> = Of({}),\n) {\n let placesCounter = 0;\n const vars: Record<string, EventType> = {\n $TPL: Of(\"$TPL\"),\n };\n const destructors: DestructorType[] = [];\n return {\n value: <EventType<string>>((user) => {\n const varsSrc = RecordOf(vars);\n Applied(All(theSrc, placesSrc, varsSrc), ([base, rules, vars]) => {\n Object.entries(rules).forEach(([ph, val]) => {\n base = base.replaceAll(ph, String(val));\n });\n Object.entries(vars).forEach(([ph, val]) => {\n base = base.replaceAll(ph, String(val));\n });\n\n return base;\n })(user);\n }),\n template: (value: string) => {\n theSrc = Of(value);\n },\n /**\n * Ability to register variable\n * in concrete place Of template\n */\n var: (src: EventType<string>) => {\n const varName = `$var${placesCounter}`;\n placesCounter += 1;\n vars[varName] = Destructor(src, (d: DestructorType) => {\n destructors.push(d);\n }).event;\n return varName;\n },\n destroy() {\n destructors.forEach((d) => d());\n },\n };\n}\n","import { All, EventType, 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: EventType<string>,\n valueSrc: EventType<string>,\n flagsSrc: EventType<string> = Of(\"\"),\n): EventType<boolean> {\n return (user) => {\n All(\n patternSrc,\n valueSrc,\n flagsSrc,\n )(([pattern, value, flags]) => {\n user(new RegExp(pattern, flags).test(value));\n });\n };\n}\n","import { All, EventType, 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: EventType<string>,\n patternSrc: EventType<string>,\n replaceValueSrc: EventType<string>,\n flagsSrc: EventType<string> = Of(\"\"),\n): EventType<string> {\n return (user) => {\n All(\n patternSrc,\n valueSrc,\n replaceValueSrc,\n flagsSrc,\n )(([pattern, value, replaceValue, flags]) => {\n user(String(value).replace(new RegExp(pattern, flags), replaceValue));\n });\n };\n}\n","import { All, EventType, 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: EventType<string>,\n valueSrc: EventType<string>,\n flagsSrc: EventType<string> = Of(\"\"),\n): EventType<string[]> {\n return (user) => {\n All(\n patternSrc,\n valueSrc,\n flagsSrc,\n )(([pattern, value, flags]) => {\n const result = new RegExp(pattern, flags).exec(value);\n user(result ?? []);\n });\n };\n}\n","import { All, EventType } from \"silentium\";\n\n/**\n * Ability to mutate some object, helpful when integrate to procedure systems\n * https://silentium-lab.github.io/silentium-components/#/system/set\n */\nexport function Set<T extends Record<string, unknown>>(\n baseSrc: EventType<T>,\n keySrc: EventType<string>,\n valueSrc: EventType<unknown>,\n): EventType<T> {\n return (user) => {\n All(\n baseSrc,\n keySrc,\n valueSrc,\n )(([base, key, value]) => {\n (base as Record<string, unknown>)[key] = value;\n user(base);\n });\n };\n}\n","import {\n All,\n Applied,\n EventType,\n Destructor,\n DestructorType,\n Of,\n ConstructorType,\n} from \"silentium\";\nimport { RegexpMatched } from \"../system\";\nimport { BranchLazy } from \"../behaviors\";\n\nexport interface Route<T> {\n pattern: string;\n patternFlags?: string;\n template: ConstructorType<[], EventType<T>>;\n}\n\nconst emptySrc = () => Of(false);\n\n/**\n * Router component what will return template if url matches pattern\n * https://silentium-lab.github.io/silentium-components/#/navigation/router\n */\nexport function Router<T = \"string\">(\n urlSrc: EventType<string>,\n routesSrc: EventType<Route<T>[]>,\n defaultSrc: ConstructorType<[], EventType<T>>,\n): EventType<T> {\n return (user) => {\n const destructors: DestructorType[] = [];\n const destroyAllData = () => {\n destructors.forEach((d) => d());\n destructors.length = 0;\n };\n All(\n routesSrc,\n urlSrc,\n )(([routes, url]) => {\n destroyAllData();\n const instance = All(\n defaultSrc(),\n All(\n ...routes.map(\n (r) =>\n Destructor(\n BranchLazy(\n RegexpMatched(\n Of(r.pattern),\n Of(url),\n r.patternFlags ? Of(r.patternFlags) : undefined,\n ),\n r.template,\n emptySrc,\n ),\n (d: DestructorType) => destructors.push(d),\n ).event,\n ),\n ),\n );\n\n // Return first not false or default\n Applied(instance, (r) => {\n const firstReal = r[1].find((r) => r !== false);\n\n if (firstReal) {\n return firstReal as T;\n }\n\n return r[0];\n })(user);\n });\n\n return destroyAllData;\n };\n}\n","import { All, EventType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/and\n */\nexport function And(\n oneSrc: EventType<boolean>,\n twoSrc: EventType<boolean>,\n): EventType<boolean> {\n return (user) => {\n All(\n oneSrc,\n twoSrc,\n )(([one, two]) => {\n user(one && two);\n });\n };\n}\n","import { All, EventType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/or\n */\nexport function Or(\n oneSrc: EventType<boolean>,\n twoSrc: EventType<boolean>,\n): EventType<boolean> {\n return (user) => {\n All(\n oneSrc,\n twoSrc,\n )(([one, two]) => {\n user(one || two);\n });\n };\n}\n","import { EventType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/not\n */\nexport function Not(baseSrc: EventType<boolean>): EventType<boolean> {\n return (user) => {\n baseSrc((v) => {\n user(!v);\n });\n };\n}\n","import { Applied, EventType } from \"silentium\";\n\n/**\n * Convert Any source to boolean source\n * https://silentium-lab.github.io/silentium-components/#/boolean/bool\n */\nexport function Bool(baseSrc: EventType): EventType<boolean> {\n return (user) => {\n Applied(baseSrc, Boolean)(user);\n };\n}\n","import { EventType, EventUserType } from \"silentium\";\n\n/**\n * Represents object from json\n */\nexport function FromJson<T = Record<string, unknown>>(\n jsonSrc: EventType<string>,\n errorOwner?: EventUserType,\n): EventType<T> {\n return (user) => {\n jsonSrc((json) => {\n try {\n user(JSON.parse(json));\n } catch (error) {\n errorOwner?.(new Error(`Failed to parse JSON: ${error}`));\n }\n });\n };\n}\n","import { EventType, EventUserType } from \"silentium\";\n\n/**\n * Represents json from object\n */\nexport function ToJson(\n dataSrc: EventType,\n errorOwner?: EventUserType,\n): EventType<string> {\n return (user) => {\n dataSrc((data: unknown) => {\n try {\n user(JSON.stringify(data));\n } catch {\n errorOwner?.(new Error(\"Failed to convert to JSON\"));\n }\n });\n };\n}\n","import { Applied, EventType } from \"silentium\";\n\n/**\n * Represents the first element Of an array.\n */\nexport function First<T extends Array<unknown>>(\n baseSrc: EventType<T>,\n): EventType<T[0]> {\n return (user) => {\n Applied(baseSrc, (a) => a[0])(user);\n };\n}\n"],"names":["Primitive","Shared","Filtered","isFilled","Detached","Late","Applied","All","ExecutorApplied","LateShared","Destructor","Of","vars","r"],"mappings":"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"}
@@ -286,16 +286,16 @@ function Tick(baseSrc) {
286
286
  }
287
287
 
288
288
  function Transaction($base, eventBuilder, ...args) {
289
- const $res = LateShared();
290
- const destructors = [];
291
- $base((v) => {
292
- const $event = Destructor(
293
- eventBuilder(Of(v), ...args.map((a) => Detached(a)))
294
- );
295
- destructors.push($event);
296
- $event.event($res.use);
297
- });
298
289
  return (user) => {
290
+ const $res = LateShared();
291
+ const destructors = [];
292
+ $base((v) => {
293
+ const $event = Destructor(
294
+ eventBuilder(Of(v), ...args.map((a) => Detached(a)))
295
+ );
296
+ destructors.push($event);
297
+ $event.event($res.use);
298
+ });
299
299
  $res.event(user);
300
300
  return () => {
301
301
  destructors.forEach((d) => d.destroy());
@@ -1 +1 @@
1
- {"version":3,"file":"silentium-components.js","sources":["../src/behaviors/Branch.ts","../src/behaviors/BranchLazy.ts","../src/behaviors/Const.ts","../src/behaviors/Deadline.ts","../src/behaviors/Deferred.ts","../src/behaviors/Detached.ts","../src/behaviors/Dirty.ts","../src/behaviors/Loading.ts","../src/behaviors/Lock.ts","../src/behaviors/Memo.ts","../src/behaviors/OnlyChanged.ts","../src/behaviors/Part.ts","../src/behaviors/Path.ts","../src/behaviors/Polling.ts","../src/behaviors/Shot.ts","../src/behaviors/Task.ts","../src/behaviors/Tick.ts","../src/behaviors/Transaction.ts","../src/structures/HashTable.ts","../src/structures/RecordOf.ts","../src/strings/Concatenated.ts","../src/strings/Template.ts","../src/system/RegexpMatched.ts","../src/system/RegexpReplaced.ts","../src/system/RegexpMatch.ts","../src/system/Set.ts","../src/navigation/Router.ts","../src/boolean/And.ts","../src/boolean/Or.ts","../src/boolean/Not.ts","../src/boolean/Bool.ts","../src/formats/FromJson.ts","../src/formats/ToJson.ts","../src/lists/First.ts"],"sourcesContent":["import { EventType, Primitive } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/branch\n */\nexport function Branch<Then, Else>(\n conditionSrc: EventType<boolean>,\n leftSrc: EventType<Then>,\n rightSrc?: EventType<Else>,\n): EventType<Then | Else> {\n return (user) => {\n const leftSync = Primitive(leftSrc);\n let rightSync: ReturnType<typeof Primitive<Else>>;\n\n if (rightSrc !== undefined) {\n rightSync = Primitive(rightSrc);\n }\n\n conditionSrc((v) => {\n let result: Then | Else | null = null;\n if (v) {\n result = leftSync.primitive();\n } else if (rightSync) {\n result = rightSync.primitive();\n }\n\n if (result !== null) {\n user(result);\n }\n });\n };\n}\n","import { EventType, DestructorType, ConstructorType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/branch\n */\nexport function BranchLazy<Then, Else>(\n conditionSrc: EventType<boolean>,\n leftSrc: ConstructorType<[], EventType<Then>>,\n rightSrc?: ConstructorType<[], EventType<Else>>,\n): EventType<Then | Else> {\n return (user) => {\n let Destructor: DestructorType | void;\n conditionSrc((v) => {\n if (Destructor !== undefined && typeof Destructor === \"function\") {\n Destructor();\n }\n let instance: EventType<Then | Else> | null = null;\n if (v) {\n instance = leftSrc();\n } else if (rightSrc) {\n instance = rightSrc();\n }\n if (instance) {\n Destructor = instance(user);\n }\n });\n\n return () => {\n Destructor?.();\n };\n };\n}\n","import { EventType } from \"silentium\";\n\nexport function Constant<T>(\n permanentValue: T,\n triggerSrc: EventType,\n): EventType<T> {\n return (user) => {\n triggerSrc(() => {\n user(permanentValue);\n });\n };\n}\n","import { EventType, Filtered, Shared, EventUserType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport function Deadline<T>(\n error: EventUserType<Error>,\n baseSrc: EventType<T>,\n timeoutSrc: EventType<number>,\n): EventType<T> {\n return (user) => {\n let timerHead: unknown = null;\n\n const s = Shared(baseSrc, true);\n\n timeoutSrc((timeout) => {\n if (timerHead) {\n clearTimeout(timerHead as number);\n }\n let timeoutReached = false;\n\n timerHead = setTimeout(() => {\n if (timeoutReached) {\n return;\n }\n timeoutReached = true;\n error(new Error(\"Timeout reached in Deadline class\"));\n }, timeout);\n\n const f = Filtered(s.event, () => !timeoutReached);\n f(user);\n\n s.event(() => {\n timeoutReached = true;\n });\n });\n };\n}\n","import { EventType, isFilled, 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 baseSrc: EventType<T>,\n triggerSrc: EventType<unknown>,\n): EventType<T> {\n return (user) => {\n const baseSync = Primitive(baseSrc);\n triggerSrc(() => {\n const value = baseSync.primitive();\n if (isFilled(value)) {\n user(value);\n }\n });\n };\n}\n","import { EventType, isFilled, Primitive } from \"silentium\";\n\nexport function Detached<T>(baseSrc: EventType<T>): EventType<T> {\n return function Detached(user) {\n const v = Primitive(baseSrc).primitive();\n if (isFilled(v)) {\n user(v);\n }\n };\n}\n","import { All, Applied, EventType, Late, SourceType } 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 baseEntitySource: EventType<T>,\n alwaysKeep: string[] = [],\n excludeKeys: string[] = [],\n cloneFn?: (v: T) => T,\n): SourceType<T> {\n const comparingSrc = Late<T>();\n\n if (cloneFn === undefined) {\n cloneFn = (value) => JSON.parse(JSON.stringify(value));\n }\n\n return {\n event: (user) => {\n const comparingDetached = Applied(comparingSrc.event, cloneFn);\n\n All(\n comparingDetached,\n baseEntitySource,\n )(([comparing, base]) => {\n if (!comparing) {\n return;\n }\n\n user(\n Object.fromEntries(\n Object.entries(comparing).filter(([key, value]) => {\n if (alwaysKeep.includes(key)) {\n return true;\n }\n if (excludeKeys.includes(key)) {\n return false;\n }\n return value !== (base as any)[key];\n }),\n ) as T,\n );\n });\n },\n use: (v) => {\n comparingSrc.use(v);\n },\n };\n}\n","import { EventType } from \"silentium\";\n\n/**\n * Representation Of loading process\n * first informatin source begins loading\n * second information source stops loading\n * https://silentium-lab.github.io/silentium-components/#/behaviors/loading\n */\nexport function Loading(\n loadingStartSrc: EventType<unknown>,\n loadingFinishSrc: EventType<unknown>,\n): EventType<boolean> {\n return (user) => {\n loadingStartSrc(() => user(true));\n loadingFinishSrc(() => user(false));\n };\n}\n","import { EventType, Filtered } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/lock\n */\nexport function Lock<T>(\n baseSrc: EventType<T>,\n lockSrc: EventType<boolean>,\n): EventType<T> {\n return (user) => {\n let locked = false;\n lockSrc((newLock) => {\n locked = newLock;\n });\n const i = Filtered(baseSrc, () => !locked);\n i(user);\n };\n}\n","import { EventType } 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>(baseSrc: EventType<T>): EventType<T> {\n return (user) => {\n let lastValue: T | null = null;\n\n baseSrc((v) => {\n if (v !== lastValue) {\n user(v);\n lastValue = v;\n }\n });\n };\n}\n","import { EventType } 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>(baseSrc: EventType<T>): EventType<T> {\n return (user) => {\n let firstValue = false;\n\n baseSrc((v) => {\n if (firstValue === false) {\n firstValue = true;\n } else {\n user(v);\n }\n });\n };\n}\n","import { All, EventType, isFilled, Primitive, SourceType } from \"silentium\";\n\n/**\n * Return source Of record path\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport function Part<R, T extends object | Array<any>, K extends string = any>(\n baseSrc: SourceType<T>,\n keySrc: EventType<K>,\n): SourceType<R> {\n const baseSync = Primitive(baseSrc.event);\n const keySync = Primitive(keySrc);\n return {\n event: (user) => {\n All(\n baseSrc.event,\n keySrc,\n )(([base, key]) => {\n const keyChunks = key.split(\".\");\n let value: unknown = base;\n keyChunks.forEach((keyChunk) => {\n value = (value as Record<string, unknown>)[keyChunk];\n });\n\n if (value !== undefined && value !== base) {\n user(value as R);\n }\n });\n },\n use: (value: R) => {\n const key = keySync.primitive();\n if (isFilled(key)) {\n baseSrc.use({\n ...baseSync.primitive(),\n [key]: value,\n } as T);\n }\n },\n };\n}\n","import { All, EventType } from \"silentium\";\n\n/**\n * Return source Of record path\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport function Path<R, T extends object | Array<any>, K extends string = any>(\n baseSrc: EventType<T>,\n keySrc: EventType<K>,\n): EventType<R> {\n return (user) => {\n All(\n baseSrc,\n keySrc,\n )(([base, key]) => {\n const keyChunks = key.split(\".\");\n let value: unknown = base;\n keyChunks.forEach((keyChunk) => {\n value = (value as Record<string, unknown>)[keyChunk];\n });\n\n if (value !== undefined && value !== base) {\n user(value as R);\n }\n });\n };\n}\n","import { EventType } from \"silentium\";\n\nexport function Polling<T>(\n baseSrc: EventType<T>,\n triggerSrc: EventType<T>,\n): EventType<T> {\n return (user) => {\n triggerSrc(() => {\n baseSrc(user);\n });\n };\n}\n","import { EventType, isFilled, 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>(\n targetSrc: EventType<T>,\n triggerSrc: EventType,\n): EventType<T> {\n return (user) => {\n const targetSync = Primitive(targetSrc);\n\n triggerSrc(() => {\n const value = targetSync.primitive();\n if (isFilled(value)) {\n user(value);\n }\n });\n };\n}\n","import { EventType, ExecutorApplied } from \"silentium\";\n\nexport function Task<T>(\n baseSrc: EventType<T>,\n delay: number = 0,\n): EventType<T> {\n return (user) => {\n let prevTimer: unknown | null = null;\n ExecutorApplied(baseSrc, (fn) => {\n return (v) => {\n if (prevTimer) {\n clearTimeout(prevTimer as number);\n }\n prevTimer = setTimeout(() => {\n fn(v);\n }, delay);\n };\n })(user);\n };\n}\n","import { EventType } 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>(baseSrc: EventType<T>): EventType<T> {\n return (user) => {\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 user(lastValue);\n lastValue = null;\n }\n });\n };\n\n baseSrc((v) => {\n lastValue = v;\n if (!microtaskScheduled) {\n scheduleMicrotask();\n }\n });\n };\n}\n","import {\n ConstructorType,\n DestroyableType,\n Destructor,\n EventType,\n LateShared,\n Of,\n} from \"silentium\";\nimport { Detached } from \"../behaviors/Detached\";\n\n/**\n * Do something on event value.\n * Each event value will create new eventBuilder instance\n */\nexport function Transaction<T, R = unknown>(\n $base: EventType<T>,\n eventBuilder: ConstructorType<\n [EventType<T>, ...EventType<any>[]],\n EventType<R>\n >,\n ...args: EventType[]\n): EventType<R> {\n const $res = LateShared<R>();\n const destructors: DestroyableType[] = [];\n\n $base((v) => {\n const $event = Destructor(\n eventBuilder(Of(v), ...args.map((a) => Detached(a))),\n );\n destructors.push($event);\n $event.event($res.use);\n });\n\n return (user) => {\n $res.event(user);\n\n return () => {\n destructors.forEach((d) => d.destroy());\n destructors.length = 0;\n };\n };\n}\n","import { EventType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/structures/hash-table\n */\nexport function HashTable<T>(\n baseSrc: EventType<[string, unknown]>,\n): EventType<T> {\n return (user) => {\n const record: Record<string, unknown> = {};\n\n baseSrc(([key, value]) => {\n record[key] = value;\n user(record as T);\n });\n };\n}\n","import { All, EventType } from \"silentium\";\n\ntype UnInformation<T> = T extends EventType<infer U> ? U : never;\n\n/**\n * Returns record Of data from record Of sources\n * https://silentium-lab.github.io/silentium-components/#/structures/record\n */\nexport function RecordOf<T extends EventType>(\n recordSrc: Record<string, T>,\n): EventType<Record<string, UnInformation<T>>> {\n return (user) => {\n const keys = Object.keys(recordSrc);\n All(...Object.values(recordSrc))((entries) => {\n const record: Record<string, any> = {};\n entries.forEach((entry, index) => {\n record[keys[index]] = entry;\n });\n user(record);\n });\n };\n}\n","import { All, EventType, 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: EventType<string>[],\n joinPartSrc: EventType<string> = Of(\"\"),\n): EventType<string> {\n return (user) => {\n All(\n joinPartSrc,\n ...sources,\n )(([joinPart, ...strings]) => {\n user(strings.join(joinPart));\n });\n };\n}\n","import {\n All,\n Applied,\n EventType,\n Destructor,\n DestructorType,\n Of,\n} from \"silentium\";\nimport { RecordOf } from \"../structures\";\n\nexport function Template(\n theSrc: EventType<string> = Of(\"\"),\n placesSrc: EventType<Record<string, unknown>> = Of({}),\n) {\n let placesCounter = 0;\n const vars: Record<string, EventType> = {\n $TPL: Of(\"$TPL\"),\n };\n const destructors: DestructorType[] = [];\n return {\n value: <EventType<string>>((user) => {\n const varsSrc = RecordOf(vars);\n Applied(All(theSrc, placesSrc, varsSrc), ([base, rules, vars]) => {\n Object.entries(rules).forEach(([ph, val]) => {\n base = base.replaceAll(ph, String(val));\n });\n Object.entries(vars).forEach(([ph, val]) => {\n base = base.replaceAll(ph, String(val));\n });\n\n return base;\n })(user);\n }),\n template: (value: string) => {\n theSrc = Of(value);\n },\n /**\n * Ability to register variable\n * in concrete place Of template\n */\n var: (src: EventType<string>) => {\n const varName = `$var${placesCounter}`;\n placesCounter += 1;\n vars[varName] = Destructor(src, (d: DestructorType) => {\n destructors.push(d);\n }).event;\n return varName;\n },\n destroy() {\n destructors.forEach((d) => d());\n },\n };\n}\n","import { All, EventType, 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: EventType<string>,\n valueSrc: EventType<string>,\n flagsSrc: EventType<string> = Of(\"\"),\n): EventType<boolean> {\n return (user) => {\n All(\n patternSrc,\n valueSrc,\n flagsSrc,\n )(([pattern, value, flags]) => {\n user(new RegExp(pattern, flags).test(value));\n });\n };\n}\n","import { All, EventType, 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: EventType<string>,\n patternSrc: EventType<string>,\n replaceValueSrc: EventType<string>,\n flagsSrc: EventType<string> = Of(\"\"),\n): EventType<string> {\n return (user) => {\n All(\n patternSrc,\n valueSrc,\n replaceValueSrc,\n flagsSrc,\n )(([pattern, value, replaceValue, flags]) => {\n user(String(value).replace(new RegExp(pattern, flags), replaceValue));\n });\n };\n}\n","import { All, EventType, 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: EventType<string>,\n valueSrc: EventType<string>,\n flagsSrc: EventType<string> = Of(\"\"),\n): EventType<string[]> {\n return (user) => {\n All(\n patternSrc,\n valueSrc,\n flagsSrc,\n )(([pattern, value, flags]) => {\n const result = new RegExp(pattern, flags).exec(value);\n user(result ?? []);\n });\n };\n}\n","import { All, EventType } from \"silentium\";\n\n/**\n * Ability to mutate some object, helpful when integrate to procedure systems\n * https://silentium-lab.github.io/silentium-components/#/system/set\n */\nexport function Set<T extends Record<string, unknown>>(\n baseSrc: EventType<T>,\n keySrc: EventType<string>,\n valueSrc: EventType<unknown>,\n): EventType<T> {\n return (user) => {\n All(\n baseSrc,\n keySrc,\n valueSrc,\n )(([base, key, value]) => {\n (base as Record<string, unknown>)[key] = value;\n user(base);\n });\n };\n}\n","import {\n All,\n Applied,\n EventType,\n Destructor,\n DestructorType,\n Of,\n ConstructorType,\n} from \"silentium\";\nimport { RegexpMatched } from \"../system\";\nimport { BranchLazy } from \"../behaviors\";\n\nexport interface Route<T> {\n pattern: string;\n patternFlags?: string;\n template: ConstructorType<[], EventType<T>>;\n}\n\nconst emptySrc = () => Of(false);\n\n/**\n * Router component what will return template if url matches pattern\n * https://silentium-lab.github.io/silentium-components/#/navigation/router\n */\nexport function Router<T = \"string\">(\n urlSrc: EventType<string>,\n routesSrc: EventType<Route<T>[]>,\n defaultSrc: ConstructorType<[], EventType<T>>,\n): EventType<T> {\n return (user) => {\n const destructors: DestructorType[] = [];\n const destroyAllData = () => {\n destructors.forEach((d) => d());\n destructors.length = 0;\n };\n All(\n routesSrc,\n urlSrc,\n )(([routes, url]) => {\n destroyAllData();\n const instance = All(\n defaultSrc(),\n All(\n ...routes.map(\n (r) =>\n Destructor(\n BranchLazy(\n RegexpMatched(\n Of(r.pattern),\n Of(url),\n r.patternFlags ? Of(r.patternFlags) : undefined,\n ),\n r.template,\n emptySrc,\n ),\n (d: DestructorType) => destructors.push(d),\n ).event,\n ),\n ),\n );\n\n // Return first not false or default\n Applied(instance, (r) => {\n const firstReal = r[1].find((r) => r !== false);\n\n if (firstReal) {\n return firstReal as T;\n }\n\n return r[0];\n })(user);\n });\n\n return destroyAllData;\n };\n}\n","import { All, EventType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/and\n */\nexport function And(\n oneSrc: EventType<boolean>,\n twoSrc: EventType<boolean>,\n): EventType<boolean> {\n return (user) => {\n All(\n oneSrc,\n twoSrc,\n )(([one, two]) => {\n user(one && two);\n });\n };\n}\n","import { All, EventType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/or\n */\nexport function Or(\n oneSrc: EventType<boolean>,\n twoSrc: EventType<boolean>,\n): EventType<boolean> {\n return (user) => {\n All(\n oneSrc,\n twoSrc,\n )(([one, two]) => {\n user(one || two);\n });\n };\n}\n","import { EventType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/not\n */\nexport function Not(baseSrc: EventType<boolean>): EventType<boolean> {\n return (user) => {\n baseSrc((v) => {\n user(!v);\n });\n };\n}\n","import { Applied, EventType } from \"silentium\";\n\n/**\n * Convert Any source to boolean source\n * https://silentium-lab.github.io/silentium-components/#/boolean/bool\n */\nexport function Bool(baseSrc: EventType): EventType<boolean> {\n return (user) => {\n Applied(baseSrc, Boolean)(user);\n };\n}\n","import { EventType, EventUserType } from \"silentium\";\n\n/**\n * Represents object from json\n */\nexport function FromJson<T = Record<string, unknown>>(\n jsonSrc: EventType<string>,\n errorOwner?: EventUserType,\n): EventType<T> {\n return (user) => {\n jsonSrc((json) => {\n try {\n user(JSON.parse(json));\n } catch (error) {\n errorOwner?.(new Error(`Failed to parse JSON: ${error}`));\n }\n });\n };\n}\n","import { EventType, EventUserType } from \"silentium\";\n\n/**\n * Represents json from object\n */\nexport function ToJson(\n dataSrc: EventType,\n errorOwner?: EventUserType,\n): EventType<string> {\n return (user) => {\n dataSrc((data: unknown) => {\n try {\n user(JSON.stringify(data));\n } catch {\n errorOwner?.(new Error(\"Failed to convert to JSON\"));\n }\n });\n };\n}\n","import { Applied, EventType } from \"silentium\";\n\n/**\n * Represents the first element Of an array.\n */\nexport function First<T extends Array<unknown>>(\n baseSrc: EventType<T>,\n): EventType<T[0]> {\n return (user) => {\n Applied(baseSrc, (a) => a[0])(user);\n };\n}\n"],"names":["Detached","vars","r"],"mappings":";;AAKgB,SAAA,MAAA,CACd,YACA,EAAA,OAAA,EACA,QACwB,EAAA;AACxB,EAAA,OAAO,CAAC,IAAS,KAAA;AACf,IAAM,MAAA,QAAA,GAAW,UAAU,OAAO,CAAA;AAClC,IAAI,IAAA,SAAA;AAEJ,IAAA,IAAI,aAAa,MAAW,EAAA;AAC1B,MAAA,SAAA,GAAY,UAAU,QAAQ,CAAA;AAAA;AAGhC,IAAA,YAAA,CAAa,CAAC,CAAM,KAAA;AAClB,MAAA,IAAI,MAA6B,GAAA,IAAA;AACjC,MAAA,IAAI,CAAG,EAAA;AACL,QAAA,MAAA,GAAS,SAAS,SAAU,EAAA;AAAA,iBACnB,SAAW,EAAA;AACpB,QAAA,MAAA,GAAS,UAAU,SAAU,EAAA;AAAA;AAG/B,MAAA,IAAI,WAAW,IAAM,EAAA;AACnB,QAAA,IAAA,CAAK,MAAM,CAAA;AAAA;AACb,KACD,CAAA;AAAA,GACH;AACF;;AC1BgB,SAAA,UAAA,CACd,YACA,EAAA,OAAA,EACA,QACwB,EAAA;AACxB,EAAA,OAAO,CAAC,IAAS,KAAA;AACf,IAAI,IAAA,UAAA;AACJ,IAAA,YAAA,CAAa,CAAC,CAAM,KAAA;AAClB,MAAA,IAAI,UAAe,KAAA,MAAA,IAAa,OAAO,UAAA,KAAe,UAAY,EAAA;AAChE,QAAW,UAAA,EAAA;AAAA;AAEb,MAAA,IAAI,QAA0C,GAAA,IAAA;AAC9C,MAAA,IAAI,CAAG,EAAA;AACL,QAAA,QAAA,GAAW,OAAQ,EAAA;AAAA,iBACV,QAAU,EAAA;AACnB,QAAA,QAAA,GAAW,QAAS,EAAA;AAAA;AAEtB,MAAA,IAAI,QAAU,EAAA;AACZ,QAAA,UAAA,GAAa,SAAS,IAAI,CAAA;AAAA;AAC5B,KACD,CAAA;AAED,IAAA,OAAO,MAAM;AACX,MAAa,UAAA,IAAA;AAAA,KACf;AAAA,GACF;AACF;;AC7BgB,SAAA,QAAA,CACd,gBACA,UACc,EAAA;AACd,EAAA,OAAO,CAAC,IAAS,KAAA;AACf,IAAA,UAAA,CAAW,MAAM;AACf,MAAA,IAAA,CAAK,cAAc,CAAA;AAAA,KACpB,CAAA;AAAA,GACH;AACF;;ACNgB,SAAA,QAAA,CACd,KACA,EAAA,OAAA,EACA,UACc,EAAA;AACd,EAAA,OAAO,CAAC,IAAS,KAAA;AACf,IAAA,IAAI,SAAqB,GAAA,IAAA;AAEzB,IAAM,MAAA,CAAA,GAAI,MAAO,CAAA,OAAA,EAAS,IAAI,CAAA;AAE9B,IAAA,UAAA,CAAW,CAAC,OAAY,KAAA;AACtB,MAAA,IAAI,SAAW,EAAA;AACb,QAAA,YAAA,CAAa,SAAmB,CAAA;AAAA;AAElC,MAAA,IAAI,cAAiB,GAAA,KAAA;AAErB,MAAA,SAAA,GAAY,WAAW,MAAM;AAC3B,QAAA,IAAI,cAAgB,EAAA;AAClB,UAAA;AAAA;AAEF,QAAiB,cAAA,GAAA,IAAA;AACjB,QAAM,KAAA,CAAA,IAAI,KAAM,CAAA,mCAAmC,CAAC,CAAA;AAAA,SACnD,OAAO,CAAA;AAEV,MAAA,MAAM,IAAI,QAAS,CAAA,CAAA,CAAE,KAAO,EAAA,MAAM,CAAC,cAAc,CAAA;AACjD,MAAA,CAAA,CAAE,IAAI,CAAA;AAEN,MAAA,CAAA,CAAE,MAAM,MAAM;AACZ,QAAiB,cAAA,GAAA,IAAA;AAAA,OAClB,CAAA;AAAA,KACF,CAAA;AAAA,GACH;AACF;;AC/BgB,SAAA,QAAA,CACd,SACA,UACc,EAAA;AACd,EAAA,OAAO,CAAC,IAAS,KAAA;AACf,IAAM,MAAA,QAAA,GAAW,UAAU,OAAO,CAAA;AAClC,IAAA,UAAA,CAAW,MAAM;AACf,MAAM,MAAA,KAAA,GAAQ,SAAS,SAAU,EAAA;AACjC,MAAI,IAAA,QAAA,CAAS,KAAK,CAAG,EAAA;AACnB,QAAA,IAAA,CAAK,KAAK,CAAA;AAAA;AACZ,KACD,CAAA;AAAA,GACH;AACF;;ACjBO,SAAS,SAAY,OAAqC,EAAA;AAC/D,EAAO,OAAA,SAASA,UAAS,IAAM,EAAA;AAC7B,IAAA,MAAM,CAAI,GAAA,SAAA,CAAU,OAAO,CAAA,CAAE,SAAU,EAAA;AACvC,IAAI,IAAA,QAAA,CAAS,CAAC,CAAG,EAAA;AACf,MAAA,IAAA,CAAK,CAAC,CAAA;AAAA;AACR,GACF;AACF;;ACFgB,SAAA,KAAA,CACd,kBACA,UAAuB,GAAA,IACvB,WAAwB,GAAA,IACxB,OACe,EAAA;AACf,EAAA,MAAM,eAAe,IAAQ,EAAA;AAE7B,EAAA,IAAI,YAAY,MAAW,EAAA;AACzB,IAAA,OAAA,GAAU,CAAC,KAAU,KAAA,IAAA,CAAK,MAAM,IAAK,CAAA,SAAA,CAAU,KAAK,CAAC,CAAA;AAAA;AAGvD,EAAO,OAAA;AAAA,IACL,KAAA,EAAO,CAAC,IAAS,KAAA;AACf,MAAA,MAAM,iBAAoB,GAAA,OAAA,CAAQ,YAAa,CAAA,KAAA,EAAO,OAAO,CAAA;AAE7D,MAAA,GAAA;AAAA,QACE,iBAAA;AAAA,QACA;AAAA,OACA,CAAA,CAAC,CAAC,SAAA,EAAW,IAAI,CAAM,KAAA;AACvB,QAAA,IAAI,CAAC,SAAW,EAAA;AACd,UAAA;AAAA;AAGF,QAAA,IAAA;AAAA,UACE,MAAO,CAAA,WAAA;AAAA,YACL,MAAA,CAAO,QAAQ,SAAS,CAAA,CAAE,OAAO,CAAC,CAAC,GAAK,EAAA,KAAK,CAAM,KAAA;AACjD,cAAI,IAAA,UAAA,CAAW,QAAS,CAAA,GAAG,CAAG,EAAA;AAC5B,gBAAO,OAAA,IAAA;AAAA;AAET,cAAI,IAAA,WAAA,CAAY,QAAS,CAAA,GAAG,CAAG,EAAA;AAC7B,gBAAO,OAAA,KAAA;AAAA;AAET,cAAO,OAAA,KAAA,KAAW,KAAa,GAAG,CAAA;AAAA,aACnC;AAAA;AACH,SACF;AAAA,OACD,CAAA;AAAA,KACH;AAAA,IACA,GAAA,EAAK,CAAC,CAAM,KAAA;AACV,MAAA,YAAA,CAAa,IAAI,CAAC,CAAA;AAAA;AACpB,GACF;AACF;;AC1CgB,SAAA,OAAA,CACd,iBACA,gBACoB,EAAA;AACpB,EAAA,OAAO,CAAC,IAAS,KAAA;AACf,IAAgB,eAAA,CAAA,MAAM,IAAK,CAAA,IAAI,CAAC,CAAA;AAChC,IAAiB,gBAAA,CAAA,MAAM,IAAK,CAAA,KAAK,CAAC,CAAA;AAAA,GACpC;AACF;;ACXgB,SAAA,IAAA,CACd,SACA,OACc,EAAA;AACd,EAAA,OAAO,CAAC,IAAS,KAAA;AACf,IAAA,IAAI,MAAS,GAAA,KAAA;AACb,IAAA,OAAA,CAAQ,CAAC,OAAY,KAAA;AACnB,MAAS,MAAA,GAAA,OAAA;AAAA,KACV,CAAA;AACD,IAAA,MAAM,CAAI,GAAA,QAAA,CAAS,OAAS,EAAA,MAAM,CAAC,MAAM,CAAA;AACzC,IAAA,CAAA,CAAE,IAAI,CAAA;AAAA,GACR;AACF;;ACXO,SAAS,KAAQ,OAAqC,EAAA;AAC3D,EAAA,OAAO,CAAC,IAAS,KAAA;AACf,IAAA,IAAI,SAAsB,GAAA,IAAA;AAE1B,IAAA,OAAA,CAAQ,CAAC,CAAM,KAAA;AACb,MAAA,IAAI,MAAM,SAAW,EAAA;AACnB,QAAA,IAAA,CAAK,CAAC,CAAA;AACN,QAAY,SAAA,GAAA,CAAA;AAAA;AACd,KACD,CAAA;AAAA,GACH;AACF;;ACXO,SAAS,YAAe,OAAqC,EAAA;AAClE,EAAA,OAAO,CAAC,IAAS,KAAA;AACf,IAAA,IAAI,UAAa,GAAA,KAAA;AAEjB,IAAA,OAAA,CAAQ,CAAC,CAAM,KAAA;AACb,MAAA,IAAI,eAAe,KAAO,EAAA;AACxB,QAAa,UAAA,GAAA,IAAA;AAAA,OACR,MAAA;AACL,QAAA,IAAA,CAAK,CAAC,CAAA;AAAA;AACR,KACD,CAAA;AAAA,GACH;AACF;;ACZgB,SAAA,IAAA,CACd,SACA,MACe,EAAA;AACf,EAAM,MAAA,QAAA,GAAW,SAAU,CAAA,OAAA,CAAQ,KAAK,CAAA;AACxC,EAAM,MAAA,OAAA,GAAU,UAAU,MAAM,CAAA;AAChC,EAAO,OAAA;AAAA,IACL,KAAA,EAAO,CAAC,IAAS,KAAA;AACf,MAAA,GAAA;AAAA,QACE,OAAQ,CAAA,KAAA;AAAA,QACR;AAAA,OACA,CAAA,CAAC,CAAC,IAAA,EAAM,GAAG,CAAM,KAAA;AACjB,QAAM,MAAA,SAAA,GAAY,GAAI,CAAA,KAAA,CAAM,GAAG,CAAA;AAC/B,QAAA,IAAI,KAAiB,GAAA,IAAA;AACrB,QAAU,SAAA,CAAA,OAAA,CAAQ,CAAC,QAAa,KAAA;AAC9B,UAAA,KAAA,GAAS,MAAkC,QAAQ,CAAA;AAAA,SACpD,CAAA;AAED,QAAI,IAAA,KAAA,KAAU,MAAa,IAAA,KAAA,KAAU,IAAM,EAAA;AACzC,UAAA,IAAA,CAAK,KAAU,CAAA;AAAA;AACjB,OACD,CAAA;AAAA,KACH;AAAA,IACA,GAAA,EAAK,CAAC,KAAa,KAAA;AACjB,MAAM,MAAA,GAAA,GAAM,QAAQ,SAAU,EAAA;AAC9B,MAAI,IAAA,QAAA,CAAS,GAAG,CAAG,EAAA;AACjB,QAAA,OAAA,CAAQ,GAAI,CAAA;AAAA,UACV,GAAG,SAAS,SAAU,EAAA;AAAA,UACtB,CAAC,GAAG,GAAG;AAAA,SACH,CAAA;AAAA;AACR;AACF,GACF;AACF;;ACjCgB,SAAA,IAAA,CACd,SACA,MACc,EAAA;AACd,EAAA,OAAO,CAAC,IAAS,KAAA;AACf,IAAA,GAAA;AAAA,MACE,OAAA;AAAA,MACA;AAAA,KACA,CAAA,CAAC,CAAC,IAAA,EAAM,GAAG,CAAM,KAAA;AACjB,MAAM,MAAA,SAAA,GAAY,GAAI,CAAA,KAAA,CAAM,GAAG,CAAA;AAC/B,MAAA,IAAI,KAAiB,GAAA,IAAA;AACrB,MAAU,SAAA,CAAA,OAAA,CAAQ,CAAC,QAAa,KAAA;AAC9B,QAAA,KAAA,GAAS,MAAkC,QAAQ,CAAA;AAAA,OACpD,CAAA;AAED,MAAI,IAAA,KAAA,KAAU,MAAa,IAAA,KAAA,KAAU,IAAM,EAAA;AACzC,QAAA,IAAA,CAAK,KAAU,CAAA;AAAA;AACjB,KACD,CAAA;AAAA,GACH;AACF;;ACxBgB,SAAA,OAAA,CACd,SACA,UACc,EAAA;AACd,EAAA,OAAO,CAAC,IAAS,KAAA;AACf,IAAA,UAAA,CAAW,MAAM;AACf,MAAA,OAAA,CAAQ,IAAI,CAAA;AAAA,KACb,CAAA;AAAA,GACH;AACF;;ACLgB,SAAA,IAAA,CACd,WACA,UACc,EAAA;AACd,EAAA,OAAO,CAAC,IAAS,KAAA;AACf,IAAM,MAAA,UAAA,GAAa,UAAU,SAAS,CAAA;AAEtC,IAAA,UAAA,CAAW,MAAM;AACf,MAAM,MAAA,KAAA,GAAQ,WAAW,SAAU,EAAA;AACnC,MAAI,IAAA,QAAA,CAAS,KAAK,CAAG,EAAA;AACnB,QAAA,IAAA,CAAK,KAAK,CAAA;AAAA;AACZ,KACD,CAAA;AAAA,GACH;AACF;;AClBgB,SAAA,IAAA,CACd,OACA,EAAA,KAAA,GAAgB,CACF,EAAA;AACd,EAAA,OAAO,CAAC,IAAS,KAAA;AACf,IAAA,IAAI,SAA4B,GAAA,IAAA;AAChC,IAAgB,eAAA,CAAA,OAAA,EAAS,CAAC,EAAO,KAAA;AAC/B,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,EAAE,IAAI,CAAA;AAAA,GACT;AACF;;ACbO,SAAS,KAAQ,OAAqC,EAAA;AAC3D,EAAA,OAAO,CAAC,IAAS,KAAA;AACf,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,IAAA,CAAK,SAAS,CAAA;AACd,UAAY,SAAA,GAAA,IAAA;AAAA;AACd,OACD,CAAA;AAAA,KACH;AAEA,IAAA,OAAA,CAAQ,CAAC,CAAM,KAAA;AACb,MAAY,SAAA,GAAA,CAAA;AACZ,MAAA,IAAI,CAAC,kBAAoB,EAAA;AACvB,QAAkB,iBAAA,EAAA;AAAA;AACpB,KACD,CAAA;AAAA,GACH;AACF;;ACfgB,SAAA,WAAA,CACd,KACA,EAAA,YAAA,EAAA,GAIG,IACW,EAAA;AACd,EAAA,MAAM,OAAO,UAAc,EAAA;AAC3B,EAAA,MAAM,cAAiC,EAAC;AAExC,EAAA,KAAA,CAAM,CAAC,CAAM,KAAA;AACX,IAAA,MAAM,MAAS,GAAA,UAAA;AAAA,MACb,YAAa,CAAA,EAAA,CAAG,CAAC,CAAA,EAAG,GAAG,IAAA,CAAK,GAAI,CAAA,CAAC,CAAM,KAAA,QAAA,CAAS,CAAC,CAAC,CAAC;AAAA,KACrD;AACA,IAAA,WAAA,CAAY,KAAK,MAAM,CAAA;AACvB,IAAO,MAAA,CAAA,KAAA,CAAM,KAAK,GAAG,CAAA;AAAA,GACtB,CAAA;AAED,EAAA,OAAO,CAAC,IAAS,KAAA;AACf,IAAA,IAAA,CAAK,MAAM,IAAI,CAAA;AAEf,IAAA,OAAO,MAAM;AACX,MAAA,WAAA,CAAY,OAAQ,CAAA,CAAC,CAAM,KAAA,CAAA,CAAE,SAAS,CAAA;AACtC,MAAA,WAAA,CAAY,MAAS,GAAA,CAAA;AAAA,KACvB;AAAA,GACF;AACF;;ACpCO,SAAS,UACd,OACc,EAAA;AACd,EAAA,OAAO,CAAC,IAAS,KAAA;AACf,IAAA,MAAM,SAAkC,EAAC;AAEzC,IAAA,OAAA,CAAQ,CAAC,CAAC,GAAK,EAAA,KAAK,CAAM,KAAA;AACxB,MAAA,MAAA,CAAO,GAAG,CAAI,GAAA,KAAA;AACd,MAAA,IAAA,CAAK,MAAW,CAAA;AAAA,KACjB,CAAA;AAAA,GACH;AACF;;ACRO,SAAS,SACd,SAC6C,EAAA;AAC7C,EAAA,OAAO,CAAC,IAAS,KAAA;AACf,IAAM,MAAA,IAAA,GAAO,MAAO,CAAA,IAAA,CAAK,SAAS,CAAA;AAClC,IAAA,GAAA,CAAI,GAAG,MAAO,CAAA,MAAA,CAAO,SAAS,CAAC,CAAA,CAAE,CAAC,OAAY,KAAA;AAC5C,MAAA,MAAM,SAA8B,EAAC;AACrC,MAAQ,OAAA,CAAA,OAAA,CAAQ,CAAC,KAAA,EAAO,KAAU,KAAA;AAChC,QAAO,MAAA,CAAA,IAAA,CAAK,KAAK,CAAC,CAAI,GAAA,KAAA;AAAA,OACvB,CAAA;AACD,MAAA,IAAA,CAAK,MAAM,CAAA;AAAA,KACZ,CAAA;AAAA,GACH;AACF;;ACfO,SAAS,YACd,CAAA,OAAA,EACA,WAAiC,GAAA,EAAA,CAAG,EAAE,CACnB,EAAA;AACnB,EAAA,OAAO,CAAC,IAAS,KAAA;AACf,IAAA,GAAA;AAAA,MACE,WAAA;AAAA,MACA,GAAG;AAAA,KACH,CAAA,CAAC,CAAC,QAAA,EAAa,UAAO,CAAM,KAAA;AAC5B,MAAK,IAAA,CAAA,OAAA,CAAQ,IAAK,CAAA,QAAQ,CAAC,CAAA;AAAA,KAC5B,CAAA;AAAA,GACH;AACF;;ACRgB,SAAA,QAAA,CACd,SAA4B,EAAG,CAAA,EAAE,GACjC,SAAgD,GAAA,EAAA,CAAG,EAAE,CACrD,EAAA;AACA,EAAA,IAAI,aAAgB,GAAA,CAAA;AACpB,EAAA,MAAM,IAAkC,GAAA;AAAA,IACtC,IAAA,EAAM,GAAG,MAAM;AAAA,GACjB;AACA,EAAA,MAAM,cAAgC,EAAC;AACvC,EAAO,OAAA;AAAA,IACL,KAAA,EAA2B,CAAC,IAAS,KAAA;AACnC,MAAM,MAAA,OAAA,GAAU,SAAS,IAAI,CAAA;AAC7B,MAAQ,OAAA,CAAA,GAAA,CAAI,MAAQ,EAAA,SAAA,EAAW,OAAO,CAAA,EAAG,CAAC,CAAC,IAAA,EAAM,KAAOC,EAAAA,KAAI,CAAM,KAAA;AAChE,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,CAAQA,KAAI,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;AAED,QAAO,OAAA,IAAA;AAAA,OACR,EAAE,IAAI,CAAA;AAAA,KACT;AAAA,IACA,QAAA,EAAU,CAAC,KAAkB,KAAA;AAC3B,MAAA,MAAA,GAAS,GAAG,KAAK,CAAA;AAAA,KACnB;AAAA;AAAA;AAAA;AAAA;AAAA,IAKA,GAAA,EAAK,CAAC,GAA2B,KAAA;AAC/B,MAAM,MAAA,OAAA,GAAU,OAAO,aAAa,CAAA,CAAA;AACpC,MAAiB,aAAA,IAAA,CAAA;AACjB,MAAA,IAAA,CAAK,OAAO,CAAA,GAAI,UAAW,CAAA,GAAA,EAAK,CAAC,CAAsB,KAAA;AACrD,QAAA,WAAA,CAAY,KAAK,CAAC,CAAA;AAAA,OACnB,CAAE,CAAA,KAAA;AACH,MAAO,OAAA,OAAA;AAAA,KACT;AAAA,IACA,OAAU,GAAA;AACR,MAAA,WAAA,CAAY,OAAQ,CAAA,CAAC,CAAM,KAAA,CAAA,EAAG,CAAA;AAAA;AAChC,GACF;AACF;;AC9CO,SAAS,cACd,UACA,EAAA,QAAA,EACA,QAA8B,GAAA,EAAA,CAAG,EAAE,CACf,EAAA;AACpB,EAAA,OAAO,CAAC,IAAS,KAAA;AACf,IAAA,GAAA;AAAA,MACE,UAAA;AAAA,MACA,QAAA;AAAA,MACA;AAAA,MACA,CAAC,CAAC,OAAS,EAAA,KAAA,EAAO,KAAK,CAAM,KAAA;AAC7B,MAAA,IAAA,CAAK,IAAI,MAAO,CAAA,OAAA,EAAS,KAAK,CAAE,CAAA,IAAA,CAAK,KAAK,CAAC,CAAA;AAAA,KAC5C,CAAA;AAAA,GACH;AACF;;ACdO,SAAS,eACd,QACA,EAAA,UAAA,EACA,iBACA,QAA8B,GAAA,EAAA,CAAG,EAAE,CAChB,EAAA;AACnB,EAAA,OAAO,CAAC,IAAS,KAAA;AACf,IAAA,GAAA;AAAA,MACE,UAAA;AAAA,MACA,QAAA;AAAA,MACA,eAAA;AAAA,MACA;AAAA,MACA,CAAC,CAAC,SAAS,KAAO,EAAA,YAAA,EAAc,KAAK,CAAM,KAAA;AAC3C,MAAK,IAAA,CAAA,MAAA,CAAO,KAAK,CAAA,CAAE,OAAQ,CAAA,IAAI,OAAO,OAAS,EAAA,KAAK,CAAG,EAAA,YAAY,CAAC,CAAA;AAAA,KACrE,CAAA;AAAA,GACH;AACF;;AChBO,SAAS,YACd,UACA,EAAA,QAAA,EACA,QAA8B,GAAA,EAAA,CAAG,EAAE,CACd,EAAA;AACrB,EAAA,OAAO,CAAC,IAAS,KAAA;AACf,IAAA,GAAA;AAAA,MACE,UAAA;AAAA,MACA,QAAA;AAAA,MACA;AAAA,MACA,CAAC,CAAC,OAAS,EAAA,KAAA,EAAO,KAAK,CAAM,KAAA;AAC7B,MAAA,MAAM,SAAS,IAAI,MAAA,CAAO,SAAS,KAAK,CAAA,CAAE,KAAK,KAAK,CAAA;AACpD,MAAK,IAAA,CAAA,MAAA,IAAU,EAAE,CAAA;AAAA,KAClB,CAAA;AAAA,GACH;AACF;;ACfgB,SAAA,GAAA,CACd,OACA,EAAA,MAAA,EACA,QACc,EAAA;AACd,EAAA,OAAO,CAAC,IAAS,KAAA;AACf,IAAA,GAAA;AAAA,MACE,OAAA;AAAA,MACA,MAAA;AAAA,MACA;AAAA,MACA,CAAC,CAAC,IAAM,EAAA,GAAA,EAAK,KAAK,CAAM,KAAA;AACxB,MAAC,IAAA,CAAiC,GAAG,CAAI,GAAA,KAAA;AACzC,MAAA,IAAA,CAAK,IAAI,CAAA;AAAA,KACV,CAAA;AAAA,GACH;AACF;;ACHA,MAAM,QAAA,GAAW,MAAM,EAAA,CAAG,KAAK,CAAA;AAMf,SAAA,MAAA,CACd,MACA,EAAA,SAAA,EACA,UACc,EAAA;AACd,EAAA,OAAO,CAAC,IAAS,KAAA;AACf,IAAA,MAAM,cAAgC,EAAC;AACvC,IAAA,MAAM,iBAAiB,MAAM;AAC3B,MAAA,WAAA,CAAY,OAAQ,CAAA,CAAC,CAAM,KAAA,CAAA,EAAG,CAAA;AAC9B,MAAA,WAAA,CAAY,MAAS,GAAA,CAAA;AAAA,KACvB;AACA,IAAA,GAAA;AAAA,MACE,SAAA;AAAA,MACA;AAAA,KACA,CAAA,CAAC,CAAC,MAAA,EAAQ,GAAG,CAAM,KAAA;AACnB,MAAe,cAAA,EAAA;AACf,MAAA,MAAM,QAAW,GAAA,GAAA;AAAA,QACf,UAAW,EAAA;AAAA,QACX,GAAA;AAAA,UACE,GAAG,MAAO,CAAA,GAAA;AAAA,YACR,CAAC,CACC,KAAA,UAAA;AAAA,cACE,UAAA;AAAA,gBACE,aAAA;AAAA,kBACE,EAAA,CAAG,EAAE,OAAO,CAAA;AAAA,kBACZ,GAAG,GAAG,CAAA;AAAA,kBACN,CAAE,CAAA,YAAA,GAAe,EAAG,CAAA,CAAA,CAAE,YAAY,CAAI,GAAA;AAAA,iBACxC;AAAA,gBACA,CAAE,CAAA,QAAA;AAAA,gBACF;AAAA,eACF;AAAA,cACA,CAAC,CAAA,KAAsB,WAAY,CAAA,IAAA,CAAK,CAAC;AAAA,aACzC,CAAA;AAAA;AACN;AACF,OACF;AAGA,MAAQ,OAAA,CAAA,QAAA,EAAU,CAAC,CAAM,KAAA;AACvB,QAAM,MAAA,SAAA,GAAY,EAAE,CAAC,CAAA,CAAE,KAAK,CAACC,EAAAA,KAAMA,OAAM,KAAK,CAAA;AAE9C,QAAA,IAAI,SAAW,EAAA;AACb,UAAO,OAAA,SAAA;AAAA;AAGT,QAAA,OAAO,EAAE,CAAC,CAAA;AAAA,OACX,EAAE,IAAI,CAAA;AAAA,KACR,CAAA;AAED,IAAO,OAAA,cAAA;AAAA,GACT;AACF;;ACtEgB,SAAA,GAAA,CACd,QACA,MACoB,EAAA;AACpB,EAAA,OAAO,CAAC,IAAS,KAAA;AACf,IAAA,GAAA;AAAA,MACE,MAAA;AAAA,MACA;AAAA,KACA,CAAA,CAAC,CAAC,GAAA,EAAK,GAAG,CAAM,KAAA;AAChB,MAAA,IAAA,CAAK,OAAO,GAAG,CAAA;AAAA,KAChB,CAAA;AAAA,GACH;AACF;;ACZgB,SAAA,EAAA,CACd,QACA,MACoB,EAAA;AACpB,EAAA,OAAO,CAAC,IAAS,KAAA;AACf,IAAA,GAAA;AAAA,MACE,MAAA;AAAA,MACA;AAAA,KACA,CAAA,CAAC,CAAC,GAAA,EAAK,GAAG,CAAM,KAAA;AAChB,MAAA,IAAA,CAAK,OAAO,GAAG,CAAA;AAAA,KAChB,CAAA;AAAA,GACH;AACF;;ACZO,SAAS,IAAI,OAAiD,EAAA;AACnE,EAAA,OAAO,CAAC,IAAS,KAAA;AACf,IAAA,OAAA,CAAQ,CAAC,CAAM,KAAA;AACb,MAAA,IAAA,CAAK,CAAC,CAAC,CAAA;AAAA,KACR,CAAA;AAAA,GACH;AACF;;ACLO,SAAS,KAAK,OAAwC,EAAA;AAC3D,EAAA,OAAO,CAAC,IAAS,KAAA;AACf,IAAQ,OAAA,CAAA,OAAA,EAAS,OAAO,CAAA,CAAE,IAAI,CAAA;AAAA,GAChC;AACF;;ACLgB,SAAA,QAAA,CACd,SACA,UACc,EAAA;AACd,EAAA,OAAO,CAAC,IAAS,KAAA;AACf,IAAA,OAAA,CAAQ,CAAC,IAAS,KAAA;AAChB,MAAI,IAAA;AACF,QAAK,IAAA,CAAA,IAAA,CAAK,KAAM,CAAA,IAAI,CAAC,CAAA;AAAA,eACd,KAAO,EAAA;AACd,QAAA,UAAA,GAAa,IAAI,KAAA,CAAM,CAAyB,sBAAA,EAAA,KAAK,EAAE,CAAC,CAAA;AAAA;AAC1D,KACD,CAAA;AAAA,GACH;AACF;;ACbgB,SAAA,MAAA,CACd,SACA,UACmB,EAAA;AACnB,EAAA,OAAO,CAAC,IAAS,KAAA;AACf,IAAA,OAAA,CAAQ,CAAC,IAAkB,KAAA;AACzB,MAAI,IAAA;AACF,QAAK,IAAA,CAAA,IAAA,CAAK,SAAU,CAAA,IAAI,CAAC,CAAA;AAAA,OACnB,CAAA,MAAA;AACN,QAAa,UAAA,GAAA,IAAI,KAAM,CAAA,2BAA2B,CAAC,CAAA;AAAA;AACrD,KACD,CAAA;AAAA,GACH;AACF;;ACbO,SAAS,MACd,OACiB,EAAA;AACjB,EAAA,OAAO,CAAC,IAAS,KAAA;AACf,IAAA,OAAA,CAAQ,SAAS,CAAC,CAAA,KAAM,EAAE,CAAC,CAAC,EAAE,IAAI,CAAA;AAAA,GACpC;AACF;;;;"}
1
+ {"version":3,"file":"silentium-components.js","sources":["../src/behaviors/Branch.ts","../src/behaviors/BranchLazy.ts","../src/behaviors/Const.ts","../src/behaviors/Deadline.ts","../src/behaviors/Deferred.ts","../src/behaviors/Detached.ts","../src/behaviors/Dirty.ts","../src/behaviors/Loading.ts","../src/behaviors/Lock.ts","../src/behaviors/Memo.ts","../src/behaviors/OnlyChanged.ts","../src/behaviors/Part.ts","../src/behaviors/Path.ts","../src/behaviors/Polling.ts","../src/behaviors/Shot.ts","../src/behaviors/Task.ts","../src/behaviors/Tick.ts","../src/behaviors/Transaction.ts","../src/structures/HashTable.ts","../src/structures/RecordOf.ts","../src/strings/Concatenated.ts","../src/strings/Template.ts","../src/system/RegexpMatched.ts","../src/system/RegexpReplaced.ts","../src/system/RegexpMatch.ts","../src/system/Set.ts","../src/navigation/Router.ts","../src/boolean/And.ts","../src/boolean/Or.ts","../src/boolean/Not.ts","../src/boolean/Bool.ts","../src/formats/FromJson.ts","../src/formats/ToJson.ts","../src/lists/First.ts"],"sourcesContent":["import { EventType, Primitive } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/branch\n */\nexport function Branch<Then, Else>(\n conditionSrc: EventType<boolean>,\n leftSrc: EventType<Then>,\n rightSrc?: EventType<Else>,\n): EventType<Then | Else> {\n return (user) => {\n const leftSync = Primitive(leftSrc);\n let rightSync: ReturnType<typeof Primitive<Else>>;\n\n if (rightSrc !== undefined) {\n rightSync = Primitive(rightSrc);\n }\n\n conditionSrc((v) => {\n let result: Then | Else | null = null;\n if (v) {\n result = leftSync.primitive();\n } else if (rightSync) {\n result = rightSync.primitive();\n }\n\n if (result !== null) {\n user(result);\n }\n });\n };\n}\n","import { EventType, DestructorType, ConstructorType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/branch\n */\nexport function BranchLazy<Then, Else>(\n conditionSrc: EventType<boolean>,\n leftSrc: ConstructorType<[], EventType<Then>>,\n rightSrc?: ConstructorType<[], EventType<Else>>,\n): EventType<Then | Else> {\n return (user) => {\n let Destructor: DestructorType | void;\n conditionSrc((v) => {\n if (Destructor !== undefined && typeof Destructor === \"function\") {\n Destructor();\n }\n let instance: EventType<Then | Else> | null = null;\n if (v) {\n instance = leftSrc();\n } else if (rightSrc) {\n instance = rightSrc();\n }\n if (instance) {\n Destructor = instance(user);\n }\n });\n\n return () => {\n Destructor?.();\n };\n };\n}\n","import { EventType } from \"silentium\";\n\nexport function Constant<T>(\n permanentValue: T,\n triggerSrc: EventType,\n): EventType<T> {\n return (user) => {\n triggerSrc(() => {\n user(permanentValue);\n });\n };\n}\n","import { EventType, Filtered, Shared, EventUserType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport function Deadline<T>(\n error: EventUserType<Error>,\n baseSrc: EventType<T>,\n timeoutSrc: EventType<number>,\n): EventType<T> {\n return (user) => {\n let timerHead: unknown = null;\n\n const s = Shared(baseSrc, true);\n\n timeoutSrc((timeout) => {\n if (timerHead) {\n clearTimeout(timerHead as number);\n }\n let timeoutReached = false;\n\n timerHead = setTimeout(() => {\n if (timeoutReached) {\n return;\n }\n timeoutReached = true;\n error(new Error(\"Timeout reached in Deadline class\"));\n }, timeout);\n\n const f = Filtered(s.event, () => !timeoutReached);\n f(user);\n\n s.event(() => {\n timeoutReached = true;\n });\n });\n };\n}\n","import { EventType, isFilled, 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 baseSrc: EventType<T>,\n triggerSrc: EventType<unknown>,\n): EventType<T> {\n return (user) => {\n const baseSync = Primitive(baseSrc);\n triggerSrc(() => {\n const value = baseSync.primitive();\n if (isFilled(value)) {\n user(value);\n }\n });\n };\n}\n","import { EventType, isFilled, Primitive } from \"silentium\";\n\nexport function Detached<T>(baseSrc: EventType<T>): EventType<T> {\n return function Detached(user) {\n const v = Primitive(baseSrc).primitive();\n if (isFilled(v)) {\n user(v);\n }\n };\n}\n","import { All, Applied, EventType, Late, SourceType } 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 baseEntitySource: EventType<T>,\n alwaysKeep: string[] = [],\n excludeKeys: string[] = [],\n cloneFn?: (v: T) => T,\n): SourceType<T> {\n const comparingSrc = Late<T>();\n\n if (cloneFn === undefined) {\n cloneFn = (value) => JSON.parse(JSON.stringify(value));\n }\n\n return {\n event: (user) => {\n const comparingDetached = Applied(comparingSrc.event, cloneFn);\n\n All(\n comparingDetached,\n baseEntitySource,\n )(([comparing, base]) => {\n if (!comparing) {\n return;\n }\n\n user(\n Object.fromEntries(\n Object.entries(comparing).filter(([key, value]) => {\n if (alwaysKeep.includes(key)) {\n return true;\n }\n if (excludeKeys.includes(key)) {\n return false;\n }\n return value !== (base as any)[key];\n }),\n ) as T,\n );\n });\n },\n use: (v) => {\n comparingSrc.use(v);\n },\n };\n}\n","import { EventType } from \"silentium\";\n\n/**\n * Representation Of loading process\n * first informatin source begins loading\n * second information source stops loading\n * https://silentium-lab.github.io/silentium-components/#/behaviors/loading\n */\nexport function Loading(\n loadingStartSrc: EventType<unknown>,\n loadingFinishSrc: EventType<unknown>,\n): EventType<boolean> {\n return (user) => {\n loadingStartSrc(() => user(true));\n loadingFinishSrc(() => user(false));\n };\n}\n","import { EventType, Filtered } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/lock\n */\nexport function Lock<T>(\n baseSrc: EventType<T>,\n lockSrc: EventType<boolean>,\n): EventType<T> {\n return (user) => {\n let locked = false;\n lockSrc((newLock) => {\n locked = newLock;\n });\n const i = Filtered(baseSrc, () => !locked);\n i(user);\n };\n}\n","import { EventType } 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>(baseSrc: EventType<T>): EventType<T> {\n return (user) => {\n let lastValue: T | null = null;\n\n baseSrc((v) => {\n if (v !== lastValue) {\n user(v);\n lastValue = v;\n }\n });\n };\n}\n","import { EventType } 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>(baseSrc: EventType<T>): EventType<T> {\n return (user) => {\n let firstValue = false;\n\n baseSrc((v) => {\n if (firstValue === false) {\n firstValue = true;\n } else {\n user(v);\n }\n });\n };\n}\n","import { All, EventType, isFilled, Primitive, SourceType } from \"silentium\";\n\n/**\n * Return source Of record path\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport function Part<R, T extends object | Array<any>, K extends string = any>(\n baseSrc: SourceType<T>,\n keySrc: EventType<K>,\n): SourceType<R> {\n const baseSync = Primitive(baseSrc.event);\n const keySync = Primitive(keySrc);\n return {\n event: (user) => {\n All(\n baseSrc.event,\n keySrc,\n )(([base, key]) => {\n const keyChunks = key.split(\".\");\n let value: unknown = base;\n keyChunks.forEach((keyChunk) => {\n value = (value as Record<string, unknown>)[keyChunk];\n });\n\n if (value !== undefined && value !== base) {\n user(value as R);\n }\n });\n },\n use: (value: R) => {\n const key = keySync.primitive();\n if (isFilled(key)) {\n baseSrc.use({\n ...baseSync.primitive(),\n [key]: value,\n } as T);\n }\n },\n };\n}\n","import { All, EventType } from \"silentium\";\n\n/**\n * Return source Of record path\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport function Path<R, T extends object | Array<any>, K extends string = any>(\n baseSrc: EventType<T>,\n keySrc: EventType<K>,\n): EventType<R> {\n return (user) => {\n All(\n baseSrc,\n keySrc,\n )(([base, key]) => {\n const keyChunks = key.split(\".\");\n let value: unknown = base;\n keyChunks.forEach((keyChunk) => {\n value = (value as Record<string, unknown>)[keyChunk];\n });\n\n if (value !== undefined && value !== base) {\n user(value as R);\n }\n });\n };\n}\n","import { EventType } from \"silentium\";\n\nexport function Polling<T>(\n baseSrc: EventType<T>,\n triggerSrc: EventType<T>,\n): EventType<T> {\n return (user) => {\n triggerSrc(() => {\n baseSrc(user);\n });\n };\n}\n","import { EventType, isFilled, 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>(\n targetSrc: EventType<T>,\n triggerSrc: EventType,\n): EventType<T> {\n return (user) => {\n const targetSync = Primitive(targetSrc);\n\n triggerSrc(() => {\n const value = targetSync.primitive();\n if (isFilled(value)) {\n user(value);\n }\n });\n };\n}\n","import { EventType, ExecutorApplied } from \"silentium\";\n\nexport function Task<T>(\n baseSrc: EventType<T>,\n delay: number = 0,\n): EventType<T> {\n return (user) => {\n let prevTimer: unknown | null = null;\n ExecutorApplied(baseSrc, (fn) => {\n return (v) => {\n if (prevTimer) {\n clearTimeout(prevTimer as number);\n }\n prevTimer = setTimeout(() => {\n fn(v);\n }, delay);\n };\n })(user);\n };\n}\n","import { EventType } 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>(baseSrc: EventType<T>): EventType<T> {\n return (user) => {\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 user(lastValue);\n lastValue = null;\n }\n });\n };\n\n baseSrc((v) => {\n lastValue = v;\n if (!microtaskScheduled) {\n scheduleMicrotask();\n }\n });\n };\n}\n","import {\n ConstructorType,\n DestroyableType,\n Destructor,\n EventType,\n LateShared,\n Of,\n} from \"silentium\";\nimport { Detached } from \"../behaviors/Detached\";\n\n/**\n * Do something on event value.\n * Each event value will create new eventBuilder instance\n */\nexport function Transaction<T, R = unknown>(\n $base: EventType<T>,\n eventBuilder: ConstructorType<\n [EventType<T>, ...EventType<any>[]],\n EventType<R>\n >,\n ...args: EventType[]\n): EventType<R> {\n return (user) => {\n const $res = LateShared<R>();\n const destructors: DestroyableType[] = [];\n\n $base((v) => {\n const $event = Destructor(\n eventBuilder(Of(v), ...args.map((a) => Detached(a))),\n );\n destructors.push($event);\n $event.event($res.use);\n });\n $res.event(user);\n\n return () => {\n destructors.forEach((d) => d.destroy());\n destructors.length = 0;\n };\n };\n}\n","import { EventType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/structures/hash-table\n */\nexport function HashTable<T>(\n baseSrc: EventType<[string, unknown]>,\n): EventType<T> {\n return (user) => {\n const record: Record<string, unknown> = {};\n\n baseSrc(([key, value]) => {\n record[key] = value;\n user(record as T);\n });\n };\n}\n","import { All, EventType } from \"silentium\";\n\ntype UnInformation<T> = T extends EventType<infer U> ? U : never;\n\n/**\n * Returns record Of data from record Of sources\n * https://silentium-lab.github.io/silentium-components/#/structures/record\n */\nexport function RecordOf<T extends EventType>(\n recordSrc: Record<string, T>,\n): EventType<Record<string, UnInformation<T>>> {\n return (user) => {\n const keys = Object.keys(recordSrc);\n All(...Object.values(recordSrc))((entries) => {\n const record: Record<string, any> = {};\n entries.forEach((entry, index) => {\n record[keys[index]] = entry;\n });\n user(record);\n });\n };\n}\n","import { All, EventType, 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: EventType<string>[],\n joinPartSrc: EventType<string> = Of(\"\"),\n): EventType<string> {\n return (user) => {\n All(\n joinPartSrc,\n ...sources,\n )(([joinPart, ...strings]) => {\n user(strings.join(joinPart));\n });\n };\n}\n","import {\n All,\n Applied,\n EventType,\n Destructor,\n DestructorType,\n Of,\n} from \"silentium\";\nimport { RecordOf } from \"../structures\";\n\nexport function Template(\n theSrc: EventType<string> = Of(\"\"),\n placesSrc: EventType<Record<string, unknown>> = Of({}),\n) {\n let placesCounter = 0;\n const vars: Record<string, EventType> = {\n $TPL: Of(\"$TPL\"),\n };\n const destructors: DestructorType[] = [];\n return {\n value: <EventType<string>>((user) => {\n const varsSrc = RecordOf(vars);\n Applied(All(theSrc, placesSrc, varsSrc), ([base, rules, vars]) => {\n Object.entries(rules).forEach(([ph, val]) => {\n base = base.replaceAll(ph, String(val));\n });\n Object.entries(vars).forEach(([ph, val]) => {\n base = base.replaceAll(ph, String(val));\n });\n\n return base;\n })(user);\n }),\n template: (value: string) => {\n theSrc = Of(value);\n },\n /**\n * Ability to register variable\n * in concrete place Of template\n */\n var: (src: EventType<string>) => {\n const varName = `$var${placesCounter}`;\n placesCounter += 1;\n vars[varName] = Destructor(src, (d: DestructorType) => {\n destructors.push(d);\n }).event;\n return varName;\n },\n destroy() {\n destructors.forEach((d) => d());\n },\n };\n}\n","import { All, EventType, 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: EventType<string>,\n valueSrc: EventType<string>,\n flagsSrc: EventType<string> = Of(\"\"),\n): EventType<boolean> {\n return (user) => {\n All(\n patternSrc,\n valueSrc,\n flagsSrc,\n )(([pattern, value, flags]) => {\n user(new RegExp(pattern, flags).test(value));\n });\n };\n}\n","import { All, EventType, 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: EventType<string>,\n patternSrc: EventType<string>,\n replaceValueSrc: EventType<string>,\n flagsSrc: EventType<string> = Of(\"\"),\n): EventType<string> {\n return (user) => {\n All(\n patternSrc,\n valueSrc,\n replaceValueSrc,\n flagsSrc,\n )(([pattern, value, replaceValue, flags]) => {\n user(String(value).replace(new RegExp(pattern, flags), replaceValue));\n });\n };\n}\n","import { All, EventType, 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: EventType<string>,\n valueSrc: EventType<string>,\n flagsSrc: EventType<string> = Of(\"\"),\n): EventType<string[]> {\n return (user) => {\n All(\n patternSrc,\n valueSrc,\n flagsSrc,\n )(([pattern, value, flags]) => {\n const result = new RegExp(pattern, flags).exec(value);\n user(result ?? []);\n });\n };\n}\n","import { All, EventType } from \"silentium\";\n\n/**\n * Ability to mutate some object, helpful when integrate to procedure systems\n * https://silentium-lab.github.io/silentium-components/#/system/set\n */\nexport function Set<T extends Record<string, unknown>>(\n baseSrc: EventType<T>,\n keySrc: EventType<string>,\n valueSrc: EventType<unknown>,\n): EventType<T> {\n return (user) => {\n All(\n baseSrc,\n keySrc,\n valueSrc,\n )(([base, key, value]) => {\n (base as Record<string, unknown>)[key] = value;\n user(base);\n });\n };\n}\n","import {\n All,\n Applied,\n EventType,\n Destructor,\n DestructorType,\n Of,\n ConstructorType,\n} from \"silentium\";\nimport { RegexpMatched } from \"../system\";\nimport { BranchLazy } from \"../behaviors\";\n\nexport interface Route<T> {\n pattern: string;\n patternFlags?: string;\n template: ConstructorType<[], EventType<T>>;\n}\n\nconst emptySrc = () => Of(false);\n\n/**\n * Router component what will return template if url matches pattern\n * https://silentium-lab.github.io/silentium-components/#/navigation/router\n */\nexport function Router<T = \"string\">(\n urlSrc: EventType<string>,\n routesSrc: EventType<Route<T>[]>,\n defaultSrc: ConstructorType<[], EventType<T>>,\n): EventType<T> {\n return (user) => {\n const destructors: DestructorType[] = [];\n const destroyAllData = () => {\n destructors.forEach((d) => d());\n destructors.length = 0;\n };\n All(\n routesSrc,\n urlSrc,\n )(([routes, url]) => {\n destroyAllData();\n const instance = All(\n defaultSrc(),\n All(\n ...routes.map(\n (r) =>\n Destructor(\n BranchLazy(\n RegexpMatched(\n Of(r.pattern),\n Of(url),\n r.patternFlags ? Of(r.patternFlags) : undefined,\n ),\n r.template,\n emptySrc,\n ),\n (d: DestructorType) => destructors.push(d),\n ).event,\n ),\n ),\n );\n\n // Return first not false or default\n Applied(instance, (r) => {\n const firstReal = r[1].find((r) => r !== false);\n\n if (firstReal) {\n return firstReal as T;\n }\n\n return r[0];\n })(user);\n });\n\n return destroyAllData;\n };\n}\n","import { All, EventType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/and\n */\nexport function And(\n oneSrc: EventType<boolean>,\n twoSrc: EventType<boolean>,\n): EventType<boolean> {\n return (user) => {\n All(\n oneSrc,\n twoSrc,\n )(([one, two]) => {\n user(one && two);\n });\n };\n}\n","import { All, EventType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/or\n */\nexport function Or(\n oneSrc: EventType<boolean>,\n twoSrc: EventType<boolean>,\n): EventType<boolean> {\n return (user) => {\n All(\n oneSrc,\n twoSrc,\n )(([one, two]) => {\n user(one || two);\n });\n };\n}\n","import { EventType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/not\n */\nexport function Not(baseSrc: EventType<boolean>): EventType<boolean> {\n return (user) => {\n baseSrc((v) => {\n user(!v);\n });\n };\n}\n","import { Applied, EventType } from \"silentium\";\n\n/**\n * Convert Any source to boolean source\n * https://silentium-lab.github.io/silentium-components/#/boolean/bool\n */\nexport function Bool(baseSrc: EventType): EventType<boolean> {\n return (user) => {\n Applied(baseSrc, Boolean)(user);\n };\n}\n","import { EventType, EventUserType } from \"silentium\";\n\n/**\n * Represents object from json\n */\nexport function FromJson<T = Record<string, unknown>>(\n jsonSrc: EventType<string>,\n errorOwner?: EventUserType,\n): EventType<T> {\n return (user) => {\n jsonSrc((json) => {\n try {\n user(JSON.parse(json));\n } catch (error) {\n errorOwner?.(new Error(`Failed to parse JSON: ${error}`));\n }\n });\n };\n}\n","import { EventType, EventUserType } from \"silentium\";\n\n/**\n * Represents json from object\n */\nexport function ToJson(\n dataSrc: EventType,\n errorOwner?: EventUserType,\n): EventType<string> {\n return (user) => {\n dataSrc((data: unknown) => {\n try {\n user(JSON.stringify(data));\n } catch {\n errorOwner?.(new Error(\"Failed to convert to JSON\"));\n }\n });\n };\n}\n","import { Applied, EventType } from \"silentium\";\n\n/**\n * Represents the first element Of an array.\n */\nexport function First<T extends Array<unknown>>(\n baseSrc: EventType<T>,\n): EventType<T[0]> {\n return (user) => {\n Applied(baseSrc, (a) => a[0])(user);\n };\n}\n"],"names":["Detached","vars","r"],"mappings":"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"}
@@ -1 +1 @@
1
- !function(t,e){"use strict";function n(t,e,n){return r=>{let i;return t((t=>{void 0!==i&&"function"==typeof i&&i();let o=null;t?o=e():n&&(o=n()),o&&(i=o(r))})),()=>{i?.()}}}function r(t){return function(n){const r=e.Primitive(t).primitive();e.isFilled(r)&&n(r)}}function i(t){return n=>{const r=Object.keys(t);e.All(...Object.values(t))((t=>{const e={};t.forEach(((t,n)=>{e[r[n]]=t})),n(e)}))}}function o(t,n,r=e.Of("")){return i=>{e.All(t,n,r)((([t,e,n])=>{i(new RegExp(t,n).test(e))}))}}const l=()=>e.Of(!1);t.And=function(t,n){return r=>{e.All(t,n)((([t,e])=>{r(t&&e)}))}},t.Bool=function(t){return n=>{e.Applied(t,Boolean)(n)}},t.Branch=function(t,n,r){return i=>{const o=e.Primitive(n);let l;void 0!==r&&(l=e.Primitive(r)),t((t=>{let e=null;t?e=o.primitive():l&&(e=l.primitive()),null!==e&&i(e)}))}},t.BranchLazy=n,t.Concatenated=function(t,n=e.Of("")){return r=>{e.All(n,...t)((([t,...e])=>{r(e.join(t))}))}},t.Constant=function(t,e){return n=>{e((()=>{n(t)}))}},t.Deadline=function(t,n,r){return i=>{let o=null;const l=e.Shared(n,!0);r((n=>{o&&clearTimeout(o);let r=!1;o=setTimeout((()=>{r||(r=!0,t(new Error("Timeout reached in Deadline class")))}),n);e.Filtered(l.event,(()=>!r))(i),l.event((()=>{r=!0}))}))}},t.Deferred=function(t,n){return r=>{const i=e.Primitive(t);n((()=>{const t=i.primitive();e.isFilled(t)&&r(t)}))}},t.Detached=r,t.Dirty=function(t,n=[],r=[],i){const o=e.Late();return void 0===i&&(i=t=>JSON.parse(JSON.stringify(t))),{event:l=>{const u=e.Applied(o.event,i);e.All(u,t)((([t,e])=>{t&&l(Object.fromEntries(Object.entries(t).filter((([t,i])=>!!n.includes(t)||!r.includes(t)&&i!==e[t]))))}))},use:t=>{o.use(t)}}},t.First=function(t){return n=>{e.Applied(t,(t=>t[0]))(n)}},t.FromJson=function(t,e){return n=>{t((t=>{try{n(JSON.parse(t))}catch(t){e?.(new Error(`Failed to parse JSON: ${t}`))}}))}},t.HashTable=function(t){return e=>{const n={};t((([t,r])=>{n[t]=r,e(n)}))}},t.Loading=function(t,e){return n=>{t((()=>n(!0))),e((()=>n(!1)))}},t.Lock=function(t,n){return r=>{let i=!1;n((t=>{i=t}));e.Filtered(t,(()=>!i))(r)}},t.Memo=function(t){return e=>{let n=null;t((t=>{t!==n&&(e(t),n=t)}))}},t.Not=function(t){return e=>{t((t=>{e(!t)}))}},t.OnlyChanged=function(t){return e=>{let n=!1;t((t=>{!1===n?n=!0:e(t)}))}},t.Or=function(t,n){return r=>{e.All(t,n)((([t,e])=>{r(t||e)}))}},t.Part=function(t,n){const r=e.Primitive(t.event),i=e.Primitive(n);return{event:r=>{e.All(t.event,n)((([t,e])=>{const n=e.split(".");let i=t;n.forEach((t=>{i=i[t]})),void 0!==i&&i!==t&&r(i)}))},use:n=>{const o=i.primitive();e.isFilled(o)&&t.use({...r.primitive(),[o]:n})}}},t.Path=function(t,n){return r=>{e.All(t,n)((([t,e])=>{const n=e.split(".");let i=t;n.forEach((t=>{i=i[t]})),void 0!==i&&i!==t&&r(i)}))}},t.Polling=function(t,e){return n=>{e((()=>{t(n)}))}},t.RecordOf=i,t.RegexpMatch=function(t,n,r=e.Of("")){return i=>{e.All(t,n,r)((([t,e,n])=>{const r=new RegExp(t,n).exec(e);i(r??[])}))}},t.RegexpMatched=o,t.RegexpReplaced=function(t,n,r,i=e.Of("")){return o=>{e.All(n,t,r,i)((([t,e,n,r])=>{o(String(e).replace(new RegExp(t,r),n))}))}},t.Router=function(t,r,i){return u=>{const c=[],s=()=>{c.forEach((t=>t())),c.length=0};return e.All(r,t)((([t,r])=>{s();const f=e.All(i(),e.All(...t.map((t=>e.Destructor(n(o(e.Of(t.pattern),e.Of(r),t.patternFlags?e.Of(t.patternFlags):void 0),t.template,l),(t=>c.push(t))).event))));e.Applied(f,(t=>{const e=t[1].find((t=>!1!==t));return e||t[0]}))(u)})),s}},t.Set=function(t,n,r){return i=>{e.All(t,n,r)((([t,e,n])=>{t[e]=n,i(t)}))}},t.Shot=function(t,n){return r=>{const i=e.Primitive(t);n((()=>{const t=i.primitive();e.isFilled(t)&&r(t)}))}},t.Task=function(t,n=0){return r=>{let i=null;e.ExecutorApplied(t,(t=>e=>{i&&clearTimeout(i),i=setTimeout((()=>{t(e)}),n)}))(r)}},t.Template=function(t=e.Of(""),n=e.Of({})){let r=0;const o={$TPL:e.Of("$TPL")},l=[];return{value:r=>{const l=i(o);e.Applied(e.All(t,n,l),(([t,e,n])=>(Object.entries(e).forEach((([e,n])=>{t=t.replaceAll(e,String(n))})),Object.entries(n).forEach((([e,n])=>{t=t.replaceAll(e,String(n))})),t)))(r)},template:n=>{t=e.Of(n)},var:t=>{const n=`$var${r}`;return r+=1,o[n]=e.Destructor(t,(t=>{l.push(t)})).event,n},destroy(){l.forEach((t=>t()))}}},t.Tick=function(t){return e=>{let n=!1,r=null;t((t=>{r=t,n||(n=!0,queueMicrotask((()=>{n=!1,null!==r&&(e(r),r=null)})))}))}},t.ToJson=function(t,e){return n=>{t((t=>{try{n(JSON.stringify(t))}catch{e?.(new Error("Failed to convert to JSON"))}}))}},t.Transaction=function(t,n,...i){const o=e.LateShared(),l=[];return t((t=>{const u=e.Destructor(n(e.Of(t),...i.map((t=>r(t)))));l.push(u),u.event(o.use)})),t=>(o.event(t),()=>{l.forEach((t=>t.destroy())),l.length=0})}}({},silentium);
1
+ !function(t,e){"use strict";function n(t,e,n){return r=>{let i;return t((t=>{void 0!==i&&"function"==typeof i&&i();let o=null;t?o=e():n&&(o=n()),o&&(i=o(r))})),()=>{i?.()}}}function r(t){return function(n){const r=e.Primitive(t).primitive();e.isFilled(r)&&n(r)}}function i(t){return n=>{const r=Object.keys(t);e.All(...Object.values(t))((t=>{const e={};t.forEach(((t,n)=>{e[r[n]]=t})),n(e)}))}}function o(t,n,r=e.Of("")){return i=>{e.All(t,n,r)((([t,e,n])=>{i(new RegExp(t,n).test(e))}))}}const l=()=>e.Of(!1);t.And=function(t,n){return r=>{e.All(t,n)((([t,e])=>{r(t&&e)}))}},t.Bool=function(t){return n=>{e.Applied(t,Boolean)(n)}},t.Branch=function(t,n,r){return i=>{const o=e.Primitive(n);let l;void 0!==r&&(l=e.Primitive(r)),t((t=>{let e=null;t?e=o.primitive():l&&(e=l.primitive()),null!==e&&i(e)}))}},t.BranchLazy=n,t.Concatenated=function(t,n=e.Of("")){return r=>{e.All(n,...t)((([t,...e])=>{r(e.join(t))}))}},t.Constant=function(t,e){return n=>{e((()=>{n(t)}))}},t.Deadline=function(t,n,r){return i=>{let o=null;const l=e.Shared(n,!0);r((n=>{o&&clearTimeout(o);let r=!1;o=setTimeout((()=>{r||(r=!0,t(new Error("Timeout reached in Deadline class")))}),n);e.Filtered(l.event,(()=>!r))(i),l.event((()=>{r=!0}))}))}},t.Deferred=function(t,n){return r=>{const i=e.Primitive(t);n((()=>{const t=i.primitive();e.isFilled(t)&&r(t)}))}},t.Detached=r,t.Dirty=function(t,n=[],r=[],i){const o=e.Late();return void 0===i&&(i=t=>JSON.parse(JSON.stringify(t))),{event:l=>{const u=e.Applied(o.event,i);e.All(u,t)((([t,e])=>{t&&l(Object.fromEntries(Object.entries(t).filter((([t,i])=>!!n.includes(t)||!r.includes(t)&&i!==e[t]))))}))},use:t=>{o.use(t)}}},t.First=function(t){return n=>{e.Applied(t,(t=>t[0]))(n)}},t.FromJson=function(t,e){return n=>{t((t=>{try{n(JSON.parse(t))}catch(t){e?.(new Error(`Failed to parse JSON: ${t}`))}}))}},t.HashTable=function(t){return e=>{const n={};t((([t,r])=>{n[t]=r,e(n)}))}},t.Loading=function(t,e){return n=>{t((()=>n(!0))),e((()=>n(!1)))}},t.Lock=function(t,n){return r=>{let i=!1;n((t=>{i=t}));e.Filtered(t,(()=>!i))(r)}},t.Memo=function(t){return e=>{let n=null;t((t=>{t!==n&&(e(t),n=t)}))}},t.Not=function(t){return e=>{t((t=>{e(!t)}))}},t.OnlyChanged=function(t){return e=>{let n=!1;t((t=>{!1===n?n=!0:e(t)}))}},t.Or=function(t,n){return r=>{e.All(t,n)((([t,e])=>{r(t||e)}))}},t.Part=function(t,n){const r=e.Primitive(t.event),i=e.Primitive(n);return{event:r=>{e.All(t.event,n)((([t,e])=>{const n=e.split(".");let i=t;n.forEach((t=>{i=i[t]})),void 0!==i&&i!==t&&r(i)}))},use:n=>{const o=i.primitive();e.isFilled(o)&&t.use({...r.primitive(),[o]:n})}}},t.Path=function(t,n){return r=>{e.All(t,n)((([t,e])=>{const n=e.split(".");let i=t;n.forEach((t=>{i=i[t]})),void 0!==i&&i!==t&&r(i)}))}},t.Polling=function(t,e){return n=>{e((()=>{t(n)}))}},t.RecordOf=i,t.RegexpMatch=function(t,n,r=e.Of("")){return i=>{e.All(t,n,r)((([t,e,n])=>{const r=new RegExp(t,n).exec(e);i(r??[])}))}},t.RegexpMatched=o,t.RegexpReplaced=function(t,n,r,i=e.Of("")){return o=>{e.All(n,t,r,i)((([t,e,n,r])=>{o(String(e).replace(new RegExp(t,r),n))}))}},t.Router=function(t,r,i){return u=>{const c=[],s=()=>{c.forEach((t=>t())),c.length=0};return e.All(r,t)((([t,r])=>{s();const f=e.All(i(),e.All(...t.map((t=>e.Destructor(n(o(e.Of(t.pattern),e.Of(r),t.patternFlags?e.Of(t.patternFlags):void 0),t.template,l),(t=>c.push(t))).event))));e.Applied(f,(t=>{const e=t[1].find((t=>!1!==t));return e||t[0]}))(u)})),s}},t.Set=function(t,n,r){return i=>{e.All(t,n,r)((([t,e,n])=>{t[e]=n,i(t)}))}},t.Shot=function(t,n){return r=>{const i=e.Primitive(t);n((()=>{const t=i.primitive();e.isFilled(t)&&r(t)}))}},t.Task=function(t,n=0){return r=>{let i=null;e.ExecutorApplied(t,(t=>e=>{i&&clearTimeout(i),i=setTimeout((()=>{t(e)}),n)}))(r)}},t.Template=function(t=e.Of(""),n=e.Of({})){let r=0;const o={$TPL:e.Of("$TPL")},l=[];return{value:r=>{const l=i(o);e.Applied(e.All(t,n,l),(([t,e,n])=>(Object.entries(e).forEach((([e,n])=>{t=t.replaceAll(e,String(n))})),Object.entries(n).forEach((([e,n])=>{t=t.replaceAll(e,String(n))})),t)))(r)},template:n=>{t=e.Of(n)},var:t=>{const n=`$var${r}`;return r+=1,o[n]=e.Destructor(t,(t=>{l.push(t)})).event,n},destroy(){l.forEach((t=>t()))}}},t.Tick=function(t){return e=>{let n=!1,r=null;t((t=>{r=t,n||(n=!0,queueMicrotask((()=>{n=!1,null!==r&&(e(r),r=null)})))}))}},t.ToJson=function(t,e){return n=>{t((t=>{try{n(JSON.stringify(t))}catch{e?.(new Error("Failed to convert to JSON"))}}))}},t.Transaction=function(t,n,...i){return o=>{const l=e.LateShared(),u=[];return t((t=>{const o=e.Destructor(n(e.Of(t),...i.map((t=>r(t)))));u.push(o),o.event(l.use)})),l.event(o),()=>{u.forEach((t=>t.destroy())),u.length=0}}}}({},silentium);
@@ -1,2 +1,2 @@
1
- import{Primitive as t,Shared as n,Filtered as e,isFilled as r,Late as u,Applied as o,All as i,ExecutorApplied as c,LateShared as l,Destructor as s,Of as f}from"silentium";function a(n,e,r){return u=>{const o=t(e);let i;void 0!==r&&(i=t(r)),n((t=>{let n=null;t?n=o.primitive():i&&(n=i.primitive()),null!==n&&u(n)}))}}function p(t,n,e){return r=>{let u;return t((t=>{void 0!==u&&"function"==typeof u&&u();let o=null;t?o=n():e&&(o=e()),o&&(u=o(r))})),()=>{u?.()}}}function v(t,n){return e=>{n((()=>{e(t)}))}}function m(t,r,u){return o=>{let i=null;const c=n(r,!0);u((n=>{i&&clearTimeout(i);let r=!1;i=setTimeout((()=>{r||(r=!0,t(new Error("Timeout reached in Deadline class")))}),n);e(c.event,(()=>!r))(o),c.event((()=>{r=!0}))}))}}function h(n,e){return u=>{const o=t(n);e((()=>{const t=o.primitive();r(t)&&u(t)}))}}function d(n){return function(e){const u=t(n).primitive();r(u)&&e(u)}}function E(t,n=[],e=[],r){const c=u();return void 0===r&&(r=t=>JSON.parse(JSON.stringify(t))),{event:u=>{const l=o(c.event,r);i(l,t)((([t,r])=>{t&&u(Object.fromEntries(Object.entries(t).filter((([t,u])=>!!n.includes(t)||!e.includes(t)&&u!==r[t]))))}))},use:t=>{c.use(t)}}}function g(t,n){return e=>{t((()=>e(!0))),n((()=>e(!1)))}}function O(t,n){return r=>{let u=!1;n((t=>{u=t}));e(t,(()=>!u))(r)}}function S(t){return n=>{let e=null;t((t=>{t!==e&&(n(t),e=t)}))}}function y(t){return n=>{let e=!1;t((t=>{!1===e?e=!0:n(t)}))}}function j(n,e){const u=t(n.event),o=t(e);return{event:t=>{i(n.event,e)((([n,e])=>{const r=e.split(".");let u=n;r.forEach((t=>{u=u[t]})),void 0!==u&&u!==n&&t(u)}))},use:t=>{const e=o.primitive();r(e)&&n.use({...u.primitive(),[e]:t})}}}function T(t,n){return e=>{i(t,n)((([t,n])=>{const r=n.split(".");let u=t;r.forEach((t=>{u=u[t]})),void 0!==u&&u!==t&&e(u)}))}}function b(t,n){return e=>{n((()=>{t(e)}))}}function w(n,e){return u=>{const o=t(n);e((()=>{const t=o.primitive();r(t)&&u(t)}))}}function J(t,n=0){return e=>{let r=null;c(t,(t=>e=>{r&&clearTimeout(r),r=setTimeout((()=>{t(e)}),n)}))(e)}}function N(t){return n=>{let e=!1,r=null;t((t=>{r=t,e||(e=!0,queueMicrotask((()=>{e=!1,null!==r&&(n(r),r=null)})))}))}}function x(t,n,...e){const r=l(),u=[];return t((t=>{const o=s(n(f(t),...e.map((t=>d(t)))));u.push(o),o.event(r.use)})),t=>(r.event(t),()=>{u.forEach((t=>t.destroy())),u.length=0})}function $(t){return n=>{const e={};t((([t,r])=>{e[t]=r,n(e)}))}}function F(t){return n=>{const e=Object.keys(t);i(...Object.values(t))((t=>{const r={};t.forEach(((t,n)=>{r[e[n]]=t})),n(r)}))}}function R(t,n=f("")){return e=>{i(n,...t)((([t,...n])=>{e(n.join(t))}))}}function k(t=f(""),n=f({})){let e=0;const r={$TPL:f("$TPL")},u=[];return{value:e=>{const u=F(r);o(i(t,n,u),(([t,n,e])=>(Object.entries(n).forEach((([n,e])=>{t=t.replaceAll(n,String(e))})),Object.entries(e).forEach((([n,e])=>{t=t.replaceAll(n,String(e))})),t)))(e)},template:n=>{t=f(n)},var:t=>{const n=`$var${e}`;return e+=1,r[n]=s(t,(t=>{u.push(t)})).event,n},destroy(){u.forEach((t=>t()))}}}function A(t,n,e=f("")){return r=>{i(t,n,e)((([t,n,e])=>{r(new RegExp(t,e).test(n))}))}}function L(t,n,e,r=f("")){return u=>{i(n,t,e,r)((([t,n,e,r])=>{u(String(n).replace(new RegExp(t,r),e))}))}}function P(t,n,e=f("")){return r=>{i(t,n,e)((([t,n,e])=>{const u=new RegExp(t,e).exec(n);r(u??[])}))}}function q(t,n,e){return r=>{i(t,n,e)((([t,n,e])=>{t[n]=e,r(t)}))}}const B=()=>f(!1);function D(t,n,e){return r=>{const u=[],c=()=>{u.forEach((t=>t())),u.length=0};return i(n,t)((([t,n])=>{c();const l=i(e(),i(...t.map((t=>s(p(A(f(t.pattern),f(n),t.patternFlags?f(t.patternFlags):void 0),t.template,B),(t=>u.push(t))).event))));o(l,(t=>{const n=t[1].find((t=>!1!==t));return n||t[0]}))(r)})),c}}function M(t,n){return e=>{i(t,n)((([t,n])=>{e(t&&n)}))}}function z(t,n){return e=>{i(t,n)((([t,n])=>{e(t||n)}))}}function C(t){return n=>{t((t=>{n(!t)}))}}function G(t){return n=>{o(t,Boolean)(n)}}function H(t,n){return e=>{t((t=>{try{e(JSON.parse(t))}catch(t){n?.(new Error(`Failed to parse JSON: ${t}`))}}))}}function I(t,n){return e=>{t((t=>{try{e(JSON.stringify(t))}catch{n?.(new Error("Failed to convert to JSON"))}}))}}function K(t){return n=>{o(t,(t=>t[0]))(n)}}export{M as And,G as Bool,a as Branch,p as BranchLazy,R as Concatenated,v as Constant,m as Deadline,h as Deferred,d as Detached,E as Dirty,K as First,H as FromJson,$ as HashTable,g as Loading,O as Lock,S as Memo,C as Not,y as OnlyChanged,z as Or,j as Part,T as Path,b as Polling,F as RecordOf,P as RegexpMatch,A as RegexpMatched,L as RegexpReplaced,D as Router,q as Set,w as Shot,J as Task,k as Template,N as Tick,I as ToJson,x as Transaction};
1
+ import{Primitive as t,Shared as n,Filtered as e,isFilled as r,Late as u,Applied as o,All as i,ExecutorApplied as c,LateShared as l,Destructor as s,Of as f}from"silentium";function a(n,e,r){return u=>{const o=t(e);let i;void 0!==r&&(i=t(r)),n((t=>{let n=null;t?n=o.primitive():i&&(n=i.primitive()),null!==n&&u(n)}))}}function p(t,n,e){return r=>{let u;return t((t=>{void 0!==u&&"function"==typeof u&&u();let o=null;t?o=n():e&&(o=e()),o&&(u=o(r))})),()=>{u?.()}}}function v(t,n){return e=>{n((()=>{e(t)}))}}function m(t,r,u){return o=>{let i=null;const c=n(r,!0);u((n=>{i&&clearTimeout(i);let r=!1;i=setTimeout((()=>{r||(r=!0,t(new Error("Timeout reached in Deadline class")))}),n);e(c.event,(()=>!r))(o),c.event((()=>{r=!0}))}))}}function h(n,e){return u=>{const o=t(n);e((()=>{const t=o.primitive();r(t)&&u(t)}))}}function d(n){return function(e){const u=t(n).primitive();r(u)&&e(u)}}function E(t,n=[],e=[],r){const c=u();return void 0===r&&(r=t=>JSON.parse(JSON.stringify(t))),{event:u=>{const l=o(c.event,r);i(l,t)((([t,r])=>{t&&u(Object.fromEntries(Object.entries(t).filter((([t,u])=>!!n.includes(t)||!e.includes(t)&&u!==r[t]))))}))},use:t=>{c.use(t)}}}function g(t,n){return e=>{t((()=>e(!0))),n((()=>e(!1)))}}function O(t,n){return r=>{let u=!1;n((t=>{u=t}));e(t,(()=>!u))(r)}}function S(t){return n=>{let e=null;t((t=>{t!==e&&(n(t),e=t)}))}}function y(t){return n=>{let e=!1;t((t=>{!1===e?e=!0:n(t)}))}}function j(n,e){const u=t(n.event),o=t(e);return{event:t=>{i(n.event,e)((([n,e])=>{const r=e.split(".");let u=n;r.forEach((t=>{u=u[t]})),void 0!==u&&u!==n&&t(u)}))},use:t=>{const e=o.primitive();r(e)&&n.use({...u.primitive(),[e]:t})}}}function T(t,n){return e=>{i(t,n)((([t,n])=>{const r=n.split(".");let u=t;r.forEach((t=>{u=u[t]})),void 0!==u&&u!==t&&e(u)}))}}function b(t,n){return e=>{n((()=>{t(e)}))}}function w(n,e){return u=>{const o=t(n);e((()=>{const t=o.primitive();r(t)&&u(t)}))}}function J(t,n=0){return e=>{let r=null;c(t,(t=>e=>{r&&clearTimeout(r),r=setTimeout((()=>{t(e)}),n)}))(e)}}function N(t){return n=>{let e=!1,r=null;t((t=>{r=t,e||(e=!0,queueMicrotask((()=>{e=!1,null!==r&&(n(r),r=null)})))}))}}function x(t,n,...e){return r=>{const u=l(),o=[];return t((t=>{const r=s(n(f(t),...e.map((t=>d(t)))));o.push(r),r.event(u.use)})),u.event(r),()=>{o.forEach((t=>t.destroy())),o.length=0}}}function $(t){return n=>{const e={};t((([t,r])=>{e[t]=r,n(e)}))}}function F(t){return n=>{const e=Object.keys(t);i(...Object.values(t))((t=>{const r={};t.forEach(((t,n)=>{r[e[n]]=t})),n(r)}))}}function R(t,n=f("")){return e=>{i(n,...t)((([t,...n])=>{e(n.join(t))}))}}function k(t=f(""),n=f({})){let e=0;const r={$TPL:f("$TPL")},u=[];return{value:e=>{const u=F(r);o(i(t,n,u),(([t,n,e])=>(Object.entries(n).forEach((([n,e])=>{t=t.replaceAll(n,String(e))})),Object.entries(e).forEach((([n,e])=>{t=t.replaceAll(n,String(e))})),t)))(e)},template:n=>{t=f(n)},var:t=>{const n=`$var${e}`;return e+=1,r[n]=s(t,(t=>{u.push(t)})).event,n},destroy(){u.forEach((t=>t()))}}}function A(t,n,e=f("")){return r=>{i(t,n,e)((([t,n,e])=>{r(new RegExp(t,e).test(n))}))}}function L(t,n,e,r=f("")){return u=>{i(n,t,e,r)((([t,n,e,r])=>{u(String(n).replace(new RegExp(t,r),e))}))}}function P(t,n,e=f("")){return r=>{i(t,n,e)((([t,n,e])=>{const u=new RegExp(t,e).exec(n);r(u??[])}))}}function q(t,n,e){return r=>{i(t,n,e)((([t,n,e])=>{t[n]=e,r(t)}))}}const B=()=>f(!1);function D(t,n,e){return r=>{const u=[],c=()=>{u.forEach((t=>t())),u.length=0};return i(n,t)((([t,n])=>{c();const l=i(e(),i(...t.map((t=>s(p(A(f(t.pattern),f(n),t.patternFlags?f(t.patternFlags):void 0),t.template,B),(t=>u.push(t))).event))));o(l,(t=>{const n=t[1].find((t=>!1!==t));return n||t[0]}))(r)})),c}}function M(t,n){return e=>{i(t,n)((([t,n])=>{e(t&&n)}))}}function z(t,n){return e=>{i(t,n)((([t,n])=>{e(t||n)}))}}function C(t){return n=>{t((t=>{n(!t)}))}}function G(t){return n=>{o(t,Boolean)(n)}}function H(t,n){return e=>{t((t=>{try{e(JSON.parse(t))}catch(t){n?.(new Error(`Failed to parse JSON: ${t}`))}}))}}function I(t,n){return e=>{t((t=>{try{e(JSON.stringify(t))}catch{n?.(new Error("Failed to convert to JSON"))}}))}}function K(t){return n=>{o(t,(t=>t[0]))(n)}}export{M as And,G as Bool,a as Branch,p as BranchLazy,R as Concatenated,v as Constant,m as Deadline,h as Deferred,d as Detached,E as Dirty,K as First,H as FromJson,$ as HashTable,g as Loading,O as Lock,S as Memo,C as Not,y as OnlyChanged,z as Or,j as Part,T as Path,b as Polling,F as RecordOf,P as RegexpMatch,A as RegexpMatched,L as RegexpReplaced,D as Router,q as Set,w as Shot,J as Task,k as Template,N as Tick,I as ToJson,x as Transaction};
2
2
  //# sourceMappingURL=silentium-components.min.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"silentium-components.min.mjs","sources":["../src/behaviors/Branch.ts","../src/behaviors/BranchLazy.ts","../src/behaviors/Const.ts","../src/behaviors/Deadline.ts","../src/behaviors/Deferred.ts","../src/behaviors/Detached.ts","../src/behaviors/Dirty.ts","../src/behaviors/Loading.ts","../src/behaviors/Lock.ts","../src/behaviors/Memo.ts","../src/behaviors/OnlyChanged.ts","../src/behaviors/Part.ts","../src/behaviors/Path.ts","../src/behaviors/Polling.ts","../src/behaviors/Shot.ts","../src/behaviors/Task.ts","../src/behaviors/Tick.ts","../src/behaviors/Transaction.ts","../src/structures/HashTable.ts","../src/structures/RecordOf.ts","../src/strings/Concatenated.ts","../src/strings/Template.ts","../src/system/RegexpMatched.ts","../src/system/RegexpReplaced.ts","../src/system/RegexpMatch.ts","../src/system/Set.ts","../src/navigation/Router.ts","../src/boolean/And.ts","../src/boolean/Or.ts","../src/boolean/Not.ts","../src/boolean/Bool.ts","../src/formats/FromJson.ts","../src/formats/ToJson.ts","../src/lists/First.ts"],"sourcesContent":["import { EventType, Primitive } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/branch\n */\nexport function Branch<Then, Else>(\n conditionSrc: EventType<boolean>,\n leftSrc: EventType<Then>,\n rightSrc?: EventType<Else>,\n): EventType<Then | Else> {\n return (user) => {\n const leftSync = Primitive(leftSrc);\n let rightSync: ReturnType<typeof Primitive<Else>>;\n\n if (rightSrc !== undefined) {\n rightSync = Primitive(rightSrc);\n }\n\n conditionSrc((v) => {\n let result: Then | Else | null = null;\n if (v) {\n result = leftSync.primitive();\n } else if (rightSync) {\n result = rightSync.primitive();\n }\n\n if (result !== null) {\n user(result);\n }\n });\n };\n}\n","import { EventType, DestructorType, ConstructorType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/branch\n */\nexport function BranchLazy<Then, Else>(\n conditionSrc: EventType<boolean>,\n leftSrc: ConstructorType<[], EventType<Then>>,\n rightSrc?: ConstructorType<[], EventType<Else>>,\n): EventType<Then | Else> {\n return (user) => {\n let Destructor: DestructorType | void;\n conditionSrc((v) => {\n if (Destructor !== undefined && typeof Destructor === \"function\") {\n Destructor();\n }\n let instance: EventType<Then | Else> | null = null;\n if (v) {\n instance = leftSrc();\n } else if (rightSrc) {\n instance = rightSrc();\n }\n if (instance) {\n Destructor = instance(user);\n }\n });\n\n return () => {\n Destructor?.();\n };\n };\n}\n","import { EventType } from \"silentium\";\n\nexport function Constant<T>(\n permanentValue: T,\n triggerSrc: EventType,\n): EventType<T> {\n return (user) => {\n triggerSrc(() => {\n user(permanentValue);\n });\n };\n}\n","import { EventType, Filtered, Shared, EventUserType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport function Deadline<T>(\n error: EventUserType<Error>,\n baseSrc: EventType<T>,\n timeoutSrc: EventType<number>,\n): EventType<T> {\n return (user) => {\n let timerHead: unknown = null;\n\n const s = Shared(baseSrc, true);\n\n timeoutSrc((timeout) => {\n if (timerHead) {\n clearTimeout(timerHead as number);\n }\n let timeoutReached = false;\n\n timerHead = setTimeout(() => {\n if (timeoutReached) {\n return;\n }\n timeoutReached = true;\n error(new Error(\"Timeout reached in Deadline class\"));\n }, timeout);\n\n const f = Filtered(s.event, () => !timeoutReached);\n f(user);\n\n s.event(() => {\n timeoutReached = true;\n });\n });\n };\n}\n","import { EventType, isFilled, 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 baseSrc: EventType<T>,\n triggerSrc: EventType<unknown>,\n): EventType<T> {\n return (user) => {\n const baseSync = Primitive(baseSrc);\n triggerSrc(() => {\n const value = baseSync.primitive();\n if (isFilled(value)) {\n user(value);\n }\n });\n };\n}\n","import { EventType, isFilled, Primitive } from \"silentium\";\n\nexport function Detached<T>(baseSrc: EventType<T>): EventType<T> {\n return function Detached(user) {\n const v = Primitive(baseSrc).primitive();\n if (isFilled(v)) {\n user(v);\n }\n };\n}\n","import { All, Applied, EventType, Late, SourceType } 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 baseEntitySource: EventType<T>,\n alwaysKeep: string[] = [],\n excludeKeys: string[] = [],\n cloneFn?: (v: T) => T,\n): SourceType<T> {\n const comparingSrc = Late<T>();\n\n if (cloneFn === undefined) {\n cloneFn = (value) => JSON.parse(JSON.stringify(value));\n }\n\n return {\n event: (user) => {\n const comparingDetached = Applied(comparingSrc.event, cloneFn);\n\n All(\n comparingDetached,\n baseEntitySource,\n )(([comparing, base]) => {\n if (!comparing) {\n return;\n }\n\n user(\n Object.fromEntries(\n Object.entries(comparing).filter(([key, value]) => {\n if (alwaysKeep.includes(key)) {\n return true;\n }\n if (excludeKeys.includes(key)) {\n return false;\n }\n return value !== (base as any)[key];\n }),\n ) as T,\n );\n });\n },\n use: (v) => {\n comparingSrc.use(v);\n },\n };\n}\n","import { EventType } from \"silentium\";\n\n/**\n * Representation Of loading process\n * first informatin source begins loading\n * second information source stops loading\n * https://silentium-lab.github.io/silentium-components/#/behaviors/loading\n */\nexport function Loading(\n loadingStartSrc: EventType<unknown>,\n loadingFinishSrc: EventType<unknown>,\n): EventType<boolean> {\n return (user) => {\n loadingStartSrc(() => user(true));\n loadingFinishSrc(() => user(false));\n };\n}\n","import { EventType, Filtered } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/lock\n */\nexport function Lock<T>(\n baseSrc: EventType<T>,\n lockSrc: EventType<boolean>,\n): EventType<T> {\n return (user) => {\n let locked = false;\n lockSrc((newLock) => {\n locked = newLock;\n });\n const i = Filtered(baseSrc, () => !locked);\n i(user);\n };\n}\n","import { EventType } 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>(baseSrc: EventType<T>): EventType<T> {\n return (user) => {\n let lastValue: T | null = null;\n\n baseSrc((v) => {\n if (v !== lastValue) {\n user(v);\n lastValue = v;\n }\n });\n };\n}\n","import { EventType } 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>(baseSrc: EventType<T>): EventType<T> {\n return (user) => {\n let firstValue = false;\n\n baseSrc((v) => {\n if (firstValue === false) {\n firstValue = true;\n } else {\n user(v);\n }\n });\n };\n}\n","import { All, EventType, isFilled, Primitive, SourceType } from \"silentium\";\n\n/**\n * Return source Of record path\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport function Part<R, T extends object | Array<any>, K extends string = any>(\n baseSrc: SourceType<T>,\n keySrc: EventType<K>,\n): SourceType<R> {\n const baseSync = Primitive(baseSrc.event);\n const keySync = Primitive(keySrc);\n return {\n event: (user) => {\n All(\n baseSrc.event,\n keySrc,\n )(([base, key]) => {\n const keyChunks = key.split(\".\");\n let value: unknown = base;\n keyChunks.forEach((keyChunk) => {\n value = (value as Record<string, unknown>)[keyChunk];\n });\n\n if (value !== undefined && value !== base) {\n user(value as R);\n }\n });\n },\n use: (value: R) => {\n const key = keySync.primitive();\n if (isFilled(key)) {\n baseSrc.use({\n ...baseSync.primitive(),\n [key]: value,\n } as T);\n }\n },\n };\n}\n","import { All, EventType } from \"silentium\";\n\n/**\n * Return source Of record path\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport function Path<R, T extends object | Array<any>, K extends string = any>(\n baseSrc: EventType<T>,\n keySrc: EventType<K>,\n): EventType<R> {\n return (user) => {\n All(\n baseSrc,\n keySrc,\n )(([base, key]) => {\n const keyChunks = key.split(\".\");\n let value: unknown = base;\n keyChunks.forEach((keyChunk) => {\n value = (value as Record<string, unknown>)[keyChunk];\n });\n\n if (value !== undefined && value !== base) {\n user(value as R);\n }\n });\n };\n}\n","import { EventType } from \"silentium\";\n\nexport function Polling<T>(\n baseSrc: EventType<T>,\n triggerSrc: EventType<T>,\n): EventType<T> {\n return (user) => {\n triggerSrc(() => {\n baseSrc(user);\n });\n };\n}\n","import { EventType, isFilled, 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>(\n targetSrc: EventType<T>,\n triggerSrc: EventType,\n): EventType<T> {\n return (user) => {\n const targetSync = Primitive(targetSrc);\n\n triggerSrc(() => {\n const value = targetSync.primitive();\n if (isFilled(value)) {\n user(value);\n }\n });\n };\n}\n","import { EventType, ExecutorApplied } from \"silentium\";\n\nexport function Task<T>(\n baseSrc: EventType<T>,\n delay: number = 0,\n): EventType<T> {\n return (user) => {\n let prevTimer: unknown | null = null;\n ExecutorApplied(baseSrc, (fn) => {\n return (v) => {\n if (prevTimer) {\n clearTimeout(prevTimer as number);\n }\n prevTimer = setTimeout(() => {\n fn(v);\n }, delay);\n };\n })(user);\n };\n}\n","import { EventType } 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>(baseSrc: EventType<T>): EventType<T> {\n return (user) => {\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 user(lastValue);\n lastValue = null;\n }\n });\n };\n\n baseSrc((v) => {\n lastValue = v;\n if (!microtaskScheduled) {\n scheduleMicrotask();\n }\n });\n };\n}\n","import {\n ConstructorType,\n DestroyableType,\n Destructor,\n EventType,\n LateShared,\n Of,\n} from \"silentium\";\nimport { Detached } from \"../behaviors/Detached\";\n\n/**\n * Do something on event value.\n * Each event value will create new eventBuilder instance\n */\nexport function Transaction<T, R = unknown>(\n $base: EventType<T>,\n eventBuilder: ConstructorType<\n [EventType<T>, ...EventType<any>[]],\n EventType<R>\n >,\n ...args: EventType[]\n): EventType<R> {\n const $res = LateShared<R>();\n const destructors: DestroyableType[] = [];\n\n $base((v) => {\n const $event = Destructor(\n eventBuilder(Of(v), ...args.map((a) => Detached(a))),\n );\n destructors.push($event);\n $event.event($res.use);\n });\n\n return (user) => {\n $res.event(user);\n\n return () => {\n destructors.forEach((d) => d.destroy());\n destructors.length = 0;\n };\n };\n}\n","import { EventType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/structures/hash-table\n */\nexport function HashTable<T>(\n baseSrc: EventType<[string, unknown]>,\n): EventType<T> {\n return (user) => {\n const record: Record<string, unknown> = {};\n\n baseSrc(([key, value]) => {\n record[key] = value;\n user(record as T);\n });\n };\n}\n","import { All, EventType } from \"silentium\";\n\ntype UnInformation<T> = T extends EventType<infer U> ? U : never;\n\n/**\n * Returns record Of data from record Of sources\n * https://silentium-lab.github.io/silentium-components/#/structures/record\n */\nexport function RecordOf<T extends EventType>(\n recordSrc: Record<string, T>,\n): EventType<Record<string, UnInformation<T>>> {\n return (user) => {\n const keys = Object.keys(recordSrc);\n All(...Object.values(recordSrc))((entries) => {\n const record: Record<string, any> = {};\n entries.forEach((entry, index) => {\n record[keys[index]] = entry;\n });\n user(record);\n });\n };\n}\n","import { All, EventType, 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: EventType<string>[],\n joinPartSrc: EventType<string> = Of(\"\"),\n): EventType<string> {\n return (user) => {\n All(\n joinPartSrc,\n ...sources,\n )(([joinPart, ...strings]) => {\n user(strings.join(joinPart));\n });\n };\n}\n","import {\n All,\n Applied,\n EventType,\n Destructor,\n DestructorType,\n Of,\n} from \"silentium\";\nimport { RecordOf } from \"../structures\";\n\nexport function Template(\n theSrc: EventType<string> = Of(\"\"),\n placesSrc: EventType<Record<string, unknown>> = Of({}),\n) {\n let placesCounter = 0;\n const vars: Record<string, EventType> = {\n $TPL: Of(\"$TPL\"),\n };\n const destructors: DestructorType[] = [];\n return {\n value: <EventType<string>>((user) => {\n const varsSrc = RecordOf(vars);\n Applied(All(theSrc, placesSrc, varsSrc), ([base, rules, vars]) => {\n Object.entries(rules).forEach(([ph, val]) => {\n base = base.replaceAll(ph, String(val));\n });\n Object.entries(vars).forEach(([ph, val]) => {\n base = base.replaceAll(ph, String(val));\n });\n\n return base;\n })(user);\n }),\n template: (value: string) => {\n theSrc = Of(value);\n },\n /**\n * Ability to register variable\n * in concrete place Of template\n */\n var: (src: EventType<string>) => {\n const varName = `$var${placesCounter}`;\n placesCounter += 1;\n vars[varName] = Destructor(src, (d: DestructorType) => {\n destructors.push(d);\n }).event;\n return varName;\n },\n destroy() {\n destructors.forEach((d) => d());\n },\n };\n}\n","import { All, EventType, 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: EventType<string>,\n valueSrc: EventType<string>,\n flagsSrc: EventType<string> = Of(\"\"),\n): EventType<boolean> {\n return (user) => {\n All(\n patternSrc,\n valueSrc,\n flagsSrc,\n )(([pattern, value, flags]) => {\n user(new RegExp(pattern, flags).test(value));\n });\n };\n}\n","import { All, EventType, 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: EventType<string>,\n patternSrc: EventType<string>,\n replaceValueSrc: EventType<string>,\n flagsSrc: EventType<string> = Of(\"\"),\n): EventType<string> {\n return (user) => {\n All(\n patternSrc,\n valueSrc,\n replaceValueSrc,\n flagsSrc,\n )(([pattern, value, replaceValue, flags]) => {\n user(String(value).replace(new RegExp(pattern, flags), replaceValue));\n });\n };\n}\n","import { All, EventType, 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: EventType<string>,\n valueSrc: EventType<string>,\n flagsSrc: EventType<string> = Of(\"\"),\n): EventType<string[]> {\n return (user) => {\n All(\n patternSrc,\n valueSrc,\n flagsSrc,\n )(([pattern, value, flags]) => {\n const result = new RegExp(pattern, flags).exec(value);\n user(result ?? []);\n });\n };\n}\n","import { All, EventType } from \"silentium\";\n\n/**\n * Ability to mutate some object, helpful when integrate to procedure systems\n * https://silentium-lab.github.io/silentium-components/#/system/set\n */\nexport function Set<T extends Record<string, unknown>>(\n baseSrc: EventType<T>,\n keySrc: EventType<string>,\n valueSrc: EventType<unknown>,\n): EventType<T> {\n return (user) => {\n All(\n baseSrc,\n keySrc,\n valueSrc,\n )(([base, key, value]) => {\n (base as Record<string, unknown>)[key] = value;\n user(base);\n });\n };\n}\n","import {\n All,\n Applied,\n EventType,\n Destructor,\n DestructorType,\n Of,\n ConstructorType,\n} from \"silentium\";\nimport { RegexpMatched } from \"../system\";\nimport { BranchLazy } from \"../behaviors\";\n\nexport interface Route<T> {\n pattern: string;\n patternFlags?: string;\n template: ConstructorType<[], EventType<T>>;\n}\n\nconst emptySrc = () => Of(false);\n\n/**\n * Router component what will return template if url matches pattern\n * https://silentium-lab.github.io/silentium-components/#/navigation/router\n */\nexport function Router<T = \"string\">(\n urlSrc: EventType<string>,\n routesSrc: EventType<Route<T>[]>,\n defaultSrc: ConstructorType<[], EventType<T>>,\n): EventType<T> {\n return (user) => {\n const destructors: DestructorType[] = [];\n const destroyAllData = () => {\n destructors.forEach((d) => d());\n destructors.length = 0;\n };\n All(\n routesSrc,\n urlSrc,\n )(([routes, url]) => {\n destroyAllData();\n const instance = All(\n defaultSrc(),\n All(\n ...routes.map(\n (r) =>\n Destructor(\n BranchLazy(\n RegexpMatched(\n Of(r.pattern),\n Of(url),\n r.patternFlags ? Of(r.patternFlags) : undefined,\n ),\n r.template,\n emptySrc,\n ),\n (d: DestructorType) => destructors.push(d),\n ).event,\n ),\n ),\n );\n\n // Return first not false or default\n Applied(instance, (r) => {\n const firstReal = r[1].find((r) => r !== false);\n\n if (firstReal) {\n return firstReal as T;\n }\n\n return r[0];\n })(user);\n });\n\n return destroyAllData;\n };\n}\n","import { All, EventType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/and\n */\nexport function And(\n oneSrc: EventType<boolean>,\n twoSrc: EventType<boolean>,\n): EventType<boolean> {\n return (user) => {\n All(\n oneSrc,\n twoSrc,\n )(([one, two]) => {\n user(one && two);\n });\n };\n}\n","import { All, EventType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/or\n */\nexport function Or(\n oneSrc: EventType<boolean>,\n twoSrc: EventType<boolean>,\n): EventType<boolean> {\n return (user) => {\n All(\n oneSrc,\n twoSrc,\n )(([one, two]) => {\n user(one || two);\n });\n };\n}\n","import { EventType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/not\n */\nexport function Not(baseSrc: EventType<boolean>): EventType<boolean> {\n return (user) => {\n baseSrc((v) => {\n user(!v);\n });\n };\n}\n","import { Applied, EventType } from \"silentium\";\n\n/**\n * Convert Any source to boolean source\n * https://silentium-lab.github.io/silentium-components/#/boolean/bool\n */\nexport function Bool(baseSrc: EventType): EventType<boolean> {\n return (user) => {\n Applied(baseSrc, Boolean)(user);\n };\n}\n","import { EventType, EventUserType } from \"silentium\";\n\n/**\n * Represents object from json\n */\nexport function FromJson<T = Record<string, unknown>>(\n jsonSrc: EventType<string>,\n errorOwner?: EventUserType,\n): EventType<T> {\n return (user) => {\n jsonSrc((json) => {\n try {\n user(JSON.parse(json));\n } catch (error) {\n errorOwner?.(new Error(`Failed to parse JSON: ${error}`));\n }\n });\n };\n}\n","import { EventType, EventUserType } from \"silentium\";\n\n/**\n * Represents json from object\n */\nexport function ToJson(\n dataSrc: EventType,\n errorOwner?: EventUserType,\n): EventType<string> {\n return (user) => {\n dataSrc((data: unknown) => {\n try {\n user(JSON.stringify(data));\n } catch {\n errorOwner?.(new Error(\"Failed to convert to JSON\"));\n }\n });\n };\n}\n","import { Applied, EventType } from \"silentium\";\n\n/**\n * Represents the first element Of an array.\n */\nexport function First<T extends Array<unknown>>(\n baseSrc: EventType<T>,\n): EventType<T[0]> {\n return (user) => {\n Applied(baseSrc, (a) => a[0])(user);\n };\n}\n"],"names":["Branch","conditionSrc","leftSrc","rightSrc","user","leftSync","Primitive","rightSync","v","result","primitive","BranchLazy","Destructor","instance","Constant","permanentValue","triggerSrc","Deadline","error","baseSrc","timeoutSrc","timerHead","s","Shared","timeout","clearTimeout","timeoutReached","setTimeout","Error","Filtered","event","f","Deferred","baseSync","value","isFilled","Detached","Dirty","baseEntitySource","alwaysKeep","excludeKeys","cloneFn","comparingSrc","Late","JSON","parse","stringify","comparingDetached","Applied","All","comparing","base","Object","fromEntries","entries","filter","key","includes","use","Loading","loadingStartSrc","loadingFinishSrc","Lock","lockSrc","locked","newLock","i","Memo","lastValue","OnlyChanged","firstValue","Part","keySrc","keySync","keyChunks","split","forEach","keyChunk","Path","Polling","Shot","targetSrc","targetSync","Task","delay","prevTimer","ExecutorApplied","fn","Tick","microtaskScheduled","queueMicrotask","Transaction","$base","eventBuilder","args","$res","LateShared","destructors","$event","Of","map","a","push","d","destroy","length","HashTable","record","RecordOf","recordSrc","keys","values","entry","index","Concatenated","sources","joinPartSrc","joinPart","strings","join","Template","theSrc","placesSrc","placesCounter","vars","$TPL","varsSrc","rules","ph","val","replaceAll","String","template","var","src","varName","RegexpMatched","patternSrc","valueSrc","flagsSrc","pattern","flags","RegExp","test","RegexpReplaced","replaceValueSrc","replaceValue","replace","RegexpMatch","exec","Set","emptySrc","Router","urlSrc","routesSrc","defaultSrc","destroyAllData","routes","url","r","patternFlags","firstReal","find","And","oneSrc","twoSrc","one","two","Or","Not","Bool","Boolean","FromJson","jsonSrc","errorOwner","json","ToJson","dataSrc","data","First"],"mappings":"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"}
1
+ {"version":3,"file":"silentium-components.min.mjs","sources":["../src/behaviors/Branch.ts","../src/behaviors/BranchLazy.ts","../src/behaviors/Const.ts","../src/behaviors/Deadline.ts","../src/behaviors/Deferred.ts","../src/behaviors/Detached.ts","../src/behaviors/Dirty.ts","../src/behaviors/Loading.ts","../src/behaviors/Lock.ts","../src/behaviors/Memo.ts","../src/behaviors/OnlyChanged.ts","../src/behaviors/Part.ts","../src/behaviors/Path.ts","../src/behaviors/Polling.ts","../src/behaviors/Shot.ts","../src/behaviors/Task.ts","../src/behaviors/Tick.ts","../src/behaviors/Transaction.ts","../src/structures/HashTable.ts","../src/structures/RecordOf.ts","../src/strings/Concatenated.ts","../src/strings/Template.ts","../src/system/RegexpMatched.ts","../src/system/RegexpReplaced.ts","../src/system/RegexpMatch.ts","../src/system/Set.ts","../src/navigation/Router.ts","../src/boolean/And.ts","../src/boolean/Or.ts","../src/boolean/Not.ts","../src/boolean/Bool.ts","../src/formats/FromJson.ts","../src/formats/ToJson.ts","../src/lists/First.ts"],"sourcesContent":["import { EventType, Primitive } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/branch\n */\nexport function Branch<Then, Else>(\n conditionSrc: EventType<boolean>,\n leftSrc: EventType<Then>,\n rightSrc?: EventType<Else>,\n): EventType<Then | Else> {\n return (user) => {\n const leftSync = Primitive(leftSrc);\n let rightSync: ReturnType<typeof Primitive<Else>>;\n\n if (rightSrc !== undefined) {\n rightSync = Primitive(rightSrc);\n }\n\n conditionSrc((v) => {\n let result: Then | Else | null = null;\n if (v) {\n result = leftSync.primitive();\n } else if (rightSync) {\n result = rightSync.primitive();\n }\n\n if (result !== null) {\n user(result);\n }\n });\n };\n}\n","import { EventType, DestructorType, ConstructorType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/branch\n */\nexport function BranchLazy<Then, Else>(\n conditionSrc: EventType<boolean>,\n leftSrc: ConstructorType<[], EventType<Then>>,\n rightSrc?: ConstructorType<[], EventType<Else>>,\n): EventType<Then | Else> {\n return (user) => {\n let Destructor: DestructorType | void;\n conditionSrc((v) => {\n if (Destructor !== undefined && typeof Destructor === \"function\") {\n Destructor();\n }\n let instance: EventType<Then | Else> | null = null;\n if (v) {\n instance = leftSrc();\n } else if (rightSrc) {\n instance = rightSrc();\n }\n if (instance) {\n Destructor = instance(user);\n }\n });\n\n return () => {\n Destructor?.();\n };\n };\n}\n","import { EventType } from \"silentium\";\n\nexport function Constant<T>(\n permanentValue: T,\n triggerSrc: EventType,\n): EventType<T> {\n return (user) => {\n triggerSrc(() => {\n user(permanentValue);\n });\n };\n}\n","import { EventType, Filtered, Shared, EventUserType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport function Deadline<T>(\n error: EventUserType<Error>,\n baseSrc: EventType<T>,\n timeoutSrc: EventType<number>,\n): EventType<T> {\n return (user) => {\n let timerHead: unknown = null;\n\n const s = Shared(baseSrc, true);\n\n timeoutSrc((timeout) => {\n if (timerHead) {\n clearTimeout(timerHead as number);\n }\n let timeoutReached = false;\n\n timerHead = setTimeout(() => {\n if (timeoutReached) {\n return;\n }\n timeoutReached = true;\n error(new Error(\"Timeout reached in Deadline class\"));\n }, timeout);\n\n const f = Filtered(s.event, () => !timeoutReached);\n f(user);\n\n s.event(() => {\n timeoutReached = true;\n });\n });\n };\n}\n","import { EventType, isFilled, 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 baseSrc: EventType<T>,\n triggerSrc: EventType<unknown>,\n): EventType<T> {\n return (user) => {\n const baseSync = Primitive(baseSrc);\n triggerSrc(() => {\n const value = baseSync.primitive();\n if (isFilled(value)) {\n user(value);\n }\n });\n };\n}\n","import { EventType, isFilled, Primitive } from \"silentium\";\n\nexport function Detached<T>(baseSrc: EventType<T>): EventType<T> {\n return function Detached(user) {\n const v = Primitive(baseSrc).primitive();\n if (isFilled(v)) {\n user(v);\n }\n };\n}\n","import { All, Applied, EventType, Late, SourceType } 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 baseEntitySource: EventType<T>,\n alwaysKeep: string[] = [],\n excludeKeys: string[] = [],\n cloneFn?: (v: T) => T,\n): SourceType<T> {\n const comparingSrc = Late<T>();\n\n if (cloneFn === undefined) {\n cloneFn = (value) => JSON.parse(JSON.stringify(value));\n }\n\n return {\n event: (user) => {\n const comparingDetached = Applied(comparingSrc.event, cloneFn);\n\n All(\n comparingDetached,\n baseEntitySource,\n )(([comparing, base]) => {\n if (!comparing) {\n return;\n }\n\n user(\n Object.fromEntries(\n Object.entries(comparing).filter(([key, value]) => {\n if (alwaysKeep.includes(key)) {\n return true;\n }\n if (excludeKeys.includes(key)) {\n return false;\n }\n return value !== (base as any)[key];\n }),\n ) as T,\n );\n });\n },\n use: (v) => {\n comparingSrc.use(v);\n },\n };\n}\n","import { EventType } from \"silentium\";\n\n/**\n * Representation Of loading process\n * first informatin source begins loading\n * second information source stops loading\n * https://silentium-lab.github.io/silentium-components/#/behaviors/loading\n */\nexport function Loading(\n loadingStartSrc: EventType<unknown>,\n loadingFinishSrc: EventType<unknown>,\n): EventType<boolean> {\n return (user) => {\n loadingStartSrc(() => user(true));\n loadingFinishSrc(() => user(false));\n };\n}\n","import { EventType, Filtered } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/lock\n */\nexport function Lock<T>(\n baseSrc: EventType<T>,\n lockSrc: EventType<boolean>,\n): EventType<T> {\n return (user) => {\n let locked = false;\n lockSrc((newLock) => {\n locked = newLock;\n });\n const i = Filtered(baseSrc, () => !locked);\n i(user);\n };\n}\n","import { EventType } 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>(baseSrc: EventType<T>): EventType<T> {\n return (user) => {\n let lastValue: T | null = null;\n\n baseSrc((v) => {\n if (v !== lastValue) {\n user(v);\n lastValue = v;\n }\n });\n };\n}\n","import { EventType } 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>(baseSrc: EventType<T>): EventType<T> {\n return (user) => {\n let firstValue = false;\n\n baseSrc((v) => {\n if (firstValue === false) {\n firstValue = true;\n } else {\n user(v);\n }\n });\n };\n}\n","import { All, EventType, isFilled, Primitive, SourceType } from \"silentium\";\n\n/**\n * Return source Of record path\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport function Part<R, T extends object | Array<any>, K extends string = any>(\n baseSrc: SourceType<T>,\n keySrc: EventType<K>,\n): SourceType<R> {\n const baseSync = Primitive(baseSrc.event);\n const keySync = Primitive(keySrc);\n return {\n event: (user) => {\n All(\n baseSrc.event,\n keySrc,\n )(([base, key]) => {\n const keyChunks = key.split(\".\");\n let value: unknown = base;\n keyChunks.forEach((keyChunk) => {\n value = (value as Record<string, unknown>)[keyChunk];\n });\n\n if (value !== undefined && value !== base) {\n user(value as R);\n }\n });\n },\n use: (value: R) => {\n const key = keySync.primitive();\n if (isFilled(key)) {\n baseSrc.use({\n ...baseSync.primitive(),\n [key]: value,\n } as T);\n }\n },\n };\n}\n","import { All, EventType } from \"silentium\";\n\n/**\n * Return source Of record path\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport function Path<R, T extends object | Array<any>, K extends string = any>(\n baseSrc: EventType<T>,\n keySrc: EventType<K>,\n): EventType<R> {\n return (user) => {\n All(\n baseSrc,\n keySrc,\n )(([base, key]) => {\n const keyChunks = key.split(\".\");\n let value: unknown = base;\n keyChunks.forEach((keyChunk) => {\n value = (value as Record<string, unknown>)[keyChunk];\n });\n\n if (value !== undefined && value !== base) {\n user(value as R);\n }\n });\n };\n}\n","import { EventType } from \"silentium\";\n\nexport function Polling<T>(\n baseSrc: EventType<T>,\n triggerSrc: EventType<T>,\n): EventType<T> {\n return (user) => {\n triggerSrc(() => {\n baseSrc(user);\n });\n };\n}\n","import { EventType, isFilled, 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>(\n targetSrc: EventType<T>,\n triggerSrc: EventType,\n): EventType<T> {\n return (user) => {\n const targetSync = Primitive(targetSrc);\n\n triggerSrc(() => {\n const value = targetSync.primitive();\n if (isFilled(value)) {\n user(value);\n }\n });\n };\n}\n","import { EventType, ExecutorApplied } from \"silentium\";\n\nexport function Task<T>(\n baseSrc: EventType<T>,\n delay: number = 0,\n): EventType<T> {\n return (user) => {\n let prevTimer: unknown | null = null;\n ExecutorApplied(baseSrc, (fn) => {\n return (v) => {\n if (prevTimer) {\n clearTimeout(prevTimer as number);\n }\n prevTimer = setTimeout(() => {\n fn(v);\n }, delay);\n };\n })(user);\n };\n}\n","import { EventType } 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>(baseSrc: EventType<T>): EventType<T> {\n return (user) => {\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 user(lastValue);\n lastValue = null;\n }\n });\n };\n\n baseSrc((v) => {\n lastValue = v;\n if (!microtaskScheduled) {\n scheduleMicrotask();\n }\n });\n };\n}\n","import {\n ConstructorType,\n DestroyableType,\n Destructor,\n EventType,\n LateShared,\n Of,\n} from \"silentium\";\nimport { Detached } from \"../behaviors/Detached\";\n\n/**\n * Do something on event value.\n * Each event value will create new eventBuilder instance\n */\nexport function Transaction<T, R = unknown>(\n $base: EventType<T>,\n eventBuilder: ConstructorType<\n [EventType<T>, ...EventType<any>[]],\n EventType<R>\n >,\n ...args: EventType[]\n): EventType<R> {\n return (user) => {\n const $res = LateShared<R>();\n const destructors: DestroyableType[] = [];\n\n $base((v) => {\n const $event = Destructor(\n eventBuilder(Of(v), ...args.map((a) => Detached(a))),\n );\n destructors.push($event);\n $event.event($res.use);\n });\n $res.event(user);\n\n return () => {\n destructors.forEach((d) => d.destroy());\n destructors.length = 0;\n };\n };\n}\n","import { EventType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/structures/hash-table\n */\nexport function HashTable<T>(\n baseSrc: EventType<[string, unknown]>,\n): EventType<T> {\n return (user) => {\n const record: Record<string, unknown> = {};\n\n baseSrc(([key, value]) => {\n record[key] = value;\n user(record as T);\n });\n };\n}\n","import { All, EventType } from \"silentium\";\n\ntype UnInformation<T> = T extends EventType<infer U> ? U : never;\n\n/**\n * Returns record Of data from record Of sources\n * https://silentium-lab.github.io/silentium-components/#/structures/record\n */\nexport function RecordOf<T extends EventType>(\n recordSrc: Record<string, T>,\n): EventType<Record<string, UnInformation<T>>> {\n return (user) => {\n const keys = Object.keys(recordSrc);\n All(...Object.values(recordSrc))((entries) => {\n const record: Record<string, any> = {};\n entries.forEach((entry, index) => {\n record[keys[index]] = entry;\n });\n user(record);\n });\n };\n}\n","import { All, EventType, 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: EventType<string>[],\n joinPartSrc: EventType<string> = Of(\"\"),\n): EventType<string> {\n return (user) => {\n All(\n joinPartSrc,\n ...sources,\n )(([joinPart, ...strings]) => {\n user(strings.join(joinPart));\n });\n };\n}\n","import {\n All,\n Applied,\n EventType,\n Destructor,\n DestructorType,\n Of,\n} from \"silentium\";\nimport { RecordOf } from \"../structures\";\n\nexport function Template(\n theSrc: EventType<string> = Of(\"\"),\n placesSrc: EventType<Record<string, unknown>> = Of({}),\n) {\n let placesCounter = 0;\n const vars: Record<string, EventType> = {\n $TPL: Of(\"$TPL\"),\n };\n const destructors: DestructorType[] = [];\n return {\n value: <EventType<string>>((user) => {\n const varsSrc = RecordOf(vars);\n Applied(All(theSrc, placesSrc, varsSrc), ([base, rules, vars]) => {\n Object.entries(rules).forEach(([ph, val]) => {\n base = base.replaceAll(ph, String(val));\n });\n Object.entries(vars).forEach(([ph, val]) => {\n base = base.replaceAll(ph, String(val));\n });\n\n return base;\n })(user);\n }),\n template: (value: string) => {\n theSrc = Of(value);\n },\n /**\n * Ability to register variable\n * in concrete place Of template\n */\n var: (src: EventType<string>) => {\n const varName = `$var${placesCounter}`;\n placesCounter += 1;\n vars[varName] = Destructor(src, (d: DestructorType) => {\n destructors.push(d);\n }).event;\n return varName;\n },\n destroy() {\n destructors.forEach((d) => d());\n },\n };\n}\n","import { All, EventType, 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: EventType<string>,\n valueSrc: EventType<string>,\n flagsSrc: EventType<string> = Of(\"\"),\n): EventType<boolean> {\n return (user) => {\n All(\n patternSrc,\n valueSrc,\n flagsSrc,\n )(([pattern, value, flags]) => {\n user(new RegExp(pattern, flags).test(value));\n });\n };\n}\n","import { All, EventType, 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: EventType<string>,\n patternSrc: EventType<string>,\n replaceValueSrc: EventType<string>,\n flagsSrc: EventType<string> = Of(\"\"),\n): EventType<string> {\n return (user) => {\n All(\n patternSrc,\n valueSrc,\n replaceValueSrc,\n flagsSrc,\n )(([pattern, value, replaceValue, flags]) => {\n user(String(value).replace(new RegExp(pattern, flags), replaceValue));\n });\n };\n}\n","import { All, EventType, 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: EventType<string>,\n valueSrc: EventType<string>,\n flagsSrc: EventType<string> = Of(\"\"),\n): EventType<string[]> {\n return (user) => {\n All(\n patternSrc,\n valueSrc,\n flagsSrc,\n )(([pattern, value, flags]) => {\n const result = new RegExp(pattern, flags).exec(value);\n user(result ?? []);\n });\n };\n}\n","import { All, EventType } from \"silentium\";\n\n/**\n * Ability to mutate some object, helpful when integrate to procedure systems\n * https://silentium-lab.github.io/silentium-components/#/system/set\n */\nexport function Set<T extends Record<string, unknown>>(\n baseSrc: EventType<T>,\n keySrc: EventType<string>,\n valueSrc: EventType<unknown>,\n): EventType<T> {\n return (user) => {\n All(\n baseSrc,\n keySrc,\n valueSrc,\n )(([base, key, value]) => {\n (base as Record<string, unknown>)[key] = value;\n user(base);\n });\n };\n}\n","import {\n All,\n Applied,\n EventType,\n Destructor,\n DestructorType,\n Of,\n ConstructorType,\n} from \"silentium\";\nimport { RegexpMatched } from \"../system\";\nimport { BranchLazy } from \"../behaviors\";\n\nexport interface Route<T> {\n pattern: string;\n patternFlags?: string;\n template: ConstructorType<[], EventType<T>>;\n}\n\nconst emptySrc = () => Of(false);\n\n/**\n * Router component what will return template if url matches pattern\n * https://silentium-lab.github.io/silentium-components/#/navigation/router\n */\nexport function Router<T = \"string\">(\n urlSrc: EventType<string>,\n routesSrc: EventType<Route<T>[]>,\n defaultSrc: ConstructorType<[], EventType<T>>,\n): EventType<T> {\n return (user) => {\n const destructors: DestructorType[] = [];\n const destroyAllData = () => {\n destructors.forEach((d) => d());\n destructors.length = 0;\n };\n All(\n routesSrc,\n urlSrc,\n )(([routes, url]) => {\n destroyAllData();\n const instance = All(\n defaultSrc(),\n All(\n ...routes.map(\n (r) =>\n Destructor(\n BranchLazy(\n RegexpMatched(\n Of(r.pattern),\n Of(url),\n r.patternFlags ? Of(r.patternFlags) : undefined,\n ),\n r.template,\n emptySrc,\n ),\n (d: DestructorType) => destructors.push(d),\n ).event,\n ),\n ),\n );\n\n // Return first not false or default\n Applied(instance, (r) => {\n const firstReal = r[1].find((r) => r !== false);\n\n if (firstReal) {\n return firstReal as T;\n }\n\n return r[0];\n })(user);\n });\n\n return destroyAllData;\n };\n}\n","import { All, EventType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/and\n */\nexport function And(\n oneSrc: EventType<boolean>,\n twoSrc: EventType<boolean>,\n): EventType<boolean> {\n return (user) => {\n All(\n oneSrc,\n twoSrc,\n )(([one, two]) => {\n user(one && two);\n });\n };\n}\n","import { All, EventType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/or\n */\nexport function Or(\n oneSrc: EventType<boolean>,\n twoSrc: EventType<boolean>,\n): EventType<boolean> {\n return (user) => {\n All(\n oneSrc,\n twoSrc,\n )(([one, two]) => {\n user(one || two);\n });\n };\n}\n","import { EventType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/not\n */\nexport function Not(baseSrc: EventType<boolean>): EventType<boolean> {\n return (user) => {\n baseSrc((v) => {\n user(!v);\n });\n };\n}\n","import { Applied, EventType } from \"silentium\";\n\n/**\n * Convert Any source to boolean source\n * https://silentium-lab.github.io/silentium-components/#/boolean/bool\n */\nexport function Bool(baseSrc: EventType): EventType<boolean> {\n return (user) => {\n Applied(baseSrc, Boolean)(user);\n };\n}\n","import { EventType, EventUserType } from \"silentium\";\n\n/**\n * Represents object from json\n */\nexport function FromJson<T = Record<string, unknown>>(\n jsonSrc: EventType<string>,\n errorOwner?: EventUserType,\n): EventType<T> {\n return (user) => {\n jsonSrc((json) => {\n try {\n user(JSON.parse(json));\n } catch (error) {\n errorOwner?.(new Error(`Failed to parse JSON: ${error}`));\n }\n });\n };\n}\n","import { EventType, EventUserType } from \"silentium\";\n\n/**\n * Represents json from object\n */\nexport function ToJson(\n dataSrc: EventType,\n errorOwner?: EventUserType,\n): EventType<string> {\n return (user) => {\n dataSrc((data: unknown) => {\n try {\n user(JSON.stringify(data));\n } catch {\n errorOwner?.(new Error(\"Failed to convert to JSON\"));\n }\n });\n };\n}\n","import { Applied, EventType } from \"silentium\";\n\n/**\n * Represents the first element Of an array.\n */\nexport function First<T extends Array<unknown>>(\n baseSrc: EventType<T>,\n): EventType<T[0]> {\n return (user) => {\n Applied(baseSrc, (a) => a[0])(user);\n };\n}\n"],"names":["Branch","conditionSrc","leftSrc","rightSrc","user","leftSync","Primitive","rightSync","v","result","primitive","BranchLazy","Destructor","instance","Constant","permanentValue","triggerSrc","Deadline","error","baseSrc","timeoutSrc","timerHead","s","Shared","timeout","clearTimeout","timeoutReached","setTimeout","Error","Filtered","event","f","Deferred","baseSync","value","isFilled","Detached","Dirty","baseEntitySource","alwaysKeep","excludeKeys","cloneFn","comparingSrc","Late","JSON","parse","stringify","comparingDetached","Applied","All","comparing","base","Object","fromEntries","entries","filter","key","includes","use","Loading","loadingStartSrc","loadingFinishSrc","Lock","lockSrc","locked","newLock","i","Memo","lastValue","OnlyChanged","firstValue","Part","keySrc","keySync","keyChunks","split","forEach","keyChunk","Path","Polling","Shot","targetSrc","targetSync","Task","delay","prevTimer","ExecutorApplied","fn","Tick","microtaskScheduled","queueMicrotask","Transaction","$base","eventBuilder","args","$res","LateShared","destructors","$event","Of","map","a","push","d","destroy","length","HashTable","record","RecordOf","recordSrc","keys","values","entry","index","Concatenated","sources","joinPartSrc","joinPart","strings","join","Template","theSrc","placesSrc","placesCounter","vars","$TPL","varsSrc","rules","ph","val","replaceAll","String","template","var","src","varName","RegexpMatched","patternSrc","valueSrc","flagsSrc","pattern","flags","RegExp","test","RegexpReplaced","replaceValueSrc","replaceValue","replace","RegexpMatch","exec","Set","emptySrc","Router","urlSrc","routesSrc","defaultSrc","destroyAllData","routes","url","r","patternFlags","firstReal","find","And","oneSrc","twoSrc","one","two","Or","Not","Bool","Boolean","FromJson","jsonSrc","errorOwner","json","ToJson","dataSrc","data","First"],"mappings":"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"}
@@ -286,16 +286,16 @@ function Tick(baseSrc) {
286
286
  }
287
287
 
288
288
  function Transaction($base, eventBuilder, ...args) {
289
- const $res = LateShared();
290
- const destructors = [];
291
- $base((v) => {
292
- const $event = Destructor(
293
- eventBuilder(Of(v), ...args.map((a) => Detached(a)))
294
- );
295
- destructors.push($event);
296
- $event.event($res.use);
297
- });
298
289
  return (user) => {
290
+ const $res = LateShared();
291
+ const destructors = [];
292
+ $base((v) => {
293
+ const $event = Destructor(
294
+ eventBuilder(Of(v), ...args.map((a) => Detached(a)))
295
+ );
296
+ destructors.push($event);
297
+ $event.event($res.use);
298
+ });
299
299
  $res.event(user);
300
300
  return () => {
301
301
  destructors.forEach((d) => d.destroy());
@@ -1 +1 @@
1
- {"version":3,"file":"silentium-components.mjs","sources":["../src/behaviors/Branch.ts","../src/behaviors/BranchLazy.ts","../src/behaviors/Const.ts","../src/behaviors/Deadline.ts","../src/behaviors/Deferred.ts","../src/behaviors/Detached.ts","../src/behaviors/Dirty.ts","../src/behaviors/Loading.ts","../src/behaviors/Lock.ts","../src/behaviors/Memo.ts","../src/behaviors/OnlyChanged.ts","../src/behaviors/Part.ts","../src/behaviors/Path.ts","../src/behaviors/Polling.ts","../src/behaviors/Shot.ts","../src/behaviors/Task.ts","../src/behaviors/Tick.ts","../src/behaviors/Transaction.ts","../src/structures/HashTable.ts","../src/structures/RecordOf.ts","../src/strings/Concatenated.ts","../src/strings/Template.ts","../src/system/RegexpMatched.ts","../src/system/RegexpReplaced.ts","../src/system/RegexpMatch.ts","../src/system/Set.ts","../src/navigation/Router.ts","../src/boolean/And.ts","../src/boolean/Or.ts","../src/boolean/Not.ts","../src/boolean/Bool.ts","../src/formats/FromJson.ts","../src/formats/ToJson.ts","../src/lists/First.ts"],"sourcesContent":["import { EventType, Primitive } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/branch\n */\nexport function Branch<Then, Else>(\n conditionSrc: EventType<boolean>,\n leftSrc: EventType<Then>,\n rightSrc?: EventType<Else>,\n): EventType<Then | Else> {\n return (user) => {\n const leftSync = Primitive(leftSrc);\n let rightSync: ReturnType<typeof Primitive<Else>>;\n\n if (rightSrc !== undefined) {\n rightSync = Primitive(rightSrc);\n }\n\n conditionSrc((v) => {\n let result: Then | Else | null = null;\n if (v) {\n result = leftSync.primitive();\n } else if (rightSync) {\n result = rightSync.primitive();\n }\n\n if (result !== null) {\n user(result);\n }\n });\n };\n}\n","import { EventType, DestructorType, ConstructorType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/branch\n */\nexport function BranchLazy<Then, Else>(\n conditionSrc: EventType<boolean>,\n leftSrc: ConstructorType<[], EventType<Then>>,\n rightSrc?: ConstructorType<[], EventType<Else>>,\n): EventType<Then | Else> {\n return (user) => {\n let Destructor: DestructorType | void;\n conditionSrc((v) => {\n if (Destructor !== undefined && typeof Destructor === \"function\") {\n Destructor();\n }\n let instance: EventType<Then | Else> | null = null;\n if (v) {\n instance = leftSrc();\n } else if (rightSrc) {\n instance = rightSrc();\n }\n if (instance) {\n Destructor = instance(user);\n }\n });\n\n return () => {\n Destructor?.();\n };\n };\n}\n","import { EventType } from \"silentium\";\n\nexport function Constant<T>(\n permanentValue: T,\n triggerSrc: EventType,\n): EventType<T> {\n return (user) => {\n triggerSrc(() => {\n user(permanentValue);\n });\n };\n}\n","import { EventType, Filtered, Shared, EventUserType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport function Deadline<T>(\n error: EventUserType<Error>,\n baseSrc: EventType<T>,\n timeoutSrc: EventType<number>,\n): EventType<T> {\n return (user) => {\n let timerHead: unknown = null;\n\n const s = Shared(baseSrc, true);\n\n timeoutSrc((timeout) => {\n if (timerHead) {\n clearTimeout(timerHead as number);\n }\n let timeoutReached = false;\n\n timerHead = setTimeout(() => {\n if (timeoutReached) {\n return;\n }\n timeoutReached = true;\n error(new Error(\"Timeout reached in Deadline class\"));\n }, timeout);\n\n const f = Filtered(s.event, () => !timeoutReached);\n f(user);\n\n s.event(() => {\n timeoutReached = true;\n });\n });\n };\n}\n","import { EventType, isFilled, 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 baseSrc: EventType<T>,\n triggerSrc: EventType<unknown>,\n): EventType<T> {\n return (user) => {\n const baseSync = Primitive(baseSrc);\n triggerSrc(() => {\n const value = baseSync.primitive();\n if (isFilled(value)) {\n user(value);\n }\n });\n };\n}\n","import { EventType, isFilled, Primitive } from \"silentium\";\n\nexport function Detached<T>(baseSrc: EventType<T>): EventType<T> {\n return function Detached(user) {\n const v = Primitive(baseSrc).primitive();\n if (isFilled(v)) {\n user(v);\n }\n };\n}\n","import { All, Applied, EventType, Late, SourceType } 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 baseEntitySource: EventType<T>,\n alwaysKeep: string[] = [],\n excludeKeys: string[] = [],\n cloneFn?: (v: T) => T,\n): SourceType<T> {\n const comparingSrc = Late<T>();\n\n if (cloneFn === undefined) {\n cloneFn = (value) => JSON.parse(JSON.stringify(value));\n }\n\n return {\n event: (user) => {\n const comparingDetached = Applied(comparingSrc.event, cloneFn);\n\n All(\n comparingDetached,\n baseEntitySource,\n )(([comparing, base]) => {\n if (!comparing) {\n return;\n }\n\n user(\n Object.fromEntries(\n Object.entries(comparing).filter(([key, value]) => {\n if (alwaysKeep.includes(key)) {\n return true;\n }\n if (excludeKeys.includes(key)) {\n return false;\n }\n return value !== (base as any)[key];\n }),\n ) as T,\n );\n });\n },\n use: (v) => {\n comparingSrc.use(v);\n },\n };\n}\n","import { EventType } from \"silentium\";\n\n/**\n * Representation Of loading process\n * first informatin source begins loading\n * second information source stops loading\n * https://silentium-lab.github.io/silentium-components/#/behaviors/loading\n */\nexport function Loading(\n loadingStartSrc: EventType<unknown>,\n loadingFinishSrc: EventType<unknown>,\n): EventType<boolean> {\n return (user) => {\n loadingStartSrc(() => user(true));\n loadingFinishSrc(() => user(false));\n };\n}\n","import { EventType, Filtered } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/lock\n */\nexport function Lock<T>(\n baseSrc: EventType<T>,\n lockSrc: EventType<boolean>,\n): EventType<T> {\n return (user) => {\n let locked = false;\n lockSrc((newLock) => {\n locked = newLock;\n });\n const i = Filtered(baseSrc, () => !locked);\n i(user);\n };\n}\n","import { EventType } 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>(baseSrc: EventType<T>): EventType<T> {\n return (user) => {\n let lastValue: T | null = null;\n\n baseSrc((v) => {\n if (v !== lastValue) {\n user(v);\n lastValue = v;\n }\n });\n };\n}\n","import { EventType } 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>(baseSrc: EventType<T>): EventType<T> {\n return (user) => {\n let firstValue = false;\n\n baseSrc((v) => {\n if (firstValue === false) {\n firstValue = true;\n } else {\n user(v);\n }\n });\n };\n}\n","import { All, EventType, isFilled, Primitive, SourceType } from \"silentium\";\n\n/**\n * Return source Of record path\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport function Part<R, T extends object | Array<any>, K extends string = any>(\n baseSrc: SourceType<T>,\n keySrc: EventType<K>,\n): SourceType<R> {\n const baseSync = Primitive(baseSrc.event);\n const keySync = Primitive(keySrc);\n return {\n event: (user) => {\n All(\n baseSrc.event,\n keySrc,\n )(([base, key]) => {\n const keyChunks = key.split(\".\");\n let value: unknown = base;\n keyChunks.forEach((keyChunk) => {\n value = (value as Record<string, unknown>)[keyChunk];\n });\n\n if (value !== undefined && value !== base) {\n user(value as R);\n }\n });\n },\n use: (value: R) => {\n const key = keySync.primitive();\n if (isFilled(key)) {\n baseSrc.use({\n ...baseSync.primitive(),\n [key]: value,\n } as T);\n }\n },\n };\n}\n","import { All, EventType } from \"silentium\";\n\n/**\n * Return source Of record path\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport function Path<R, T extends object | Array<any>, K extends string = any>(\n baseSrc: EventType<T>,\n keySrc: EventType<K>,\n): EventType<R> {\n return (user) => {\n All(\n baseSrc,\n keySrc,\n )(([base, key]) => {\n const keyChunks = key.split(\".\");\n let value: unknown = base;\n keyChunks.forEach((keyChunk) => {\n value = (value as Record<string, unknown>)[keyChunk];\n });\n\n if (value !== undefined && value !== base) {\n user(value as R);\n }\n });\n };\n}\n","import { EventType } from \"silentium\";\n\nexport function Polling<T>(\n baseSrc: EventType<T>,\n triggerSrc: EventType<T>,\n): EventType<T> {\n return (user) => {\n triggerSrc(() => {\n baseSrc(user);\n });\n };\n}\n","import { EventType, isFilled, 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>(\n targetSrc: EventType<T>,\n triggerSrc: EventType,\n): EventType<T> {\n return (user) => {\n const targetSync = Primitive(targetSrc);\n\n triggerSrc(() => {\n const value = targetSync.primitive();\n if (isFilled(value)) {\n user(value);\n }\n });\n };\n}\n","import { EventType, ExecutorApplied } from \"silentium\";\n\nexport function Task<T>(\n baseSrc: EventType<T>,\n delay: number = 0,\n): EventType<T> {\n return (user) => {\n let prevTimer: unknown | null = null;\n ExecutorApplied(baseSrc, (fn) => {\n return (v) => {\n if (prevTimer) {\n clearTimeout(prevTimer as number);\n }\n prevTimer = setTimeout(() => {\n fn(v);\n }, delay);\n };\n })(user);\n };\n}\n","import { EventType } 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>(baseSrc: EventType<T>): EventType<T> {\n return (user) => {\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 user(lastValue);\n lastValue = null;\n }\n });\n };\n\n baseSrc((v) => {\n lastValue = v;\n if (!microtaskScheduled) {\n scheduleMicrotask();\n }\n });\n };\n}\n","import {\n ConstructorType,\n DestroyableType,\n Destructor,\n EventType,\n LateShared,\n Of,\n} from \"silentium\";\nimport { Detached } from \"../behaviors/Detached\";\n\n/**\n * Do something on event value.\n * Each event value will create new eventBuilder instance\n */\nexport function Transaction<T, R = unknown>(\n $base: EventType<T>,\n eventBuilder: ConstructorType<\n [EventType<T>, ...EventType<any>[]],\n EventType<R>\n >,\n ...args: EventType[]\n): EventType<R> {\n const $res = LateShared<R>();\n const destructors: DestroyableType[] = [];\n\n $base((v) => {\n const $event = Destructor(\n eventBuilder(Of(v), ...args.map((a) => Detached(a))),\n );\n destructors.push($event);\n $event.event($res.use);\n });\n\n return (user) => {\n $res.event(user);\n\n return () => {\n destructors.forEach((d) => d.destroy());\n destructors.length = 0;\n };\n };\n}\n","import { EventType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/structures/hash-table\n */\nexport function HashTable<T>(\n baseSrc: EventType<[string, unknown]>,\n): EventType<T> {\n return (user) => {\n const record: Record<string, unknown> = {};\n\n baseSrc(([key, value]) => {\n record[key] = value;\n user(record as T);\n });\n };\n}\n","import { All, EventType } from \"silentium\";\n\ntype UnInformation<T> = T extends EventType<infer U> ? U : never;\n\n/**\n * Returns record Of data from record Of sources\n * https://silentium-lab.github.io/silentium-components/#/structures/record\n */\nexport function RecordOf<T extends EventType>(\n recordSrc: Record<string, T>,\n): EventType<Record<string, UnInformation<T>>> {\n return (user) => {\n const keys = Object.keys(recordSrc);\n All(...Object.values(recordSrc))((entries) => {\n const record: Record<string, any> = {};\n entries.forEach((entry, index) => {\n record[keys[index]] = entry;\n });\n user(record);\n });\n };\n}\n","import { All, EventType, 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: EventType<string>[],\n joinPartSrc: EventType<string> = Of(\"\"),\n): EventType<string> {\n return (user) => {\n All(\n joinPartSrc,\n ...sources,\n )(([joinPart, ...strings]) => {\n user(strings.join(joinPart));\n });\n };\n}\n","import {\n All,\n Applied,\n EventType,\n Destructor,\n DestructorType,\n Of,\n} from \"silentium\";\nimport { RecordOf } from \"../structures\";\n\nexport function Template(\n theSrc: EventType<string> = Of(\"\"),\n placesSrc: EventType<Record<string, unknown>> = Of({}),\n) {\n let placesCounter = 0;\n const vars: Record<string, EventType> = {\n $TPL: Of(\"$TPL\"),\n };\n const destructors: DestructorType[] = [];\n return {\n value: <EventType<string>>((user) => {\n const varsSrc = RecordOf(vars);\n Applied(All(theSrc, placesSrc, varsSrc), ([base, rules, vars]) => {\n Object.entries(rules).forEach(([ph, val]) => {\n base = base.replaceAll(ph, String(val));\n });\n Object.entries(vars).forEach(([ph, val]) => {\n base = base.replaceAll(ph, String(val));\n });\n\n return base;\n })(user);\n }),\n template: (value: string) => {\n theSrc = Of(value);\n },\n /**\n * Ability to register variable\n * in concrete place Of template\n */\n var: (src: EventType<string>) => {\n const varName = `$var${placesCounter}`;\n placesCounter += 1;\n vars[varName] = Destructor(src, (d: DestructorType) => {\n destructors.push(d);\n }).event;\n return varName;\n },\n destroy() {\n destructors.forEach((d) => d());\n },\n };\n}\n","import { All, EventType, 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: EventType<string>,\n valueSrc: EventType<string>,\n flagsSrc: EventType<string> = Of(\"\"),\n): EventType<boolean> {\n return (user) => {\n All(\n patternSrc,\n valueSrc,\n flagsSrc,\n )(([pattern, value, flags]) => {\n user(new RegExp(pattern, flags).test(value));\n });\n };\n}\n","import { All, EventType, 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: EventType<string>,\n patternSrc: EventType<string>,\n replaceValueSrc: EventType<string>,\n flagsSrc: EventType<string> = Of(\"\"),\n): EventType<string> {\n return (user) => {\n All(\n patternSrc,\n valueSrc,\n replaceValueSrc,\n flagsSrc,\n )(([pattern, value, replaceValue, flags]) => {\n user(String(value).replace(new RegExp(pattern, flags), replaceValue));\n });\n };\n}\n","import { All, EventType, 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: EventType<string>,\n valueSrc: EventType<string>,\n flagsSrc: EventType<string> = Of(\"\"),\n): EventType<string[]> {\n return (user) => {\n All(\n patternSrc,\n valueSrc,\n flagsSrc,\n )(([pattern, value, flags]) => {\n const result = new RegExp(pattern, flags).exec(value);\n user(result ?? []);\n });\n };\n}\n","import { All, EventType } from \"silentium\";\n\n/**\n * Ability to mutate some object, helpful when integrate to procedure systems\n * https://silentium-lab.github.io/silentium-components/#/system/set\n */\nexport function Set<T extends Record<string, unknown>>(\n baseSrc: EventType<T>,\n keySrc: EventType<string>,\n valueSrc: EventType<unknown>,\n): EventType<T> {\n return (user) => {\n All(\n baseSrc,\n keySrc,\n valueSrc,\n )(([base, key, value]) => {\n (base as Record<string, unknown>)[key] = value;\n user(base);\n });\n };\n}\n","import {\n All,\n Applied,\n EventType,\n Destructor,\n DestructorType,\n Of,\n ConstructorType,\n} from \"silentium\";\nimport { RegexpMatched } from \"../system\";\nimport { BranchLazy } from \"../behaviors\";\n\nexport interface Route<T> {\n pattern: string;\n patternFlags?: string;\n template: ConstructorType<[], EventType<T>>;\n}\n\nconst emptySrc = () => Of(false);\n\n/**\n * Router component what will return template if url matches pattern\n * https://silentium-lab.github.io/silentium-components/#/navigation/router\n */\nexport function Router<T = \"string\">(\n urlSrc: EventType<string>,\n routesSrc: EventType<Route<T>[]>,\n defaultSrc: ConstructorType<[], EventType<T>>,\n): EventType<T> {\n return (user) => {\n const destructors: DestructorType[] = [];\n const destroyAllData = () => {\n destructors.forEach((d) => d());\n destructors.length = 0;\n };\n All(\n routesSrc,\n urlSrc,\n )(([routes, url]) => {\n destroyAllData();\n const instance = All(\n defaultSrc(),\n All(\n ...routes.map(\n (r) =>\n Destructor(\n BranchLazy(\n RegexpMatched(\n Of(r.pattern),\n Of(url),\n r.patternFlags ? Of(r.patternFlags) : undefined,\n ),\n r.template,\n emptySrc,\n ),\n (d: DestructorType) => destructors.push(d),\n ).event,\n ),\n ),\n );\n\n // Return first not false or default\n Applied(instance, (r) => {\n const firstReal = r[1].find((r) => r !== false);\n\n if (firstReal) {\n return firstReal as T;\n }\n\n return r[0];\n })(user);\n });\n\n return destroyAllData;\n };\n}\n","import { All, EventType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/and\n */\nexport function And(\n oneSrc: EventType<boolean>,\n twoSrc: EventType<boolean>,\n): EventType<boolean> {\n return (user) => {\n All(\n oneSrc,\n twoSrc,\n )(([one, two]) => {\n user(one && two);\n });\n };\n}\n","import { All, EventType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/or\n */\nexport function Or(\n oneSrc: EventType<boolean>,\n twoSrc: EventType<boolean>,\n): EventType<boolean> {\n return (user) => {\n All(\n oneSrc,\n twoSrc,\n )(([one, two]) => {\n user(one || two);\n });\n };\n}\n","import { EventType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/not\n */\nexport function Not(baseSrc: EventType<boolean>): EventType<boolean> {\n return (user) => {\n baseSrc((v) => {\n user(!v);\n });\n };\n}\n","import { Applied, EventType } from \"silentium\";\n\n/**\n * Convert Any source to boolean source\n * https://silentium-lab.github.io/silentium-components/#/boolean/bool\n */\nexport function Bool(baseSrc: EventType): EventType<boolean> {\n return (user) => {\n Applied(baseSrc, Boolean)(user);\n };\n}\n","import { EventType, EventUserType } from \"silentium\";\n\n/**\n * Represents object from json\n */\nexport function FromJson<T = Record<string, unknown>>(\n jsonSrc: EventType<string>,\n errorOwner?: EventUserType,\n): EventType<T> {\n return (user) => {\n jsonSrc((json) => {\n try {\n user(JSON.parse(json));\n } catch (error) {\n errorOwner?.(new Error(`Failed to parse JSON: ${error}`));\n }\n });\n };\n}\n","import { EventType, EventUserType } from \"silentium\";\n\n/**\n * Represents json from object\n */\nexport function ToJson(\n dataSrc: EventType,\n errorOwner?: EventUserType,\n): EventType<string> {\n return (user) => {\n dataSrc((data: unknown) => {\n try {\n user(JSON.stringify(data));\n } catch {\n errorOwner?.(new Error(\"Failed to convert to JSON\"));\n }\n });\n };\n}\n","import { Applied, EventType } from \"silentium\";\n\n/**\n * Represents the first element Of an array.\n */\nexport function First<T extends Array<unknown>>(\n baseSrc: EventType<T>,\n): EventType<T[0]> {\n return (user) => {\n Applied(baseSrc, (a) => a[0])(user);\n };\n}\n"],"names":["Detached","vars","r"],"mappings":"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"}
1
+ {"version":3,"file":"silentium-components.mjs","sources":["../src/behaviors/Branch.ts","../src/behaviors/BranchLazy.ts","../src/behaviors/Const.ts","../src/behaviors/Deadline.ts","../src/behaviors/Deferred.ts","../src/behaviors/Detached.ts","../src/behaviors/Dirty.ts","../src/behaviors/Loading.ts","../src/behaviors/Lock.ts","../src/behaviors/Memo.ts","../src/behaviors/OnlyChanged.ts","../src/behaviors/Part.ts","../src/behaviors/Path.ts","../src/behaviors/Polling.ts","../src/behaviors/Shot.ts","../src/behaviors/Task.ts","../src/behaviors/Tick.ts","../src/behaviors/Transaction.ts","../src/structures/HashTable.ts","../src/structures/RecordOf.ts","../src/strings/Concatenated.ts","../src/strings/Template.ts","../src/system/RegexpMatched.ts","../src/system/RegexpReplaced.ts","../src/system/RegexpMatch.ts","../src/system/Set.ts","../src/navigation/Router.ts","../src/boolean/And.ts","../src/boolean/Or.ts","../src/boolean/Not.ts","../src/boolean/Bool.ts","../src/formats/FromJson.ts","../src/formats/ToJson.ts","../src/lists/First.ts"],"sourcesContent":["import { EventType, Primitive } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/branch\n */\nexport function Branch<Then, Else>(\n conditionSrc: EventType<boolean>,\n leftSrc: EventType<Then>,\n rightSrc?: EventType<Else>,\n): EventType<Then | Else> {\n return (user) => {\n const leftSync = Primitive(leftSrc);\n let rightSync: ReturnType<typeof Primitive<Else>>;\n\n if (rightSrc !== undefined) {\n rightSync = Primitive(rightSrc);\n }\n\n conditionSrc((v) => {\n let result: Then | Else | null = null;\n if (v) {\n result = leftSync.primitive();\n } else if (rightSync) {\n result = rightSync.primitive();\n }\n\n if (result !== null) {\n user(result);\n }\n });\n };\n}\n","import { EventType, DestructorType, ConstructorType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/branch\n */\nexport function BranchLazy<Then, Else>(\n conditionSrc: EventType<boolean>,\n leftSrc: ConstructorType<[], EventType<Then>>,\n rightSrc?: ConstructorType<[], EventType<Else>>,\n): EventType<Then | Else> {\n return (user) => {\n let Destructor: DestructorType | void;\n conditionSrc((v) => {\n if (Destructor !== undefined && typeof Destructor === \"function\") {\n Destructor();\n }\n let instance: EventType<Then | Else> | null = null;\n if (v) {\n instance = leftSrc();\n } else if (rightSrc) {\n instance = rightSrc();\n }\n if (instance) {\n Destructor = instance(user);\n }\n });\n\n return () => {\n Destructor?.();\n };\n };\n}\n","import { EventType } from \"silentium\";\n\nexport function Constant<T>(\n permanentValue: T,\n triggerSrc: EventType,\n): EventType<T> {\n return (user) => {\n triggerSrc(() => {\n user(permanentValue);\n });\n };\n}\n","import { EventType, Filtered, Shared, EventUserType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport function Deadline<T>(\n error: EventUserType<Error>,\n baseSrc: EventType<T>,\n timeoutSrc: EventType<number>,\n): EventType<T> {\n return (user) => {\n let timerHead: unknown = null;\n\n const s = Shared(baseSrc, true);\n\n timeoutSrc((timeout) => {\n if (timerHead) {\n clearTimeout(timerHead as number);\n }\n let timeoutReached = false;\n\n timerHead = setTimeout(() => {\n if (timeoutReached) {\n return;\n }\n timeoutReached = true;\n error(new Error(\"Timeout reached in Deadline class\"));\n }, timeout);\n\n const f = Filtered(s.event, () => !timeoutReached);\n f(user);\n\n s.event(() => {\n timeoutReached = true;\n });\n });\n };\n}\n","import { EventType, isFilled, 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 baseSrc: EventType<T>,\n triggerSrc: EventType<unknown>,\n): EventType<T> {\n return (user) => {\n const baseSync = Primitive(baseSrc);\n triggerSrc(() => {\n const value = baseSync.primitive();\n if (isFilled(value)) {\n user(value);\n }\n });\n };\n}\n","import { EventType, isFilled, Primitive } from \"silentium\";\n\nexport function Detached<T>(baseSrc: EventType<T>): EventType<T> {\n return function Detached(user) {\n const v = Primitive(baseSrc).primitive();\n if (isFilled(v)) {\n user(v);\n }\n };\n}\n","import { All, Applied, EventType, Late, SourceType } 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 baseEntitySource: EventType<T>,\n alwaysKeep: string[] = [],\n excludeKeys: string[] = [],\n cloneFn?: (v: T) => T,\n): SourceType<T> {\n const comparingSrc = Late<T>();\n\n if (cloneFn === undefined) {\n cloneFn = (value) => JSON.parse(JSON.stringify(value));\n }\n\n return {\n event: (user) => {\n const comparingDetached = Applied(comparingSrc.event, cloneFn);\n\n All(\n comparingDetached,\n baseEntitySource,\n )(([comparing, base]) => {\n if (!comparing) {\n return;\n }\n\n user(\n Object.fromEntries(\n Object.entries(comparing).filter(([key, value]) => {\n if (alwaysKeep.includes(key)) {\n return true;\n }\n if (excludeKeys.includes(key)) {\n return false;\n }\n return value !== (base as any)[key];\n }),\n ) as T,\n );\n });\n },\n use: (v) => {\n comparingSrc.use(v);\n },\n };\n}\n","import { EventType } from \"silentium\";\n\n/**\n * Representation Of loading process\n * first informatin source begins loading\n * second information source stops loading\n * https://silentium-lab.github.io/silentium-components/#/behaviors/loading\n */\nexport function Loading(\n loadingStartSrc: EventType<unknown>,\n loadingFinishSrc: EventType<unknown>,\n): EventType<boolean> {\n return (user) => {\n loadingStartSrc(() => user(true));\n loadingFinishSrc(() => user(false));\n };\n}\n","import { EventType, Filtered } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/lock\n */\nexport function Lock<T>(\n baseSrc: EventType<T>,\n lockSrc: EventType<boolean>,\n): EventType<T> {\n return (user) => {\n let locked = false;\n lockSrc((newLock) => {\n locked = newLock;\n });\n const i = Filtered(baseSrc, () => !locked);\n i(user);\n };\n}\n","import { EventType } 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>(baseSrc: EventType<T>): EventType<T> {\n return (user) => {\n let lastValue: T | null = null;\n\n baseSrc((v) => {\n if (v !== lastValue) {\n user(v);\n lastValue = v;\n }\n });\n };\n}\n","import { EventType } 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>(baseSrc: EventType<T>): EventType<T> {\n return (user) => {\n let firstValue = false;\n\n baseSrc((v) => {\n if (firstValue === false) {\n firstValue = true;\n } else {\n user(v);\n }\n });\n };\n}\n","import { All, EventType, isFilled, Primitive, SourceType } from \"silentium\";\n\n/**\n * Return source Of record path\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport function Part<R, T extends object | Array<any>, K extends string = any>(\n baseSrc: SourceType<T>,\n keySrc: EventType<K>,\n): SourceType<R> {\n const baseSync = Primitive(baseSrc.event);\n const keySync = Primitive(keySrc);\n return {\n event: (user) => {\n All(\n baseSrc.event,\n keySrc,\n )(([base, key]) => {\n const keyChunks = key.split(\".\");\n let value: unknown = base;\n keyChunks.forEach((keyChunk) => {\n value = (value as Record<string, unknown>)[keyChunk];\n });\n\n if (value !== undefined && value !== base) {\n user(value as R);\n }\n });\n },\n use: (value: R) => {\n const key = keySync.primitive();\n if (isFilled(key)) {\n baseSrc.use({\n ...baseSync.primitive(),\n [key]: value,\n } as T);\n }\n },\n };\n}\n","import { All, EventType } from \"silentium\";\n\n/**\n * Return source Of record path\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport function Path<R, T extends object | Array<any>, K extends string = any>(\n baseSrc: EventType<T>,\n keySrc: EventType<K>,\n): EventType<R> {\n return (user) => {\n All(\n baseSrc,\n keySrc,\n )(([base, key]) => {\n const keyChunks = key.split(\".\");\n let value: unknown = base;\n keyChunks.forEach((keyChunk) => {\n value = (value as Record<string, unknown>)[keyChunk];\n });\n\n if (value !== undefined && value !== base) {\n user(value as R);\n }\n });\n };\n}\n","import { EventType } from \"silentium\";\n\nexport function Polling<T>(\n baseSrc: EventType<T>,\n triggerSrc: EventType<T>,\n): EventType<T> {\n return (user) => {\n triggerSrc(() => {\n baseSrc(user);\n });\n };\n}\n","import { EventType, isFilled, 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>(\n targetSrc: EventType<T>,\n triggerSrc: EventType,\n): EventType<T> {\n return (user) => {\n const targetSync = Primitive(targetSrc);\n\n triggerSrc(() => {\n const value = targetSync.primitive();\n if (isFilled(value)) {\n user(value);\n }\n });\n };\n}\n","import { EventType, ExecutorApplied } from \"silentium\";\n\nexport function Task<T>(\n baseSrc: EventType<T>,\n delay: number = 0,\n): EventType<T> {\n return (user) => {\n let prevTimer: unknown | null = null;\n ExecutorApplied(baseSrc, (fn) => {\n return (v) => {\n if (prevTimer) {\n clearTimeout(prevTimer as number);\n }\n prevTimer = setTimeout(() => {\n fn(v);\n }, delay);\n };\n })(user);\n };\n}\n","import { EventType } 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>(baseSrc: EventType<T>): EventType<T> {\n return (user) => {\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 user(lastValue);\n lastValue = null;\n }\n });\n };\n\n baseSrc((v) => {\n lastValue = v;\n if (!microtaskScheduled) {\n scheduleMicrotask();\n }\n });\n };\n}\n","import {\n ConstructorType,\n DestroyableType,\n Destructor,\n EventType,\n LateShared,\n Of,\n} from \"silentium\";\nimport { Detached } from \"../behaviors/Detached\";\n\n/**\n * Do something on event value.\n * Each event value will create new eventBuilder instance\n */\nexport function Transaction<T, R = unknown>(\n $base: EventType<T>,\n eventBuilder: ConstructorType<\n [EventType<T>, ...EventType<any>[]],\n EventType<R>\n >,\n ...args: EventType[]\n): EventType<R> {\n return (user) => {\n const $res = LateShared<R>();\n const destructors: DestroyableType[] = [];\n\n $base((v) => {\n const $event = Destructor(\n eventBuilder(Of(v), ...args.map((a) => Detached(a))),\n );\n destructors.push($event);\n $event.event($res.use);\n });\n $res.event(user);\n\n return () => {\n destructors.forEach((d) => d.destroy());\n destructors.length = 0;\n };\n };\n}\n","import { EventType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/structures/hash-table\n */\nexport function HashTable<T>(\n baseSrc: EventType<[string, unknown]>,\n): EventType<T> {\n return (user) => {\n const record: Record<string, unknown> = {};\n\n baseSrc(([key, value]) => {\n record[key] = value;\n user(record as T);\n });\n };\n}\n","import { All, EventType } from \"silentium\";\n\ntype UnInformation<T> = T extends EventType<infer U> ? U : never;\n\n/**\n * Returns record Of data from record Of sources\n * https://silentium-lab.github.io/silentium-components/#/structures/record\n */\nexport function RecordOf<T extends EventType>(\n recordSrc: Record<string, T>,\n): EventType<Record<string, UnInformation<T>>> {\n return (user) => {\n const keys = Object.keys(recordSrc);\n All(...Object.values(recordSrc))((entries) => {\n const record: Record<string, any> = {};\n entries.forEach((entry, index) => {\n record[keys[index]] = entry;\n });\n user(record);\n });\n };\n}\n","import { All, EventType, 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: EventType<string>[],\n joinPartSrc: EventType<string> = Of(\"\"),\n): EventType<string> {\n return (user) => {\n All(\n joinPartSrc,\n ...sources,\n )(([joinPart, ...strings]) => {\n user(strings.join(joinPart));\n });\n };\n}\n","import {\n All,\n Applied,\n EventType,\n Destructor,\n DestructorType,\n Of,\n} from \"silentium\";\nimport { RecordOf } from \"../structures\";\n\nexport function Template(\n theSrc: EventType<string> = Of(\"\"),\n placesSrc: EventType<Record<string, unknown>> = Of({}),\n) {\n let placesCounter = 0;\n const vars: Record<string, EventType> = {\n $TPL: Of(\"$TPL\"),\n };\n const destructors: DestructorType[] = [];\n return {\n value: <EventType<string>>((user) => {\n const varsSrc = RecordOf(vars);\n Applied(All(theSrc, placesSrc, varsSrc), ([base, rules, vars]) => {\n Object.entries(rules).forEach(([ph, val]) => {\n base = base.replaceAll(ph, String(val));\n });\n Object.entries(vars).forEach(([ph, val]) => {\n base = base.replaceAll(ph, String(val));\n });\n\n return base;\n })(user);\n }),\n template: (value: string) => {\n theSrc = Of(value);\n },\n /**\n * Ability to register variable\n * in concrete place Of template\n */\n var: (src: EventType<string>) => {\n const varName = `$var${placesCounter}`;\n placesCounter += 1;\n vars[varName] = Destructor(src, (d: DestructorType) => {\n destructors.push(d);\n }).event;\n return varName;\n },\n destroy() {\n destructors.forEach((d) => d());\n },\n };\n}\n","import { All, EventType, 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: EventType<string>,\n valueSrc: EventType<string>,\n flagsSrc: EventType<string> = Of(\"\"),\n): EventType<boolean> {\n return (user) => {\n All(\n patternSrc,\n valueSrc,\n flagsSrc,\n )(([pattern, value, flags]) => {\n user(new RegExp(pattern, flags).test(value));\n });\n };\n}\n","import { All, EventType, 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: EventType<string>,\n patternSrc: EventType<string>,\n replaceValueSrc: EventType<string>,\n flagsSrc: EventType<string> = Of(\"\"),\n): EventType<string> {\n return (user) => {\n All(\n patternSrc,\n valueSrc,\n replaceValueSrc,\n flagsSrc,\n )(([pattern, value, replaceValue, flags]) => {\n user(String(value).replace(new RegExp(pattern, flags), replaceValue));\n });\n };\n}\n","import { All, EventType, 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: EventType<string>,\n valueSrc: EventType<string>,\n flagsSrc: EventType<string> = Of(\"\"),\n): EventType<string[]> {\n return (user) => {\n All(\n patternSrc,\n valueSrc,\n flagsSrc,\n )(([pattern, value, flags]) => {\n const result = new RegExp(pattern, flags).exec(value);\n user(result ?? []);\n });\n };\n}\n","import { All, EventType } from \"silentium\";\n\n/**\n * Ability to mutate some object, helpful when integrate to procedure systems\n * https://silentium-lab.github.io/silentium-components/#/system/set\n */\nexport function Set<T extends Record<string, unknown>>(\n baseSrc: EventType<T>,\n keySrc: EventType<string>,\n valueSrc: EventType<unknown>,\n): EventType<T> {\n return (user) => {\n All(\n baseSrc,\n keySrc,\n valueSrc,\n )(([base, key, value]) => {\n (base as Record<string, unknown>)[key] = value;\n user(base);\n });\n };\n}\n","import {\n All,\n Applied,\n EventType,\n Destructor,\n DestructorType,\n Of,\n ConstructorType,\n} from \"silentium\";\nimport { RegexpMatched } from \"../system\";\nimport { BranchLazy } from \"../behaviors\";\n\nexport interface Route<T> {\n pattern: string;\n patternFlags?: string;\n template: ConstructorType<[], EventType<T>>;\n}\n\nconst emptySrc = () => Of(false);\n\n/**\n * Router component what will return template if url matches pattern\n * https://silentium-lab.github.io/silentium-components/#/navigation/router\n */\nexport function Router<T = \"string\">(\n urlSrc: EventType<string>,\n routesSrc: EventType<Route<T>[]>,\n defaultSrc: ConstructorType<[], EventType<T>>,\n): EventType<T> {\n return (user) => {\n const destructors: DestructorType[] = [];\n const destroyAllData = () => {\n destructors.forEach((d) => d());\n destructors.length = 0;\n };\n All(\n routesSrc,\n urlSrc,\n )(([routes, url]) => {\n destroyAllData();\n const instance = All(\n defaultSrc(),\n All(\n ...routes.map(\n (r) =>\n Destructor(\n BranchLazy(\n RegexpMatched(\n Of(r.pattern),\n Of(url),\n r.patternFlags ? Of(r.patternFlags) : undefined,\n ),\n r.template,\n emptySrc,\n ),\n (d: DestructorType) => destructors.push(d),\n ).event,\n ),\n ),\n );\n\n // Return first not false or default\n Applied(instance, (r) => {\n const firstReal = r[1].find((r) => r !== false);\n\n if (firstReal) {\n return firstReal as T;\n }\n\n return r[0];\n })(user);\n });\n\n return destroyAllData;\n };\n}\n","import { All, EventType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/and\n */\nexport function And(\n oneSrc: EventType<boolean>,\n twoSrc: EventType<boolean>,\n): EventType<boolean> {\n return (user) => {\n All(\n oneSrc,\n twoSrc,\n )(([one, two]) => {\n user(one && two);\n });\n };\n}\n","import { All, EventType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/or\n */\nexport function Or(\n oneSrc: EventType<boolean>,\n twoSrc: EventType<boolean>,\n): EventType<boolean> {\n return (user) => {\n All(\n oneSrc,\n twoSrc,\n )(([one, two]) => {\n user(one || two);\n });\n };\n}\n","import { EventType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/not\n */\nexport function Not(baseSrc: EventType<boolean>): EventType<boolean> {\n return (user) => {\n baseSrc((v) => {\n user(!v);\n });\n };\n}\n","import { Applied, EventType } from \"silentium\";\n\n/**\n * Convert Any source to boolean source\n * https://silentium-lab.github.io/silentium-components/#/boolean/bool\n */\nexport function Bool(baseSrc: EventType): EventType<boolean> {\n return (user) => {\n Applied(baseSrc, Boolean)(user);\n };\n}\n","import { EventType, EventUserType } from \"silentium\";\n\n/**\n * Represents object from json\n */\nexport function FromJson<T = Record<string, unknown>>(\n jsonSrc: EventType<string>,\n errorOwner?: EventUserType,\n): EventType<T> {\n return (user) => {\n jsonSrc((json) => {\n try {\n user(JSON.parse(json));\n } catch (error) {\n errorOwner?.(new Error(`Failed to parse JSON: ${error}`));\n }\n });\n };\n}\n","import { EventType, EventUserType } from \"silentium\";\n\n/**\n * Represents json from object\n */\nexport function ToJson(\n dataSrc: EventType,\n errorOwner?: EventUserType,\n): EventType<string> {\n return (user) => {\n dataSrc((data: unknown) => {\n try {\n user(JSON.stringify(data));\n } catch {\n errorOwner?.(new Error(\"Failed to convert to JSON\"));\n }\n });\n };\n}\n","import { Applied, EventType } from \"silentium\";\n\n/**\n * Represents the first element Of an array.\n */\nexport function First<T extends Array<unknown>>(\n baseSrc: EventType<T>,\n): EventType<T[0]> {\n return (user) => {\n Applied(baseSrc, (a) => a[0])(user);\n };\n}\n"],"names":["Detached","vars","r"],"mappings":";;AAKgB,SAAA,MAAA,CACd,YACA,EAAA,OAAA,EACA,QACwB,EAAA;AACxB,EAAA,OAAO,CAAC,IAAS,KAAA;AACf,IAAM,MAAA,QAAA,GAAW,UAAU,OAAO,CAAA;AAClC,IAAI,IAAA,SAAA;AAEJ,IAAA,IAAI,aAAa,MAAW,EAAA;AAC1B,MAAA,SAAA,GAAY,UAAU,QAAQ,CAAA;AAAA;AAGhC,IAAA,YAAA,CAAa,CAAC,CAAM,KAAA;AAClB,MAAA,IAAI,MAA6B,GAAA,IAAA;AACjC,MAAA,IAAI,CAAG,EAAA;AACL,QAAA,MAAA,GAAS,SAAS,SAAU,EAAA;AAAA,iBACnB,SAAW,EAAA;AACpB,QAAA,MAAA,GAAS,UAAU,SAAU,EAAA;AAAA;AAG/B,MAAA,IAAI,WAAW,IAAM,EAAA;AACnB,QAAA,IAAA,CAAK,MAAM,CAAA;AAAA;AACb,KACD,CAAA;AAAA,GACH;AACF;;AC1BgB,SAAA,UAAA,CACd,YACA,EAAA,OAAA,EACA,QACwB,EAAA;AACxB,EAAA,OAAO,CAAC,IAAS,KAAA;AACf,IAAI,IAAA,UAAA;AACJ,IAAA,YAAA,CAAa,CAAC,CAAM,KAAA;AAClB,MAAA,IAAI,UAAe,KAAA,MAAA,IAAa,OAAO,UAAA,KAAe,UAAY,EAAA;AAChE,QAAW,UAAA,EAAA;AAAA;AAEb,MAAA,IAAI,QAA0C,GAAA,IAAA;AAC9C,MAAA,IAAI,CAAG,EAAA;AACL,QAAA,QAAA,GAAW,OAAQ,EAAA;AAAA,iBACV,QAAU,EAAA;AACnB,QAAA,QAAA,GAAW,QAAS,EAAA;AAAA;AAEtB,MAAA,IAAI,QAAU,EAAA;AACZ,QAAA,UAAA,GAAa,SAAS,IAAI,CAAA;AAAA;AAC5B,KACD,CAAA;AAED,IAAA,OAAO,MAAM;AACX,MAAa,UAAA,IAAA;AAAA,KACf;AAAA,GACF;AACF;;AC7BgB,SAAA,QAAA,CACd,gBACA,UACc,EAAA;AACd,EAAA,OAAO,CAAC,IAAS,KAAA;AACf,IAAA,UAAA,CAAW,MAAM;AACf,MAAA,IAAA,CAAK,cAAc,CAAA;AAAA,KACpB,CAAA;AAAA,GACH;AACF;;ACNgB,SAAA,QAAA,CACd,KACA,EAAA,OAAA,EACA,UACc,EAAA;AACd,EAAA,OAAO,CAAC,IAAS,KAAA;AACf,IAAA,IAAI,SAAqB,GAAA,IAAA;AAEzB,IAAM,MAAA,CAAA,GAAI,MAAO,CAAA,OAAA,EAAS,IAAI,CAAA;AAE9B,IAAA,UAAA,CAAW,CAAC,OAAY,KAAA;AACtB,MAAA,IAAI,SAAW,EAAA;AACb,QAAA,YAAA,CAAa,SAAmB,CAAA;AAAA;AAElC,MAAA,IAAI,cAAiB,GAAA,KAAA;AAErB,MAAA,SAAA,GAAY,WAAW,MAAM;AAC3B,QAAA,IAAI,cAAgB,EAAA;AAClB,UAAA;AAAA;AAEF,QAAiB,cAAA,GAAA,IAAA;AACjB,QAAM,KAAA,CAAA,IAAI,KAAM,CAAA,mCAAmC,CAAC,CAAA;AAAA,SACnD,OAAO,CAAA;AAEV,MAAA,MAAM,IAAI,QAAS,CAAA,CAAA,CAAE,KAAO,EAAA,MAAM,CAAC,cAAc,CAAA;AACjD,MAAA,CAAA,CAAE,IAAI,CAAA;AAEN,MAAA,CAAA,CAAE,MAAM,MAAM;AACZ,QAAiB,cAAA,GAAA,IAAA;AAAA,OAClB,CAAA;AAAA,KACF,CAAA;AAAA,GACH;AACF;;AC/BgB,SAAA,QAAA,CACd,SACA,UACc,EAAA;AACd,EAAA,OAAO,CAAC,IAAS,KAAA;AACf,IAAM,MAAA,QAAA,GAAW,UAAU,OAAO,CAAA;AAClC,IAAA,UAAA,CAAW,MAAM;AACf,MAAM,MAAA,KAAA,GAAQ,SAAS,SAAU,EAAA;AACjC,MAAI,IAAA,QAAA,CAAS,KAAK,CAAG,EAAA;AACnB,QAAA,IAAA,CAAK,KAAK,CAAA;AAAA;AACZ,KACD,CAAA;AAAA,GACH;AACF;;ACjBO,SAAS,SAAY,OAAqC,EAAA;AAC/D,EAAO,OAAA,SAASA,UAAS,IAAM,EAAA;AAC7B,IAAA,MAAM,CAAI,GAAA,SAAA,CAAU,OAAO,CAAA,CAAE,SAAU,EAAA;AACvC,IAAI,IAAA,QAAA,CAAS,CAAC,CAAG,EAAA;AACf,MAAA,IAAA,CAAK,CAAC,CAAA;AAAA;AACR,GACF;AACF;;ACFgB,SAAA,KAAA,CACd,kBACA,UAAuB,GAAA,IACvB,WAAwB,GAAA,IACxB,OACe,EAAA;AACf,EAAA,MAAM,eAAe,IAAQ,EAAA;AAE7B,EAAA,IAAI,YAAY,MAAW,EAAA;AACzB,IAAA,OAAA,GAAU,CAAC,KAAU,KAAA,IAAA,CAAK,MAAM,IAAK,CAAA,SAAA,CAAU,KAAK,CAAC,CAAA;AAAA;AAGvD,EAAO,OAAA;AAAA,IACL,KAAA,EAAO,CAAC,IAAS,KAAA;AACf,MAAA,MAAM,iBAAoB,GAAA,OAAA,CAAQ,YAAa,CAAA,KAAA,EAAO,OAAO,CAAA;AAE7D,MAAA,GAAA;AAAA,QACE,iBAAA;AAAA,QACA;AAAA,OACA,CAAA,CAAC,CAAC,SAAA,EAAW,IAAI,CAAM,KAAA;AACvB,QAAA,IAAI,CAAC,SAAW,EAAA;AACd,UAAA;AAAA;AAGF,QAAA,IAAA;AAAA,UACE,MAAO,CAAA,WAAA;AAAA,YACL,MAAA,CAAO,QAAQ,SAAS,CAAA,CAAE,OAAO,CAAC,CAAC,GAAK,EAAA,KAAK,CAAM,KAAA;AACjD,cAAI,IAAA,UAAA,CAAW,QAAS,CAAA,GAAG,CAAG,EAAA;AAC5B,gBAAO,OAAA,IAAA;AAAA;AAET,cAAI,IAAA,WAAA,CAAY,QAAS,CAAA,GAAG,CAAG,EAAA;AAC7B,gBAAO,OAAA,KAAA;AAAA;AAET,cAAO,OAAA,KAAA,KAAW,KAAa,GAAG,CAAA;AAAA,aACnC;AAAA;AACH,SACF;AAAA,OACD,CAAA;AAAA,KACH;AAAA,IACA,GAAA,EAAK,CAAC,CAAM,KAAA;AACV,MAAA,YAAA,CAAa,IAAI,CAAC,CAAA;AAAA;AACpB,GACF;AACF;;AC1CgB,SAAA,OAAA,CACd,iBACA,gBACoB,EAAA;AACpB,EAAA,OAAO,CAAC,IAAS,KAAA;AACf,IAAgB,eAAA,CAAA,MAAM,IAAK,CAAA,IAAI,CAAC,CAAA;AAChC,IAAiB,gBAAA,CAAA,MAAM,IAAK,CAAA,KAAK,CAAC,CAAA;AAAA,GACpC;AACF;;ACXgB,SAAA,IAAA,CACd,SACA,OACc,EAAA;AACd,EAAA,OAAO,CAAC,IAAS,KAAA;AACf,IAAA,IAAI,MAAS,GAAA,KAAA;AACb,IAAA,OAAA,CAAQ,CAAC,OAAY,KAAA;AACnB,MAAS,MAAA,GAAA,OAAA;AAAA,KACV,CAAA;AACD,IAAA,MAAM,CAAI,GAAA,QAAA,CAAS,OAAS,EAAA,MAAM,CAAC,MAAM,CAAA;AACzC,IAAA,CAAA,CAAE,IAAI,CAAA;AAAA,GACR;AACF;;ACXO,SAAS,KAAQ,OAAqC,EAAA;AAC3D,EAAA,OAAO,CAAC,IAAS,KAAA;AACf,IAAA,IAAI,SAAsB,GAAA,IAAA;AAE1B,IAAA,OAAA,CAAQ,CAAC,CAAM,KAAA;AACb,MAAA,IAAI,MAAM,SAAW,EAAA;AACnB,QAAA,IAAA,CAAK,CAAC,CAAA;AACN,QAAY,SAAA,GAAA,CAAA;AAAA;AACd,KACD,CAAA;AAAA,GACH;AACF;;ACXO,SAAS,YAAe,OAAqC,EAAA;AAClE,EAAA,OAAO,CAAC,IAAS,KAAA;AACf,IAAA,IAAI,UAAa,GAAA,KAAA;AAEjB,IAAA,OAAA,CAAQ,CAAC,CAAM,KAAA;AACb,MAAA,IAAI,eAAe,KAAO,EAAA;AACxB,QAAa,UAAA,GAAA,IAAA;AAAA,OACR,MAAA;AACL,QAAA,IAAA,CAAK,CAAC,CAAA;AAAA;AACR,KACD,CAAA;AAAA,GACH;AACF;;ACZgB,SAAA,IAAA,CACd,SACA,MACe,EAAA;AACf,EAAM,MAAA,QAAA,GAAW,SAAU,CAAA,OAAA,CAAQ,KAAK,CAAA;AACxC,EAAM,MAAA,OAAA,GAAU,UAAU,MAAM,CAAA;AAChC,EAAO,OAAA;AAAA,IACL,KAAA,EAAO,CAAC,IAAS,KAAA;AACf,MAAA,GAAA;AAAA,QACE,OAAQ,CAAA,KAAA;AAAA,QACR;AAAA,OACA,CAAA,CAAC,CAAC,IAAA,EAAM,GAAG,CAAM,KAAA;AACjB,QAAM,MAAA,SAAA,GAAY,GAAI,CAAA,KAAA,CAAM,GAAG,CAAA;AAC/B,QAAA,IAAI,KAAiB,GAAA,IAAA;AACrB,QAAU,SAAA,CAAA,OAAA,CAAQ,CAAC,QAAa,KAAA;AAC9B,UAAA,KAAA,GAAS,MAAkC,QAAQ,CAAA;AAAA,SACpD,CAAA;AAED,QAAI,IAAA,KAAA,KAAU,MAAa,IAAA,KAAA,KAAU,IAAM,EAAA;AACzC,UAAA,IAAA,CAAK,KAAU,CAAA;AAAA;AACjB,OACD,CAAA;AAAA,KACH;AAAA,IACA,GAAA,EAAK,CAAC,KAAa,KAAA;AACjB,MAAM,MAAA,GAAA,GAAM,QAAQ,SAAU,EAAA;AAC9B,MAAI,IAAA,QAAA,CAAS,GAAG,CAAG,EAAA;AACjB,QAAA,OAAA,CAAQ,GAAI,CAAA;AAAA,UACV,GAAG,SAAS,SAAU,EAAA;AAAA,UACtB,CAAC,GAAG,GAAG;AAAA,SACH,CAAA;AAAA;AACR;AACF,GACF;AACF;;ACjCgB,SAAA,IAAA,CACd,SACA,MACc,EAAA;AACd,EAAA,OAAO,CAAC,IAAS,KAAA;AACf,IAAA,GAAA;AAAA,MACE,OAAA;AAAA,MACA;AAAA,KACA,CAAA,CAAC,CAAC,IAAA,EAAM,GAAG,CAAM,KAAA;AACjB,MAAM,MAAA,SAAA,GAAY,GAAI,CAAA,KAAA,CAAM,GAAG,CAAA;AAC/B,MAAA,IAAI,KAAiB,GAAA,IAAA;AACrB,MAAU,SAAA,CAAA,OAAA,CAAQ,CAAC,QAAa,KAAA;AAC9B,QAAA,KAAA,GAAS,MAAkC,QAAQ,CAAA;AAAA,OACpD,CAAA;AAED,MAAI,IAAA,KAAA,KAAU,MAAa,IAAA,KAAA,KAAU,IAAM,EAAA;AACzC,QAAA,IAAA,CAAK,KAAU,CAAA;AAAA;AACjB,KACD,CAAA;AAAA,GACH;AACF;;ACxBgB,SAAA,OAAA,CACd,SACA,UACc,EAAA;AACd,EAAA,OAAO,CAAC,IAAS,KAAA;AACf,IAAA,UAAA,CAAW,MAAM;AACf,MAAA,OAAA,CAAQ,IAAI,CAAA;AAAA,KACb,CAAA;AAAA,GACH;AACF;;ACLgB,SAAA,IAAA,CACd,WACA,UACc,EAAA;AACd,EAAA,OAAO,CAAC,IAAS,KAAA;AACf,IAAM,MAAA,UAAA,GAAa,UAAU,SAAS,CAAA;AAEtC,IAAA,UAAA,CAAW,MAAM;AACf,MAAM,MAAA,KAAA,GAAQ,WAAW,SAAU,EAAA;AACnC,MAAI,IAAA,QAAA,CAAS,KAAK,CAAG,EAAA;AACnB,QAAA,IAAA,CAAK,KAAK,CAAA;AAAA;AACZ,KACD,CAAA;AAAA,GACH;AACF;;AClBgB,SAAA,IAAA,CACd,OACA,EAAA,KAAA,GAAgB,CACF,EAAA;AACd,EAAA,OAAO,CAAC,IAAS,KAAA;AACf,IAAA,IAAI,SAA4B,GAAA,IAAA;AAChC,IAAgB,eAAA,CAAA,OAAA,EAAS,CAAC,EAAO,KAAA;AAC/B,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,EAAE,IAAI,CAAA;AAAA,GACT;AACF;;ACbO,SAAS,KAAQ,OAAqC,EAAA;AAC3D,EAAA,OAAO,CAAC,IAAS,KAAA;AACf,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,IAAA,CAAK,SAAS,CAAA;AACd,UAAY,SAAA,GAAA,IAAA;AAAA;AACd,OACD,CAAA;AAAA,KACH;AAEA,IAAA,OAAA,CAAQ,CAAC,CAAM,KAAA;AACb,MAAY,SAAA,GAAA,CAAA;AACZ,MAAA,IAAI,CAAC,kBAAoB,EAAA;AACvB,QAAkB,iBAAA,EAAA;AAAA;AACpB,KACD,CAAA;AAAA,GACH;AACF;;ACfgB,SAAA,WAAA,CACd,KACA,EAAA,YAAA,EAAA,GAIG,IACW,EAAA;AACd,EAAA,OAAO,CAAC,IAAS,KAAA;AACf,IAAA,MAAM,OAAO,UAAc,EAAA;AAC3B,IAAA,MAAM,cAAiC,EAAC;AAExC,IAAA,KAAA,CAAM,CAAC,CAAM,KAAA;AACX,MAAA,MAAM,MAAS,GAAA,UAAA;AAAA,QACb,YAAa,CAAA,EAAA,CAAG,CAAC,CAAA,EAAG,GAAG,IAAA,CAAK,GAAI,CAAA,CAAC,CAAM,KAAA,QAAA,CAAS,CAAC,CAAC,CAAC;AAAA,OACrD;AACA,MAAA,WAAA,CAAY,KAAK,MAAM,CAAA;AACvB,MAAO,MAAA,CAAA,KAAA,CAAM,KAAK,GAAG,CAAA;AAAA,KACtB,CAAA;AACD,IAAA,IAAA,CAAK,MAAM,IAAI,CAAA;AAEf,IAAA,OAAO,MAAM;AACX,MAAA,WAAA,CAAY,OAAQ,CAAA,CAAC,CAAM,KAAA,CAAA,CAAE,SAAS,CAAA;AACtC,MAAA,WAAA,CAAY,MAAS,GAAA,CAAA;AAAA,KACvB;AAAA,GACF;AACF;;ACnCO,SAAS,UACd,OACc,EAAA;AACd,EAAA,OAAO,CAAC,IAAS,KAAA;AACf,IAAA,MAAM,SAAkC,EAAC;AAEzC,IAAA,OAAA,CAAQ,CAAC,CAAC,GAAK,EAAA,KAAK,CAAM,KAAA;AACxB,MAAA,MAAA,CAAO,GAAG,CAAI,GAAA,KAAA;AACd,MAAA,IAAA,CAAK,MAAW,CAAA;AAAA,KACjB,CAAA;AAAA,GACH;AACF;;ACRO,SAAS,SACd,SAC6C,EAAA;AAC7C,EAAA,OAAO,CAAC,IAAS,KAAA;AACf,IAAM,MAAA,IAAA,GAAO,MAAO,CAAA,IAAA,CAAK,SAAS,CAAA;AAClC,IAAA,GAAA,CAAI,GAAG,MAAO,CAAA,MAAA,CAAO,SAAS,CAAC,CAAA,CAAE,CAAC,OAAY,KAAA;AAC5C,MAAA,MAAM,SAA8B,EAAC;AACrC,MAAQ,OAAA,CAAA,OAAA,CAAQ,CAAC,KAAA,EAAO,KAAU,KAAA;AAChC,QAAO,MAAA,CAAA,IAAA,CAAK,KAAK,CAAC,CAAI,GAAA,KAAA;AAAA,OACvB,CAAA;AACD,MAAA,IAAA,CAAK,MAAM,CAAA;AAAA,KACZ,CAAA;AAAA,GACH;AACF;;ACfO,SAAS,YACd,CAAA,OAAA,EACA,WAAiC,GAAA,EAAA,CAAG,EAAE,CACnB,EAAA;AACnB,EAAA,OAAO,CAAC,IAAS,KAAA;AACf,IAAA,GAAA;AAAA,MACE,WAAA;AAAA,MACA,GAAG;AAAA,KACH,CAAA,CAAC,CAAC,QAAA,EAAa,UAAO,CAAM,KAAA;AAC5B,MAAK,IAAA,CAAA,OAAA,CAAQ,IAAK,CAAA,QAAQ,CAAC,CAAA;AAAA,KAC5B,CAAA;AAAA,GACH;AACF;;ACRgB,SAAA,QAAA,CACd,SAA4B,EAAG,CAAA,EAAE,GACjC,SAAgD,GAAA,EAAA,CAAG,EAAE,CACrD,EAAA;AACA,EAAA,IAAI,aAAgB,GAAA,CAAA;AACpB,EAAA,MAAM,IAAkC,GAAA;AAAA,IACtC,IAAA,EAAM,GAAG,MAAM;AAAA,GACjB;AACA,EAAA,MAAM,cAAgC,EAAC;AACvC,EAAO,OAAA;AAAA,IACL,KAAA,EAA2B,CAAC,IAAS,KAAA;AACnC,MAAM,MAAA,OAAA,GAAU,SAAS,IAAI,CAAA;AAC7B,MAAQ,OAAA,CAAA,GAAA,CAAI,MAAQ,EAAA,SAAA,EAAW,OAAO,CAAA,EAAG,CAAC,CAAC,IAAA,EAAM,KAAOC,EAAAA,KAAI,CAAM,KAAA;AAChE,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,CAAQA,KAAI,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;AAED,QAAO,OAAA,IAAA;AAAA,OACR,EAAE,IAAI,CAAA;AAAA,KACT;AAAA,IACA,QAAA,EAAU,CAAC,KAAkB,KAAA;AAC3B,MAAA,MAAA,GAAS,GAAG,KAAK,CAAA;AAAA,KACnB;AAAA;AAAA;AAAA;AAAA;AAAA,IAKA,GAAA,EAAK,CAAC,GAA2B,KAAA;AAC/B,MAAM,MAAA,OAAA,GAAU,OAAO,aAAa,CAAA,CAAA;AACpC,MAAiB,aAAA,IAAA,CAAA;AACjB,MAAA,IAAA,CAAK,OAAO,CAAA,GAAI,UAAW,CAAA,GAAA,EAAK,CAAC,CAAsB,KAAA;AACrD,QAAA,WAAA,CAAY,KAAK,CAAC,CAAA;AAAA,OACnB,CAAE,CAAA,KAAA;AACH,MAAO,OAAA,OAAA;AAAA,KACT;AAAA,IACA,OAAU,GAAA;AACR,MAAA,WAAA,CAAY,OAAQ,CAAA,CAAC,CAAM,KAAA,CAAA,EAAG,CAAA;AAAA;AAChC,GACF;AACF;;AC9CO,SAAS,cACd,UACA,EAAA,QAAA,EACA,QAA8B,GAAA,EAAA,CAAG,EAAE,CACf,EAAA;AACpB,EAAA,OAAO,CAAC,IAAS,KAAA;AACf,IAAA,GAAA;AAAA,MACE,UAAA;AAAA,MACA,QAAA;AAAA,MACA;AAAA,MACA,CAAC,CAAC,OAAS,EAAA,KAAA,EAAO,KAAK,CAAM,KAAA;AAC7B,MAAA,IAAA,CAAK,IAAI,MAAO,CAAA,OAAA,EAAS,KAAK,CAAE,CAAA,IAAA,CAAK,KAAK,CAAC,CAAA;AAAA,KAC5C,CAAA;AAAA,GACH;AACF;;ACdO,SAAS,eACd,QACA,EAAA,UAAA,EACA,iBACA,QAA8B,GAAA,EAAA,CAAG,EAAE,CAChB,EAAA;AACnB,EAAA,OAAO,CAAC,IAAS,KAAA;AACf,IAAA,GAAA;AAAA,MACE,UAAA;AAAA,MACA,QAAA;AAAA,MACA,eAAA;AAAA,MACA;AAAA,MACA,CAAC,CAAC,SAAS,KAAO,EAAA,YAAA,EAAc,KAAK,CAAM,KAAA;AAC3C,MAAK,IAAA,CAAA,MAAA,CAAO,KAAK,CAAA,CAAE,OAAQ,CAAA,IAAI,OAAO,OAAS,EAAA,KAAK,CAAG,EAAA,YAAY,CAAC,CAAA;AAAA,KACrE,CAAA;AAAA,GACH;AACF;;AChBO,SAAS,YACd,UACA,EAAA,QAAA,EACA,QAA8B,GAAA,EAAA,CAAG,EAAE,CACd,EAAA;AACrB,EAAA,OAAO,CAAC,IAAS,KAAA;AACf,IAAA,GAAA;AAAA,MACE,UAAA;AAAA,MACA,QAAA;AAAA,MACA;AAAA,MACA,CAAC,CAAC,OAAS,EAAA,KAAA,EAAO,KAAK,CAAM,KAAA;AAC7B,MAAA,MAAM,SAAS,IAAI,MAAA,CAAO,SAAS,KAAK,CAAA,CAAE,KAAK,KAAK,CAAA;AACpD,MAAK,IAAA,CAAA,MAAA,IAAU,EAAE,CAAA;AAAA,KAClB,CAAA;AAAA,GACH;AACF;;ACfgB,SAAA,GAAA,CACd,OACA,EAAA,MAAA,EACA,QACc,EAAA;AACd,EAAA,OAAO,CAAC,IAAS,KAAA;AACf,IAAA,GAAA;AAAA,MACE,OAAA;AAAA,MACA,MAAA;AAAA,MACA;AAAA,MACA,CAAC,CAAC,IAAM,EAAA,GAAA,EAAK,KAAK,CAAM,KAAA;AACxB,MAAC,IAAA,CAAiC,GAAG,CAAI,GAAA,KAAA;AACzC,MAAA,IAAA,CAAK,IAAI,CAAA;AAAA,KACV,CAAA;AAAA,GACH;AACF;;ACHA,MAAM,QAAA,GAAW,MAAM,EAAA,CAAG,KAAK,CAAA;AAMf,SAAA,MAAA,CACd,MACA,EAAA,SAAA,EACA,UACc,EAAA;AACd,EAAA,OAAO,CAAC,IAAS,KAAA;AACf,IAAA,MAAM,cAAgC,EAAC;AACvC,IAAA,MAAM,iBAAiB,MAAM;AAC3B,MAAA,WAAA,CAAY,OAAQ,CAAA,CAAC,CAAM,KAAA,CAAA,EAAG,CAAA;AAC9B,MAAA,WAAA,CAAY,MAAS,GAAA,CAAA;AAAA,KACvB;AACA,IAAA,GAAA;AAAA,MACE,SAAA;AAAA,MACA;AAAA,KACA,CAAA,CAAC,CAAC,MAAA,EAAQ,GAAG,CAAM,KAAA;AACnB,MAAe,cAAA,EAAA;AACf,MAAA,MAAM,QAAW,GAAA,GAAA;AAAA,QACf,UAAW,EAAA;AAAA,QACX,GAAA;AAAA,UACE,GAAG,MAAO,CAAA,GAAA;AAAA,YACR,CAAC,CACC,KAAA,UAAA;AAAA,cACE,UAAA;AAAA,gBACE,aAAA;AAAA,kBACE,EAAA,CAAG,EAAE,OAAO,CAAA;AAAA,kBACZ,GAAG,GAAG,CAAA;AAAA,kBACN,CAAE,CAAA,YAAA,GAAe,EAAG,CAAA,CAAA,CAAE,YAAY,CAAI,GAAA;AAAA,iBACxC;AAAA,gBACA,CAAE,CAAA,QAAA;AAAA,gBACF;AAAA,eACF;AAAA,cACA,CAAC,CAAA,KAAsB,WAAY,CAAA,IAAA,CAAK,CAAC;AAAA,aACzC,CAAA;AAAA;AACN;AACF,OACF;AAGA,MAAQ,OAAA,CAAA,QAAA,EAAU,CAAC,CAAM,KAAA;AACvB,QAAM,MAAA,SAAA,GAAY,EAAE,CAAC,CAAA,CAAE,KAAK,CAACC,EAAAA,KAAMA,OAAM,KAAK,CAAA;AAE9C,QAAA,IAAI,SAAW,EAAA;AACb,UAAO,OAAA,SAAA;AAAA;AAGT,QAAA,OAAO,EAAE,CAAC,CAAA;AAAA,OACX,EAAE,IAAI,CAAA;AAAA,KACR,CAAA;AAED,IAAO,OAAA,cAAA;AAAA,GACT;AACF;;ACtEgB,SAAA,GAAA,CACd,QACA,MACoB,EAAA;AACpB,EAAA,OAAO,CAAC,IAAS,KAAA;AACf,IAAA,GAAA;AAAA,MACE,MAAA;AAAA,MACA;AAAA,KACA,CAAA,CAAC,CAAC,GAAA,EAAK,GAAG,CAAM,KAAA;AAChB,MAAA,IAAA,CAAK,OAAO,GAAG,CAAA;AAAA,KAChB,CAAA;AAAA,GACH;AACF;;ACZgB,SAAA,EAAA,CACd,QACA,MACoB,EAAA;AACpB,EAAA,OAAO,CAAC,IAAS,KAAA;AACf,IAAA,GAAA;AAAA,MACE,MAAA;AAAA,MACA;AAAA,KACA,CAAA,CAAC,CAAC,GAAA,EAAK,GAAG,CAAM,KAAA;AAChB,MAAA,IAAA,CAAK,OAAO,GAAG,CAAA;AAAA,KAChB,CAAA;AAAA,GACH;AACF;;ACZO,SAAS,IAAI,OAAiD,EAAA;AACnE,EAAA,OAAO,CAAC,IAAS,KAAA;AACf,IAAA,OAAA,CAAQ,CAAC,CAAM,KAAA;AACb,MAAA,IAAA,CAAK,CAAC,CAAC,CAAA;AAAA,KACR,CAAA;AAAA,GACH;AACF;;ACLO,SAAS,KAAK,OAAwC,EAAA;AAC3D,EAAA,OAAO,CAAC,IAAS,KAAA;AACf,IAAQ,OAAA,CAAA,OAAA,EAAS,OAAO,CAAA,CAAE,IAAI,CAAA;AAAA,GAChC;AACF;;ACLgB,SAAA,QAAA,CACd,SACA,UACc,EAAA;AACd,EAAA,OAAO,CAAC,IAAS,KAAA;AACf,IAAA,OAAA,CAAQ,CAAC,IAAS,KAAA;AAChB,MAAI,IAAA;AACF,QAAK,IAAA,CAAA,IAAA,CAAK,KAAM,CAAA,IAAI,CAAC,CAAA;AAAA,eACd,KAAO,EAAA;AACd,QAAA,UAAA,GAAa,IAAI,KAAA,CAAM,CAAyB,sBAAA,EAAA,KAAK,EAAE,CAAC,CAAA;AAAA;AAC1D,KACD,CAAA;AAAA,GACH;AACF;;ACbgB,SAAA,MAAA,CACd,SACA,UACmB,EAAA;AACnB,EAAA,OAAO,CAAC,IAAS,KAAA;AACf,IAAA,OAAA,CAAQ,CAAC,IAAkB,KAAA;AACzB,MAAI,IAAA;AACF,QAAK,IAAA,CAAA,IAAA,CAAK,SAAU,CAAA,IAAI,CAAC,CAAA;AAAA,OACnB,CAAA,MAAA;AACN,QAAa,UAAA,GAAA,IAAI,KAAM,CAAA,2BAA2B,CAAC,CAAA;AAAA;AACrD,KACD,CAAA;AAAA,GACH;AACF;;ACbO,SAAS,MACd,OACiB,EAAA;AACjB,EAAA,OAAO,CAAC,IAAS,KAAA;AACf,IAAA,OAAA,CAAQ,SAAS,CAAC,CAAA,KAAM,EAAE,CAAC,CAAC,EAAE,IAAI,CAAA;AAAA,GACpC;AACF;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "silentium-components",
3
- "version": "0.0.69",
3
+ "version": "0.0.70",
4
4
  "description": "",
5
5
  "type": "module",
6
6
  "main": "dist/silentium-components.js",
@@ -31,11 +31,10 @@ describe("Transaction.test", () => {
31
31
 
32
32
  expect(Primitive(t).primitiveWithException()).toBe(4);
33
33
 
34
- // $mult changed after $base, hence result is 6, 3 * 2
35
34
  $base.use(3);
36
35
  $mult.use(3);
37
36
 
38
- expect(Primitive(t).primitiveWithException()).toBe(6);
37
+ expect(Primitive(t).primitiveWithException()).toBe(9);
39
38
 
40
39
  // $mult is of value 3, hence result will be 12
41
40
  $base.use(4);
@@ -20,18 +20,17 @@ export function Transaction<T, R = unknown>(
20
20
  >,
21
21
  ...args: EventType[]
22
22
  ): EventType<R> {
23
- const $res = LateShared<R>();
24
- const destructors: DestroyableType[] = [];
25
-
26
- $base((v) => {
27
- const $event = Destructor(
28
- eventBuilder(Of(v), ...args.map((a) => Detached(a))),
29
- );
30
- destructors.push($event);
31
- $event.event($res.use);
32
- });
33
-
34
23
  return (user) => {
24
+ const $res = LateShared<R>();
25
+ const destructors: DestroyableType[] = [];
26
+
27
+ $base((v) => {
28
+ const $event = Destructor(
29
+ eventBuilder(Of(v), ...args.map((a) => Detached(a))),
30
+ );
31
+ destructors.push($event);
32
+ $event.event($res.use);
33
+ });
35
34
  $res.event(user);
36
35
 
37
36
  return () => {