silentium-components 0.0.55 → 0.0.56

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.56](https://github.com/silentium-lab/silentium-components/compare/v0.0.55...v0.0.56) (2025-10-05)
6
+
7
+
8
+ ### Bug Fixes
9
+
10
+ * **main:** fixed branch lazy destruction logic ([7c1f2c3](https://github.com/silentium-lab/silentium-components/commit/7c1f2c30d08b418b091a43069f0effa92cc41fa9))
11
+
5
12
  ### [0.0.55](https://github.com/silentium-lab/silentium-components/compare/v0.0.54...v0.0.55) (2025-10-04)
6
13
 
7
14
 
@@ -325,7 +325,11 @@ const template = (theSrc = silentium.of(""), placesSrc = silentium.of({})) => {
325
325
 
326
326
  const branchLazy = (conditionSrc, leftSrc, rightSrc) => {
327
327
  return (u) => {
328
+ let destructor;
328
329
  conditionSrc((v) => {
330
+ if (destructor !== void 0 && typeof destructor === "function") {
331
+ destructor();
332
+ }
329
333
  let instance = null;
330
334
  if (v) {
331
335
  instance = leftSrc();
@@ -333,7 +337,7 @@ const branchLazy = (conditionSrc, leftSrc, rightSrc) => {
333
337
  instance = rightSrc();
334
338
  }
335
339
  if (instance) {
336
- instance(u);
340
+ destructor = instance(u);
337
341
  }
338
342
  });
339
343
  };
@@ -1 +1 @@
1
- {"version":3,"file":"silentium-components.cjs","sources":["../src/behaviors/Branch.ts","../src/behaviors/Const.ts","../src/behaviors/Deadline.ts","../src/behaviors/Deferred.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/Tick.ts","../src/behaviors/Task.ts","../src/structures/HashTable.ts","../src/structures/RecordOf.ts","../src/strings/Concatenated.ts","../src/strings/Template.ts","../src/behaviors/BranchLazy.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 { DataType, primitive } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/branch\n */\nexport const branch = <Then, Else>(\n conditionSrc: DataType<boolean>,\n leftSrc: DataType<Then>,\n rightSrc?: DataType<Else>,\n): DataType<Then | Else> => {\n return (u) => {\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 u(result);\n }\n });\n };\n};\n","import { DataType } from \"silentium\";\n\nexport const constant = <T>(\n permanentValue: T,\n triggerSrc: DataType,\n): DataType<T> => {\n return (u) => {\n triggerSrc(() => {\n u(permanentValue);\n });\n };\n};\n","import { DataType, DataUserType, filtered, shared } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport const deadline = <T>(\n error: DataUserType<Error>,\n baseSrc: DataType<T>,\n timeoutSrc: DataType<number>,\n): DataType<T> => {\n return (u) => {\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.value, () => !timeoutReached);\n f(u);\n\n s.value(() => {\n timeoutReached = true;\n });\n });\n };\n};\n","import { DataType, 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 const deferred = <T>(\n baseSrc: DataType<T>,\n triggerSrc: DataType<unknown>,\n): DataType<T> => {\n return (u) => {\n const baseSync = primitive(baseSrc);\n triggerSrc(() => {\n const value = baseSync.primitive();\n if (isFilled(value)) {\n u(value);\n }\n });\n };\n};\n","import { all, applied, DataType, 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 const dirty = <T>(\n baseEntitySource: DataType<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 value: (u) => {\n const comparingDetached = applied(comparingSrc.value, cloneFn);\n\n all(\n comparingDetached,\n baseEntitySource,\n )(([comparing, base]) => {\n if (!comparing) {\n return;\n }\n\n u(\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 give: (v) => {\n comparingSrc.give(v);\n },\n };\n};\n","import { DataType } 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 const loading = (\n loadingStartSrc: DataType<unknown>,\n loadingFinishSrc: DataType<unknown>,\n): DataType<boolean> => {\n return (u) => {\n loadingStartSrc(() => u(true));\n loadingFinishSrc(() => u(false));\n };\n};\n","import { DataType, filtered } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/lock\n */\nexport const lock = <T>(\n baseSrc: DataType<T>,\n lockSrc: DataType<boolean>,\n): DataType<T> => {\n return (u) => {\n let locked = false;\n lockSrc((newLock) => {\n locked = newLock;\n });\n const i = filtered(baseSrc, () => !locked);\n i(u);\n };\n};\n","import { DataType } 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 const memo = <T>(baseSrc: DataType<T>): DataType<T> => {\n return (u) => {\n let lastValue: T | null = null;\n\n baseSrc((v) => {\n if (v !== lastValue) {\n u(v);\n lastValue = v;\n }\n });\n };\n};\n","import { DataType } 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 const onlyChanged = <T>(baseSrc: DataType<T>): DataType<T> => {\n return (u) => {\n let firstValue = false;\n\n baseSrc((v) => {\n if (firstValue === false) {\n firstValue = true;\n } else {\n u(v);\n }\n });\n };\n};\n","import { all, DataType, 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 const part = <\n R,\n T extends Record<string, unknown> | Array<unknown> = any,\n K extends string = any,\n>(\n baseSrc: SourceType<T>,\n keySrc: DataType<K>,\n): SourceType<R> => {\n const baseSync = primitive(baseSrc.value);\n const keySync = primitive(keySrc);\n return {\n value: (u) => {\n all(\n baseSrc.value,\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 u(value as R);\n }\n });\n },\n give: (value: R) => {\n const key = keySync.primitive();\n if (isFilled(key)) {\n baseSrc.give({\n ...baseSync.primitive(),\n [key]: value,\n } as T);\n }\n },\n };\n};\n","import { all, DataType } from \"silentium\";\n\n/**\n * Return source of record path\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport const path = <\n R,\n T extends Record<string, unknown> | Array<unknown> = any,\n K extends string = any,\n>(\n baseSrc: DataType<T>,\n keySrc: DataType<K>,\n): DataType<R> => {\n return (u) => {\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 u(value as R);\n }\n });\n };\n};\n","import { DataType } from \"silentium\";\n\nexport const polling = <T>(\n baseSrc: DataType<T>,\n triggerSrc: DataType<T>,\n): DataType<T> => {\n return (u) => {\n triggerSrc(() => {\n baseSrc(u);\n });\n };\n};\n","import { DataType, 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 const shot = <T>(\n targetSrc: DataType<T>,\n triggerSrc: DataType,\n): DataType<T> => {\n return (u) => {\n const targetSync = primitive(targetSrc);\n\n triggerSrc(() => {\n const value = targetSync.primitive();\n if (isFilled(value)) {\n u(value);\n }\n });\n };\n};\n","import { DataType } 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 const tick = <T>(baseSrc: DataType<T>): DataType<T> => {\n return (u) => {\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 u(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 { DataType, executorApplied } from \"silentium\";\n\nexport const task = <T>(\n baseSrc: DataType<T>,\n delay: number = 0,\n): DataType<T> => {\n return (u) => {\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 })(u);\n };\n};\n","import { DataType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/structures/hash-table\n */\nexport const hashTable = <T>(\n baseSrc: DataType<[string, unknown]>,\n): DataType<T> => {\n return (u) => {\n const record: Record<string, unknown> = {};\n\n baseSrc(([key, value]) => {\n record[key] = value;\n u(record as T);\n });\n };\n};\n","import { all, DataType } from \"silentium\";\n\ntype UnInformation<T> = T extends DataType<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 const recordOf = <T extends DataType>(\n recordSrc: Record<string, T>,\n): DataType<Record<string, UnInformation<T>>> => {\n return (u) => {\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 u(record);\n });\n };\n};\n","import { all, DataType, 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 const concatenated = (\n sources: DataType<string>[],\n joinPartSrc: DataType<string> = of(\"\"),\n): DataType<string> => {\n return (u) => {\n all(\n joinPartSrc,\n ...sources,\n )(([joinPart, ...strings]) => {\n u(strings.join(joinPart));\n });\n };\n};\n","import { all, applied, DataType, of } from \"silentium\";\nimport { recordOf } from \"../structures\";\n\nexport const template = (\n theSrc: DataType<string> = of(\"\"),\n placesSrc: DataType<Record<string, unknown>> = of({}),\n) => {\n let placesCounter = 0;\n const vars: Record<string, DataType> = {\n $TPL: of(\"$TPL\"),\n };\n return {\n value: <DataType<string>>((u) => {\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 })(u);\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: DataType<string>) => {\n const varName = `$var${placesCounter}`;\n placesCounter += 1;\n vars[varName] = src;\n return varName;\n },\n };\n};\n","import { DataType, ValueType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/branch\n */\nexport const branchLazy = <Then, Else>(\n conditionSrc: DataType<boolean>,\n leftSrc: ValueType<[], DataType<Then>>,\n rightSrc?: ValueType<[], DataType<Else>>,\n): DataType<Then | Else> => {\n return (u) => {\n conditionSrc((v) => {\n let instance: DataType<Then | Else> | null = null;\n if (v) {\n instance = leftSrc();\n } else if (rightSrc) {\n instance = rightSrc();\n }\n if (instance) {\n instance(u);\n }\n });\n };\n};\n","import { all, DataType, 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 const regexpMatched = (\n patternSrc: DataType<string>,\n valueSrc: DataType<string>,\n flagsSrc: DataType<string> = of(\"\"),\n): DataType<boolean> => {\n return (u) => {\n all(\n patternSrc,\n valueSrc,\n flagsSrc,\n )(([pattern, value, flags]) => {\n u(new RegExp(pattern, flags).test(value));\n });\n };\n};\n","import { all, DataType, 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 const regexpReplaced = (\n valueSrc: DataType<string>,\n patternSrc: DataType<string>,\n replaceValueSrc: DataType<string>,\n flagsSrc: DataType<string> = of(\"\"),\n): DataType<string> => {\n return (u) => {\n all(\n patternSrc,\n valueSrc,\n replaceValueSrc,\n flagsSrc,\n )(([pattern, value, replaceValue, flags]) => {\n u(String(value).replace(new RegExp(pattern, flags), replaceValue));\n });\n };\n};\n","import { all, DataType, of } from \"silentium\";\n\n/**\n * First match of regexp\n * https://silentium-lab.github.io/silentium-components/#/system/regexp-matched\n */\nexport const regexpMatch = (\n patternSrc: DataType<string>,\n valueSrc: DataType<string>,\n flagsSrc: DataType<string> = of(\"\"),\n): DataType<string[]> => {\n return (u) => {\n all(\n patternSrc,\n valueSrc,\n flagsSrc,\n )(([pattern, value, flags]) => {\n const result = new RegExp(pattern, flags).exec(value);\n u(result ?? []);\n });\n };\n};\n","import { all, DataType } 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 const set = <T extends Record<string, unknown>>(\n baseSrc: DataType<T>,\n keySrc: DataType<string>,\n valueSrc: DataType<unknown>,\n): DataType<T> => {\n return (u) => {\n all(\n baseSrc,\n keySrc,\n valueSrc,\n )(([base, key, value]) => {\n (base as Record<string, unknown>)[key] = value;\n u(base);\n });\n };\n};\n","import { all, applied, DataType, of, ValueType } from \"silentium\";\nimport { branchLazy } from \"../behaviors/BranchLazy\";\nimport { regexpMatched } from \"../system\";\n\nexport interface Route<T> {\n pattern: string;\n patternFlags?: string;\n template: ValueType<[], DataType<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 const router = <T = \"string\">(\n urlSrc: DataType<string>,\n routesSrc: DataType<Route<T>[]>,\n defaultSrc: ValueType<[], DataType<T>>,\n): DataType<T> => {\n return (u) => {\n all(\n routesSrc,\n urlSrc,\n )(([routes, url]) => {\n const instance = all(\n defaultSrc(),\n all(\n ...routes.map((r) =>\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 ),\n ),\n );\n\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 })(u);\n });\n };\n};\n","import { all, DataType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/and\n */\nexport const and = (\n oneSrc: DataType<boolean>,\n twoSrc: DataType<boolean>,\n): DataType<boolean> => {\n return (u) => {\n all(\n oneSrc,\n twoSrc,\n )(([one, two]) => {\n u(one && two);\n });\n };\n};\n","import { all, DataType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/or\n */\nexport const or = (\n oneSrc: DataType<boolean>,\n twoSrc: DataType<boolean>,\n): DataType<boolean> => {\n return (u) => {\n all(\n oneSrc,\n twoSrc,\n )(([one, two]) => {\n u(one || two);\n });\n };\n};\n","import { DataType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/not\n */\nexport const not = (baseSrc: DataType<boolean>): DataType<boolean> => {\n return (u) => {\n baseSrc((v) => {\n u(!v);\n });\n };\n};\n","import { applied, DataType } from \"silentium\";\n\n/**\n * Convert any source to boolean source\n * https://silentium-lab.github.io/silentium-components/#/boolean/bool\n */\nexport const bool = (baseSrc: DataType): DataType<boolean> => {\n return (u) => {\n applied(baseSrc, Boolean)(u);\n };\n};\n","import { DataType, DataUserType } from \"silentium\";\n\n/**\n * Represents object from json\n */\nexport const fromJson = <T = Record<string, unknown>>(\n jsonSrc: DataType<string>,\n errorOwner?: DataUserType,\n): DataType<T> => {\n return (u) => {\n jsonSrc((json) => {\n try {\n u(JSON.parse(json));\n } catch (error) {\n errorOwner?.(new Error(`Failed to parse JSON: ${error}`));\n }\n });\n };\n};\n","import { DataType, DataUserType } from \"silentium\";\n\n/**\n * Represents json from object\n */\nexport const toJson = (\n dataSrc: DataType,\n errorOwner?: DataUserType,\n): DataType<string> => {\n return (u) => {\n dataSrc((data: unknown) => {\n try {\n u(JSON.stringify(data));\n } catch {\n errorOwner?.(new Error(\"Failed to convert to JSON\"));\n }\n });\n };\n};\n","import { applied, DataType } from \"silentium\";\n\n/**\n * Represents the first element of an array.\n */\nexport const first = <T extends Array<unknown>>(\n baseSrc: DataType<T>,\n): DataType<T[0]> => {\n return (u) => {\n applied(baseSrc, (a) => a[0])(u);\n };\n};\n"],"names":["primitive","shared","filtered","isFilled","late","applied","all","executorApplied","of","vars","r"],"mappings":"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"}
1
+ {"version":3,"file":"silentium-components.cjs","sources":["../src/behaviors/Branch.ts","../src/behaviors/Const.ts","../src/behaviors/Deadline.ts","../src/behaviors/Deferred.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/Tick.ts","../src/behaviors/Task.ts","../src/structures/HashTable.ts","../src/structures/RecordOf.ts","../src/strings/Concatenated.ts","../src/strings/Template.ts","../src/behaviors/BranchLazy.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 { DataType, primitive } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/branch\n */\nexport const branch = <Then, Else>(\n conditionSrc: DataType<boolean>,\n leftSrc: DataType<Then>,\n rightSrc?: DataType<Else>,\n): DataType<Then | Else> => {\n return (u) => {\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 u(result);\n }\n });\n };\n};\n","import { DataType } from \"silentium\";\n\nexport const constant = <T>(\n permanentValue: T,\n triggerSrc: DataType,\n): DataType<T> => {\n return (u) => {\n triggerSrc(() => {\n u(permanentValue);\n });\n };\n};\n","import { DataType, DataUserType, filtered, shared } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport const deadline = <T>(\n error: DataUserType<Error>,\n baseSrc: DataType<T>,\n timeoutSrc: DataType<number>,\n): DataType<T> => {\n return (u) => {\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.value, () => !timeoutReached);\n f(u);\n\n s.value(() => {\n timeoutReached = true;\n });\n });\n };\n};\n","import { DataType, 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 const deferred = <T>(\n baseSrc: DataType<T>,\n triggerSrc: DataType<unknown>,\n): DataType<T> => {\n return (u) => {\n const baseSync = primitive(baseSrc);\n triggerSrc(() => {\n const value = baseSync.primitive();\n if (isFilled(value)) {\n u(value);\n }\n });\n };\n};\n","import { all, applied, DataType, 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 const dirty = <T>(\n baseEntitySource: DataType<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 value: (u) => {\n const comparingDetached = applied(comparingSrc.value, cloneFn);\n\n all(\n comparingDetached,\n baseEntitySource,\n )(([comparing, base]) => {\n if (!comparing) {\n return;\n }\n\n u(\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 give: (v) => {\n comparingSrc.give(v);\n },\n };\n};\n","import { DataType } 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 const loading = (\n loadingStartSrc: DataType<unknown>,\n loadingFinishSrc: DataType<unknown>,\n): DataType<boolean> => {\n return (u) => {\n loadingStartSrc(() => u(true));\n loadingFinishSrc(() => u(false));\n };\n};\n","import { DataType, filtered } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/lock\n */\nexport const lock = <T>(\n baseSrc: DataType<T>,\n lockSrc: DataType<boolean>,\n): DataType<T> => {\n return (u) => {\n let locked = false;\n lockSrc((newLock) => {\n locked = newLock;\n });\n const i = filtered(baseSrc, () => !locked);\n i(u);\n };\n};\n","import { DataType } 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 const memo = <T>(baseSrc: DataType<T>): DataType<T> => {\n return (u) => {\n let lastValue: T | null = null;\n\n baseSrc((v) => {\n if (v !== lastValue) {\n u(v);\n lastValue = v;\n }\n });\n };\n};\n","import { DataType } 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 const onlyChanged = <T>(baseSrc: DataType<T>): DataType<T> => {\n return (u) => {\n let firstValue = false;\n\n baseSrc((v) => {\n if (firstValue === false) {\n firstValue = true;\n } else {\n u(v);\n }\n });\n };\n};\n","import { all, DataType, 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 const part = <\n R,\n T extends Record<string, unknown> | Array<unknown> = any,\n K extends string = any,\n>(\n baseSrc: SourceType<T>,\n keySrc: DataType<K>,\n): SourceType<R> => {\n const baseSync = primitive(baseSrc.value);\n const keySync = primitive(keySrc);\n return {\n value: (u) => {\n all(\n baseSrc.value,\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 u(value as R);\n }\n });\n },\n give: (value: R) => {\n const key = keySync.primitive();\n if (isFilled(key)) {\n baseSrc.give({\n ...baseSync.primitive(),\n [key]: value,\n } as T);\n }\n },\n };\n};\n","import { all, DataType } from \"silentium\";\n\n/**\n * Return source of record path\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport const path = <\n R,\n T extends Record<string, unknown> | Array<unknown> = any,\n K extends string = any,\n>(\n baseSrc: DataType<T>,\n keySrc: DataType<K>,\n): DataType<R> => {\n return (u) => {\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 u(value as R);\n }\n });\n };\n};\n","import { DataType } from \"silentium\";\n\nexport const polling = <T>(\n baseSrc: DataType<T>,\n triggerSrc: DataType<T>,\n): DataType<T> => {\n return (u) => {\n triggerSrc(() => {\n baseSrc(u);\n });\n };\n};\n","import { DataType, 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 const shot = <T>(\n targetSrc: DataType<T>,\n triggerSrc: DataType,\n): DataType<T> => {\n return (u) => {\n const targetSync = primitive(targetSrc);\n\n triggerSrc(() => {\n const value = targetSync.primitive();\n if (isFilled(value)) {\n u(value);\n }\n });\n };\n};\n","import { DataType } 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 const tick = <T>(baseSrc: DataType<T>): DataType<T> => {\n return (u) => {\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 u(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 { DataType, executorApplied } from \"silentium\";\n\nexport const task = <T>(\n baseSrc: DataType<T>,\n delay: number = 0,\n): DataType<T> => {\n return (u) => {\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 })(u);\n };\n};\n","import { DataType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/structures/hash-table\n */\nexport const hashTable = <T>(\n baseSrc: DataType<[string, unknown]>,\n): DataType<T> => {\n return (u) => {\n const record: Record<string, unknown> = {};\n\n baseSrc(([key, value]) => {\n record[key] = value;\n u(record as T);\n });\n };\n};\n","import { all, DataType } from \"silentium\";\n\ntype UnInformation<T> = T extends DataType<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 const recordOf = <T extends DataType>(\n recordSrc: Record<string, T>,\n): DataType<Record<string, UnInformation<T>>> => {\n return (u) => {\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 u(record);\n });\n };\n};\n","import { all, DataType, 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 const concatenated = (\n sources: DataType<string>[],\n joinPartSrc: DataType<string> = of(\"\"),\n): DataType<string> => {\n return (u) => {\n all(\n joinPartSrc,\n ...sources,\n )(([joinPart, ...strings]) => {\n u(strings.join(joinPart));\n });\n };\n};\n","import { all, applied, DataType, of } from \"silentium\";\nimport { recordOf } from \"../structures\";\n\nexport const template = (\n theSrc: DataType<string> = of(\"\"),\n placesSrc: DataType<Record<string, unknown>> = of({}),\n) => {\n let placesCounter = 0;\n const vars: Record<string, DataType> = {\n $TPL: of(\"$TPL\"),\n };\n return {\n value: <DataType<string>>((u) => {\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 })(u);\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: DataType<string>) => {\n const varName = `$var${placesCounter}`;\n placesCounter += 1;\n vars[varName] = src;\n return varName;\n },\n };\n};\n","import { DataType, DestructorType, ValueType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/branch\n */\nexport const branchLazy = <Then, Else>(\n conditionSrc: DataType<boolean>,\n leftSrc: ValueType<[], DataType<Then>>,\n rightSrc?: ValueType<[], DataType<Else>>,\n): DataType<Then | Else> => {\n return (u) => {\n let destructor: DestructorType | void;\n conditionSrc((v) => {\n if (destructor !== undefined && typeof destructor === \"function\") {\n destructor();\n }\n let instance: DataType<Then | Else> | null = null;\n if (v) {\n instance = leftSrc();\n } else if (rightSrc) {\n instance = rightSrc();\n }\n if (instance) {\n destructor = instance(u);\n }\n });\n };\n};\n","import { all, DataType, 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 const regexpMatched = (\n patternSrc: DataType<string>,\n valueSrc: DataType<string>,\n flagsSrc: DataType<string> = of(\"\"),\n): DataType<boolean> => {\n return (u) => {\n all(\n patternSrc,\n valueSrc,\n flagsSrc,\n )(([pattern, value, flags]) => {\n u(new RegExp(pattern, flags).test(value));\n });\n };\n};\n","import { all, DataType, 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 const regexpReplaced = (\n valueSrc: DataType<string>,\n patternSrc: DataType<string>,\n replaceValueSrc: DataType<string>,\n flagsSrc: DataType<string> = of(\"\"),\n): DataType<string> => {\n return (u) => {\n all(\n patternSrc,\n valueSrc,\n replaceValueSrc,\n flagsSrc,\n )(([pattern, value, replaceValue, flags]) => {\n u(String(value).replace(new RegExp(pattern, flags), replaceValue));\n });\n };\n};\n","import { all, DataType, of } from \"silentium\";\n\n/**\n * First match of regexp\n * https://silentium-lab.github.io/silentium-components/#/system/regexp-matched\n */\nexport const regexpMatch = (\n patternSrc: DataType<string>,\n valueSrc: DataType<string>,\n flagsSrc: DataType<string> = of(\"\"),\n): DataType<string[]> => {\n return (u) => {\n all(\n patternSrc,\n valueSrc,\n flagsSrc,\n )(([pattern, value, flags]) => {\n const result = new RegExp(pattern, flags).exec(value);\n u(result ?? []);\n });\n };\n};\n","import { all, DataType } 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 const set = <T extends Record<string, unknown>>(\n baseSrc: DataType<T>,\n keySrc: DataType<string>,\n valueSrc: DataType<unknown>,\n): DataType<T> => {\n return (u) => {\n all(\n baseSrc,\n keySrc,\n valueSrc,\n )(([base, key, value]) => {\n (base as Record<string, unknown>)[key] = value;\n u(base);\n });\n };\n};\n","import { all, applied, DataType, of, ValueType } from \"silentium\";\nimport { branchLazy } from \"../behaviors/BranchLazy\";\nimport { regexpMatched } from \"../system\";\n\nexport interface Route<T> {\n pattern: string;\n patternFlags?: string;\n template: ValueType<[], DataType<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 const router = <T = \"string\">(\n urlSrc: DataType<string>,\n routesSrc: DataType<Route<T>[]>,\n defaultSrc: ValueType<[], DataType<T>>,\n): DataType<T> => {\n return (u) => {\n all(\n routesSrc,\n urlSrc,\n )(([routes, url]) => {\n const instance = all(\n defaultSrc(),\n all(\n ...routes.map((r) =>\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 ),\n ),\n );\n\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 })(u);\n });\n };\n};\n","import { all, DataType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/and\n */\nexport const and = (\n oneSrc: DataType<boolean>,\n twoSrc: DataType<boolean>,\n): DataType<boolean> => {\n return (u) => {\n all(\n oneSrc,\n twoSrc,\n )(([one, two]) => {\n u(one && two);\n });\n };\n};\n","import { all, DataType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/or\n */\nexport const or = (\n oneSrc: DataType<boolean>,\n twoSrc: DataType<boolean>,\n): DataType<boolean> => {\n return (u) => {\n all(\n oneSrc,\n twoSrc,\n )(([one, two]) => {\n u(one || two);\n });\n };\n};\n","import { DataType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/not\n */\nexport const not = (baseSrc: DataType<boolean>): DataType<boolean> => {\n return (u) => {\n baseSrc((v) => {\n u(!v);\n });\n };\n};\n","import { applied, DataType } from \"silentium\";\n\n/**\n * Convert any source to boolean source\n * https://silentium-lab.github.io/silentium-components/#/boolean/bool\n */\nexport const bool = (baseSrc: DataType): DataType<boolean> => {\n return (u) => {\n applied(baseSrc, Boolean)(u);\n };\n};\n","import { DataType, DataUserType } from \"silentium\";\n\n/**\n * Represents object from json\n */\nexport const fromJson = <T = Record<string, unknown>>(\n jsonSrc: DataType<string>,\n errorOwner?: DataUserType,\n): DataType<T> => {\n return (u) => {\n jsonSrc((json) => {\n try {\n u(JSON.parse(json));\n } catch (error) {\n errorOwner?.(new Error(`Failed to parse JSON: ${error}`));\n }\n });\n };\n};\n","import { DataType, DataUserType } from \"silentium\";\n\n/**\n * Represents json from object\n */\nexport const toJson = (\n dataSrc: DataType,\n errorOwner?: DataUserType,\n): DataType<string> => {\n return (u) => {\n dataSrc((data: unknown) => {\n try {\n u(JSON.stringify(data));\n } catch {\n errorOwner?.(new Error(\"Failed to convert to JSON\"));\n }\n });\n };\n};\n","import { applied, DataType } from \"silentium\";\n\n/**\n * Represents the first element of an array.\n */\nexport const first = <T extends Array<unknown>>(\n baseSrc: DataType<T>,\n): DataType<T[0]> => {\n return (u) => {\n applied(baseSrc, (a) => a[0])(u);\n };\n};\n"],"names":["primitive","shared","filtered","isFilled","late","applied","all","executorApplied","of","vars","r"],"mappings":"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"}
@@ -323,7 +323,11 @@ const template = (theSrc = of(""), placesSrc = of({})) => {
323
323
 
324
324
  const branchLazy = (conditionSrc, leftSrc, rightSrc) => {
325
325
  return (u) => {
326
+ let destructor;
326
327
  conditionSrc((v) => {
328
+ if (destructor !== void 0 && typeof destructor === "function") {
329
+ destructor();
330
+ }
327
331
  let instance = null;
328
332
  if (v) {
329
333
  instance = leftSrc();
@@ -331,7 +335,7 @@ const branchLazy = (conditionSrc, leftSrc, rightSrc) => {
331
335
  instance = rightSrc();
332
336
  }
333
337
  if (instance) {
334
- instance(u);
338
+ destructor = instance(u);
335
339
  }
336
340
  });
337
341
  };
@@ -1 +1 @@
1
- {"version":3,"file":"silentium-components.js","sources":["../src/behaviors/Branch.ts","../src/behaviors/Const.ts","../src/behaviors/Deadline.ts","../src/behaviors/Deferred.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/Tick.ts","../src/behaviors/Task.ts","../src/structures/HashTable.ts","../src/structures/RecordOf.ts","../src/strings/Concatenated.ts","../src/strings/Template.ts","../src/behaviors/BranchLazy.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 { DataType, primitive } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/branch\n */\nexport const branch = <Then, Else>(\n conditionSrc: DataType<boolean>,\n leftSrc: DataType<Then>,\n rightSrc?: DataType<Else>,\n): DataType<Then | Else> => {\n return (u) => {\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 u(result);\n }\n });\n };\n};\n","import { DataType } from \"silentium\";\n\nexport const constant = <T>(\n permanentValue: T,\n triggerSrc: DataType,\n): DataType<T> => {\n return (u) => {\n triggerSrc(() => {\n u(permanentValue);\n });\n };\n};\n","import { DataType, DataUserType, filtered, shared } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport const deadline = <T>(\n error: DataUserType<Error>,\n baseSrc: DataType<T>,\n timeoutSrc: DataType<number>,\n): DataType<T> => {\n return (u) => {\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.value, () => !timeoutReached);\n f(u);\n\n s.value(() => {\n timeoutReached = true;\n });\n });\n };\n};\n","import { DataType, 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 const deferred = <T>(\n baseSrc: DataType<T>,\n triggerSrc: DataType<unknown>,\n): DataType<T> => {\n return (u) => {\n const baseSync = primitive(baseSrc);\n triggerSrc(() => {\n const value = baseSync.primitive();\n if (isFilled(value)) {\n u(value);\n }\n });\n };\n};\n","import { all, applied, DataType, 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 const dirty = <T>(\n baseEntitySource: DataType<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 value: (u) => {\n const comparingDetached = applied(comparingSrc.value, cloneFn);\n\n all(\n comparingDetached,\n baseEntitySource,\n )(([comparing, base]) => {\n if (!comparing) {\n return;\n }\n\n u(\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 give: (v) => {\n comparingSrc.give(v);\n },\n };\n};\n","import { DataType } 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 const loading = (\n loadingStartSrc: DataType<unknown>,\n loadingFinishSrc: DataType<unknown>,\n): DataType<boolean> => {\n return (u) => {\n loadingStartSrc(() => u(true));\n loadingFinishSrc(() => u(false));\n };\n};\n","import { DataType, filtered } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/lock\n */\nexport const lock = <T>(\n baseSrc: DataType<T>,\n lockSrc: DataType<boolean>,\n): DataType<T> => {\n return (u) => {\n let locked = false;\n lockSrc((newLock) => {\n locked = newLock;\n });\n const i = filtered(baseSrc, () => !locked);\n i(u);\n };\n};\n","import { DataType } 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 const memo = <T>(baseSrc: DataType<T>): DataType<T> => {\n return (u) => {\n let lastValue: T | null = null;\n\n baseSrc((v) => {\n if (v !== lastValue) {\n u(v);\n lastValue = v;\n }\n });\n };\n};\n","import { DataType } 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 const onlyChanged = <T>(baseSrc: DataType<T>): DataType<T> => {\n return (u) => {\n let firstValue = false;\n\n baseSrc((v) => {\n if (firstValue === false) {\n firstValue = true;\n } else {\n u(v);\n }\n });\n };\n};\n","import { all, DataType, 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 const part = <\n R,\n T extends Record<string, unknown> | Array<unknown> = any,\n K extends string = any,\n>(\n baseSrc: SourceType<T>,\n keySrc: DataType<K>,\n): SourceType<R> => {\n const baseSync = primitive(baseSrc.value);\n const keySync = primitive(keySrc);\n return {\n value: (u) => {\n all(\n baseSrc.value,\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 u(value as R);\n }\n });\n },\n give: (value: R) => {\n const key = keySync.primitive();\n if (isFilled(key)) {\n baseSrc.give({\n ...baseSync.primitive(),\n [key]: value,\n } as T);\n }\n },\n };\n};\n","import { all, DataType } from \"silentium\";\n\n/**\n * Return source of record path\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport const path = <\n R,\n T extends Record<string, unknown> | Array<unknown> = any,\n K extends string = any,\n>(\n baseSrc: DataType<T>,\n keySrc: DataType<K>,\n): DataType<R> => {\n return (u) => {\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 u(value as R);\n }\n });\n };\n};\n","import { DataType } from \"silentium\";\n\nexport const polling = <T>(\n baseSrc: DataType<T>,\n triggerSrc: DataType<T>,\n): DataType<T> => {\n return (u) => {\n triggerSrc(() => {\n baseSrc(u);\n });\n };\n};\n","import { DataType, 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 const shot = <T>(\n targetSrc: DataType<T>,\n triggerSrc: DataType,\n): DataType<T> => {\n return (u) => {\n const targetSync = primitive(targetSrc);\n\n triggerSrc(() => {\n const value = targetSync.primitive();\n if (isFilled(value)) {\n u(value);\n }\n });\n };\n};\n","import { DataType } 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 const tick = <T>(baseSrc: DataType<T>): DataType<T> => {\n return (u) => {\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 u(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 { DataType, executorApplied } from \"silentium\";\n\nexport const task = <T>(\n baseSrc: DataType<T>,\n delay: number = 0,\n): DataType<T> => {\n return (u) => {\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 })(u);\n };\n};\n","import { DataType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/structures/hash-table\n */\nexport const hashTable = <T>(\n baseSrc: DataType<[string, unknown]>,\n): DataType<T> => {\n return (u) => {\n const record: Record<string, unknown> = {};\n\n baseSrc(([key, value]) => {\n record[key] = value;\n u(record as T);\n });\n };\n};\n","import { all, DataType } from \"silentium\";\n\ntype UnInformation<T> = T extends DataType<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 const recordOf = <T extends DataType>(\n recordSrc: Record<string, T>,\n): DataType<Record<string, UnInformation<T>>> => {\n return (u) => {\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 u(record);\n });\n };\n};\n","import { all, DataType, 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 const concatenated = (\n sources: DataType<string>[],\n joinPartSrc: DataType<string> = of(\"\"),\n): DataType<string> => {\n return (u) => {\n all(\n joinPartSrc,\n ...sources,\n )(([joinPart, ...strings]) => {\n u(strings.join(joinPart));\n });\n };\n};\n","import { all, applied, DataType, of } from \"silentium\";\nimport { recordOf } from \"../structures\";\n\nexport const template = (\n theSrc: DataType<string> = of(\"\"),\n placesSrc: DataType<Record<string, unknown>> = of({}),\n) => {\n let placesCounter = 0;\n const vars: Record<string, DataType> = {\n $TPL: of(\"$TPL\"),\n };\n return {\n value: <DataType<string>>((u) => {\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 })(u);\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: DataType<string>) => {\n const varName = `$var${placesCounter}`;\n placesCounter += 1;\n vars[varName] = src;\n return varName;\n },\n };\n};\n","import { DataType, ValueType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/branch\n */\nexport const branchLazy = <Then, Else>(\n conditionSrc: DataType<boolean>,\n leftSrc: ValueType<[], DataType<Then>>,\n rightSrc?: ValueType<[], DataType<Else>>,\n): DataType<Then | Else> => {\n return (u) => {\n conditionSrc((v) => {\n let instance: DataType<Then | Else> | null = null;\n if (v) {\n instance = leftSrc();\n } else if (rightSrc) {\n instance = rightSrc();\n }\n if (instance) {\n instance(u);\n }\n });\n };\n};\n","import { all, DataType, 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 const regexpMatched = (\n patternSrc: DataType<string>,\n valueSrc: DataType<string>,\n flagsSrc: DataType<string> = of(\"\"),\n): DataType<boolean> => {\n return (u) => {\n all(\n patternSrc,\n valueSrc,\n flagsSrc,\n )(([pattern, value, flags]) => {\n u(new RegExp(pattern, flags).test(value));\n });\n };\n};\n","import { all, DataType, 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 const regexpReplaced = (\n valueSrc: DataType<string>,\n patternSrc: DataType<string>,\n replaceValueSrc: DataType<string>,\n flagsSrc: DataType<string> = of(\"\"),\n): DataType<string> => {\n return (u) => {\n all(\n patternSrc,\n valueSrc,\n replaceValueSrc,\n flagsSrc,\n )(([pattern, value, replaceValue, flags]) => {\n u(String(value).replace(new RegExp(pattern, flags), replaceValue));\n });\n };\n};\n","import { all, DataType, of } from \"silentium\";\n\n/**\n * First match of regexp\n * https://silentium-lab.github.io/silentium-components/#/system/regexp-matched\n */\nexport const regexpMatch = (\n patternSrc: DataType<string>,\n valueSrc: DataType<string>,\n flagsSrc: DataType<string> = of(\"\"),\n): DataType<string[]> => {\n return (u) => {\n all(\n patternSrc,\n valueSrc,\n flagsSrc,\n )(([pattern, value, flags]) => {\n const result = new RegExp(pattern, flags).exec(value);\n u(result ?? []);\n });\n };\n};\n","import { all, DataType } 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 const set = <T extends Record<string, unknown>>(\n baseSrc: DataType<T>,\n keySrc: DataType<string>,\n valueSrc: DataType<unknown>,\n): DataType<T> => {\n return (u) => {\n all(\n baseSrc,\n keySrc,\n valueSrc,\n )(([base, key, value]) => {\n (base as Record<string, unknown>)[key] = value;\n u(base);\n });\n };\n};\n","import { all, applied, DataType, of, ValueType } from \"silentium\";\nimport { branchLazy } from \"../behaviors/BranchLazy\";\nimport { regexpMatched } from \"../system\";\n\nexport interface Route<T> {\n pattern: string;\n patternFlags?: string;\n template: ValueType<[], DataType<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 const router = <T = \"string\">(\n urlSrc: DataType<string>,\n routesSrc: DataType<Route<T>[]>,\n defaultSrc: ValueType<[], DataType<T>>,\n): DataType<T> => {\n return (u) => {\n all(\n routesSrc,\n urlSrc,\n )(([routes, url]) => {\n const instance = all(\n defaultSrc(),\n all(\n ...routes.map((r) =>\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 ),\n ),\n );\n\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 })(u);\n });\n };\n};\n","import { all, DataType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/and\n */\nexport const and = (\n oneSrc: DataType<boolean>,\n twoSrc: DataType<boolean>,\n): DataType<boolean> => {\n return (u) => {\n all(\n oneSrc,\n twoSrc,\n )(([one, two]) => {\n u(one && two);\n });\n };\n};\n","import { all, DataType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/or\n */\nexport const or = (\n oneSrc: DataType<boolean>,\n twoSrc: DataType<boolean>,\n): DataType<boolean> => {\n return (u) => {\n all(\n oneSrc,\n twoSrc,\n )(([one, two]) => {\n u(one || two);\n });\n };\n};\n","import { DataType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/not\n */\nexport const not = (baseSrc: DataType<boolean>): DataType<boolean> => {\n return (u) => {\n baseSrc((v) => {\n u(!v);\n });\n };\n};\n","import { applied, DataType } from \"silentium\";\n\n/**\n * Convert any source to boolean source\n * https://silentium-lab.github.io/silentium-components/#/boolean/bool\n */\nexport const bool = (baseSrc: DataType): DataType<boolean> => {\n return (u) => {\n applied(baseSrc, Boolean)(u);\n };\n};\n","import { DataType, DataUserType } from \"silentium\";\n\n/**\n * Represents object from json\n */\nexport const fromJson = <T = Record<string, unknown>>(\n jsonSrc: DataType<string>,\n errorOwner?: DataUserType,\n): DataType<T> => {\n return (u) => {\n jsonSrc((json) => {\n try {\n u(JSON.parse(json));\n } catch (error) {\n errorOwner?.(new Error(`Failed to parse JSON: ${error}`));\n }\n });\n };\n};\n","import { DataType, DataUserType } from \"silentium\";\n\n/**\n * Represents json from object\n */\nexport const toJson = (\n dataSrc: DataType,\n errorOwner?: DataUserType,\n): DataType<string> => {\n return (u) => {\n dataSrc((data: unknown) => {\n try {\n u(JSON.stringify(data));\n } catch {\n errorOwner?.(new Error(\"Failed to convert to JSON\"));\n }\n });\n };\n};\n","import { applied, DataType } from \"silentium\";\n\n/**\n * Represents the first element of an array.\n */\nexport const first = <T extends Array<unknown>>(\n baseSrc: DataType<T>,\n): DataType<T[0]> => {\n return (u) => {\n applied(baseSrc, (a) => a[0])(u);\n };\n};\n"],"names":["vars","r"],"mappings":"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"}
1
+ {"version":3,"file":"silentium-components.js","sources":["../src/behaviors/Branch.ts","../src/behaviors/Const.ts","../src/behaviors/Deadline.ts","../src/behaviors/Deferred.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/Tick.ts","../src/behaviors/Task.ts","../src/structures/HashTable.ts","../src/structures/RecordOf.ts","../src/strings/Concatenated.ts","../src/strings/Template.ts","../src/behaviors/BranchLazy.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 { DataType, primitive } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/branch\n */\nexport const branch = <Then, Else>(\n conditionSrc: DataType<boolean>,\n leftSrc: DataType<Then>,\n rightSrc?: DataType<Else>,\n): DataType<Then | Else> => {\n return (u) => {\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 u(result);\n }\n });\n };\n};\n","import { DataType } from \"silentium\";\n\nexport const constant = <T>(\n permanentValue: T,\n triggerSrc: DataType,\n): DataType<T> => {\n return (u) => {\n triggerSrc(() => {\n u(permanentValue);\n });\n };\n};\n","import { DataType, DataUserType, filtered, shared } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport const deadline = <T>(\n error: DataUserType<Error>,\n baseSrc: DataType<T>,\n timeoutSrc: DataType<number>,\n): DataType<T> => {\n return (u) => {\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.value, () => !timeoutReached);\n f(u);\n\n s.value(() => {\n timeoutReached = true;\n });\n });\n };\n};\n","import { DataType, 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 const deferred = <T>(\n baseSrc: DataType<T>,\n triggerSrc: DataType<unknown>,\n): DataType<T> => {\n return (u) => {\n const baseSync = primitive(baseSrc);\n triggerSrc(() => {\n const value = baseSync.primitive();\n if (isFilled(value)) {\n u(value);\n }\n });\n };\n};\n","import { all, applied, DataType, 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 const dirty = <T>(\n baseEntitySource: DataType<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 value: (u) => {\n const comparingDetached = applied(comparingSrc.value, cloneFn);\n\n all(\n comparingDetached,\n baseEntitySource,\n )(([comparing, base]) => {\n if (!comparing) {\n return;\n }\n\n u(\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 give: (v) => {\n comparingSrc.give(v);\n },\n };\n};\n","import { DataType } 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 const loading = (\n loadingStartSrc: DataType<unknown>,\n loadingFinishSrc: DataType<unknown>,\n): DataType<boolean> => {\n return (u) => {\n loadingStartSrc(() => u(true));\n loadingFinishSrc(() => u(false));\n };\n};\n","import { DataType, filtered } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/lock\n */\nexport const lock = <T>(\n baseSrc: DataType<T>,\n lockSrc: DataType<boolean>,\n): DataType<T> => {\n return (u) => {\n let locked = false;\n lockSrc((newLock) => {\n locked = newLock;\n });\n const i = filtered(baseSrc, () => !locked);\n i(u);\n };\n};\n","import { DataType } 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 const memo = <T>(baseSrc: DataType<T>): DataType<T> => {\n return (u) => {\n let lastValue: T | null = null;\n\n baseSrc((v) => {\n if (v !== lastValue) {\n u(v);\n lastValue = v;\n }\n });\n };\n};\n","import { DataType } 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 const onlyChanged = <T>(baseSrc: DataType<T>): DataType<T> => {\n return (u) => {\n let firstValue = false;\n\n baseSrc((v) => {\n if (firstValue === false) {\n firstValue = true;\n } else {\n u(v);\n }\n });\n };\n};\n","import { all, DataType, 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 const part = <\n R,\n T extends Record<string, unknown> | Array<unknown> = any,\n K extends string = any,\n>(\n baseSrc: SourceType<T>,\n keySrc: DataType<K>,\n): SourceType<R> => {\n const baseSync = primitive(baseSrc.value);\n const keySync = primitive(keySrc);\n return {\n value: (u) => {\n all(\n baseSrc.value,\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 u(value as R);\n }\n });\n },\n give: (value: R) => {\n const key = keySync.primitive();\n if (isFilled(key)) {\n baseSrc.give({\n ...baseSync.primitive(),\n [key]: value,\n } as T);\n }\n },\n };\n};\n","import { all, DataType } from \"silentium\";\n\n/**\n * Return source of record path\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport const path = <\n R,\n T extends Record<string, unknown> | Array<unknown> = any,\n K extends string = any,\n>(\n baseSrc: DataType<T>,\n keySrc: DataType<K>,\n): DataType<R> => {\n return (u) => {\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 u(value as R);\n }\n });\n };\n};\n","import { DataType } from \"silentium\";\n\nexport const polling = <T>(\n baseSrc: DataType<T>,\n triggerSrc: DataType<T>,\n): DataType<T> => {\n return (u) => {\n triggerSrc(() => {\n baseSrc(u);\n });\n };\n};\n","import { DataType, 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 const shot = <T>(\n targetSrc: DataType<T>,\n triggerSrc: DataType,\n): DataType<T> => {\n return (u) => {\n const targetSync = primitive(targetSrc);\n\n triggerSrc(() => {\n const value = targetSync.primitive();\n if (isFilled(value)) {\n u(value);\n }\n });\n };\n};\n","import { DataType } 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 const tick = <T>(baseSrc: DataType<T>): DataType<T> => {\n return (u) => {\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 u(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 { DataType, executorApplied } from \"silentium\";\n\nexport const task = <T>(\n baseSrc: DataType<T>,\n delay: number = 0,\n): DataType<T> => {\n return (u) => {\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 })(u);\n };\n};\n","import { DataType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/structures/hash-table\n */\nexport const hashTable = <T>(\n baseSrc: DataType<[string, unknown]>,\n): DataType<T> => {\n return (u) => {\n const record: Record<string, unknown> = {};\n\n baseSrc(([key, value]) => {\n record[key] = value;\n u(record as T);\n });\n };\n};\n","import { all, DataType } from \"silentium\";\n\ntype UnInformation<T> = T extends DataType<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 const recordOf = <T extends DataType>(\n recordSrc: Record<string, T>,\n): DataType<Record<string, UnInformation<T>>> => {\n return (u) => {\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 u(record);\n });\n };\n};\n","import { all, DataType, 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 const concatenated = (\n sources: DataType<string>[],\n joinPartSrc: DataType<string> = of(\"\"),\n): DataType<string> => {\n return (u) => {\n all(\n joinPartSrc,\n ...sources,\n )(([joinPart, ...strings]) => {\n u(strings.join(joinPart));\n });\n };\n};\n","import { all, applied, DataType, of } from \"silentium\";\nimport { recordOf } from \"../structures\";\n\nexport const template = (\n theSrc: DataType<string> = of(\"\"),\n placesSrc: DataType<Record<string, unknown>> = of({}),\n) => {\n let placesCounter = 0;\n const vars: Record<string, DataType> = {\n $TPL: of(\"$TPL\"),\n };\n return {\n value: <DataType<string>>((u) => {\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 })(u);\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: DataType<string>) => {\n const varName = `$var${placesCounter}`;\n placesCounter += 1;\n vars[varName] = src;\n return varName;\n },\n };\n};\n","import { DataType, DestructorType, ValueType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/branch\n */\nexport const branchLazy = <Then, Else>(\n conditionSrc: DataType<boolean>,\n leftSrc: ValueType<[], DataType<Then>>,\n rightSrc?: ValueType<[], DataType<Else>>,\n): DataType<Then | Else> => {\n return (u) => {\n let destructor: DestructorType | void;\n conditionSrc((v) => {\n if (destructor !== undefined && typeof destructor === \"function\") {\n destructor();\n }\n let instance: DataType<Then | Else> | null = null;\n if (v) {\n instance = leftSrc();\n } else if (rightSrc) {\n instance = rightSrc();\n }\n if (instance) {\n destructor = instance(u);\n }\n });\n };\n};\n","import { all, DataType, 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 const regexpMatched = (\n patternSrc: DataType<string>,\n valueSrc: DataType<string>,\n flagsSrc: DataType<string> = of(\"\"),\n): DataType<boolean> => {\n return (u) => {\n all(\n patternSrc,\n valueSrc,\n flagsSrc,\n )(([pattern, value, flags]) => {\n u(new RegExp(pattern, flags).test(value));\n });\n };\n};\n","import { all, DataType, 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 const regexpReplaced = (\n valueSrc: DataType<string>,\n patternSrc: DataType<string>,\n replaceValueSrc: DataType<string>,\n flagsSrc: DataType<string> = of(\"\"),\n): DataType<string> => {\n return (u) => {\n all(\n patternSrc,\n valueSrc,\n replaceValueSrc,\n flagsSrc,\n )(([pattern, value, replaceValue, flags]) => {\n u(String(value).replace(new RegExp(pattern, flags), replaceValue));\n });\n };\n};\n","import { all, DataType, of } from \"silentium\";\n\n/**\n * First match of regexp\n * https://silentium-lab.github.io/silentium-components/#/system/regexp-matched\n */\nexport const regexpMatch = (\n patternSrc: DataType<string>,\n valueSrc: DataType<string>,\n flagsSrc: DataType<string> = of(\"\"),\n): DataType<string[]> => {\n return (u) => {\n all(\n patternSrc,\n valueSrc,\n flagsSrc,\n )(([pattern, value, flags]) => {\n const result = new RegExp(pattern, flags).exec(value);\n u(result ?? []);\n });\n };\n};\n","import { all, DataType } 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 const set = <T extends Record<string, unknown>>(\n baseSrc: DataType<T>,\n keySrc: DataType<string>,\n valueSrc: DataType<unknown>,\n): DataType<T> => {\n return (u) => {\n all(\n baseSrc,\n keySrc,\n valueSrc,\n )(([base, key, value]) => {\n (base as Record<string, unknown>)[key] = value;\n u(base);\n });\n };\n};\n","import { all, applied, DataType, of, ValueType } from \"silentium\";\nimport { branchLazy } from \"../behaviors/BranchLazy\";\nimport { regexpMatched } from \"../system\";\n\nexport interface Route<T> {\n pattern: string;\n patternFlags?: string;\n template: ValueType<[], DataType<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 const router = <T = \"string\">(\n urlSrc: DataType<string>,\n routesSrc: DataType<Route<T>[]>,\n defaultSrc: ValueType<[], DataType<T>>,\n): DataType<T> => {\n return (u) => {\n all(\n routesSrc,\n urlSrc,\n )(([routes, url]) => {\n const instance = all(\n defaultSrc(),\n all(\n ...routes.map((r) =>\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 ),\n ),\n );\n\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 })(u);\n });\n };\n};\n","import { all, DataType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/and\n */\nexport const and = (\n oneSrc: DataType<boolean>,\n twoSrc: DataType<boolean>,\n): DataType<boolean> => {\n return (u) => {\n all(\n oneSrc,\n twoSrc,\n )(([one, two]) => {\n u(one && two);\n });\n };\n};\n","import { all, DataType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/or\n */\nexport const or = (\n oneSrc: DataType<boolean>,\n twoSrc: DataType<boolean>,\n): DataType<boolean> => {\n return (u) => {\n all(\n oneSrc,\n twoSrc,\n )(([one, two]) => {\n u(one || two);\n });\n };\n};\n","import { DataType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/not\n */\nexport const not = (baseSrc: DataType<boolean>): DataType<boolean> => {\n return (u) => {\n baseSrc((v) => {\n u(!v);\n });\n };\n};\n","import { applied, DataType } from \"silentium\";\n\n/**\n * Convert any source to boolean source\n * https://silentium-lab.github.io/silentium-components/#/boolean/bool\n */\nexport const bool = (baseSrc: DataType): DataType<boolean> => {\n return (u) => {\n applied(baseSrc, Boolean)(u);\n };\n};\n","import { DataType, DataUserType } from \"silentium\";\n\n/**\n * Represents object from json\n */\nexport const fromJson = <T = Record<string, unknown>>(\n jsonSrc: DataType<string>,\n errorOwner?: DataUserType,\n): DataType<T> => {\n return (u) => {\n jsonSrc((json) => {\n try {\n u(JSON.parse(json));\n } catch (error) {\n errorOwner?.(new Error(`Failed to parse JSON: ${error}`));\n }\n });\n };\n};\n","import { DataType, DataUserType } from \"silentium\";\n\n/**\n * Represents json from object\n */\nexport const toJson = (\n dataSrc: DataType,\n errorOwner?: DataUserType,\n): DataType<string> => {\n return (u) => {\n dataSrc((data: unknown) => {\n try {\n u(JSON.stringify(data));\n } catch {\n errorOwner?.(new Error(\"Failed to convert to JSON\"));\n }\n });\n };\n};\n","import { applied, DataType } from \"silentium\";\n\n/**\n * Represents the first element of an array.\n */\nexport const first = <T extends Array<unknown>>(\n baseSrc: DataType<T>,\n): DataType<T[0]> => {\n return (u) => {\n applied(baseSrc, (a) => a[0])(u);\n };\n};\n"],"names":["vars","r"],"mappings":"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"}
@@ -1 +1 @@
1
- !function(e,t){"use strict";const l=e=>l=>{const i=Object.keys(e);t.all(...Object.values(e))((e=>{const t={};e.forEach(((e,l)=>{t[i[l]]=e})),l(t)}))},i=(e,l,i=t.of(""))=>r=>{t.all(e,l,i)((([e,t,l])=>{r(new RegExp(e,l).test(t))}))},r=()=>t.of(!1);e.and=(e,l)=>i=>{t.all(e,l)((([e,t])=>{i(e&&t)}))},e.bool=e=>l=>{t.applied(e,Boolean)(l)},e.branch=(e,l,i)=>r=>{const a=t.primitive(l);let o;void 0!==i&&(o=t.primitive(i)),e((e=>{let t=null;e?t=a.primitive():o&&(t=o.primitive()),null!==t&&r(t)}))},e.concatenated=(e,l=t.of(""))=>i=>{t.all(l,...e)((([e,...t])=>{i(t.join(e))}))},e.constant=(e,t)=>l=>{t((()=>{l(e)}))},e.deadline=(e,l,i)=>r=>{let a=null;const o=t.shared(l,!0);i((l=>{a&&clearTimeout(a);let i=!1;a=setTimeout((()=>{i||(i=!0,e(new Error("Timeout reached in Deadline class")))}),l);t.filtered(o.value,(()=>!i))(r),o.value((()=>{i=!0}))}))},e.deferred=(e,l)=>i=>{const r=t.primitive(e);l((()=>{const e=r.primitive();t.isFilled(e)&&i(e)}))},e.dirty=(e,l=[],i=[],r)=>{const a=t.late();return void 0===r&&(r=e=>JSON.parse(JSON.stringify(e))),{value:o=>{const n=t.applied(a.value,r);t.all(n,e)((([e,t])=>{e&&o(Object.fromEntries(Object.entries(e).filter((([e,r])=>!!l.includes(e)||!i.includes(e)&&r!==t[e]))))}))},give:e=>{a.give(e)}}},e.first=e=>l=>{t.applied(e,(e=>e[0]))(l)},e.fromJson=(e,t)=>l=>{e((e=>{try{l(JSON.parse(e))}catch(e){t?.(new Error(`Failed to parse JSON: ${e}`))}}))},e.hashTable=e=>t=>{const l={};e((([e,i])=>{l[e]=i,t(l)}))},e.loading=(e,t)=>l=>{e((()=>l(!0))),t((()=>l(!1)))},e.lock=(e,l)=>i=>{let r=!1;l((e=>{r=e}));t.filtered(e,(()=>!r))(i)},e.memo=e=>t=>{let l=null;e((e=>{e!==l&&(t(e),l=e)}))},e.not=e=>t=>{e((e=>{t(!e)}))},e.onlyChanged=e=>t=>{let l=!1;e((e=>{!1===l?l=!0:t(e)}))},e.or=(e,l)=>i=>{t.all(e,l)((([e,t])=>{i(e||t)}))},e.part=(e,l)=>{const i=t.primitive(e.value),r=t.primitive(l);return{value:i=>{t.all(e.value,l)((([e,t])=>{const l=t.split(".");let r=e;l.forEach((e=>{r=r[e]})),void 0!==r&&r!==e&&i(r)}))},give:l=>{const a=r.primitive();t.isFilled(a)&&e.give({...i.primitive(),[a]:l})}}},e.path=(e,l)=>i=>{t.all(e,l)((([e,t])=>{const l=t.split(".");let r=e;l.forEach((e=>{r=r[e]})),void 0!==r&&r!==e&&i(r)}))},e.polling=(e,t)=>l=>{t((()=>{e(l)}))},e.recordOf=l,e.regexpMatch=(e,l,i=t.of(""))=>r=>{t.all(e,l,i)((([e,t,l])=>{const i=new RegExp(e,l).exec(t);r(i??[])}))},e.regexpMatched=i,e.regexpReplaced=(e,l,i,r=t.of(""))=>a=>{t.all(l,e,i,r)((([e,t,l,i])=>{a(String(t).replace(new RegExp(e,i),l))}))},e.router=(e,l,a)=>o=>{t.all(l,e)((([e,l])=>{const n=t.all(a(),t.all(...e.map((e=>{return a=i(t.of(e.pattern),t.of(l),e.patternFlags?t.of(e.patternFlags):void 0),o=e.template,n=r,e=>{a((t=>{let l=null;t?l=o():n&&(l=n()),l&&l(e)}))};var a,o,n}))));t.applied(n,(e=>{const t=e[1].find((e=>!1!==e));return t||e[0]}))(o)}))},e.set=(e,l,i)=>r=>{t.all(e,l,i)((([e,t,l])=>{e[t]=l,r(e)}))},e.shot=(e,l)=>i=>{const r=t.primitive(e);l((()=>{const e=r.primitive();t.isFilled(e)&&i(e)}))},e.task=(e,l=0)=>i=>{let r=null;t.executorApplied(e,(e=>t=>{r&&clearTimeout(r),r=setTimeout((()=>{e(t)}),l)}))(i)},e.template=(e=t.of(""),i=t.of({}))=>{let r=0;const a={$TPL:t.of("$TPL")};return{value:r=>{const o=l(a);t.applied(t.all(e,i,o),(([e,t,l])=>(Object.entries(t).forEach((([t,l])=>{e=e.replaceAll(t,String(l))})),Object.entries(l).forEach((([t,l])=>{e=e.replaceAll(t,String(l))})),e)))(r)},template:l=>{e=t.of(l)},var:e=>{const t=`$var${r}`;return r+=1,a[t]=e,t}}},e.tick=e=>t=>{let l=!1,i=null;e((e=>{i=e,l||(l=!0,queueMicrotask((()=>{l=!1,null!==i&&(t(i),i=null)})))}))},e.toJson=(e,t)=>l=>{e((e=>{try{l(JSON.stringify(e))}catch{t?.(new Error("Failed to convert to JSON"))}}))}}({},silentium);
1
+ !function(e,t){"use strict";const l=e=>l=>{const i=Object.keys(e);t.all(...Object.values(e))((e=>{const t={};e.forEach(((e,l)=>{t[i[l]]=e})),l(t)}))},i=(e,l,i=t.of(""))=>r=>{t.all(e,l,i)((([e,t,l])=>{r(new RegExp(e,l).test(t))}))},r=()=>t.of(!1);e.and=(e,l)=>i=>{t.all(e,l)((([e,t])=>{i(e&&t)}))},e.bool=e=>l=>{t.applied(e,Boolean)(l)},e.branch=(e,l,i)=>r=>{const o=t.primitive(l);let n;void 0!==i&&(n=t.primitive(i)),e((e=>{let t=null;e?t=o.primitive():n&&(t=n.primitive()),null!==t&&r(t)}))},e.concatenated=(e,l=t.of(""))=>i=>{t.all(l,...e)((([e,...t])=>{i(t.join(e))}))},e.constant=(e,t)=>l=>{t((()=>{l(e)}))},e.deadline=(e,l,i)=>r=>{let o=null;const n=t.shared(l,!0);i((l=>{o&&clearTimeout(o);let i=!1;o=setTimeout((()=>{i||(i=!0,e(new Error("Timeout reached in Deadline class")))}),l);t.filtered(n.value,(()=>!i))(r),n.value((()=>{i=!0}))}))},e.deferred=(e,l)=>i=>{const r=t.primitive(e);l((()=>{const e=r.primitive();t.isFilled(e)&&i(e)}))},e.dirty=(e,l=[],i=[],r)=>{const o=t.late();return void 0===r&&(r=e=>JSON.parse(JSON.stringify(e))),{value:n=>{const a=t.applied(o.value,r);t.all(a,e)((([e,t])=>{e&&n(Object.fromEntries(Object.entries(e).filter((([e,r])=>!!l.includes(e)||!i.includes(e)&&r!==t[e]))))}))},give:e=>{o.give(e)}}},e.first=e=>l=>{t.applied(e,(e=>e[0]))(l)},e.fromJson=(e,t)=>l=>{e((e=>{try{l(JSON.parse(e))}catch(e){t?.(new Error(`Failed to parse JSON: ${e}`))}}))},e.hashTable=e=>t=>{const l={};e((([e,i])=>{l[e]=i,t(l)}))},e.loading=(e,t)=>l=>{e((()=>l(!0))),t((()=>l(!1)))},e.lock=(e,l)=>i=>{let r=!1;l((e=>{r=e}));t.filtered(e,(()=>!r))(i)},e.memo=e=>t=>{let l=null;e((e=>{e!==l&&(t(e),l=e)}))},e.not=e=>t=>{e((e=>{t(!e)}))},e.onlyChanged=e=>t=>{let l=!1;e((e=>{!1===l?l=!0:t(e)}))},e.or=(e,l)=>i=>{t.all(e,l)((([e,t])=>{i(e||t)}))},e.part=(e,l)=>{const i=t.primitive(e.value),r=t.primitive(l);return{value:i=>{t.all(e.value,l)((([e,t])=>{const l=t.split(".");let r=e;l.forEach((e=>{r=r[e]})),void 0!==r&&r!==e&&i(r)}))},give:l=>{const o=r.primitive();t.isFilled(o)&&e.give({...i.primitive(),[o]:l})}}},e.path=(e,l)=>i=>{t.all(e,l)((([e,t])=>{const l=t.split(".");let r=e;l.forEach((e=>{r=r[e]})),void 0!==r&&r!==e&&i(r)}))},e.polling=(e,t)=>l=>{t((()=>{e(l)}))},e.recordOf=l,e.regexpMatch=(e,l,i=t.of(""))=>r=>{t.all(e,l,i)((([e,t,l])=>{const i=new RegExp(e,l).exec(t);r(i??[])}))},e.regexpMatched=i,e.regexpReplaced=(e,l,i,r=t.of(""))=>o=>{t.all(l,e,i,r)((([e,t,l,i])=>{o(String(t).replace(new RegExp(e,i),l))}))},e.router=(e,l,o)=>n=>{t.all(l,e)((([e,l])=>{const a=t.all(o(),t.all(...e.map((e=>{return o=i(t.of(e.pattern),t.of(l),e.patternFlags?t.of(e.patternFlags):void 0),n=e.template,a=r,e=>{let t;o((l=>{void 0!==t&&"function"==typeof t&&t();let i=null;l?i=n():a&&(i=a()),i&&(t=i(e))}))};var o,n,a}))));t.applied(a,(e=>{const t=e[1].find((e=>!1!==e));return t||e[0]}))(n)}))},e.set=(e,l,i)=>r=>{t.all(e,l,i)((([e,t,l])=>{e[t]=l,r(e)}))},e.shot=(e,l)=>i=>{const r=t.primitive(e);l((()=>{const e=r.primitive();t.isFilled(e)&&i(e)}))},e.task=(e,l=0)=>i=>{let r=null;t.executorApplied(e,(e=>t=>{r&&clearTimeout(r),r=setTimeout((()=>{e(t)}),l)}))(i)},e.template=(e=t.of(""),i=t.of({}))=>{let r=0;const o={$TPL:t.of("$TPL")};return{value:r=>{const n=l(o);t.applied(t.all(e,i,n),(([e,t,l])=>(Object.entries(t).forEach((([t,l])=>{e=e.replaceAll(t,String(l))})),Object.entries(l).forEach((([t,l])=>{e=e.replaceAll(t,String(l))})),e)))(r)},template:l=>{e=t.of(l)},var:e=>{const t=`$var${r}`;return r+=1,o[t]=e,t}}},e.tick=e=>t=>{let l=!1,i=null;e((e=>{i=e,l||(l=!0,queueMicrotask((()=>{l=!1,null!==i&&(t(i),i=null)})))}))},e.toJson=(e,t)=>l=>{e((e=>{try{l(JSON.stringify(e))}catch{t?.(new Error("Failed to convert to JSON"))}}))}}({},silentium);
@@ -1,2 +1,2 @@
1
- import{primitive as e,shared as t,filtered as r,isFilled as l,late as n,applied as i,all as o,executorApplied as c,of as s}from"silentium";const a=(t,r,l)=>n=>{const i=e(r);let o;void 0!==l&&(o=e(l)),t((e=>{let t=null;e?t=i.primitive():o&&(t=o.primitive()),null!==t&&n(t)}))},u=(e,t)=>r=>{t((()=>{r(e)}))},v=(e,l,n)=>i=>{let o=null;const c=t(l,!0);n((t=>{o&&clearTimeout(o);let l=!1;o=setTimeout((()=>{l||(l=!0,e(new Error("Timeout reached in Deadline class")))}),t);r(c.value,(()=>!l))(i),c.value((()=>{l=!0}))}))},p=(t,r)=>n=>{const i=e(t);r((()=>{const e=i.primitive();l(e)&&n(e)}))},m=(e,t=[],r=[],l)=>{const c=n();return void 0===l&&(l=e=>JSON.parse(JSON.stringify(e))),{value:n=>{const s=i(c.value,l);o(s,e)((([e,l])=>{e&&n(Object.fromEntries(Object.entries(e).filter((([e,n])=>!!t.includes(e)||!r.includes(e)&&n!==l[e]))))}))},give:e=>{c.give(e)}}},g=(e,t)=>r=>{e((()=>r(!0))),t((()=>r(!1)))},d=(e,t)=>l=>{let n=!1;t((e=>{n=e}));r(e,(()=>!n))(l)},E=e=>t=>{let r=null;e((e=>{e!==r&&(t(e),r=e)}))},O=e=>t=>{let r=!1;e((e=>{!1===r?r=!0:t(e)}))},f=(t,r)=>{const n=e(t.value),i=e(r);return{value:e=>{o(t.value,r)((([t,r])=>{const l=r.split(".");let n=t;l.forEach((e=>{n=n[e]})),void 0!==n&&n!==t&&e(n)}))},give:e=>{const r=i.primitive();l(r)&&t.give({...n.primitive(),[r]:e})}}},S=(e,t)=>r=>{o(e,t)((([e,t])=>{const l=t.split(".");let n=e;l.forEach((e=>{n=n[e]})),void 0!==n&&n!==e&&r(n)}))},h=(e,t)=>r=>{t((()=>{e(r)}))},j=(t,r)=>n=>{const i=e(t);r((()=>{const e=i.primitive();l(e)&&n(e)}))},T=e=>t=>{let r=!1,l=null;e((e=>{l=e,r||(r=!0,queueMicrotask((()=>{r=!1,null!==l&&(t(l),l=null)})))}))},b=(e,t=0)=>r=>{let l=null;c(e,(e=>r=>{l&&clearTimeout(l),l=setTimeout((()=>{e(r)}),t)}))(r)},w=e=>t=>{const r={};e((([e,l])=>{r[e]=l,t(r)}))},J=e=>t=>{const r=Object.keys(e);o(...Object.values(e))((e=>{const l={};e.forEach(((e,t)=>{l[r[t]]=e})),t(l)}))},N=(e,t=s(""))=>r=>{o(t,...e)((([e,...t])=>{r(t.join(e))}))},x=(e=s(""),t=s({}))=>{let r=0;const l={$TPL:s("$TPL")};return{value:r=>{const n=J(l);i(o(e,t,n),(([e,t,r])=>(Object.entries(t).forEach((([t,r])=>{e=e.replaceAll(t,String(r))})),Object.entries(r).forEach((([t,r])=>{e=e.replaceAll(t,String(r))})),e)))(r)},template:t=>{e=s(t)},var:e=>{const t=`$var${r}`;return r+=1,l[t]=e,t}}},y=(e,t,r=s(""))=>l=>{o(e,t,r)((([e,t,r])=>{l(new RegExp(e,r).test(t))}))},$=(e,t,r,l=s(""))=>n=>{o(t,e,r,l)((([e,t,r,l])=>{n(String(t).replace(new RegExp(e,l),r))}))},F=(e,t,r=s(""))=>l=>{o(e,t,r)((([e,t,r])=>{const n=new RegExp(e,r).exec(t);l(n??[])}))},R=(e,t,r)=>l=>{o(e,t,r)((([e,t,r])=>{e[t]=r,l(e)}))},k=()=>s(!1),A=(e,t,r)=>l=>{o(t,e)((([e,t])=>{const n=o(r(),o(...e.map((e=>{return r=y(s(e.pattern),s(t),e.patternFlags?s(e.patternFlags):void 0),l=e.template,n=k,e=>{r((t=>{let r=null;t?r=l():n&&(r=n()),r&&r(e)}))};var r,l,n}))));i(n,(e=>{const t=e[1].find((e=>!1!==e));return t||e[0]}))(l)}))},L=(e,t)=>r=>{o(e,t)((([e,t])=>{r(e&&t)}))},P=(e,t)=>r=>{o(e,t)((([e,t])=>{r(e||t)}))},q=e=>t=>{e((e=>{t(!e)}))},B=e=>t=>{i(e,Boolean)(t)},D=(e,t)=>r=>{e((e=>{try{r(JSON.parse(e))}catch(e){t?.(new Error(`Failed to parse JSON: ${e}`))}}))},M=(e,t)=>r=>{e((e=>{try{r(JSON.stringify(e))}catch{t?.(new Error("Failed to convert to JSON"))}}))},z=e=>t=>{i(e,(e=>e[0]))(t)};export{L as and,B as bool,a as branch,N as concatenated,u as constant,v as deadline,p as deferred,m as dirty,z as first,D as fromJson,w as hashTable,g as loading,d as lock,E as memo,q as not,O as onlyChanged,P as or,f as part,S as path,h as polling,J as recordOf,F as regexpMatch,y as regexpMatched,$ as regexpReplaced,A as router,R as set,j as shot,b as task,x as template,T as tick,M as toJson};
1
+ import{primitive as e,shared as t,filtered as n,isFilled as l,late as r,applied as i,all as o,executorApplied as c,of as s}from"silentium";const a=(t,n,l)=>r=>{const i=e(n);let o;void 0!==l&&(o=e(l)),t((e=>{let t=null;e?t=i.primitive():o&&(t=o.primitive()),null!==t&&r(t)}))},u=(e,t)=>n=>{t((()=>{n(e)}))},v=(e,l,r)=>i=>{let o=null;const c=t(l,!0);r((t=>{o&&clearTimeout(o);let l=!1;o=setTimeout((()=>{l||(l=!0,e(new Error("Timeout reached in Deadline class")))}),t);n(c.value,(()=>!l))(i),c.value((()=>{l=!0}))}))},p=(t,n)=>r=>{const i=e(t);n((()=>{const e=i.primitive();l(e)&&r(e)}))},m=(e,t=[],n=[],l)=>{const c=r();return void 0===l&&(l=e=>JSON.parse(JSON.stringify(e))),{value:r=>{const s=i(c.value,l);o(s,e)((([e,l])=>{e&&r(Object.fromEntries(Object.entries(e).filter((([e,r])=>!!t.includes(e)||!n.includes(e)&&r!==l[e]))))}))},give:e=>{c.give(e)}}},g=(e,t)=>n=>{e((()=>n(!0))),t((()=>n(!1)))},d=(e,t)=>l=>{let r=!1;t((e=>{r=e}));n(e,(()=>!r))(l)},f=e=>t=>{let n=null;e((e=>{e!==n&&(t(e),n=e)}))},E=e=>t=>{let n=!1;e((e=>{!1===n?n=!0:t(e)}))},O=(t,n)=>{const r=e(t.value),i=e(n);return{value:e=>{o(t.value,n)((([t,n])=>{const l=n.split(".");let r=t;l.forEach((e=>{r=r[e]})),void 0!==r&&r!==t&&e(r)}))},give:e=>{const n=i.primitive();l(n)&&t.give({...r.primitive(),[n]:e})}}},S=(e,t)=>n=>{o(e,t)((([e,t])=>{const l=t.split(".");let r=e;l.forEach((e=>{r=r[e]})),void 0!==r&&r!==e&&n(r)}))},h=(e,t)=>n=>{t((()=>{e(n)}))},j=(t,n)=>r=>{const i=e(t);n((()=>{const e=i.primitive();l(e)&&r(e)}))},T=e=>t=>{let n=!1,l=null;e((e=>{l=e,n||(n=!0,queueMicrotask((()=>{n=!1,null!==l&&(t(l),l=null)})))}))},b=(e,t=0)=>n=>{let l=null;c(e,(e=>n=>{l&&clearTimeout(l),l=setTimeout((()=>{e(n)}),t)}))(n)},w=e=>t=>{const n={};e((([e,l])=>{n[e]=l,t(n)}))},y=e=>t=>{const n=Object.keys(e);o(...Object.values(e))((e=>{const l={};e.forEach(((e,t)=>{l[n[t]]=e})),t(l)}))},J=(e,t=s(""))=>n=>{o(t,...e)((([e,...t])=>{n(t.join(e))}))},N=(e=s(""),t=s({}))=>{let n=0;const l={$TPL:s("$TPL")};return{value:n=>{const r=y(l);i(o(e,t,r),(([e,t,n])=>(Object.entries(t).forEach((([t,n])=>{e=e.replaceAll(t,String(n))})),Object.entries(n).forEach((([t,n])=>{e=e.replaceAll(t,String(n))})),e)))(n)},template:t=>{e=s(t)},var:e=>{const t=`$var${n}`;return n+=1,l[t]=e,t}}},x=(e,t,n=s(""))=>l=>{o(e,t,n)((([e,t,n])=>{l(new RegExp(e,n).test(t))}))},$=(e,t,n,l=s(""))=>r=>{o(t,e,n,l)((([e,t,n,l])=>{r(String(t).replace(new RegExp(e,l),n))}))},F=(e,t,n=s(""))=>l=>{o(e,t,n)((([e,t,n])=>{const r=new RegExp(e,n).exec(t);l(r??[])}))},R=(e,t,n)=>l=>{o(e,t,n)((([e,t,n])=>{e[t]=n,l(e)}))},k=()=>s(!1),A=(e,t,n)=>l=>{o(t,e)((([e,t])=>{const r=o(n(),o(...e.map((e=>{return n=x(s(e.pattern),s(t),e.patternFlags?s(e.patternFlags):void 0),l=e.template,r=k,e=>{let t;n((n=>{void 0!==t&&"function"==typeof t&&t();let i=null;n?i=l():r&&(i=r()),i&&(t=i(e))}))};var n,l,r}))));i(r,(e=>{const t=e[1].find((e=>!1!==e));return t||e[0]}))(l)}))},L=(e,t)=>n=>{o(e,t)((([e,t])=>{n(e&&t)}))},P=(e,t)=>n=>{o(e,t)((([e,t])=>{n(e||t)}))},q=e=>t=>{e((e=>{t(!e)}))},B=e=>t=>{i(e,Boolean)(t)},D=(e,t)=>n=>{e((e=>{try{n(JSON.parse(e))}catch(e){t?.(new Error(`Failed to parse JSON: ${e}`))}}))},M=(e,t)=>n=>{e((e=>{try{n(JSON.stringify(e))}catch{t?.(new Error("Failed to convert to JSON"))}}))},z=e=>t=>{i(e,(e=>e[0]))(t)};export{L as and,B as bool,a as branch,J as concatenated,u as constant,v as deadline,p as deferred,m as dirty,z as first,D as fromJson,w as hashTable,g as loading,d as lock,f as memo,q as not,E as onlyChanged,P as or,O as part,S as path,h as polling,y as recordOf,F as regexpMatch,x as regexpMatched,$ as regexpReplaced,A as router,R as set,j as shot,b as task,N as template,T as tick,M as toJson};
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/Const.ts","../src/behaviors/Deadline.ts","../src/behaviors/Deferred.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/Tick.ts","../src/behaviors/Task.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/behaviors/BranchLazy.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 { DataType, primitive } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/branch\n */\nexport const branch = <Then, Else>(\n conditionSrc: DataType<boolean>,\n leftSrc: DataType<Then>,\n rightSrc?: DataType<Else>,\n): DataType<Then | Else> => {\n return (u) => {\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 u(result);\n }\n });\n };\n};\n","import { DataType } from \"silentium\";\n\nexport const constant = <T>(\n permanentValue: T,\n triggerSrc: DataType,\n): DataType<T> => {\n return (u) => {\n triggerSrc(() => {\n u(permanentValue);\n });\n };\n};\n","import { DataType, DataUserType, filtered, shared } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport const deadline = <T>(\n error: DataUserType<Error>,\n baseSrc: DataType<T>,\n timeoutSrc: DataType<number>,\n): DataType<T> => {\n return (u) => {\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.value, () => !timeoutReached);\n f(u);\n\n s.value(() => {\n timeoutReached = true;\n });\n });\n };\n};\n","import { DataType, 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 const deferred = <T>(\n baseSrc: DataType<T>,\n triggerSrc: DataType<unknown>,\n): DataType<T> => {\n return (u) => {\n const baseSync = primitive(baseSrc);\n triggerSrc(() => {\n const value = baseSync.primitive();\n if (isFilled(value)) {\n u(value);\n }\n });\n };\n};\n","import { all, applied, DataType, 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 const dirty = <T>(\n baseEntitySource: DataType<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 value: (u) => {\n const comparingDetached = applied(comparingSrc.value, cloneFn);\n\n all(\n comparingDetached,\n baseEntitySource,\n )(([comparing, base]) => {\n if (!comparing) {\n return;\n }\n\n u(\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 give: (v) => {\n comparingSrc.give(v);\n },\n };\n};\n","import { DataType } 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 const loading = (\n loadingStartSrc: DataType<unknown>,\n loadingFinishSrc: DataType<unknown>,\n): DataType<boolean> => {\n return (u) => {\n loadingStartSrc(() => u(true));\n loadingFinishSrc(() => u(false));\n };\n};\n","import { DataType, filtered } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/lock\n */\nexport const lock = <T>(\n baseSrc: DataType<T>,\n lockSrc: DataType<boolean>,\n): DataType<T> => {\n return (u) => {\n let locked = false;\n lockSrc((newLock) => {\n locked = newLock;\n });\n const i = filtered(baseSrc, () => !locked);\n i(u);\n };\n};\n","import { DataType } 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 const memo = <T>(baseSrc: DataType<T>): DataType<T> => {\n return (u) => {\n let lastValue: T | null = null;\n\n baseSrc((v) => {\n if (v !== lastValue) {\n u(v);\n lastValue = v;\n }\n });\n };\n};\n","import { DataType } 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 const onlyChanged = <T>(baseSrc: DataType<T>): DataType<T> => {\n return (u) => {\n let firstValue = false;\n\n baseSrc((v) => {\n if (firstValue === false) {\n firstValue = true;\n } else {\n u(v);\n }\n });\n };\n};\n","import { all, DataType, 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 const part = <\n R,\n T extends Record<string, unknown> | Array<unknown> = any,\n K extends string = any,\n>(\n baseSrc: SourceType<T>,\n keySrc: DataType<K>,\n): SourceType<R> => {\n const baseSync = primitive(baseSrc.value);\n const keySync = primitive(keySrc);\n return {\n value: (u) => {\n all(\n baseSrc.value,\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 u(value as R);\n }\n });\n },\n give: (value: R) => {\n const key = keySync.primitive();\n if (isFilled(key)) {\n baseSrc.give({\n ...baseSync.primitive(),\n [key]: value,\n } as T);\n }\n },\n };\n};\n","import { all, DataType } from \"silentium\";\n\n/**\n * Return source of record path\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport const path = <\n R,\n T extends Record<string, unknown> | Array<unknown> = any,\n K extends string = any,\n>(\n baseSrc: DataType<T>,\n keySrc: DataType<K>,\n): DataType<R> => {\n return (u) => {\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 u(value as R);\n }\n });\n };\n};\n","import { DataType } from \"silentium\";\n\nexport const polling = <T>(\n baseSrc: DataType<T>,\n triggerSrc: DataType<T>,\n): DataType<T> => {\n return (u) => {\n triggerSrc(() => {\n baseSrc(u);\n });\n };\n};\n","import { DataType, 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 const shot = <T>(\n targetSrc: DataType<T>,\n triggerSrc: DataType,\n): DataType<T> => {\n return (u) => {\n const targetSync = primitive(targetSrc);\n\n triggerSrc(() => {\n const value = targetSync.primitive();\n if (isFilled(value)) {\n u(value);\n }\n });\n };\n};\n","import { DataType } 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 const tick = <T>(baseSrc: DataType<T>): DataType<T> => {\n return (u) => {\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 u(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 { DataType, executorApplied } from \"silentium\";\n\nexport const task = <T>(\n baseSrc: DataType<T>,\n delay: number = 0,\n): DataType<T> => {\n return (u) => {\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 })(u);\n };\n};\n","import { DataType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/structures/hash-table\n */\nexport const hashTable = <T>(\n baseSrc: DataType<[string, unknown]>,\n): DataType<T> => {\n return (u) => {\n const record: Record<string, unknown> = {};\n\n baseSrc(([key, value]) => {\n record[key] = value;\n u(record as T);\n });\n };\n};\n","import { all, DataType } from \"silentium\";\n\ntype UnInformation<T> = T extends DataType<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 const recordOf = <T extends DataType>(\n recordSrc: Record<string, T>,\n): DataType<Record<string, UnInformation<T>>> => {\n return (u) => {\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 u(record);\n });\n };\n};\n","import { all, DataType, 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 const concatenated = (\n sources: DataType<string>[],\n joinPartSrc: DataType<string> = of(\"\"),\n): DataType<string> => {\n return (u) => {\n all(\n joinPartSrc,\n ...sources,\n )(([joinPart, ...strings]) => {\n u(strings.join(joinPart));\n });\n };\n};\n","import { all, applied, DataType, of } from \"silentium\";\nimport { recordOf } from \"../structures\";\n\nexport const template = (\n theSrc: DataType<string> = of(\"\"),\n placesSrc: DataType<Record<string, unknown>> = of({}),\n) => {\n let placesCounter = 0;\n const vars: Record<string, DataType> = {\n $TPL: of(\"$TPL\"),\n };\n return {\n value: <DataType<string>>((u) => {\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 })(u);\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: DataType<string>) => {\n const varName = `$var${placesCounter}`;\n placesCounter += 1;\n vars[varName] = src;\n return varName;\n },\n };\n};\n","import { all, DataType, 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 const regexpMatched = (\n patternSrc: DataType<string>,\n valueSrc: DataType<string>,\n flagsSrc: DataType<string> = of(\"\"),\n): DataType<boolean> => {\n return (u) => {\n all(\n patternSrc,\n valueSrc,\n flagsSrc,\n )(([pattern, value, flags]) => {\n u(new RegExp(pattern, flags).test(value));\n });\n };\n};\n","import { all, DataType, 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 const regexpReplaced = (\n valueSrc: DataType<string>,\n patternSrc: DataType<string>,\n replaceValueSrc: DataType<string>,\n flagsSrc: DataType<string> = of(\"\"),\n): DataType<string> => {\n return (u) => {\n all(\n patternSrc,\n valueSrc,\n replaceValueSrc,\n flagsSrc,\n )(([pattern, value, replaceValue, flags]) => {\n u(String(value).replace(new RegExp(pattern, flags), replaceValue));\n });\n };\n};\n","import { all, DataType, of } from \"silentium\";\n\n/**\n * First match of regexp\n * https://silentium-lab.github.io/silentium-components/#/system/regexp-matched\n */\nexport const regexpMatch = (\n patternSrc: DataType<string>,\n valueSrc: DataType<string>,\n flagsSrc: DataType<string> = of(\"\"),\n): DataType<string[]> => {\n return (u) => {\n all(\n patternSrc,\n valueSrc,\n flagsSrc,\n )(([pattern, value, flags]) => {\n const result = new RegExp(pattern, flags).exec(value);\n u(result ?? []);\n });\n };\n};\n","import { all, DataType } 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 const set = <T extends Record<string, unknown>>(\n baseSrc: DataType<T>,\n keySrc: DataType<string>,\n valueSrc: DataType<unknown>,\n): DataType<T> => {\n return (u) => {\n all(\n baseSrc,\n keySrc,\n valueSrc,\n )(([base, key, value]) => {\n (base as Record<string, unknown>)[key] = value;\n u(base);\n });\n };\n};\n","import { all, applied, DataType, of, ValueType } from \"silentium\";\nimport { branchLazy } from \"../behaviors/BranchLazy\";\nimport { regexpMatched } from \"../system\";\n\nexport interface Route<T> {\n pattern: string;\n patternFlags?: string;\n template: ValueType<[], DataType<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 const router = <T = \"string\">(\n urlSrc: DataType<string>,\n routesSrc: DataType<Route<T>[]>,\n defaultSrc: ValueType<[], DataType<T>>,\n): DataType<T> => {\n return (u) => {\n all(\n routesSrc,\n urlSrc,\n )(([routes, url]) => {\n const instance = all(\n defaultSrc(),\n all(\n ...routes.map((r) =>\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 ),\n ),\n );\n\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 })(u);\n });\n };\n};\n","import { DataType, ValueType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/branch\n */\nexport const branchLazy = <Then, Else>(\n conditionSrc: DataType<boolean>,\n leftSrc: ValueType<[], DataType<Then>>,\n rightSrc?: ValueType<[], DataType<Else>>,\n): DataType<Then | Else> => {\n return (u) => {\n conditionSrc((v) => {\n let instance: DataType<Then | Else> | null = null;\n if (v) {\n instance = leftSrc();\n } else if (rightSrc) {\n instance = rightSrc();\n }\n if (instance) {\n instance(u);\n }\n });\n };\n};\n","import { all, DataType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/and\n */\nexport const and = (\n oneSrc: DataType<boolean>,\n twoSrc: DataType<boolean>,\n): DataType<boolean> => {\n return (u) => {\n all(\n oneSrc,\n twoSrc,\n )(([one, two]) => {\n u(one && two);\n });\n };\n};\n","import { all, DataType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/or\n */\nexport const or = (\n oneSrc: DataType<boolean>,\n twoSrc: DataType<boolean>,\n): DataType<boolean> => {\n return (u) => {\n all(\n oneSrc,\n twoSrc,\n )(([one, two]) => {\n u(one || two);\n });\n };\n};\n","import { DataType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/not\n */\nexport const not = (baseSrc: DataType<boolean>): DataType<boolean> => {\n return (u) => {\n baseSrc((v) => {\n u(!v);\n });\n };\n};\n","import { applied, DataType } from \"silentium\";\n\n/**\n * Convert any source to boolean source\n * https://silentium-lab.github.io/silentium-components/#/boolean/bool\n */\nexport const bool = (baseSrc: DataType): DataType<boolean> => {\n return (u) => {\n applied(baseSrc, Boolean)(u);\n };\n};\n","import { DataType, DataUserType } from \"silentium\";\n\n/**\n * Represents object from json\n */\nexport const fromJson = <T = Record<string, unknown>>(\n jsonSrc: DataType<string>,\n errorOwner?: DataUserType,\n): DataType<T> => {\n return (u) => {\n jsonSrc((json) => {\n try {\n u(JSON.parse(json));\n } catch (error) {\n errorOwner?.(new Error(`Failed to parse JSON: ${error}`));\n }\n });\n };\n};\n","import { DataType, DataUserType } from \"silentium\";\n\n/**\n * Represents json from object\n */\nexport const toJson = (\n dataSrc: DataType,\n errorOwner?: DataUserType,\n): DataType<string> => {\n return (u) => {\n dataSrc((data: unknown) => {\n try {\n u(JSON.stringify(data));\n } catch {\n errorOwner?.(new Error(\"Failed to convert to JSON\"));\n }\n });\n };\n};\n","import { applied, DataType } from \"silentium\";\n\n/**\n * Represents the first element of an array.\n */\nexport const first = <T extends Array<unknown>>(\n baseSrc: DataType<T>,\n): DataType<T[0]> => {\n return (u) => {\n applied(baseSrc, (a) => a[0])(u);\n };\n};\n"],"names":["branch","conditionSrc","leftSrc","rightSrc","u","leftSync","primitive","rightSync","v","result","constant","permanentValue","triggerSrc","deadline","error","baseSrc","timeoutSrc","timerHead","s","shared","timeout","clearTimeout","timeoutReached","setTimeout","Error","filtered","value","f","deferred","baseSync","isFilled","dirty","baseEntitySource","alwaysKeep","excludeKeys","cloneFn","comparingSrc","late","JSON","parse","stringify","comparingDetached","applied","all","comparing","base","Object","fromEntries","entries","filter","key","includes","give","loading","loadingStartSrc","loadingFinishSrc","lock","lockSrc","locked","newLock","i","memo","lastValue","onlyChanged","firstValue","part","keySrc","keySync","keyChunks","split","forEach","keyChunk","path","polling","shot","targetSrc","targetSync","tick","microtaskScheduled","queueMicrotask","task","delay","prevTimer","executorApplied","fn","hashTable","record","recordOf","recordSrc","keys","values","entry","index","concatenated","sources","joinPartSrc","of","joinPart","strings","join","template","theSrc","placesSrc","placesCounter","vars","$TPL","varsSrc","rules","ph","val","replaceAll","String","var","src","varName","regexpMatched","patternSrc","valueSrc","flagsSrc","pattern","flags","RegExp","test","regexpReplaced","replaceValueSrc","replaceValue","replace","regexpMatch","exec","set","emptySrc","router","urlSrc","routesSrc","defaultSrc","routes","url","instance","map","r","branchLazy","patternFlags","firstReal","find","and","oneSrc","twoSrc","one","two","or","not","bool","Boolean","fromJson","jsonSrc","errorOwner","json","toJson","dataSrc","data","first","a"],"mappings":"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"}
1
+ {"version":3,"file":"silentium-components.min.mjs","sources":["../src/behaviors/Branch.ts","../src/behaviors/Const.ts","../src/behaviors/Deadline.ts","../src/behaviors/Deferred.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/Tick.ts","../src/behaviors/Task.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/behaviors/BranchLazy.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 { DataType, primitive } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/branch\n */\nexport const branch = <Then, Else>(\n conditionSrc: DataType<boolean>,\n leftSrc: DataType<Then>,\n rightSrc?: DataType<Else>,\n): DataType<Then | Else> => {\n return (u) => {\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 u(result);\n }\n });\n };\n};\n","import { DataType } from \"silentium\";\n\nexport const constant = <T>(\n permanentValue: T,\n triggerSrc: DataType,\n): DataType<T> => {\n return (u) => {\n triggerSrc(() => {\n u(permanentValue);\n });\n };\n};\n","import { DataType, DataUserType, filtered, shared } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport const deadline = <T>(\n error: DataUserType<Error>,\n baseSrc: DataType<T>,\n timeoutSrc: DataType<number>,\n): DataType<T> => {\n return (u) => {\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.value, () => !timeoutReached);\n f(u);\n\n s.value(() => {\n timeoutReached = true;\n });\n });\n };\n};\n","import { DataType, 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 const deferred = <T>(\n baseSrc: DataType<T>,\n triggerSrc: DataType<unknown>,\n): DataType<T> => {\n return (u) => {\n const baseSync = primitive(baseSrc);\n triggerSrc(() => {\n const value = baseSync.primitive();\n if (isFilled(value)) {\n u(value);\n }\n });\n };\n};\n","import { all, applied, DataType, 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 const dirty = <T>(\n baseEntitySource: DataType<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 value: (u) => {\n const comparingDetached = applied(comparingSrc.value, cloneFn);\n\n all(\n comparingDetached,\n baseEntitySource,\n )(([comparing, base]) => {\n if (!comparing) {\n return;\n }\n\n u(\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 give: (v) => {\n comparingSrc.give(v);\n },\n };\n};\n","import { DataType } 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 const loading = (\n loadingStartSrc: DataType<unknown>,\n loadingFinishSrc: DataType<unknown>,\n): DataType<boolean> => {\n return (u) => {\n loadingStartSrc(() => u(true));\n loadingFinishSrc(() => u(false));\n };\n};\n","import { DataType, filtered } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/lock\n */\nexport const lock = <T>(\n baseSrc: DataType<T>,\n lockSrc: DataType<boolean>,\n): DataType<T> => {\n return (u) => {\n let locked = false;\n lockSrc((newLock) => {\n locked = newLock;\n });\n const i = filtered(baseSrc, () => !locked);\n i(u);\n };\n};\n","import { DataType } 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 const memo = <T>(baseSrc: DataType<T>): DataType<T> => {\n return (u) => {\n let lastValue: T | null = null;\n\n baseSrc((v) => {\n if (v !== lastValue) {\n u(v);\n lastValue = v;\n }\n });\n };\n};\n","import { DataType } 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 const onlyChanged = <T>(baseSrc: DataType<T>): DataType<T> => {\n return (u) => {\n let firstValue = false;\n\n baseSrc((v) => {\n if (firstValue === false) {\n firstValue = true;\n } else {\n u(v);\n }\n });\n };\n};\n","import { all, DataType, 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 const part = <\n R,\n T extends Record<string, unknown> | Array<unknown> = any,\n K extends string = any,\n>(\n baseSrc: SourceType<T>,\n keySrc: DataType<K>,\n): SourceType<R> => {\n const baseSync = primitive(baseSrc.value);\n const keySync = primitive(keySrc);\n return {\n value: (u) => {\n all(\n baseSrc.value,\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 u(value as R);\n }\n });\n },\n give: (value: R) => {\n const key = keySync.primitive();\n if (isFilled(key)) {\n baseSrc.give({\n ...baseSync.primitive(),\n [key]: value,\n } as T);\n }\n },\n };\n};\n","import { all, DataType } from \"silentium\";\n\n/**\n * Return source of record path\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport const path = <\n R,\n T extends Record<string, unknown> | Array<unknown> = any,\n K extends string = any,\n>(\n baseSrc: DataType<T>,\n keySrc: DataType<K>,\n): DataType<R> => {\n return (u) => {\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 u(value as R);\n }\n });\n };\n};\n","import { DataType } from \"silentium\";\n\nexport const polling = <T>(\n baseSrc: DataType<T>,\n triggerSrc: DataType<T>,\n): DataType<T> => {\n return (u) => {\n triggerSrc(() => {\n baseSrc(u);\n });\n };\n};\n","import { DataType, 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 const shot = <T>(\n targetSrc: DataType<T>,\n triggerSrc: DataType,\n): DataType<T> => {\n return (u) => {\n const targetSync = primitive(targetSrc);\n\n triggerSrc(() => {\n const value = targetSync.primitive();\n if (isFilled(value)) {\n u(value);\n }\n });\n };\n};\n","import { DataType } 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 const tick = <T>(baseSrc: DataType<T>): DataType<T> => {\n return (u) => {\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 u(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 { DataType, executorApplied } from \"silentium\";\n\nexport const task = <T>(\n baseSrc: DataType<T>,\n delay: number = 0,\n): DataType<T> => {\n return (u) => {\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 })(u);\n };\n};\n","import { DataType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/structures/hash-table\n */\nexport const hashTable = <T>(\n baseSrc: DataType<[string, unknown]>,\n): DataType<T> => {\n return (u) => {\n const record: Record<string, unknown> = {};\n\n baseSrc(([key, value]) => {\n record[key] = value;\n u(record as T);\n });\n };\n};\n","import { all, DataType } from \"silentium\";\n\ntype UnInformation<T> = T extends DataType<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 const recordOf = <T extends DataType>(\n recordSrc: Record<string, T>,\n): DataType<Record<string, UnInformation<T>>> => {\n return (u) => {\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 u(record);\n });\n };\n};\n","import { all, DataType, 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 const concatenated = (\n sources: DataType<string>[],\n joinPartSrc: DataType<string> = of(\"\"),\n): DataType<string> => {\n return (u) => {\n all(\n joinPartSrc,\n ...sources,\n )(([joinPart, ...strings]) => {\n u(strings.join(joinPart));\n });\n };\n};\n","import { all, applied, DataType, of } from \"silentium\";\nimport { recordOf } from \"../structures\";\n\nexport const template = (\n theSrc: DataType<string> = of(\"\"),\n placesSrc: DataType<Record<string, unknown>> = of({}),\n) => {\n let placesCounter = 0;\n const vars: Record<string, DataType> = {\n $TPL: of(\"$TPL\"),\n };\n return {\n value: <DataType<string>>((u) => {\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 })(u);\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: DataType<string>) => {\n const varName = `$var${placesCounter}`;\n placesCounter += 1;\n vars[varName] = src;\n return varName;\n },\n };\n};\n","import { all, DataType, 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 const regexpMatched = (\n patternSrc: DataType<string>,\n valueSrc: DataType<string>,\n flagsSrc: DataType<string> = of(\"\"),\n): DataType<boolean> => {\n return (u) => {\n all(\n patternSrc,\n valueSrc,\n flagsSrc,\n )(([pattern, value, flags]) => {\n u(new RegExp(pattern, flags).test(value));\n });\n };\n};\n","import { all, DataType, 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 const regexpReplaced = (\n valueSrc: DataType<string>,\n patternSrc: DataType<string>,\n replaceValueSrc: DataType<string>,\n flagsSrc: DataType<string> = of(\"\"),\n): DataType<string> => {\n return (u) => {\n all(\n patternSrc,\n valueSrc,\n replaceValueSrc,\n flagsSrc,\n )(([pattern, value, replaceValue, flags]) => {\n u(String(value).replace(new RegExp(pattern, flags), replaceValue));\n });\n };\n};\n","import { all, DataType, of } from \"silentium\";\n\n/**\n * First match of regexp\n * https://silentium-lab.github.io/silentium-components/#/system/regexp-matched\n */\nexport const regexpMatch = (\n patternSrc: DataType<string>,\n valueSrc: DataType<string>,\n flagsSrc: DataType<string> = of(\"\"),\n): DataType<string[]> => {\n return (u) => {\n all(\n patternSrc,\n valueSrc,\n flagsSrc,\n )(([pattern, value, flags]) => {\n const result = new RegExp(pattern, flags).exec(value);\n u(result ?? []);\n });\n };\n};\n","import { all, DataType } 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 const set = <T extends Record<string, unknown>>(\n baseSrc: DataType<T>,\n keySrc: DataType<string>,\n valueSrc: DataType<unknown>,\n): DataType<T> => {\n return (u) => {\n all(\n baseSrc,\n keySrc,\n valueSrc,\n )(([base, key, value]) => {\n (base as Record<string, unknown>)[key] = value;\n u(base);\n });\n };\n};\n","import { all, applied, DataType, of, ValueType } from \"silentium\";\nimport { branchLazy } from \"../behaviors/BranchLazy\";\nimport { regexpMatched } from \"../system\";\n\nexport interface Route<T> {\n pattern: string;\n patternFlags?: string;\n template: ValueType<[], DataType<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 const router = <T = \"string\">(\n urlSrc: DataType<string>,\n routesSrc: DataType<Route<T>[]>,\n defaultSrc: ValueType<[], DataType<T>>,\n): DataType<T> => {\n return (u) => {\n all(\n routesSrc,\n urlSrc,\n )(([routes, url]) => {\n const instance = all(\n defaultSrc(),\n all(\n ...routes.map((r) =>\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 ),\n ),\n );\n\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 })(u);\n });\n };\n};\n","import { DataType, DestructorType, ValueType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/branch\n */\nexport const branchLazy = <Then, Else>(\n conditionSrc: DataType<boolean>,\n leftSrc: ValueType<[], DataType<Then>>,\n rightSrc?: ValueType<[], DataType<Else>>,\n): DataType<Then | Else> => {\n return (u) => {\n let destructor: DestructorType | void;\n conditionSrc((v) => {\n if (destructor !== undefined && typeof destructor === \"function\") {\n destructor();\n }\n let instance: DataType<Then | Else> | null = null;\n if (v) {\n instance = leftSrc();\n } else if (rightSrc) {\n instance = rightSrc();\n }\n if (instance) {\n destructor = instance(u);\n }\n });\n };\n};\n","import { all, DataType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/and\n */\nexport const and = (\n oneSrc: DataType<boolean>,\n twoSrc: DataType<boolean>,\n): DataType<boolean> => {\n return (u) => {\n all(\n oneSrc,\n twoSrc,\n )(([one, two]) => {\n u(one && two);\n });\n };\n};\n","import { all, DataType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/or\n */\nexport const or = (\n oneSrc: DataType<boolean>,\n twoSrc: DataType<boolean>,\n): DataType<boolean> => {\n return (u) => {\n all(\n oneSrc,\n twoSrc,\n )(([one, two]) => {\n u(one || two);\n });\n };\n};\n","import { DataType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/not\n */\nexport const not = (baseSrc: DataType<boolean>): DataType<boolean> => {\n return (u) => {\n baseSrc((v) => {\n u(!v);\n });\n };\n};\n","import { applied, DataType } from \"silentium\";\n\n/**\n * Convert any source to boolean source\n * https://silentium-lab.github.io/silentium-components/#/boolean/bool\n */\nexport const bool = (baseSrc: DataType): DataType<boolean> => {\n return (u) => {\n applied(baseSrc, Boolean)(u);\n };\n};\n","import { DataType, DataUserType } from \"silentium\";\n\n/**\n * Represents object from json\n */\nexport const fromJson = <T = Record<string, unknown>>(\n jsonSrc: DataType<string>,\n errorOwner?: DataUserType,\n): DataType<T> => {\n return (u) => {\n jsonSrc((json) => {\n try {\n u(JSON.parse(json));\n } catch (error) {\n errorOwner?.(new Error(`Failed to parse JSON: ${error}`));\n }\n });\n };\n};\n","import { DataType, DataUserType } from \"silentium\";\n\n/**\n * Represents json from object\n */\nexport const toJson = (\n dataSrc: DataType,\n errorOwner?: DataUserType,\n): DataType<string> => {\n return (u) => {\n dataSrc((data: unknown) => {\n try {\n u(JSON.stringify(data));\n } catch {\n errorOwner?.(new Error(\"Failed to convert to JSON\"));\n }\n });\n };\n};\n","import { applied, DataType } from \"silentium\";\n\n/**\n * Represents the first element of an array.\n */\nexport const first = <T extends Array<unknown>>(\n baseSrc: DataType<T>,\n): DataType<T[0]> => {\n return (u) => {\n applied(baseSrc, (a) => a[0])(u);\n };\n};\n"],"names":["branch","conditionSrc","leftSrc","rightSrc","u","leftSync","primitive","rightSync","v","result","constant","permanentValue","triggerSrc","deadline","error","baseSrc","timeoutSrc","timerHead","s","shared","timeout","clearTimeout","timeoutReached","setTimeout","Error","filtered","value","f","deferred","baseSync","isFilled","dirty","baseEntitySource","alwaysKeep","excludeKeys","cloneFn","comparingSrc","late","JSON","parse","stringify","comparingDetached","applied","all","comparing","base","Object","fromEntries","entries","filter","key","includes","give","loading","loadingStartSrc","loadingFinishSrc","lock","lockSrc","locked","newLock","i","memo","lastValue","onlyChanged","firstValue","part","keySrc","keySync","keyChunks","split","forEach","keyChunk","path","polling","shot","targetSrc","targetSync","tick","microtaskScheduled","queueMicrotask","task","delay","prevTimer","executorApplied","fn","hashTable","record","recordOf","recordSrc","keys","values","entry","index","concatenated","sources","joinPartSrc","of","joinPart","strings","join","template","theSrc","placesSrc","placesCounter","vars","$TPL","varsSrc","rules","ph","val","replaceAll","String","var","src","varName","regexpMatched","patternSrc","valueSrc","flagsSrc","pattern","flags","RegExp","test","regexpReplaced","replaceValueSrc","replaceValue","replace","regexpMatch","exec","set","emptySrc","router","urlSrc","routesSrc","defaultSrc","routes","url","instance","map","r","branchLazy","patternFlags","destructor","firstReal","find","and","oneSrc","twoSrc","one","two","or","not","bool","Boolean","fromJson","jsonSrc","errorOwner","json","toJson","dataSrc","data","first","a"],"mappings":"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"}
@@ -323,7 +323,11 @@ const template = (theSrc = of(""), placesSrc = of({})) => {
323
323
 
324
324
  const branchLazy = (conditionSrc, leftSrc, rightSrc) => {
325
325
  return (u) => {
326
+ let destructor;
326
327
  conditionSrc((v) => {
328
+ if (destructor !== void 0 && typeof destructor === "function") {
329
+ destructor();
330
+ }
327
331
  let instance = null;
328
332
  if (v) {
329
333
  instance = leftSrc();
@@ -331,7 +335,7 @@ const branchLazy = (conditionSrc, leftSrc, rightSrc) => {
331
335
  instance = rightSrc();
332
336
  }
333
337
  if (instance) {
334
- instance(u);
338
+ destructor = instance(u);
335
339
  }
336
340
  });
337
341
  };
@@ -1 +1 @@
1
- {"version":3,"file":"silentium-components.mjs","sources":["../src/behaviors/Branch.ts","../src/behaviors/Const.ts","../src/behaviors/Deadline.ts","../src/behaviors/Deferred.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/Tick.ts","../src/behaviors/Task.ts","../src/structures/HashTable.ts","../src/structures/RecordOf.ts","../src/strings/Concatenated.ts","../src/strings/Template.ts","../src/behaviors/BranchLazy.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 { DataType, primitive } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/branch\n */\nexport const branch = <Then, Else>(\n conditionSrc: DataType<boolean>,\n leftSrc: DataType<Then>,\n rightSrc?: DataType<Else>,\n): DataType<Then | Else> => {\n return (u) => {\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 u(result);\n }\n });\n };\n};\n","import { DataType } from \"silentium\";\n\nexport const constant = <T>(\n permanentValue: T,\n triggerSrc: DataType,\n): DataType<T> => {\n return (u) => {\n triggerSrc(() => {\n u(permanentValue);\n });\n };\n};\n","import { DataType, DataUserType, filtered, shared } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport const deadline = <T>(\n error: DataUserType<Error>,\n baseSrc: DataType<T>,\n timeoutSrc: DataType<number>,\n): DataType<T> => {\n return (u) => {\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.value, () => !timeoutReached);\n f(u);\n\n s.value(() => {\n timeoutReached = true;\n });\n });\n };\n};\n","import { DataType, 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 const deferred = <T>(\n baseSrc: DataType<T>,\n triggerSrc: DataType<unknown>,\n): DataType<T> => {\n return (u) => {\n const baseSync = primitive(baseSrc);\n triggerSrc(() => {\n const value = baseSync.primitive();\n if (isFilled(value)) {\n u(value);\n }\n });\n };\n};\n","import { all, applied, DataType, 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 const dirty = <T>(\n baseEntitySource: DataType<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 value: (u) => {\n const comparingDetached = applied(comparingSrc.value, cloneFn);\n\n all(\n comparingDetached,\n baseEntitySource,\n )(([comparing, base]) => {\n if (!comparing) {\n return;\n }\n\n u(\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 give: (v) => {\n comparingSrc.give(v);\n },\n };\n};\n","import { DataType } 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 const loading = (\n loadingStartSrc: DataType<unknown>,\n loadingFinishSrc: DataType<unknown>,\n): DataType<boolean> => {\n return (u) => {\n loadingStartSrc(() => u(true));\n loadingFinishSrc(() => u(false));\n };\n};\n","import { DataType, filtered } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/lock\n */\nexport const lock = <T>(\n baseSrc: DataType<T>,\n lockSrc: DataType<boolean>,\n): DataType<T> => {\n return (u) => {\n let locked = false;\n lockSrc((newLock) => {\n locked = newLock;\n });\n const i = filtered(baseSrc, () => !locked);\n i(u);\n };\n};\n","import { DataType } 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 const memo = <T>(baseSrc: DataType<T>): DataType<T> => {\n return (u) => {\n let lastValue: T | null = null;\n\n baseSrc((v) => {\n if (v !== lastValue) {\n u(v);\n lastValue = v;\n }\n });\n };\n};\n","import { DataType } 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 const onlyChanged = <T>(baseSrc: DataType<T>): DataType<T> => {\n return (u) => {\n let firstValue = false;\n\n baseSrc((v) => {\n if (firstValue === false) {\n firstValue = true;\n } else {\n u(v);\n }\n });\n };\n};\n","import { all, DataType, 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 const part = <\n R,\n T extends Record<string, unknown> | Array<unknown> = any,\n K extends string = any,\n>(\n baseSrc: SourceType<T>,\n keySrc: DataType<K>,\n): SourceType<R> => {\n const baseSync = primitive(baseSrc.value);\n const keySync = primitive(keySrc);\n return {\n value: (u) => {\n all(\n baseSrc.value,\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 u(value as R);\n }\n });\n },\n give: (value: R) => {\n const key = keySync.primitive();\n if (isFilled(key)) {\n baseSrc.give({\n ...baseSync.primitive(),\n [key]: value,\n } as T);\n }\n },\n };\n};\n","import { all, DataType } from \"silentium\";\n\n/**\n * Return source of record path\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport const path = <\n R,\n T extends Record<string, unknown> | Array<unknown> = any,\n K extends string = any,\n>(\n baseSrc: DataType<T>,\n keySrc: DataType<K>,\n): DataType<R> => {\n return (u) => {\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 u(value as R);\n }\n });\n };\n};\n","import { DataType } from \"silentium\";\n\nexport const polling = <T>(\n baseSrc: DataType<T>,\n triggerSrc: DataType<T>,\n): DataType<T> => {\n return (u) => {\n triggerSrc(() => {\n baseSrc(u);\n });\n };\n};\n","import { DataType, 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 const shot = <T>(\n targetSrc: DataType<T>,\n triggerSrc: DataType,\n): DataType<T> => {\n return (u) => {\n const targetSync = primitive(targetSrc);\n\n triggerSrc(() => {\n const value = targetSync.primitive();\n if (isFilled(value)) {\n u(value);\n }\n });\n };\n};\n","import { DataType } 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 const tick = <T>(baseSrc: DataType<T>): DataType<T> => {\n return (u) => {\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 u(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 { DataType, executorApplied } from \"silentium\";\n\nexport const task = <T>(\n baseSrc: DataType<T>,\n delay: number = 0,\n): DataType<T> => {\n return (u) => {\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 })(u);\n };\n};\n","import { DataType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/structures/hash-table\n */\nexport const hashTable = <T>(\n baseSrc: DataType<[string, unknown]>,\n): DataType<T> => {\n return (u) => {\n const record: Record<string, unknown> = {};\n\n baseSrc(([key, value]) => {\n record[key] = value;\n u(record as T);\n });\n };\n};\n","import { all, DataType } from \"silentium\";\n\ntype UnInformation<T> = T extends DataType<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 const recordOf = <T extends DataType>(\n recordSrc: Record<string, T>,\n): DataType<Record<string, UnInformation<T>>> => {\n return (u) => {\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 u(record);\n });\n };\n};\n","import { all, DataType, 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 const concatenated = (\n sources: DataType<string>[],\n joinPartSrc: DataType<string> = of(\"\"),\n): DataType<string> => {\n return (u) => {\n all(\n joinPartSrc,\n ...sources,\n )(([joinPart, ...strings]) => {\n u(strings.join(joinPart));\n });\n };\n};\n","import { all, applied, DataType, of } from \"silentium\";\nimport { recordOf } from \"../structures\";\n\nexport const template = (\n theSrc: DataType<string> = of(\"\"),\n placesSrc: DataType<Record<string, unknown>> = of({}),\n) => {\n let placesCounter = 0;\n const vars: Record<string, DataType> = {\n $TPL: of(\"$TPL\"),\n };\n return {\n value: <DataType<string>>((u) => {\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 })(u);\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: DataType<string>) => {\n const varName = `$var${placesCounter}`;\n placesCounter += 1;\n vars[varName] = src;\n return varName;\n },\n };\n};\n","import { DataType, ValueType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/branch\n */\nexport const branchLazy = <Then, Else>(\n conditionSrc: DataType<boolean>,\n leftSrc: ValueType<[], DataType<Then>>,\n rightSrc?: ValueType<[], DataType<Else>>,\n): DataType<Then | Else> => {\n return (u) => {\n conditionSrc((v) => {\n let instance: DataType<Then | Else> | null = null;\n if (v) {\n instance = leftSrc();\n } else if (rightSrc) {\n instance = rightSrc();\n }\n if (instance) {\n instance(u);\n }\n });\n };\n};\n","import { all, DataType, 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 const regexpMatched = (\n patternSrc: DataType<string>,\n valueSrc: DataType<string>,\n flagsSrc: DataType<string> = of(\"\"),\n): DataType<boolean> => {\n return (u) => {\n all(\n patternSrc,\n valueSrc,\n flagsSrc,\n )(([pattern, value, flags]) => {\n u(new RegExp(pattern, flags).test(value));\n });\n };\n};\n","import { all, DataType, 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 const regexpReplaced = (\n valueSrc: DataType<string>,\n patternSrc: DataType<string>,\n replaceValueSrc: DataType<string>,\n flagsSrc: DataType<string> = of(\"\"),\n): DataType<string> => {\n return (u) => {\n all(\n patternSrc,\n valueSrc,\n replaceValueSrc,\n flagsSrc,\n )(([pattern, value, replaceValue, flags]) => {\n u(String(value).replace(new RegExp(pattern, flags), replaceValue));\n });\n };\n};\n","import { all, DataType, of } from \"silentium\";\n\n/**\n * First match of regexp\n * https://silentium-lab.github.io/silentium-components/#/system/regexp-matched\n */\nexport const regexpMatch = (\n patternSrc: DataType<string>,\n valueSrc: DataType<string>,\n flagsSrc: DataType<string> = of(\"\"),\n): DataType<string[]> => {\n return (u) => {\n all(\n patternSrc,\n valueSrc,\n flagsSrc,\n )(([pattern, value, flags]) => {\n const result = new RegExp(pattern, flags).exec(value);\n u(result ?? []);\n });\n };\n};\n","import { all, DataType } 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 const set = <T extends Record<string, unknown>>(\n baseSrc: DataType<T>,\n keySrc: DataType<string>,\n valueSrc: DataType<unknown>,\n): DataType<T> => {\n return (u) => {\n all(\n baseSrc,\n keySrc,\n valueSrc,\n )(([base, key, value]) => {\n (base as Record<string, unknown>)[key] = value;\n u(base);\n });\n };\n};\n","import { all, applied, DataType, of, ValueType } from \"silentium\";\nimport { branchLazy } from \"../behaviors/BranchLazy\";\nimport { regexpMatched } from \"../system\";\n\nexport interface Route<T> {\n pattern: string;\n patternFlags?: string;\n template: ValueType<[], DataType<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 const router = <T = \"string\">(\n urlSrc: DataType<string>,\n routesSrc: DataType<Route<T>[]>,\n defaultSrc: ValueType<[], DataType<T>>,\n): DataType<T> => {\n return (u) => {\n all(\n routesSrc,\n urlSrc,\n )(([routes, url]) => {\n const instance = all(\n defaultSrc(),\n all(\n ...routes.map((r) =>\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 ),\n ),\n );\n\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 })(u);\n });\n };\n};\n","import { all, DataType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/and\n */\nexport const and = (\n oneSrc: DataType<boolean>,\n twoSrc: DataType<boolean>,\n): DataType<boolean> => {\n return (u) => {\n all(\n oneSrc,\n twoSrc,\n )(([one, two]) => {\n u(one && two);\n });\n };\n};\n","import { all, DataType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/or\n */\nexport const or = (\n oneSrc: DataType<boolean>,\n twoSrc: DataType<boolean>,\n): DataType<boolean> => {\n return (u) => {\n all(\n oneSrc,\n twoSrc,\n )(([one, two]) => {\n u(one || two);\n });\n };\n};\n","import { DataType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/not\n */\nexport const not = (baseSrc: DataType<boolean>): DataType<boolean> => {\n return (u) => {\n baseSrc((v) => {\n u(!v);\n });\n };\n};\n","import { applied, DataType } from \"silentium\";\n\n/**\n * Convert any source to boolean source\n * https://silentium-lab.github.io/silentium-components/#/boolean/bool\n */\nexport const bool = (baseSrc: DataType): DataType<boolean> => {\n return (u) => {\n applied(baseSrc, Boolean)(u);\n };\n};\n","import { DataType, DataUserType } from \"silentium\";\n\n/**\n * Represents object from json\n */\nexport const fromJson = <T = Record<string, unknown>>(\n jsonSrc: DataType<string>,\n errorOwner?: DataUserType,\n): DataType<T> => {\n return (u) => {\n jsonSrc((json) => {\n try {\n u(JSON.parse(json));\n } catch (error) {\n errorOwner?.(new Error(`Failed to parse JSON: ${error}`));\n }\n });\n };\n};\n","import { DataType, DataUserType } from \"silentium\";\n\n/**\n * Represents json from object\n */\nexport const toJson = (\n dataSrc: DataType,\n errorOwner?: DataUserType,\n): DataType<string> => {\n return (u) => {\n dataSrc((data: unknown) => {\n try {\n u(JSON.stringify(data));\n } catch {\n errorOwner?.(new Error(\"Failed to convert to JSON\"));\n }\n });\n };\n};\n","import { applied, DataType } from \"silentium\";\n\n/**\n * Represents the first element of an array.\n */\nexport const first = <T extends Array<unknown>>(\n baseSrc: DataType<T>,\n): DataType<T[0]> => {\n return (u) => {\n applied(baseSrc, (a) => a[0])(u);\n };\n};\n"],"names":["vars","r"],"mappings":"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"}
1
+ {"version":3,"file":"silentium-components.mjs","sources":["../src/behaviors/Branch.ts","../src/behaviors/Const.ts","../src/behaviors/Deadline.ts","../src/behaviors/Deferred.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/Tick.ts","../src/behaviors/Task.ts","../src/structures/HashTable.ts","../src/structures/RecordOf.ts","../src/strings/Concatenated.ts","../src/strings/Template.ts","../src/behaviors/BranchLazy.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 { DataType, primitive } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/branch\n */\nexport const branch = <Then, Else>(\n conditionSrc: DataType<boolean>,\n leftSrc: DataType<Then>,\n rightSrc?: DataType<Else>,\n): DataType<Then | Else> => {\n return (u) => {\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 u(result);\n }\n });\n };\n};\n","import { DataType } from \"silentium\";\n\nexport const constant = <T>(\n permanentValue: T,\n triggerSrc: DataType,\n): DataType<T> => {\n return (u) => {\n triggerSrc(() => {\n u(permanentValue);\n });\n };\n};\n","import { DataType, DataUserType, filtered, shared } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport const deadline = <T>(\n error: DataUserType<Error>,\n baseSrc: DataType<T>,\n timeoutSrc: DataType<number>,\n): DataType<T> => {\n return (u) => {\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.value, () => !timeoutReached);\n f(u);\n\n s.value(() => {\n timeoutReached = true;\n });\n });\n };\n};\n","import { DataType, 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 const deferred = <T>(\n baseSrc: DataType<T>,\n triggerSrc: DataType<unknown>,\n): DataType<T> => {\n return (u) => {\n const baseSync = primitive(baseSrc);\n triggerSrc(() => {\n const value = baseSync.primitive();\n if (isFilled(value)) {\n u(value);\n }\n });\n };\n};\n","import { all, applied, DataType, 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 const dirty = <T>(\n baseEntitySource: DataType<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 value: (u) => {\n const comparingDetached = applied(comparingSrc.value, cloneFn);\n\n all(\n comparingDetached,\n baseEntitySource,\n )(([comparing, base]) => {\n if (!comparing) {\n return;\n }\n\n u(\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 give: (v) => {\n comparingSrc.give(v);\n },\n };\n};\n","import { DataType } 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 const loading = (\n loadingStartSrc: DataType<unknown>,\n loadingFinishSrc: DataType<unknown>,\n): DataType<boolean> => {\n return (u) => {\n loadingStartSrc(() => u(true));\n loadingFinishSrc(() => u(false));\n };\n};\n","import { DataType, filtered } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/lock\n */\nexport const lock = <T>(\n baseSrc: DataType<T>,\n lockSrc: DataType<boolean>,\n): DataType<T> => {\n return (u) => {\n let locked = false;\n lockSrc((newLock) => {\n locked = newLock;\n });\n const i = filtered(baseSrc, () => !locked);\n i(u);\n };\n};\n","import { DataType } 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 const memo = <T>(baseSrc: DataType<T>): DataType<T> => {\n return (u) => {\n let lastValue: T | null = null;\n\n baseSrc((v) => {\n if (v !== lastValue) {\n u(v);\n lastValue = v;\n }\n });\n };\n};\n","import { DataType } 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 const onlyChanged = <T>(baseSrc: DataType<T>): DataType<T> => {\n return (u) => {\n let firstValue = false;\n\n baseSrc((v) => {\n if (firstValue === false) {\n firstValue = true;\n } else {\n u(v);\n }\n });\n };\n};\n","import { all, DataType, 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 const part = <\n R,\n T extends Record<string, unknown> | Array<unknown> = any,\n K extends string = any,\n>(\n baseSrc: SourceType<T>,\n keySrc: DataType<K>,\n): SourceType<R> => {\n const baseSync = primitive(baseSrc.value);\n const keySync = primitive(keySrc);\n return {\n value: (u) => {\n all(\n baseSrc.value,\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 u(value as R);\n }\n });\n },\n give: (value: R) => {\n const key = keySync.primitive();\n if (isFilled(key)) {\n baseSrc.give({\n ...baseSync.primitive(),\n [key]: value,\n } as T);\n }\n },\n };\n};\n","import { all, DataType } from \"silentium\";\n\n/**\n * Return source of record path\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport const path = <\n R,\n T extends Record<string, unknown> | Array<unknown> = any,\n K extends string = any,\n>(\n baseSrc: DataType<T>,\n keySrc: DataType<K>,\n): DataType<R> => {\n return (u) => {\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 u(value as R);\n }\n });\n };\n};\n","import { DataType } from \"silentium\";\n\nexport const polling = <T>(\n baseSrc: DataType<T>,\n triggerSrc: DataType<T>,\n): DataType<T> => {\n return (u) => {\n triggerSrc(() => {\n baseSrc(u);\n });\n };\n};\n","import { DataType, 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 const shot = <T>(\n targetSrc: DataType<T>,\n triggerSrc: DataType,\n): DataType<T> => {\n return (u) => {\n const targetSync = primitive(targetSrc);\n\n triggerSrc(() => {\n const value = targetSync.primitive();\n if (isFilled(value)) {\n u(value);\n }\n });\n };\n};\n","import { DataType } 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 const tick = <T>(baseSrc: DataType<T>): DataType<T> => {\n return (u) => {\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 u(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 { DataType, executorApplied } from \"silentium\";\n\nexport const task = <T>(\n baseSrc: DataType<T>,\n delay: number = 0,\n): DataType<T> => {\n return (u) => {\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 })(u);\n };\n};\n","import { DataType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/structures/hash-table\n */\nexport const hashTable = <T>(\n baseSrc: DataType<[string, unknown]>,\n): DataType<T> => {\n return (u) => {\n const record: Record<string, unknown> = {};\n\n baseSrc(([key, value]) => {\n record[key] = value;\n u(record as T);\n });\n };\n};\n","import { all, DataType } from \"silentium\";\n\ntype UnInformation<T> = T extends DataType<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 const recordOf = <T extends DataType>(\n recordSrc: Record<string, T>,\n): DataType<Record<string, UnInformation<T>>> => {\n return (u) => {\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 u(record);\n });\n };\n};\n","import { all, DataType, 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 const concatenated = (\n sources: DataType<string>[],\n joinPartSrc: DataType<string> = of(\"\"),\n): DataType<string> => {\n return (u) => {\n all(\n joinPartSrc,\n ...sources,\n )(([joinPart, ...strings]) => {\n u(strings.join(joinPart));\n });\n };\n};\n","import { all, applied, DataType, of } from \"silentium\";\nimport { recordOf } from \"../structures\";\n\nexport const template = (\n theSrc: DataType<string> = of(\"\"),\n placesSrc: DataType<Record<string, unknown>> = of({}),\n) => {\n let placesCounter = 0;\n const vars: Record<string, DataType> = {\n $TPL: of(\"$TPL\"),\n };\n return {\n value: <DataType<string>>((u) => {\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 })(u);\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: DataType<string>) => {\n const varName = `$var${placesCounter}`;\n placesCounter += 1;\n vars[varName] = src;\n return varName;\n },\n };\n};\n","import { DataType, DestructorType, ValueType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/branch\n */\nexport const branchLazy = <Then, Else>(\n conditionSrc: DataType<boolean>,\n leftSrc: ValueType<[], DataType<Then>>,\n rightSrc?: ValueType<[], DataType<Else>>,\n): DataType<Then | Else> => {\n return (u) => {\n let destructor: DestructorType | void;\n conditionSrc((v) => {\n if (destructor !== undefined && typeof destructor === \"function\") {\n destructor();\n }\n let instance: DataType<Then | Else> | null = null;\n if (v) {\n instance = leftSrc();\n } else if (rightSrc) {\n instance = rightSrc();\n }\n if (instance) {\n destructor = instance(u);\n }\n });\n };\n};\n","import { all, DataType, 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 const regexpMatched = (\n patternSrc: DataType<string>,\n valueSrc: DataType<string>,\n flagsSrc: DataType<string> = of(\"\"),\n): DataType<boolean> => {\n return (u) => {\n all(\n patternSrc,\n valueSrc,\n flagsSrc,\n )(([pattern, value, flags]) => {\n u(new RegExp(pattern, flags).test(value));\n });\n };\n};\n","import { all, DataType, 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 const regexpReplaced = (\n valueSrc: DataType<string>,\n patternSrc: DataType<string>,\n replaceValueSrc: DataType<string>,\n flagsSrc: DataType<string> = of(\"\"),\n): DataType<string> => {\n return (u) => {\n all(\n patternSrc,\n valueSrc,\n replaceValueSrc,\n flagsSrc,\n )(([pattern, value, replaceValue, flags]) => {\n u(String(value).replace(new RegExp(pattern, flags), replaceValue));\n });\n };\n};\n","import { all, DataType, of } from \"silentium\";\n\n/**\n * First match of regexp\n * https://silentium-lab.github.io/silentium-components/#/system/regexp-matched\n */\nexport const regexpMatch = (\n patternSrc: DataType<string>,\n valueSrc: DataType<string>,\n flagsSrc: DataType<string> = of(\"\"),\n): DataType<string[]> => {\n return (u) => {\n all(\n patternSrc,\n valueSrc,\n flagsSrc,\n )(([pattern, value, flags]) => {\n const result = new RegExp(pattern, flags).exec(value);\n u(result ?? []);\n });\n };\n};\n","import { all, DataType } 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 const set = <T extends Record<string, unknown>>(\n baseSrc: DataType<T>,\n keySrc: DataType<string>,\n valueSrc: DataType<unknown>,\n): DataType<T> => {\n return (u) => {\n all(\n baseSrc,\n keySrc,\n valueSrc,\n )(([base, key, value]) => {\n (base as Record<string, unknown>)[key] = value;\n u(base);\n });\n };\n};\n","import { all, applied, DataType, of, ValueType } from \"silentium\";\nimport { branchLazy } from \"../behaviors/BranchLazy\";\nimport { regexpMatched } from \"../system\";\n\nexport interface Route<T> {\n pattern: string;\n patternFlags?: string;\n template: ValueType<[], DataType<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 const router = <T = \"string\">(\n urlSrc: DataType<string>,\n routesSrc: DataType<Route<T>[]>,\n defaultSrc: ValueType<[], DataType<T>>,\n): DataType<T> => {\n return (u) => {\n all(\n routesSrc,\n urlSrc,\n )(([routes, url]) => {\n const instance = all(\n defaultSrc(),\n all(\n ...routes.map((r) =>\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 ),\n ),\n );\n\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 })(u);\n });\n };\n};\n","import { all, DataType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/and\n */\nexport const and = (\n oneSrc: DataType<boolean>,\n twoSrc: DataType<boolean>,\n): DataType<boolean> => {\n return (u) => {\n all(\n oneSrc,\n twoSrc,\n )(([one, two]) => {\n u(one && two);\n });\n };\n};\n","import { all, DataType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/or\n */\nexport const or = (\n oneSrc: DataType<boolean>,\n twoSrc: DataType<boolean>,\n): DataType<boolean> => {\n return (u) => {\n all(\n oneSrc,\n twoSrc,\n )(([one, two]) => {\n u(one || two);\n });\n };\n};\n","import { DataType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/not\n */\nexport const not = (baseSrc: DataType<boolean>): DataType<boolean> => {\n return (u) => {\n baseSrc((v) => {\n u(!v);\n });\n };\n};\n","import { applied, DataType } from \"silentium\";\n\n/**\n * Convert any source to boolean source\n * https://silentium-lab.github.io/silentium-components/#/boolean/bool\n */\nexport const bool = (baseSrc: DataType): DataType<boolean> => {\n return (u) => {\n applied(baseSrc, Boolean)(u);\n };\n};\n","import { DataType, DataUserType } from \"silentium\";\n\n/**\n * Represents object from json\n */\nexport const fromJson = <T = Record<string, unknown>>(\n jsonSrc: DataType<string>,\n errorOwner?: DataUserType,\n): DataType<T> => {\n return (u) => {\n jsonSrc((json) => {\n try {\n u(JSON.parse(json));\n } catch (error) {\n errorOwner?.(new Error(`Failed to parse JSON: ${error}`));\n }\n });\n };\n};\n","import { DataType, DataUserType } from \"silentium\";\n\n/**\n * Represents json from object\n */\nexport const toJson = (\n dataSrc: DataType,\n errorOwner?: DataUserType,\n): DataType<string> => {\n return (u) => {\n dataSrc((data: unknown) => {\n try {\n u(JSON.stringify(data));\n } catch {\n errorOwner?.(new Error(\"Failed to convert to JSON\"));\n }\n });\n };\n};\n","import { applied, DataType } from \"silentium\";\n\n/**\n * Represents the first element of an array.\n */\nexport const first = <T extends Array<unknown>>(\n baseSrc: DataType<T>,\n): DataType<T[0]> => {\n return (u) => {\n applied(baseSrc, (a) => a[0])(u);\n };\n};\n"],"names":["vars","r"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "silentium-components",
3
- "version": "0.0.55",
3
+ "version": "0.0.56",
4
4
  "description": "",
5
5
  "type": "module",
6
6
  "main": "dist/silentium-components.js",
@@ -1,4 +1,4 @@
1
- import { DataType, ValueType } from "silentium";
1
+ import { DataType, DestructorType, ValueType } from "silentium";
2
2
 
3
3
  /**
4
4
  * https://silentium-lab.github.io/silentium-components/#/behaviors/branch
@@ -9,7 +9,11 @@ export const branchLazy = <Then, Else>(
9
9
  rightSrc?: ValueType<[], DataType<Else>>,
10
10
  ): DataType<Then | Else> => {
11
11
  return (u) => {
12
+ let destructor: DestructorType | void;
12
13
  conditionSrc((v) => {
14
+ if (destructor !== undefined && typeof destructor === "function") {
15
+ destructor();
16
+ }
13
17
  let instance: DataType<Then | Else> | null = null;
14
18
  if (v) {
15
19
  instance = leftSrc();
@@ -17,7 +21,7 @@ export const branchLazy = <Then, Else>(
17
21
  instance = rightSrc();
18
22
  }
19
23
  if (instance) {
20
- instance(u);
24
+ destructor = instance(u);
21
25
  }
22
26
  });
23
27
  };