silentium-components 0.0.65 → 0.0.67

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.
Files changed (92) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/dist/silentium-components.cjs +215 -215
  3. package/dist/silentium-components.cjs.map +1 -1
  4. package/dist/silentium-components.d.ts +47 -47
  5. package/dist/silentium-components.js +181 -181
  6. package/dist/silentium-components.js.map +1 -1
  7. package/dist/silentium-components.min.js +1 -1
  8. package/dist/silentium-components.min.mjs +1 -1
  9. package/dist/silentium-components.min.mjs.map +1 -1
  10. package/dist/silentium-components.mjs +181 -181
  11. package/dist/silentium-components.mjs.map +1 -1
  12. package/package.json +2 -2
  13. package/src/behaviors/Branch._main.test.ts +7 -7
  14. package/src/behaviors/Branch.branchesDontAffectResult.test.ts +7 -7
  15. package/src/behaviors/Branch.dontRespondAfterRespond.test.ts +7 -7
  16. package/src/behaviors/Branch.ts +9 -9
  17. package/src/behaviors/BranchLazy._main.test.ts +7 -7
  18. package/src/behaviors/BranchLazy.ts +9 -9
  19. package/src/behaviors/Const.test.ts +4 -4
  20. package/src/behaviors/Const.ts +5 -5
  21. package/src/behaviors/Deadline._main.test.ts +4 -4
  22. package/src/behaviors/Deadline._value.test.ts +4 -4
  23. package/src/behaviors/Deadline.ts +8 -8
  24. package/src/behaviors/Deferred.test.ts +6 -6
  25. package/src/behaviors/Deferred.ts +8 -8
  26. package/src/behaviors/Detached.test.ts +4 -4
  27. package/src/behaviors/Detached.ts +4 -4
  28. package/src/behaviors/Dirty.test.ts +4 -4
  29. package/src/behaviors/Dirty.ts +9 -9
  30. package/src/behaviors/Loading.test.ts +5 -5
  31. package/src/behaviors/Loading.ts +7 -7
  32. package/src/behaviors/Lock.test.ts +6 -6
  33. package/src/behaviors/Lock.ts +7 -7
  34. package/src/behaviors/Memo.test.ts +4 -4
  35. package/src/behaviors/Memo.ts +5 -5
  36. package/src/behaviors/OnlyChanged.test.ts +4 -4
  37. package/src/behaviors/OnlyChanged.ts +4 -4
  38. package/src/behaviors/Part.test.ts +5 -5
  39. package/src/behaviors/Part.ts +10 -14
  40. package/src/behaviors/Path._main.test.ts +3 -3
  41. package/src/behaviors/Path.index.test.ts +3 -3
  42. package/src/behaviors/Path.nested.test.ts +3 -3
  43. package/src/behaviors/Path.ts +8 -12
  44. package/src/behaviors/Polling.test.ts +4 -4
  45. package/src/behaviors/Polling.ts +5 -5
  46. package/src/behaviors/Shot._main.test.ts +5 -5
  47. package/src/behaviors/Shot._onlyChanged.test.ts +6 -6
  48. package/src/behaviors/Shot.ts +8 -8
  49. package/src/behaviors/Task.ts +7 -7
  50. package/src/behaviors/Tick.test.ts +5 -5
  51. package/src/behaviors/Tick.ts +5 -5
  52. package/src/boolean/And.test.ts +5 -5
  53. package/src/boolean/And.ts +7 -7
  54. package/src/boolean/Bool.test.ts +3 -3
  55. package/src/boolean/Bool.ts +6 -6
  56. package/src/boolean/Not.test.ts +4 -4
  57. package/src/boolean/Not.ts +4 -4
  58. package/src/boolean/Or.test.ts +5 -5
  59. package/src/boolean/Or.ts +7 -7
  60. package/src/formats/FromJson.test.ts +4 -4
  61. package/src/formats/FromJson.ts +5 -5
  62. package/src/formats/ToJson.test.ts +4 -4
  63. package/src/formats/ToJson.ts +5 -5
  64. package/src/lists/First.test.ts +3 -3
  65. package/src/lists/First.ts +7 -7
  66. package/src/navigation/Router._main.test.ts +9 -9
  67. package/src/navigation/Router._nested.test.ts +20 -20
  68. package/src/navigation/Router.ts +23 -23
  69. package/src/strings/Concatenated.test.ts +5 -5
  70. package/src/strings/Concatenated.ts +9 -9
  71. package/src/strings/Template._main.test.ts +11 -11
  72. package/src/strings/Template._place.test.ts +4 -4
  73. package/src/strings/Template.ts +19 -19
  74. package/src/structures/HashTable.test.ts +4 -4
  75. package/src/structures/HashTable.ts +5 -5
  76. package/src/structures/Record._main.test.ts +6 -6
  77. package/src/structures/Record.concatenated.test.ts +10 -10
  78. package/src/structures/Record.nested.test.ts +9 -9
  79. package/src/structures/RecordOf.ts +8 -8
  80. package/src/system/RegexpMatch._group.test.ts +5 -5
  81. package/src/system/RegexpMatch._main.test.ts +5 -5
  82. package/src/system/RegexpMatch.ts +9 -9
  83. package/src/system/RegexpMatched.test.ts +4 -4
  84. package/src/system/RegexpMatched.ts +8 -8
  85. package/src/system/RegexpReplaced.test.ts +4 -4
  86. package/src/system/RegexpReplaced.ts +8 -8
  87. package/src/system/Set.test.ts +4 -4
  88. package/src/system/Set.ts +7 -7
  89. package/docs/assets/js/components/linkDynamic.mjs +0 -14
  90. package/docs/assets/js/components/linkReloadable.mjs +0 -17
  91. package/docs/assets/js/components.mjs +0 -2
  92. package/docs/assets/js/index.mjs +0 -271
@@ -1 +1 @@
1
- {"version":3,"file":"silentium-components.js","sources":["../src/behaviors/Branch.ts","../src/behaviors/BranchLazy.ts","../src/behaviors/Const.ts","../src/behaviors/Deadline.ts","../src/behaviors/Deferred.ts","../src/behaviors/Detached.ts","../src/behaviors/Dirty.ts","../src/behaviors/Loading.ts","../src/behaviors/Lock.ts","../src/behaviors/Memo.ts","../src/behaviors/OnlyChanged.ts","../src/behaviors/Part.ts","../src/behaviors/Path.ts","../src/behaviors/Polling.ts","../src/behaviors/Shot.ts","../src/behaviors/Task.ts","../src/behaviors/Tick.ts","../src/structures/HashTable.ts","../src/structures/RecordOf.ts","../src/strings/Concatenated.ts","../src/strings/Template.ts","../src/system/RegexpMatched.ts","../src/system/RegexpReplaced.ts","../src/system/RegexpMatch.ts","../src/system/Set.ts","../src/navigation/Router.ts","../src/boolean/And.ts","../src/boolean/Or.ts","../src/boolean/Not.ts","../src/boolean/Bool.ts","../src/formats/FromJson.ts","../src/formats/ToJson.ts","../src/lists/First.ts"],"sourcesContent":["import { EventType, primitive } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/branch\n */\nexport const branch = <Then, Else>(\n conditionSrc: EventType<boolean>,\n leftSrc: EventType<Then>,\n rightSrc?: EventType<Else>,\n): EventType<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 { EventType, DestructorType, ConstructorType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/branch\n */\nexport const branchLazy = <Then, Else>(\n conditionSrc: EventType<boolean>,\n leftSrc: ConstructorType<[], EventType<Then>>,\n rightSrc?: ConstructorType<[], EventType<Else>>,\n): EventType<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: EventType<Then | Else> | null = null;\n if (v) {\n instance = leftSrc();\n } else if (rightSrc) {\n instance = rightSrc();\n }\n if (instance) {\n destructor = instance(u);\n }\n });\n\n return () => {\n destructor?.();\n };\n };\n};\n","import { EventType } from \"silentium\";\n\nexport const constant = <T>(\n permanentValue: T,\n triggerSrc: EventType,\n): EventType<T> => {\n return (u) => {\n triggerSrc(() => {\n u(permanentValue);\n });\n };\n};\n","import { EventType, filtered, shared, EventUserType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport const deadline = <T>(\n error: EventUserType<Error>,\n baseSrc: EventType<T>,\n timeoutSrc: EventType<number>,\n): EventType<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.event, () => !timeoutReached);\n f(u);\n\n s.event(() => {\n timeoutReached = true;\n });\n });\n };\n};\n","import { EventType, isFilled, primitive } from \"silentium\";\n\n/**\n * Defer one source after another, gives values of baseSrc only when triggerSrc responds\n * https://silentium-lab.github.io/silentium-components/#/behaviors/deferred\n */\nexport const deferred = <T>(\n baseSrc: EventType<T>,\n triggerSrc: EventType<unknown>,\n): EventType<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 { EventType, isFilled, primitive } from \"silentium\";\n\nexport const detached = <T>(baseSrc: EventType<T>): EventType<T> => {\n return function Detached(user) {\n const v = primitive(baseSrc).primitive();\n if (isFilled(v)) {\n user(v);\n }\n };\n};\n","import { all, applied, EventType, late, SourceType } from \"silentium\";\n\n/**\n * Takes source and remember it first value\n * returns new record, what will contain only fields what was changed\n * https://silentium-lab.github.io/silentium-components/#/behaviors/dirty\n */\nexport const dirty = <T>(\n baseEntitySource: EventType<T>,\n alwaysKeep: string[] = [],\n excludeKeys: string[] = [],\n cloneFn?: (v: T) => T,\n): SourceType<T> => {\n const comparingSrc = late<T>();\n\n if (cloneFn === undefined) {\n cloneFn = (value) => JSON.parse(JSON.stringify(value));\n }\n\n return {\n event: (u) => {\n const comparingDetached = applied(comparingSrc.event, cloneFn);\n\n all(\n comparingDetached,\n baseEntitySource,\n )(([comparing, base]) => {\n if (!comparing) {\n return;\n }\n\n 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 use: (v) => {\n comparingSrc.use(v);\n },\n };\n};\n","import { EventType } from \"silentium\";\n\n/**\n * Representation of loading process\n * first informatin source begins loading\n * second information source stops loading\n * https://silentium-lab.github.io/silentium-components/#/behaviors/loading\n */\nexport const loading = (\n loadingStartSrc: EventType<unknown>,\n loadingFinishSrc: EventType<unknown>,\n): EventType<boolean> => {\n return (u) => {\n loadingStartSrc(() => u(true));\n loadingFinishSrc(() => u(false));\n };\n};\n","import { EventType, filtered } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/lock\n */\nexport const lock = <T>(\n baseSrc: EventType<T>,\n lockSrc: EventType<boolean>,\n): EventType<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 { EventType } from \"silentium\";\n\n/**\n * Didn't respond if new value of baseSrc equals to old value\n * https://silentium-lab.github.io/silentium-components/#/behaviors/memo\n */\nexport const memo = <T>(baseSrc: EventType<T>): EventType<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 { EventType } from \"silentium\";\n\n/**\n * Represents source what was changed at least once\n * https://silentium-lab.github.io/silentium-components/#/behaviors/only-changed\n */\nexport const onlyChanged = <T>(baseSrc: EventType<T>): EventType<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, EventType, isFilled, primitive, SourceType } from \"silentium\";\n\n/**\n * Return source of record path\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport 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: EventType<K>,\n): SourceType<R> => {\n const baseSync = primitive(baseSrc.event);\n const keySync = primitive(keySrc);\n return {\n event: (u) => {\n all(\n baseSrc.event,\n keySrc,\n )(([base, key]) => {\n const keyChunks = key.split(\".\");\n let value: unknown = base;\n keyChunks.forEach((keyChunk) => {\n value = (value as Record<string, unknown>)[keyChunk];\n });\n\n if (value !== undefined && value !== base) {\n u(value as R);\n }\n });\n },\n use: (value: R) => {\n const key = keySync.primitive();\n if (isFilled(key)) {\n baseSrc.use({\n ...baseSync.primitive(),\n [key]: value,\n } as T);\n }\n },\n };\n};\n","import { all, EventType } from \"silentium\";\n\n/**\n * Return source of record path\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport const path = <\n R,\n T extends Record<string, unknown> | Array<unknown> = any,\n K extends string = any,\n>(\n baseSrc: EventType<T>,\n keySrc: EventType<K>,\n): EventType<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 { EventType } from \"silentium\";\n\nexport const polling = <T>(\n baseSrc: EventType<T>,\n triggerSrc: EventType<T>,\n): EventType<T> => {\n return (u) => {\n triggerSrc(() => {\n baseSrc(u);\n });\n };\n};\n","import { EventType, isFilled, primitive } from \"silentium\";\n\n/**\n * Helps to represent only last fresh value of some source, refreshing controls by shotSrc\n * https://silentium-lab.github.io/silentium-components/#/behaviors/shot\n */\nexport const shot = <T>(\n targetSrc: EventType<T>,\n triggerSrc: EventType,\n): EventType<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 { EventType, executorApplied } from \"silentium\";\n\nexport const task = <T>(\n baseSrc: EventType<T>,\n delay: number = 0,\n): EventType<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 { EventType } from \"silentium\";\n\n/**\n * Accumulates the last value of the source and returns one result once per tick\n * https://silentium-lab.github.io/silentium-components/#/behaviors/tick\n */\nexport const tick = <T>(baseSrc: EventType<T>): EventType<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 { EventType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/structures/hash-table\n */\nexport const hashTable = <T>(\n baseSrc: EventType<[string, unknown]>,\n): EventType<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, EventType } from \"silentium\";\n\ntype UnInformation<T> = T extends EventType<infer U> ? U : never;\n\n/**\n * Returns record of data from record of sources\n * https://silentium-lab.github.io/silentium-components/#/structures/record\n */\nexport const recordOf = <T extends EventType>(\n recordSrc: Record<string, T>,\n): EventType<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, EventType, of } from \"silentium\";\n\n/**\n * Join sources of strings to one source\n * https://silentium-lab.github.io/silentium-components/#/string/concatenated\n */\nexport const concatenated = (\n sources: EventType<string>[],\n joinPartSrc: EventType<string> = of(\"\"),\n): EventType<string> => {\n return (u) => {\n all(\n joinPartSrc,\n ...sources,\n )(([joinPart, ...strings]) => {\n u(strings.join(joinPart));\n });\n };\n};\n","import {\n all,\n applied,\n EventType,\n destructor,\n DestructorType,\n of,\n} from \"silentium\";\nimport { recordOf } from \"../structures\";\n\nexport const template = (\n theSrc: EventType<string> = of(\"\"),\n placesSrc: EventType<Record<string, unknown>> = of({}),\n) => {\n let placesCounter = 0;\n const vars: Record<string, EventType> = {\n $TPL: of(\"$TPL\"),\n };\n const destructors: DestructorType[] = [];\n return {\n value: <EventType<string>>((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: EventType<string>) => {\n const varName = `$var${placesCounter}`;\n placesCounter += 1;\n vars[varName] = destructor(src, (d: DestructorType) => {\n destructors.push(d);\n }).value;\n return varName;\n },\n destroy() {\n destructors.forEach((d) => d());\n },\n };\n};\n","import { all, EventType, of } from \"silentium\";\n\n/**\n * Boolean source what checks what string matches pattern\n * https://silentium-lab.github.io/silentium-components/#/system/regexp-matched\n */\nexport const regexpMatched = (\n patternSrc: EventType<string>,\n valueSrc: EventType<string>,\n flagsSrc: EventType<string> = of(\"\"),\n): EventType<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, EventType, of } from \"silentium\";\n\n/**\n * Returns string replaced by regular expression pattern\n * https://silentium-lab.github.io/silentium-components/#/system/regexp-replaced\n */\nexport const regexpReplaced = (\n valueSrc: EventType<string>,\n patternSrc: EventType<string>,\n replaceValueSrc: EventType<string>,\n flagsSrc: EventType<string> = of(\"\"),\n): EventType<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, EventType, 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: EventType<string>,\n valueSrc: EventType<string>,\n flagsSrc: EventType<string> = of(\"\"),\n): EventType<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, EventType } from \"silentium\";\n\n/**\n * Ability to mutate some object, helpful when integrate to procedure systems\n * https://silentium-lab.github.io/silentium-components/#/system/set\n */\nexport const set = <T extends Record<string, unknown>>(\n baseSrc: EventType<T>,\n keySrc: EventType<string>,\n valueSrc: EventType<unknown>,\n): EventType<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 {\n all,\n applied,\n EventType,\n destructor,\n DestructorType,\n of,\n ConstructorType,\n} from \"silentium\";\nimport { regexpMatched } from \"../system\";\nimport { branchLazy } from \"../behaviors\";\n\nexport interface Route<T> {\n pattern: string;\n patternFlags?: string;\n template: ConstructorType<[], EventType<T>>;\n}\n\nconst emptySrc = () => of(false);\n\n/**\n * Router component what will return template if url matches pattern\n * https://silentium-lab.github.io/silentium-components/#/navigation/router\n */\nexport const router = <T = \"string\">(\n urlSrc: EventType<string>,\n routesSrc: EventType<Route<T>[]>,\n defaultSrc: ConstructorType<[], EventType<T>>,\n): EventType<T> => {\n return (u) => {\n const destructors: DestructorType[] = [];\n const destroyAllData = () => {\n destructors.forEach((d) => d());\n destructors.length = 0;\n };\n all(\n routesSrc,\n urlSrc,\n )(([routes, url]) => {\n destroyAllData();\n const instance = all(\n defaultSrc(),\n all(\n ...routes.map(\n (r) =>\n destructor(\n branchLazy(\n regexpMatched(\n of(r.pattern),\n of(url),\n r.patternFlags ? of(r.patternFlags) : undefined,\n ),\n r.template,\n emptySrc,\n ),\n (d: DestructorType) => destructors.push(d),\n ).value,\n ),\n ),\n );\n\n // Return first not false or default\n applied(instance, (r) => {\n const firstReal = r[1].find((r) => r !== false);\n\n if (firstReal) {\n return firstReal as T;\n }\n\n return r[0];\n })(u);\n });\n\n return destroyAllData;\n };\n};\n","import { all, EventType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/and\n */\nexport const and = (\n oneSrc: EventType<boolean>,\n twoSrc: EventType<boolean>,\n): EventType<boolean> => {\n return (u) => {\n all(\n oneSrc,\n twoSrc,\n )(([one, two]) => {\n u(one && two);\n });\n };\n};\n","import { all, EventType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/or\n */\nexport const or = (\n oneSrc: EventType<boolean>,\n twoSrc: EventType<boolean>,\n): EventType<boolean> => {\n return (u) => {\n all(\n oneSrc,\n twoSrc,\n )(([one, two]) => {\n u(one || two);\n });\n };\n};\n","import { EventType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/not\n */\nexport const not = (baseSrc: EventType<boolean>): EventType<boolean> => {\n return (u) => {\n baseSrc((v) => {\n u(!v);\n });\n };\n};\n","import { applied, EventType } from \"silentium\";\n\n/**\n * Convert any source to boolean source\n * https://silentium-lab.github.io/silentium-components/#/boolean/bool\n */\nexport const bool = (baseSrc: EventType): EventType<boolean> => {\n return (u) => {\n applied(baseSrc, Boolean)(u);\n };\n};\n","import { EventType, EventUserType } from \"silentium\";\n\n/**\n * Represents object from json\n */\nexport const fromJson = <T = Record<string, unknown>>(\n jsonSrc: EventType<string>,\n errorOwner?: EventUserType,\n): EventType<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 { EventType, EventUserType } from \"silentium\";\n\n/**\n * Represents json from object\n */\nexport const toJson = (\n dataSrc: EventType,\n errorOwner?: EventUserType,\n): EventType<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, EventType } from \"silentium\";\n\n/**\n * Represents the first element of an array.\n */\nexport const first = <T extends Array<unknown>>(\n baseSrc: EventType<T>,\n): EventType<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/BranchLazy.ts","../src/behaviors/Const.ts","../src/behaviors/Deadline.ts","../src/behaviors/Deferred.ts","../src/behaviors/Detached.ts","../src/behaviors/Dirty.ts","../src/behaviors/Loading.ts","../src/behaviors/Lock.ts","../src/behaviors/Memo.ts","../src/behaviors/OnlyChanged.ts","../src/behaviors/Part.ts","../src/behaviors/Path.ts","../src/behaviors/Polling.ts","../src/behaviors/Shot.ts","../src/behaviors/Task.ts","../src/behaviors/Tick.ts","../src/structures/HashTable.ts","../src/structures/RecordOf.ts","../src/strings/Concatenated.ts","../src/strings/Template.ts","../src/system/RegexpMatched.ts","../src/system/RegexpReplaced.ts","../src/system/RegexpMatch.ts","../src/system/Set.ts","../src/navigation/Router.ts","../src/boolean/And.ts","../src/boolean/Or.ts","../src/boolean/Not.ts","../src/boolean/Bool.ts","../src/formats/FromJson.ts","../src/formats/ToJson.ts","../src/lists/First.ts"],"sourcesContent":["import { EventType, Primitive } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/branch\n */\nexport function Branch<Then, Else>(\n conditionSrc: EventType<boolean>,\n leftSrc: EventType<Then>,\n rightSrc?: EventType<Else>,\n): EventType<Then | Else> {\n return (user) => {\n const leftSync = Primitive(leftSrc);\n let rightSync: ReturnType<typeof Primitive<Else>>;\n\n if (rightSrc !== undefined) {\n rightSync = Primitive(rightSrc);\n }\n\n conditionSrc((v) => {\n let result: Then | Else | null = null;\n if (v) {\n result = leftSync.primitive();\n } else if (rightSync) {\n result = rightSync.primitive();\n }\n\n if (result !== null) {\n user(result);\n }\n });\n };\n}\n","import { EventType, DestructorType, ConstructorType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/branch\n */\nexport function BranchLazy<Then, Else>(\n conditionSrc: EventType<boolean>,\n leftSrc: ConstructorType<[], EventType<Then>>,\n rightSrc?: ConstructorType<[], EventType<Else>>,\n): EventType<Then | Else> {\n return (user) => {\n let Destructor: DestructorType | void;\n conditionSrc((v) => {\n if (Destructor !== undefined && typeof Destructor === \"function\") {\n Destructor();\n }\n let instance: EventType<Then | Else> | null = null;\n if (v) {\n instance = leftSrc();\n } else if (rightSrc) {\n instance = rightSrc();\n }\n if (instance) {\n Destructor = instance(user);\n }\n });\n\n return () => {\n Destructor?.();\n };\n };\n}\n","import { EventType } from \"silentium\";\n\nexport function Constant<T>(\n permanentValue: T,\n triggerSrc: EventType,\n): EventType<T> {\n return (user) => {\n triggerSrc(() => {\n user(permanentValue);\n });\n };\n}\n","import { EventType, Filtered, Shared, EventUserType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport function Deadline<T>(\n error: EventUserType<Error>,\n baseSrc: EventType<T>,\n timeoutSrc: EventType<number>,\n): EventType<T> {\n return (user) => {\n let timerHead: unknown = null;\n\n const s = Shared(baseSrc, true);\n\n timeoutSrc((timeout) => {\n if (timerHead) {\n clearTimeout(timerHead as number);\n }\n let timeoutReached = false;\n\n timerHead = setTimeout(() => {\n if (timeoutReached) {\n return;\n }\n timeoutReached = true;\n error(new Error(\"Timeout reached in Deadline class\"));\n }, timeout);\n\n const f = Filtered(s.event, () => !timeoutReached);\n f(user);\n\n s.event(() => {\n timeoutReached = true;\n });\n });\n };\n}\n","import { EventType, isFilled, Primitive } from \"silentium\";\n\n/**\n * Defer one source after another, gives values Of baseSrc only when triggerSrc responds\n * https://silentium-lab.github.io/silentium-components/#/behaviors/deferred\n */\nexport function Deferred<T>(\n baseSrc: EventType<T>,\n triggerSrc: EventType<unknown>,\n): EventType<T> {\n return (user) => {\n const baseSync = Primitive(baseSrc);\n triggerSrc(() => {\n const value = baseSync.primitive();\n if (isFilled(value)) {\n user(value);\n }\n });\n };\n}\n","import { EventType, isFilled, Primitive } from \"silentium\";\n\nexport function Detached<T>(baseSrc: EventType<T>): EventType<T> {\n return function Detached(user) {\n const v = Primitive(baseSrc).primitive();\n if (isFilled(v)) {\n user(v);\n }\n };\n}\n","import { All, Applied, EventType, Late, SourceType } from \"silentium\";\n\n/**\n * Takes source and remember it first value\n * returns new record, what will contain only fields what was changed\n * https://silentium-lab.github.io/silentium-components/#/behaviors/dirty\n */\nexport function Dirty<T>(\n baseEntitySource: EventType<T>,\n alwaysKeep: string[] = [],\n excludeKeys: string[] = [],\n cloneFn?: (v: T) => T,\n): SourceType<T> {\n const comparingSrc = Late<T>();\n\n if (cloneFn === undefined) {\n cloneFn = (value) => JSON.parse(JSON.stringify(value));\n }\n\n return {\n event: (user) => {\n const comparingDetached = Applied(comparingSrc.event, cloneFn);\n\n All(\n comparingDetached,\n baseEntitySource,\n )(([comparing, base]) => {\n if (!comparing) {\n return;\n }\n\n user(\n Object.fromEntries(\n Object.entries(comparing).filter(([key, value]) => {\n if (alwaysKeep.includes(key)) {\n return true;\n }\n if (excludeKeys.includes(key)) {\n return false;\n }\n return value !== (base as any)[key];\n }),\n ) as T,\n );\n });\n },\n use: (v) => {\n comparingSrc.use(v);\n },\n };\n}\n","import { EventType } from \"silentium\";\n\n/**\n * Representation Of loading process\n * first informatin source begins loading\n * second information source stops loading\n * https://silentium-lab.github.io/silentium-components/#/behaviors/loading\n */\nexport function Loading(\n loadingStartSrc: EventType<unknown>,\n loadingFinishSrc: EventType<unknown>,\n): EventType<boolean> {\n return (user) => {\n loadingStartSrc(() => user(true));\n loadingFinishSrc(() => user(false));\n };\n}\n","import { EventType, Filtered } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/lock\n */\nexport function Lock<T>(\n baseSrc: EventType<T>,\n lockSrc: EventType<boolean>,\n): EventType<T> {\n return (user) => {\n let locked = false;\n lockSrc((newLock) => {\n locked = newLock;\n });\n const i = Filtered(baseSrc, () => !locked);\n i(user);\n };\n}\n","import { EventType } from \"silentium\";\n\n/**\n * Didn't respond if new value Of baseSrc equals to old value\n * https://silentium-lab.github.io/silentium-components/#/behaviors/memo\n */\nexport function Memo<T>(baseSrc: EventType<T>): EventType<T> {\n return (user) => {\n let lastValue: T | null = null;\n\n baseSrc((v) => {\n if (v !== lastValue) {\n user(v);\n lastValue = v;\n }\n });\n };\n}\n","import { EventType } from \"silentium\";\n\n/**\n * Represents source what was changed at least once\n * https://silentium-lab.github.io/silentium-components/#/behaviors/only-changed\n */\nexport function OnlyChanged<T>(baseSrc: EventType<T>): EventType<T> {\n return (user) => {\n let firstValue = false;\n\n baseSrc((v) => {\n if (firstValue === false) {\n firstValue = true;\n } else {\n user(v);\n }\n });\n };\n}\n","import { All, EventType, isFilled, Primitive, SourceType } from \"silentium\";\n\n/**\n * Return source Of record path\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport function Part<R, T extends object | Array<any>, K extends string = any>(\n baseSrc: SourceType<T>,\n keySrc: EventType<K>,\n): SourceType<R> {\n const baseSync = Primitive(baseSrc.event);\n const keySync = Primitive(keySrc);\n return {\n event: (user) => {\n All(\n baseSrc.event,\n keySrc,\n )(([base, key]) => {\n const keyChunks = key.split(\".\");\n let value: unknown = base;\n keyChunks.forEach((keyChunk) => {\n value = (value as Record<string, unknown>)[keyChunk];\n });\n\n if (value !== undefined && value !== base) {\n user(value as R);\n }\n });\n },\n use: (value: R) => {\n const key = keySync.primitive();\n if (isFilled(key)) {\n baseSrc.use({\n ...baseSync.primitive(),\n [key]: value,\n } as T);\n }\n },\n };\n}\n","import { All, EventType } from \"silentium\";\n\n/**\n * Return source Of record path\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport function Path<R, T extends object | Array<any>, K extends string = any>(\n baseSrc: EventType<T>,\n keySrc: EventType<K>,\n): EventType<R> {\n return (user) => {\n All(\n baseSrc,\n keySrc,\n )(([base, key]) => {\n const keyChunks = key.split(\".\");\n let value: unknown = base;\n keyChunks.forEach((keyChunk) => {\n value = (value as Record<string, unknown>)[keyChunk];\n });\n\n if (value !== undefined && value !== base) {\n user(value as R);\n }\n });\n };\n}\n","import { EventType } from \"silentium\";\n\nexport function Polling<T>(\n baseSrc: EventType<T>,\n triggerSrc: EventType<T>,\n): EventType<T> {\n return (user) => {\n triggerSrc(() => {\n baseSrc(user);\n });\n };\n}\n","import { EventType, isFilled, Primitive } from \"silentium\";\n\n/**\n * Helps to represent only last fresh value Of some source, refreshing controls by shotSrc\n * https://silentium-lab.github.io/silentium-components/#/behaviors/shot\n */\nexport function Shot<T>(\n targetSrc: EventType<T>,\n triggerSrc: EventType,\n): EventType<T> {\n return (user) => {\n const targetSync = Primitive(targetSrc);\n\n triggerSrc(() => {\n const value = targetSync.primitive();\n if (isFilled(value)) {\n user(value);\n }\n });\n };\n}\n","import { EventType, ExecutorApplied } from \"silentium\";\n\nexport function Task<T>(\n baseSrc: EventType<T>,\n delay: number = 0,\n): EventType<T> {\n return (user) => {\n let prevTimer: unknown | null = null;\n ExecutorApplied(baseSrc, (fn) => {\n return (v) => {\n if (prevTimer) {\n clearTimeout(prevTimer as number);\n }\n prevTimer = setTimeout(() => {\n fn(v);\n }, delay);\n };\n })(user);\n };\n}\n","import { EventType } from \"silentium\";\n\n/**\n * Accumulates the last value Of the source and returns one result once per tick\n * https://silentium-lab.github.io/silentium-components/#/behaviors/tick\n */\nexport function Tick<T>(baseSrc: EventType<T>): EventType<T> {\n return (user) => {\n let microtaskScheduled = false;\n let lastValue: T | null = null;\n\n const scheduleMicrotask = () => {\n microtaskScheduled = true;\n queueMicrotask(() => {\n microtaskScheduled = false;\n if (lastValue !== null) {\n user(lastValue);\n lastValue = null;\n }\n });\n };\n\n baseSrc((v) => {\n lastValue = v;\n if (!microtaskScheduled) {\n scheduleMicrotask();\n }\n });\n };\n}\n","import { EventType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/structures/hash-table\n */\nexport function HashTable<T>(\n baseSrc: EventType<[string, unknown]>,\n): EventType<T> {\n return (user) => {\n const record: Record<string, unknown> = {};\n\n baseSrc(([key, value]) => {\n record[key] = value;\n user(record as T);\n });\n };\n}\n","import { All, EventType } from \"silentium\";\n\ntype UnInformation<T> = T extends EventType<infer U> ? U : never;\n\n/**\n * Returns record Of data from record Of sources\n * https://silentium-lab.github.io/silentium-components/#/structures/record\n */\nexport function RecordOf<T extends EventType>(\n recordSrc: Record<string, T>,\n): EventType<Record<string, UnInformation<T>>> {\n return (user) => {\n const keys = Object.keys(recordSrc);\n All(...Object.values(recordSrc))((entries) => {\n const record: Record<string, any> = {};\n entries.forEach((entry, index) => {\n record[keys[index]] = entry;\n });\n user(record);\n });\n };\n}\n","import { All, EventType, Of } from \"silentium\";\n\n/**\n * Join sources Of strings to one source\n * https://silentium-lab.github.io/silentium-components/#/string/concatenated\n */\nexport function Concatenated(\n sources: EventType<string>[],\n joinPartSrc: EventType<string> = Of(\"\"),\n): EventType<string> {\n return (user) => {\n All(\n joinPartSrc,\n ...sources,\n )(([joinPart, ...strings]) => {\n user(strings.join(joinPart));\n });\n };\n}\n","import {\n All,\n Applied,\n EventType,\n Destructor,\n DestructorType,\n Of,\n} from \"silentium\";\nimport { RecordOf } from \"../structures\";\n\nexport function Template(\n theSrc: EventType<string> = Of(\"\"),\n placesSrc: EventType<Record<string, unknown>> = Of({}),\n) {\n let placesCounter = 0;\n const vars: Record<string, EventType> = {\n $TPL: Of(\"$TPL\"),\n };\n const destructors: DestructorType[] = [];\n return {\n value: <EventType<string>>((user) => {\n const varsSrc = RecordOf(vars);\n Applied(All(theSrc, placesSrc, varsSrc), ([base, rules, vars]) => {\n Object.entries(rules).forEach(([ph, val]) => {\n base = base.replaceAll(ph, String(val));\n });\n Object.entries(vars).forEach(([ph, val]) => {\n base = base.replaceAll(ph, String(val));\n });\n\n return base;\n })(user);\n }),\n template: (value: string) => {\n theSrc = Of(value);\n },\n /**\n * Ability to register variable\n * in concrete place Of template\n */\n var: (src: EventType<string>) => {\n const varName = `$var${placesCounter}`;\n placesCounter += 1;\n vars[varName] = Destructor(src, (d: DestructorType) => {\n destructors.push(d);\n }).event;\n return varName;\n },\n destroy() {\n destructors.forEach((d) => d());\n },\n };\n}\n","import { All, EventType, Of } from \"silentium\";\n\n/**\n * Boolean source what checks what string matches pattern\n * https://silentium-lab.github.io/silentium-components/#/system/regexp-matched\n */\nexport function RegexpMatched(\n patternSrc: EventType<string>,\n valueSrc: EventType<string>,\n flagsSrc: EventType<string> = Of(\"\"),\n): EventType<boolean> {\n return (user) => {\n All(\n patternSrc,\n valueSrc,\n flagsSrc,\n )(([pattern, value, flags]) => {\n user(new RegExp(pattern, flags).test(value));\n });\n };\n}\n","import { All, EventType, Of } from \"silentium\";\n\n/**\n * Returns string replaced by regular expression pattern\n * https://silentium-lab.github.io/silentium-components/#/system/regexp-replaced\n */\nexport function RegexpReplaced(\n valueSrc: EventType<string>,\n patternSrc: EventType<string>,\n replaceValueSrc: EventType<string>,\n flagsSrc: EventType<string> = Of(\"\"),\n): EventType<string> {\n return (user) => {\n All(\n patternSrc,\n valueSrc,\n replaceValueSrc,\n flagsSrc,\n )(([pattern, value, replaceValue, flags]) => {\n user(String(value).replace(new RegExp(pattern, flags), replaceValue));\n });\n };\n}\n","import { All, EventType, Of } from \"silentium\";\n\n/**\n * First match Of regexp\n * https://silentium-lab.github.io/silentium-components/#/system/regexp-matched\n */\nexport function RegexpMatch(\n patternSrc: EventType<string>,\n valueSrc: EventType<string>,\n flagsSrc: EventType<string> = Of(\"\"),\n): EventType<string[]> {\n return (user) => {\n All(\n patternSrc,\n valueSrc,\n flagsSrc,\n )(([pattern, value, flags]) => {\n const result = new RegExp(pattern, flags).exec(value);\n user(result ?? []);\n });\n };\n}\n","import { All, EventType } from \"silentium\";\n\n/**\n * Ability to mutate some object, helpful when integrate to procedure systems\n * https://silentium-lab.github.io/silentium-components/#/system/set\n */\nexport function Set<T extends Record<string, unknown>>(\n baseSrc: EventType<T>,\n keySrc: EventType<string>,\n valueSrc: EventType<unknown>,\n): EventType<T> {\n return (user) => {\n All(\n baseSrc,\n keySrc,\n valueSrc,\n )(([base, key, value]) => {\n (base as Record<string, unknown>)[key] = value;\n user(base);\n });\n };\n}\n","import {\n All,\n Applied,\n EventType,\n Destructor,\n DestructorType,\n Of,\n ConstructorType,\n} from \"silentium\";\nimport { RegexpMatched } from \"../system\";\nimport { BranchLazy } from \"../behaviors\";\n\nexport interface Route<T> {\n pattern: string;\n patternFlags?: string;\n template: ConstructorType<[], EventType<T>>;\n}\n\nconst emptySrc = () => Of(false);\n\n/**\n * Router component what will return template if url matches pattern\n * https://silentium-lab.github.io/silentium-components/#/navigation/router\n */\nexport function Router<T = \"string\">(\n urlSrc: EventType<string>,\n routesSrc: EventType<Route<T>[]>,\n defaultSrc: ConstructorType<[], EventType<T>>,\n): EventType<T> {\n return (user) => {\n const destructors: DestructorType[] = [];\n const destroyAllData = () => {\n destructors.forEach((d) => d());\n destructors.length = 0;\n };\n All(\n routesSrc,\n urlSrc,\n )(([routes, url]) => {\n destroyAllData();\n const instance = All(\n defaultSrc(),\n All(\n ...routes.map(\n (r) =>\n Destructor(\n BranchLazy(\n RegexpMatched(\n Of(r.pattern),\n Of(url),\n r.patternFlags ? Of(r.patternFlags) : undefined,\n ),\n r.template,\n emptySrc,\n ),\n (d: DestructorType) => destructors.push(d),\n ).event,\n ),\n ),\n );\n\n // Return first not false or default\n Applied(instance, (r) => {\n const firstReal = r[1].find((r) => r !== false);\n\n if (firstReal) {\n return firstReal as T;\n }\n\n return r[0];\n })(user);\n });\n\n return destroyAllData;\n };\n}\n","import { All, EventType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/and\n */\nexport function And(\n oneSrc: EventType<boolean>,\n twoSrc: EventType<boolean>,\n): EventType<boolean> {\n return (user) => {\n All(\n oneSrc,\n twoSrc,\n )(([one, two]) => {\n user(one && two);\n });\n };\n}\n","import { All, EventType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/or\n */\nexport function Or(\n oneSrc: EventType<boolean>,\n twoSrc: EventType<boolean>,\n): EventType<boolean> {\n return (user) => {\n All(\n oneSrc,\n twoSrc,\n )(([one, two]) => {\n user(one || two);\n });\n };\n}\n","import { EventType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/not\n */\nexport function Not(baseSrc: EventType<boolean>): EventType<boolean> {\n return (user) => {\n baseSrc((v) => {\n user(!v);\n });\n };\n}\n","import { Applied, EventType } from \"silentium\";\n\n/**\n * Convert Any source to boolean source\n * https://silentium-lab.github.io/silentium-components/#/boolean/bool\n */\nexport function Bool(baseSrc: EventType): EventType<boolean> {\n return (user) => {\n Applied(baseSrc, Boolean)(user);\n };\n}\n","import { EventType, EventUserType } from \"silentium\";\n\n/**\n * Represents object from json\n */\nexport function FromJson<T = Record<string, unknown>>(\n jsonSrc: EventType<string>,\n errorOwner?: EventUserType,\n): EventType<T> {\n return (user) => {\n jsonSrc((json) => {\n try {\n user(JSON.parse(json));\n } catch (error) {\n errorOwner?.(new Error(`Failed to parse JSON: ${error}`));\n }\n });\n };\n}\n","import { EventType, EventUserType } from \"silentium\";\n\n/**\n * Represents json from object\n */\nexport function ToJson(\n dataSrc: EventType,\n errorOwner?: EventUserType,\n): EventType<string> {\n return (user) => {\n dataSrc((data: unknown) => {\n try {\n user(JSON.stringify(data));\n } catch {\n errorOwner?.(new Error(\"Failed to convert to JSON\"));\n }\n });\n };\n}\n","import { Applied, EventType } from \"silentium\";\n\n/**\n * Represents the first element Of an array.\n */\nexport function First<T extends Array<unknown>>(\n baseSrc: EventType<T>,\n): EventType<T[0]> {\n return (user) => {\n Applied(baseSrc, (a) => a[0])(user);\n };\n}\n"],"names":["Detached","vars","r"],"mappings":"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"}
@@ -1 +1 @@
1
- !function(e,t){"use strict";const l=(e,t,l)=>i=>{let r;return e((e=>{void 0!==r&&"function"==typeof r&&r();let n=null;e?n=t():l&&(n=l()),n&&(r=n(i))})),()=>{r?.()}},i=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)}))},r=(e,l,i=t.of(""))=>r=>{t.all(e,l,i)((([e,t,l])=>{r(new RegExp(e,l).test(t))}))},n=()=>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 n=t.primitive(l);let o;void 0!==i&&(o=t.primitive(i)),e((e=>{let t=null;e?t=n.primitive():o&&(t=o.primitive()),null!==t&&r(t)}))},e.branchLazy=l,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 n=null;const o=t.shared(l,!0);i((l=>{n&&clearTimeout(n);let i=!1;n=setTimeout((()=>{i||(i=!0,e(new Error("Timeout reached in Deadline class")))}),l);t.filtered(o.event,(()=>!i))(r),o.event((()=>{i=!0}))}))},e.deferred=(e,l)=>i=>{const r=t.primitive(e);l((()=>{const e=r.primitive();t.isFilled(e)&&i(e)}))},e.detached=e=>function(l){const i=t.primitive(e).primitive();t.isFilled(i)&&l(i)},e.dirty=(e,l=[],i=[],r)=>{const n=t.late();return void 0===r&&(r=e=>JSON.parse(JSON.stringify(e))),{event:o=>{const a=t.applied(n.event,r);t.all(a,e)((([e,t])=>{e&&o(Object.fromEntries(Object.entries(e).filter((([e,r])=>!!l.includes(e)||!i.includes(e)&&r!==t[e]))))}))},use:e=>{n.use(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.event),r=t.primitive(l);return{event:i=>{t.all(e.event,l)((([e,t])=>{const l=t.split(".");let r=e;l.forEach((e=>{r=r[e]})),void 0!==r&&r!==e&&i(r)}))},use:l=>{const n=r.primitive();t.isFilled(n)&&e.use({...i.primitive(),[n]: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=i,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=r,e.regexpReplaced=(e,l,i,r=t.of(""))=>n=>{t.all(l,e,i,r)((([e,t,l,i])=>{n(String(t).replace(new RegExp(e,i),l))}))},e.router=(e,i,o)=>a=>{const c=[],s=()=>{c.forEach((e=>e())),c.length=0};return t.all(i,e)((([e,i])=>{s();const p=t.all(o(),t.all(...e.map((e=>t.destructor(l(r(t.of(e.pattern),t.of(i),e.patternFlags?t.of(e.patternFlags):void 0),e.template,n),(e=>c.push(e))).value))));t.applied(p,(e=>{const t=e[1].find((e=>!1!==e));return t||e[0]}))(a)})),s},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(""),l=t.of({}))=>{let r=0;const n={$TPL:t.of("$TPL")},o=[];return{value:r=>{const o=i(n);t.applied(t.all(e,l,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 l=`$var${r}`;return r+=1,n[l]=t.destructor(e,(e=>{o.push(e)})).value,l},destroy(){o.forEach((e=>e()))}}},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(t,e){"use strict";function n(t,e,n){return r=>{let i;return t((t=>{void 0!==i&&"function"==typeof i&&i();let l=null;t?l=e():n&&(l=n()),l&&(i=l(r))})),()=>{i?.()}}}function r(t){return n=>{const r=Object.keys(t);e.All(...Object.values(t))((t=>{const e={};t.forEach(((t,n)=>{e[r[n]]=t})),n(e)}))}}function i(t,n,r=e.Of("")){return i=>{e.All(t,n,r)((([t,e,n])=>{i(new RegExp(t,n).test(e))}))}}const l=()=>e.Of(!1);t.And=function(t,n){return r=>{e.All(t,n)((([t,e])=>{r(t&&e)}))}},t.Bool=function(t){return n=>{e.Applied(t,Boolean)(n)}},t.Branch=function(t,n,r){return i=>{const l=e.Primitive(n);let o;void 0!==r&&(o=e.Primitive(r)),t((t=>{let e=null;t?e=l.primitive():o&&(e=o.primitive()),null!==e&&i(e)}))}},t.BranchLazy=n,t.Concatenated=function(t,n=e.Of("")){return r=>{e.All(n,...t)((([t,...e])=>{r(e.join(t))}))}},t.Constant=function(t,e){return n=>{e((()=>{n(t)}))}},t.Deadline=function(t,n,r){return i=>{let l=null;const o=e.Shared(n,!0);r((n=>{l&&clearTimeout(l);let r=!1;l=setTimeout((()=>{r||(r=!0,t(new Error("Timeout reached in Deadline class")))}),n);e.Filtered(o.event,(()=>!r))(i),o.event((()=>{r=!0}))}))}},t.Deferred=function(t,n){return r=>{const i=e.Primitive(t);n((()=>{const t=i.primitive();e.isFilled(t)&&r(t)}))}},t.Detached=function(t){return function(n){const r=e.Primitive(t).primitive();e.isFilled(r)&&n(r)}},t.Dirty=function(t,n=[],r=[],i){const l=e.Late();return void 0===i&&(i=t=>JSON.parse(JSON.stringify(t))),{event:o=>{const u=e.Applied(l.event,i);e.All(u,t)((([t,e])=>{t&&o(Object.fromEntries(Object.entries(t).filter((([t,i])=>!!n.includes(t)||!r.includes(t)&&i!==e[t]))))}))},use:t=>{l.use(t)}}},t.First=function(t){return n=>{e.Applied(t,(t=>t[0]))(n)}},t.FromJson=function(t,e){return n=>{t((t=>{try{n(JSON.parse(t))}catch(t){e?.(new Error(`Failed to parse JSON: ${t}`))}}))}},t.HashTable=function(t){return e=>{const n={};t((([t,r])=>{n[t]=r,e(n)}))}},t.Loading=function(t,e){return n=>{t((()=>n(!0))),e((()=>n(!1)))}},t.Lock=function(t,n){return r=>{let i=!1;n((t=>{i=t}));e.Filtered(t,(()=>!i))(r)}},t.Memo=function(t){return e=>{let n=null;t((t=>{t!==n&&(e(t),n=t)}))}},t.Not=function(t){return e=>{t((t=>{e(!t)}))}},t.OnlyChanged=function(t){return e=>{let n=!1;t((t=>{!1===n?n=!0:e(t)}))}},t.Or=function(t,n){return r=>{e.All(t,n)((([t,e])=>{r(t||e)}))}},t.Part=function(t,n){const r=e.Primitive(t.event),i=e.Primitive(n);return{event:r=>{e.All(t.event,n)((([t,e])=>{const n=e.split(".");let i=t;n.forEach((t=>{i=i[t]})),void 0!==i&&i!==t&&r(i)}))},use:n=>{const l=i.primitive();e.isFilled(l)&&t.use({...r.primitive(),[l]:n})}}},t.Path=function(t,n){return r=>{e.All(t,n)((([t,e])=>{const n=e.split(".");let i=t;n.forEach((t=>{i=i[t]})),void 0!==i&&i!==t&&r(i)}))}},t.Polling=function(t,e){return n=>{e((()=>{t(n)}))}},t.RecordOf=r,t.RegexpMatch=function(t,n,r=e.Of("")){return i=>{e.All(t,n,r)((([t,e,n])=>{const r=new RegExp(t,n).exec(e);i(r??[])}))}},t.RegexpMatched=i,t.RegexpReplaced=function(t,n,r,i=e.Of("")){return l=>{e.All(n,t,r,i)((([t,e,n,r])=>{l(String(e).replace(new RegExp(t,r),n))}))}},t.Router=function(t,r,o){return u=>{const c=[],s=()=>{c.forEach((t=>t())),c.length=0};return e.All(r,t)((([t,r])=>{s();const f=e.All(o(),e.All(...t.map((t=>e.Destructor(n(i(e.Of(t.pattern),e.Of(r),t.patternFlags?e.Of(t.patternFlags):void 0),t.template,l),(t=>c.push(t))).event))));e.Applied(f,(t=>{const e=t[1].find((t=>!1!==t));return e||t[0]}))(u)})),s}},t.Set=function(t,n,r){return i=>{e.All(t,n,r)((([t,e,n])=>{t[e]=n,i(t)}))}},t.Shot=function(t,n){return r=>{const i=e.Primitive(t);n((()=>{const t=i.primitive();e.isFilled(t)&&r(t)}))}},t.Task=function(t,n=0){return r=>{let i=null;e.ExecutorApplied(t,(t=>e=>{i&&clearTimeout(i),i=setTimeout((()=>{t(e)}),n)}))(r)}},t.Template=function(t=e.Of(""),n=e.Of({})){let i=0;const l={$TPL:e.Of("$TPL")},o=[];return{value:i=>{const o=r(l);e.Applied(e.All(t,n,o),(([t,e,n])=>(Object.entries(e).forEach((([e,n])=>{t=t.replaceAll(e,String(n))})),Object.entries(n).forEach((([e,n])=>{t=t.replaceAll(e,String(n))})),t)))(i)},template:n=>{t=e.Of(n)},var:t=>{const n=`$var${i}`;return i+=1,l[n]=e.Destructor(t,(t=>{o.push(t)})).event,n},destroy(){o.forEach((t=>t()))}}},t.Tick=function(t){return e=>{let n=!1,r=null;t((t=>{r=t,n||(n=!0,queueMicrotask((()=>{n=!1,null!==r&&(e(r),r=null)})))}))}},t.ToJson=function(t,e){return n=>{t((t=>{try{n(JSON.stringify(t))}catch{e?.(new Error("Failed to convert to JSON"))}}))}}}({},silentium);
@@ -1,2 +1,2 @@
1
- import{primitive as e,shared as t,filtered as n,isFilled as r,late as l,applied as o,all as i,executorApplied as c,of as s,destructor as a}from"silentium";const u=(t,n,r)=>l=>{const o=e(n);let i;void 0!==r&&(i=e(r)),t((e=>{let t=null;e?t=o.primitive():i&&(t=i.primitive()),null!==t&&l(t)}))},p=(e,t,n)=>r=>{let l;return e((e=>{void 0!==l&&"function"==typeof l&&l();let o=null;e?o=t():n&&(o=n()),o&&(l=o(r))})),()=>{l?.()}},v=(e,t)=>n=>{t((()=>{n(e)}))},m=(e,r,l)=>o=>{let i=null;const c=t(r,!0);l((t=>{i&&clearTimeout(i);let r=!1;i=setTimeout((()=>{r||(r=!0,e(new Error("Timeout reached in Deadline class")))}),t);n(c.event,(()=>!r))(o),c.event((()=>{r=!0}))}))},f=(t,n)=>l=>{const o=e(t);n((()=>{const e=o.primitive();r(e)&&l(e)}))},d=t=>function(n){const l=e(t).primitive();r(l)&&n(l)},E=(e,t=[],n=[],r)=>{const c=l();return void 0===r&&(r=e=>JSON.parse(JSON.stringify(e))),{event:l=>{const s=o(c.event,r);i(s,e)((([e,r])=>{e&&l(Object.fromEntries(Object.entries(e).filter((([e,l])=>!!t.includes(e)||!n.includes(e)&&l!==r[e]))))}))},use:e=>{c.use(e)}}},h=(e,t)=>n=>{e((()=>n(!0))),t((()=>n(!1)))},O=(e,t)=>r=>{let l=!1;t((e=>{l=e}));n(e,(()=>!l))(r)},g=e=>t=>{let n=null;e((e=>{e!==n&&(t(e),n=e)}))},S=e=>t=>{let n=!1;e((e=>{!1===n?n=!0:t(e)}))},j=(t,n)=>{const l=e(t.event),o=e(n);return{event:e=>{i(t.event,n)((([t,n])=>{const r=n.split(".");let l=t;r.forEach((e=>{l=l[e]})),void 0!==l&&l!==t&&e(l)}))},use:e=>{const n=o.primitive();r(n)&&t.use({...l.primitive(),[n]:e})}}},y=(e,t)=>n=>{i(e,t)((([e,t])=>{const r=t.split(".");let l=e;r.forEach((e=>{l=l[e]})),void 0!==l&&l!==e&&n(l)}))},T=(e,t)=>n=>{t((()=>{e(n)}))},b=(t,n)=>l=>{const o=e(t);n((()=>{const e=o.primitive();r(e)&&l(e)}))},w=(e,t=0)=>n=>{let r=null;c(e,(e=>n=>{r&&clearTimeout(r),r=setTimeout((()=>{e(n)}),t)}))(n)},J=e=>t=>{let n=!1,r=null;e((e=>{r=e,n||(n=!0,queueMicrotask((()=>{n=!1,null!==r&&(t(r),r=null)})))}))},N=e=>t=>{const n={};e((([e,r])=>{n[e]=r,t(n)}))},x=e=>t=>{const n=Object.keys(e);i(...Object.values(e))((e=>{const r={};e.forEach(((e,t)=>{r[n[t]]=e})),t(r)}))},$=(e,t=s(""))=>n=>{i(t,...e)((([e,...t])=>{n(t.join(e))}))},F=(e=s(""),t=s({}))=>{let n=0;const r={$TPL:s("$TPL")},l=[];return{value:n=>{const l=x(r);o(i(e,t,l),(([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,r[t]=a(e,(e=>{l.push(e)})).value,t},destroy(){l.forEach((e=>e()))}}},R=(e,t,n=s(""))=>r=>{i(e,t,n)((([e,t,n])=>{r(new RegExp(e,n).test(t))}))},k=(e,t,n,r=s(""))=>l=>{i(t,e,n,r)((([e,t,n,r])=>{l(String(t).replace(new RegExp(e,r),n))}))},A=(e,t,n=s(""))=>r=>{i(e,t,n)((([e,t,n])=>{const l=new RegExp(e,n).exec(t);r(l??[])}))},L=(e,t,n)=>r=>{i(e,t,n)((([e,t,n])=>{e[t]=n,r(e)}))},P=()=>s(!1),q=(e,t,n)=>r=>{const l=[],c=()=>{l.forEach((e=>e())),l.length=0};return i(t,e)((([e,t])=>{c();const u=i(n(),i(...e.map((e=>a(p(R(s(e.pattern),s(t),e.patternFlags?s(e.patternFlags):void 0),e.template,P),(e=>l.push(e))).value))));o(u,(e=>{const t=e[1].find((e=>!1!==e));return t||e[0]}))(r)})),c},B=(e,t)=>n=>{i(e,t)((([e,t])=>{n(e&&t)}))},D=(e,t)=>n=>{i(e,t)((([e,t])=>{n(e||t)}))},M=e=>t=>{e((e=>{t(!e)}))},z=e=>t=>{o(e,Boolean)(t)},C=(e,t)=>n=>{e((e=>{try{n(JSON.parse(e))}catch(e){t?.(new Error(`Failed to parse JSON: ${e}`))}}))},G=(e,t)=>n=>{e((e=>{try{n(JSON.stringify(e))}catch{t?.(new Error("Failed to convert to JSON"))}}))},H=e=>t=>{o(e,(e=>e[0]))(t)};export{B as and,z as bool,u as branch,p as branchLazy,$ as concatenated,v as constant,m as deadline,f as deferred,d as detached,E as dirty,H as first,C as fromJson,N as hashTable,h as loading,O as lock,g as memo,M as not,S as onlyChanged,D as or,j as part,y as path,T as polling,x as recordOf,A as regexpMatch,R as regexpMatched,k as regexpReplaced,q as router,L as set,b as shot,w as task,F as template,J as tick,G as toJson};
1
+ import{Primitive as t,Shared as n,Filtered as e,isFilled as r,Late as u,Applied as o,All as i,ExecutorApplied as c,Of as l,Destructor as s}from"silentium";function f(n,e,r){return u=>{const o=t(e);let i;void 0!==r&&(i=t(r)),n((t=>{let n=null;t?n=o.primitive():i&&(n=i.primitive()),null!==n&&u(n)}))}}function a(t,n,e){return r=>{let u;return t((t=>{void 0!==u&&"function"==typeof u&&u();let o=null;t?o=n():e&&(o=e()),o&&(u=o(r))})),()=>{u?.()}}}function p(t,n){return e=>{n((()=>{e(t)}))}}function v(t,r,u){return o=>{let i=null;const c=n(r,!0);u((n=>{i&&clearTimeout(i);let r=!1;i=setTimeout((()=>{r||(r=!0,t(new Error("Timeout reached in Deadline class")))}),n);e(c.event,(()=>!r))(o),c.event((()=>{r=!0}))}))}}function m(n,e){return u=>{const o=t(n);e((()=>{const t=o.primitive();r(t)&&u(t)}))}}function d(n){return function(e){const u=t(n).primitive();r(u)&&e(u)}}function E(t,n=[],e=[],r){const c=u();return void 0===r&&(r=t=>JSON.parse(JSON.stringify(t))),{event:u=>{const l=o(c.event,r);i(l,t)((([t,r])=>{t&&u(Object.fromEntries(Object.entries(t).filter((([t,u])=>!!n.includes(t)||!e.includes(t)&&u!==r[t]))))}))},use:t=>{c.use(t)}}}function h(t,n){return e=>{t((()=>e(!0))),n((()=>e(!1)))}}function O(t,n){return r=>{let u=!1;n((t=>{u=t}));e(t,(()=>!u))(r)}}function g(t){return n=>{let e=null;t((t=>{t!==e&&(n(t),e=t)}))}}function S(t){return n=>{let e=!1;t((t=>{!1===e?e=!0:n(t)}))}}function j(n,e){const u=t(n.event),o=t(e);return{event:t=>{i(n.event,e)((([n,e])=>{const r=e.split(".");let u=n;r.forEach((t=>{u=u[t]})),void 0!==u&&u!==n&&t(u)}))},use:t=>{const e=o.primitive();r(e)&&n.use({...u.primitive(),[e]:t})}}}function y(t,n){return e=>{i(t,n)((([t,n])=>{const r=n.split(".");let u=t;r.forEach((t=>{u=u[t]})),void 0!==u&&u!==t&&e(u)}))}}function T(t,n){return e=>{n((()=>{t(e)}))}}function b(n,e){return u=>{const o=t(n);e((()=>{const t=o.primitive();r(t)&&u(t)}))}}function w(t,n=0){return e=>{let r=null;c(t,(t=>e=>{r&&clearTimeout(r),r=setTimeout((()=>{t(e)}),n)}))(e)}}function J(t){return n=>{let e=!1,r=null;t((t=>{r=t,e||(e=!0,queueMicrotask((()=>{e=!1,null!==r&&(n(r),r=null)})))}))}}function N(t){return n=>{const e={};t((([t,r])=>{e[t]=r,n(e)}))}}function x(t){return n=>{const e=Object.keys(t);i(...Object.values(t))((t=>{const r={};t.forEach(((t,n)=>{r[e[n]]=t})),n(r)}))}}function $(t,n=l("")){return e=>{i(n,...t)((([t,...n])=>{e(n.join(t))}))}}function F(t=l(""),n=l({})){let e=0;const r={$TPL:l("$TPL")},u=[];return{value:e=>{const u=x(r);o(i(t,n,u),(([t,n,e])=>(Object.entries(n).forEach((([n,e])=>{t=t.replaceAll(n,String(e))})),Object.entries(e).forEach((([n,e])=>{t=t.replaceAll(n,String(e))})),t)))(e)},template:n=>{t=l(n)},var:t=>{const n=`$var${e}`;return e+=1,r[n]=s(t,(t=>{u.push(t)})).event,n},destroy(){u.forEach((t=>t()))}}}function R(t,n,e=l("")){return r=>{i(t,n,e)((([t,n,e])=>{r(new RegExp(t,e).test(n))}))}}function k(t,n,e,r=l("")){return u=>{i(n,t,e,r)((([t,n,e,r])=>{u(String(n).replace(new RegExp(t,r),e))}))}}function A(t,n,e=l("")){return r=>{i(t,n,e)((([t,n,e])=>{const u=new RegExp(t,e).exec(n);r(u??[])}))}}function L(t,n,e){return r=>{i(t,n,e)((([t,n,e])=>{t[n]=e,r(t)}))}}const P=()=>l(!1);function q(t,n,e){return r=>{const u=[],c=()=>{u.forEach((t=>t())),u.length=0};return i(n,t)((([t,n])=>{c();const f=i(e(),i(...t.map((t=>s(a(R(l(t.pattern),l(n),t.patternFlags?l(t.patternFlags):void 0),t.template,P),(t=>u.push(t))).event))));o(f,(t=>{const n=t[1].find((t=>!1!==t));return n||t[0]}))(r)})),c}}function B(t,n){return e=>{i(t,n)((([t,n])=>{e(t&&n)}))}}function D(t,n){return e=>{i(t,n)((([t,n])=>{e(t||n)}))}}function M(t){return n=>{t((t=>{n(!t)}))}}function z(t){return n=>{o(t,Boolean)(n)}}function C(t,n){return e=>{t((t=>{try{e(JSON.parse(t))}catch(t){n?.(new Error(`Failed to parse JSON: ${t}`))}}))}}function G(t,n){return e=>{t((t=>{try{e(JSON.stringify(t))}catch{n?.(new Error("Failed to convert to JSON"))}}))}}function H(t){return n=>{o(t,(t=>t[0]))(n)}}export{B as And,z as Bool,f as Branch,a as BranchLazy,$ as Concatenated,p as Constant,v as Deadline,m as Deferred,d as Detached,E as Dirty,H as First,C as FromJson,N as HashTable,h as Loading,O as Lock,g as Memo,M as Not,S as OnlyChanged,D as Or,j as Part,y as Path,T as Polling,x as RecordOf,A as RegexpMatch,R as RegexpMatched,k as RegexpReplaced,q as Router,L as Set,b as Shot,w as Task,F as Template,J as Tick,G 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/BranchLazy.ts","../src/behaviors/Const.ts","../src/behaviors/Deadline.ts","../src/behaviors/Deferred.ts","../src/behaviors/Detached.ts","../src/behaviors/Dirty.ts","../src/behaviors/Loading.ts","../src/behaviors/Lock.ts","../src/behaviors/Memo.ts","../src/behaviors/OnlyChanged.ts","../src/behaviors/Part.ts","../src/behaviors/Path.ts","../src/behaviors/Polling.ts","../src/behaviors/Shot.ts","../src/behaviors/Task.ts","../src/behaviors/Tick.ts","../src/structures/HashTable.ts","../src/structures/RecordOf.ts","../src/strings/Concatenated.ts","../src/strings/Template.ts","../src/system/RegexpMatched.ts","../src/system/RegexpReplaced.ts","../src/system/RegexpMatch.ts","../src/system/Set.ts","../src/navigation/Router.ts","../src/boolean/And.ts","../src/boolean/Or.ts","../src/boolean/Not.ts","../src/boolean/Bool.ts","../src/formats/FromJson.ts","../src/formats/ToJson.ts","../src/lists/First.ts"],"sourcesContent":["import { EventType, primitive } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/branch\n */\nexport const branch = <Then, Else>(\n conditionSrc: EventType<boolean>,\n leftSrc: EventType<Then>,\n rightSrc?: EventType<Else>,\n): EventType<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 { EventType, DestructorType, ConstructorType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/branch\n */\nexport const branchLazy = <Then, Else>(\n conditionSrc: EventType<boolean>,\n leftSrc: ConstructorType<[], EventType<Then>>,\n rightSrc?: ConstructorType<[], EventType<Else>>,\n): EventType<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: EventType<Then | Else> | null = null;\n if (v) {\n instance = leftSrc();\n } else if (rightSrc) {\n instance = rightSrc();\n }\n if (instance) {\n destructor = instance(u);\n }\n });\n\n return () => {\n destructor?.();\n };\n };\n};\n","import { EventType } from \"silentium\";\n\nexport const constant = <T>(\n permanentValue: T,\n triggerSrc: EventType,\n): EventType<T> => {\n return (u) => {\n triggerSrc(() => {\n u(permanentValue);\n });\n };\n};\n","import { EventType, filtered, shared, EventUserType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport const deadline = <T>(\n error: EventUserType<Error>,\n baseSrc: EventType<T>,\n timeoutSrc: EventType<number>,\n): EventType<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.event, () => !timeoutReached);\n f(u);\n\n s.event(() => {\n timeoutReached = true;\n });\n });\n };\n};\n","import { EventType, isFilled, primitive } from \"silentium\";\n\n/**\n * Defer one source after another, gives values of baseSrc only when triggerSrc responds\n * https://silentium-lab.github.io/silentium-components/#/behaviors/deferred\n */\nexport const deferred = <T>(\n baseSrc: EventType<T>,\n triggerSrc: EventType<unknown>,\n): EventType<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 { EventType, isFilled, primitive } from \"silentium\";\n\nexport const detached = <T>(baseSrc: EventType<T>): EventType<T> => {\n return function Detached(user) {\n const v = primitive(baseSrc).primitive();\n if (isFilled(v)) {\n user(v);\n }\n };\n};\n","import { all, applied, EventType, late, SourceType } from \"silentium\";\n\n/**\n * Takes source and remember it first value\n * returns new record, what will contain only fields what was changed\n * https://silentium-lab.github.io/silentium-components/#/behaviors/dirty\n */\nexport const dirty = <T>(\n baseEntitySource: EventType<T>,\n alwaysKeep: string[] = [],\n excludeKeys: string[] = [],\n cloneFn?: (v: T) => T,\n): SourceType<T> => {\n const comparingSrc = late<T>();\n\n if (cloneFn === undefined) {\n cloneFn = (value) => JSON.parse(JSON.stringify(value));\n }\n\n return {\n event: (u) => {\n const comparingDetached = applied(comparingSrc.event, cloneFn);\n\n all(\n comparingDetached,\n baseEntitySource,\n )(([comparing, base]) => {\n if (!comparing) {\n return;\n }\n\n 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 use: (v) => {\n comparingSrc.use(v);\n },\n };\n};\n","import { EventType } from \"silentium\";\n\n/**\n * Representation of loading process\n * first informatin source begins loading\n * second information source stops loading\n * https://silentium-lab.github.io/silentium-components/#/behaviors/loading\n */\nexport const loading = (\n loadingStartSrc: EventType<unknown>,\n loadingFinishSrc: EventType<unknown>,\n): EventType<boolean> => {\n return (u) => {\n loadingStartSrc(() => u(true));\n loadingFinishSrc(() => u(false));\n };\n};\n","import { EventType, filtered } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/lock\n */\nexport const lock = <T>(\n baseSrc: EventType<T>,\n lockSrc: EventType<boolean>,\n): EventType<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 { EventType } from \"silentium\";\n\n/**\n * Didn't respond if new value of baseSrc equals to old value\n * https://silentium-lab.github.io/silentium-components/#/behaviors/memo\n */\nexport const memo = <T>(baseSrc: EventType<T>): EventType<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 { EventType } from \"silentium\";\n\n/**\n * Represents source what was changed at least once\n * https://silentium-lab.github.io/silentium-components/#/behaviors/only-changed\n */\nexport const onlyChanged = <T>(baseSrc: EventType<T>): EventType<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, EventType, isFilled, primitive, SourceType } from \"silentium\";\n\n/**\n * Return source of record path\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport 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: EventType<K>,\n): SourceType<R> => {\n const baseSync = primitive(baseSrc.event);\n const keySync = primitive(keySrc);\n return {\n event: (u) => {\n all(\n baseSrc.event,\n keySrc,\n )(([base, key]) => {\n const keyChunks = key.split(\".\");\n let value: unknown = base;\n keyChunks.forEach((keyChunk) => {\n value = (value as Record<string, unknown>)[keyChunk];\n });\n\n if (value !== undefined && value !== base) {\n u(value as R);\n }\n });\n },\n use: (value: R) => {\n const key = keySync.primitive();\n if (isFilled(key)) {\n baseSrc.use({\n ...baseSync.primitive(),\n [key]: value,\n } as T);\n }\n },\n };\n};\n","import { all, EventType } from \"silentium\";\n\n/**\n * Return source of record path\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport const path = <\n R,\n T extends Record<string, unknown> | Array<unknown> = any,\n K extends string = any,\n>(\n baseSrc: EventType<T>,\n keySrc: EventType<K>,\n): EventType<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 { EventType } from \"silentium\";\n\nexport const polling = <T>(\n baseSrc: EventType<T>,\n triggerSrc: EventType<T>,\n): EventType<T> => {\n return (u) => {\n triggerSrc(() => {\n baseSrc(u);\n });\n };\n};\n","import { EventType, isFilled, primitive } from \"silentium\";\n\n/**\n * Helps to represent only last fresh value of some source, refreshing controls by shotSrc\n * https://silentium-lab.github.io/silentium-components/#/behaviors/shot\n */\nexport const shot = <T>(\n targetSrc: EventType<T>,\n triggerSrc: EventType,\n): EventType<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 { EventType, executorApplied } from \"silentium\";\n\nexport const task = <T>(\n baseSrc: EventType<T>,\n delay: number = 0,\n): EventType<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 { EventType } from \"silentium\";\n\n/**\n * Accumulates the last value of the source and returns one result once per tick\n * https://silentium-lab.github.io/silentium-components/#/behaviors/tick\n */\nexport const tick = <T>(baseSrc: EventType<T>): EventType<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 { EventType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/structures/hash-table\n */\nexport const hashTable = <T>(\n baseSrc: EventType<[string, unknown]>,\n): EventType<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, EventType } from \"silentium\";\n\ntype UnInformation<T> = T extends EventType<infer U> ? U : never;\n\n/**\n * Returns record of data from record of sources\n * https://silentium-lab.github.io/silentium-components/#/structures/record\n */\nexport const recordOf = <T extends EventType>(\n recordSrc: Record<string, T>,\n): EventType<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, EventType, of } from \"silentium\";\n\n/**\n * Join sources of strings to one source\n * https://silentium-lab.github.io/silentium-components/#/string/concatenated\n */\nexport const concatenated = (\n sources: EventType<string>[],\n joinPartSrc: EventType<string> = of(\"\"),\n): EventType<string> => {\n return (u) => {\n all(\n joinPartSrc,\n ...sources,\n )(([joinPart, ...strings]) => {\n u(strings.join(joinPart));\n });\n };\n};\n","import {\n all,\n applied,\n EventType,\n destructor,\n DestructorType,\n of,\n} from \"silentium\";\nimport { recordOf } from \"../structures\";\n\nexport const template = (\n theSrc: EventType<string> = of(\"\"),\n placesSrc: EventType<Record<string, unknown>> = of({}),\n) => {\n let placesCounter = 0;\n const vars: Record<string, EventType> = {\n $TPL: of(\"$TPL\"),\n };\n const destructors: DestructorType[] = [];\n return {\n value: <EventType<string>>((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: EventType<string>) => {\n const varName = `$var${placesCounter}`;\n placesCounter += 1;\n vars[varName] = destructor(src, (d: DestructorType) => {\n destructors.push(d);\n }).value;\n return varName;\n },\n destroy() {\n destructors.forEach((d) => d());\n },\n };\n};\n","import { all, EventType, of } from \"silentium\";\n\n/**\n * Boolean source what checks what string matches pattern\n * https://silentium-lab.github.io/silentium-components/#/system/regexp-matched\n */\nexport const regexpMatched = (\n patternSrc: EventType<string>,\n valueSrc: EventType<string>,\n flagsSrc: EventType<string> = of(\"\"),\n): EventType<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, EventType, of } from \"silentium\";\n\n/**\n * Returns string replaced by regular expression pattern\n * https://silentium-lab.github.io/silentium-components/#/system/regexp-replaced\n */\nexport const regexpReplaced = (\n valueSrc: EventType<string>,\n patternSrc: EventType<string>,\n replaceValueSrc: EventType<string>,\n flagsSrc: EventType<string> = of(\"\"),\n): EventType<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, EventType, 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: EventType<string>,\n valueSrc: EventType<string>,\n flagsSrc: EventType<string> = of(\"\"),\n): EventType<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, EventType } from \"silentium\";\n\n/**\n * Ability to mutate some object, helpful when integrate to procedure systems\n * https://silentium-lab.github.io/silentium-components/#/system/set\n */\nexport const set = <T extends Record<string, unknown>>(\n baseSrc: EventType<T>,\n keySrc: EventType<string>,\n valueSrc: EventType<unknown>,\n): EventType<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 {\n all,\n applied,\n EventType,\n destructor,\n DestructorType,\n of,\n ConstructorType,\n} from \"silentium\";\nimport { regexpMatched } from \"../system\";\nimport { branchLazy } from \"../behaviors\";\n\nexport interface Route<T> {\n pattern: string;\n patternFlags?: string;\n template: ConstructorType<[], EventType<T>>;\n}\n\nconst emptySrc = () => of(false);\n\n/**\n * Router component what will return template if url matches pattern\n * https://silentium-lab.github.io/silentium-components/#/navigation/router\n */\nexport const router = <T = \"string\">(\n urlSrc: EventType<string>,\n routesSrc: EventType<Route<T>[]>,\n defaultSrc: ConstructorType<[], EventType<T>>,\n): EventType<T> => {\n return (u) => {\n const destructors: DestructorType[] = [];\n const destroyAllData = () => {\n destructors.forEach((d) => d());\n destructors.length = 0;\n };\n all(\n routesSrc,\n urlSrc,\n )(([routes, url]) => {\n destroyAllData();\n const instance = all(\n defaultSrc(),\n all(\n ...routes.map(\n (r) =>\n destructor(\n branchLazy(\n regexpMatched(\n of(r.pattern),\n of(url),\n r.patternFlags ? of(r.patternFlags) : undefined,\n ),\n r.template,\n emptySrc,\n ),\n (d: DestructorType) => destructors.push(d),\n ).value,\n ),\n ),\n );\n\n // Return first not false or default\n applied(instance, (r) => {\n const firstReal = r[1].find((r) => r !== false);\n\n if (firstReal) {\n return firstReal as T;\n }\n\n return r[0];\n })(u);\n });\n\n return destroyAllData;\n };\n};\n","import { all, EventType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/and\n */\nexport const and = (\n oneSrc: EventType<boolean>,\n twoSrc: EventType<boolean>,\n): EventType<boolean> => {\n return (u) => {\n all(\n oneSrc,\n twoSrc,\n )(([one, two]) => {\n u(one && two);\n });\n };\n};\n","import { all, EventType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/or\n */\nexport const or = (\n oneSrc: EventType<boolean>,\n twoSrc: EventType<boolean>,\n): EventType<boolean> => {\n return (u) => {\n all(\n oneSrc,\n twoSrc,\n )(([one, two]) => {\n u(one || two);\n });\n };\n};\n","import { EventType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/not\n */\nexport const not = (baseSrc: EventType<boolean>): EventType<boolean> => {\n return (u) => {\n baseSrc((v) => {\n u(!v);\n });\n };\n};\n","import { applied, EventType } from \"silentium\";\n\n/**\n * Convert any source to boolean source\n * https://silentium-lab.github.io/silentium-components/#/boolean/bool\n */\nexport const bool = (baseSrc: EventType): EventType<boolean> => {\n return (u) => {\n applied(baseSrc, Boolean)(u);\n };\n};\n","import { EventType, EventUserType } from \"silentium\";\n\n/**\n * Represents object from json\n */\nexport const fromJson = <T = Record<string, unknown>>(\n jsonSrc: EventType<string>,\n errorOwner?: EventUserType,\n): EventType<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 { EventType, EventUserType } from \"silentium\";\n\n/**\n * Represents json from object\n */\nexport const toJson = (\n dataSrc: EventType,\n errorOwner?: EventUserType,\n): EventType<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, EventType } from \"silentium\";\n\n/**\n * Represents the first element of an array.\n */\nexport const first = <T extends Array<unknown>>(\n baseSrc: EventType<T>,\n): EventType<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","branchLazy","destructor","instance","constant","permanentValue","triggerSrc","deadline","error","baseSrc","timeoutSrc","timerHead","s","shared","timeout","clearTimeout","timeoutReached","setTimeout","Error","filtered","event","f","deferred","baseSync","value","isFilled","detached","user","dirty","baseEntitySource","alwaysKeep","excludeKeys","cloneFn","comparingSrc","late","JSON","parse","stringify","comparingDetached","applied","all","comparing","base","Object","fromEntries","entries","filter","key","includes","use","loading","loadingStartSrc","loadingFinishSrc","lock","lockSrc","locked","newLock","i","memo","lastValue","onlyChanged","firstValue","part","keySrc","keySync","keyChunks","split","forEach","keyChunk","path","polling","shot","targetSrc","targetSync","task","delay","prevTimer","executorApplied","fn","tick","microtaskScheduled","queueMicrotask","hashTable","record","recordOf","recordSrc","keys","values","entry","index","concatenated","sources","joinPartSrc","of","joinPart","strings","join","template","theSrc","placesSrc","placesCounter","vars","$TPL","destructors","varsSrc","rules","ph","val","replaceAll","String","var","src","varName","d","push","destroy","regexpMatched","patternSrc","valueSrc","flagsSrc","pattern","flags","RegExp","test","regexpReplaced","replaceValueSrc","replaceValue","replace","regexpMatch","exec","set","emptySrc","router","urlSrc","routesSrc","defaultSrc","destroyAllData","length","routes","url","map","r","patternFlags","firstReal","find","and","oneSrc","twoSrc","one","two","or","not","bool","Boolean","fromJson","jsonSrc","errorOwner","json","toJson","dataSrc","data","first","a"],"mappings":"2JAKO,MAAMA,EAAS,CACpBC,EACAC,EACAC,IAEQC,IACA,MAAAC,EAAWC,EAAUJ,GACvB,IAAAK,OAEa,IAAbJ,IACFI,EAAYD,EAAUH,IAGxBF,GAAcO,IACZ,IAAIC,EAA6B,KAC7BD,EACFC,EAASJ,EAASC,YACTC,IACTE,EAASF,EAAUD,aAGN,OAAXG,GACFL,EAAEK,EAAM,GAEX,ECxBQC,EAAa,CACxBT,EACAC,EACAC,IAEQC,IACF,IAAAO,EAgBJ,OAfAV,GAAcO,SACO,IAAfG,GAAkD,mBAAfA,GAC1BA,IAEb,IAAIC,EAA0C,KAC1CJ,EACFI,EAAWV,IACFC,IACTS,EAAWT,KAETS,IACFD,EAAaC,EAASR,GAAC,IAIpB,KACQO,KAAA,CACf,EC3BSE,EAAW,CACtBC,EACAC,IAEQX,IACNW,GAAW,KACTX,EAAEU,EAAc,GACjB,ECJQE,EAAW,CACtBC,EACAC,EACAC,IAEQf,IACN,IAAIgB,EAAqB,KAEnB,MAAAC,EAAIC,EAAOJ,GAAS,GAE1BC,GAAYI,IACNH,GACFI,aAAaJ,GAEf,IAAIK,GAAiB,EAErBL,EAAYM,YAAW,KACjBD,IAGaA,GAAA,EACXR,EAAA,IAAIU,MAAM,sCAAoC,GACnDJ,GAEOK,EAASP,EAAEQ,OAAO,KAAOJ,GACnCK,CAAE1B,GAEFiB,EAAEQ,OAAM,KACWJ,GAAA,CAAA,GAClB,GACF,EC7BQM,EAAW,CACtBb,EACAH,IAEQX,IACA,MAAA4B,EAAW1B,EAAUY,GAC3BH,GAAW,KACH,MAAAkB,EAAQD,EAAS1B,YACnB4B,EAASD,IACX7B,EAAE6B,EAAK,GAEV,ECfQE,EAAejB,GACnB,SAAkBkB,GACvB,MAAM5B,EAAIF,EAAUY,GAASZ,YACzB4B,EAAS1B,IACX4B,EAAK5B,EAET,ECDW6B,EAAQ,CACnBC,EACAC,EAAuB,GACvBC,EAAwB,GACxBC,KAEA,MAAMC,EAAeC,IAMd,YAJS,IAAZF,IACFA,EAAWR,GAAUW,KAAKC,MAAMD,KAAKE,UAAUb,KAG1C,CACLJ,MAAQzB,IACN,MAAM2C,EAAoBC,EAAQN,EAAab,MAAOY,GAEtDQ,EACEF,EACAT,EAFFW,EAGE,EAAEC,EAAWC,MACRD,GAIL9C,EACEgD,OAAOC,YACLD,OAAOE,QAAQJ,GAAWK,QAAO,EAAEC,EAAKvB,OAClCM,EAAWkB,SAASD,KAGpBhB,EAAYiB,SAASD,IAGlBvB,IAAWkB,EAAaK,MAGrC,GACD,EAEHE,IAAMlD,IACJkC,EAAagB,IAAIlD,EAAC,EAEtB,ECzCWmD,EAAU,CACrBC,EACAC,IAEQzD,IACUwD,GAAA,IAAMxD,GAAE,KACPyD,GAAA,IAAMzD,GAAE,IAAM,ECTtB0D,EAAO,CAClB5C,EACA6C,IAEQ3D,IACN,IAAI4D,GAAS,EACbD,GAASE,IACED,EAAAC,CAAA,IAEDrC,EAASV,GAAS,KAAO8C,GACnCE,CAAE9D,EAAC,ECTM+D,EAAWjD,GACdd,IACN,IAAIgE,EAAsB,KAE1BlD,GAASV,IACHA,IAAM4D,IACRhE,EAAEI,GACU4D,EAAA5D,EAAA,GAEf,ECTQ6D,EAAkBnD,GACrBd,IACN,IAAIkE,GAAa,EAEjBpD,GAASV,KACY,IAAf8D,EACWA,GAAA,EAEblE,EAAEI,EAAC,GAEN,ECVQ+D,EAAO,CAKlBrD,EACAsD,KAEM,MAAAxC,EAAW1B,EAAUY,EAAQW,OAC7B4C,EAAUnE,EAAUkE,GACnB,MAAA,CACL3C,MAAQzB,IACN6C,EACE/B,EAAQW,MACR2C,EAFFvB,EAGE,EAAEE,EAAMK,MACF,MAAAkB,EAAYlB,EAAImB,MAAM,KAC5B,IAAI1C,EAAiBkB,EACXuB,EAAAE,SAASC,IACjB5C,EAASA,EAAkC4C,EAAQ,SAGvC,IAAV5C,GAAuBA,IAAUkB,GACnC/C,EAAE6B,EAAU,GAEf,EAEHyB,IAAMzB,IACE,MAAAuB,EAAMiB,EAAQnE,YAChB4B,EAASsB,IACXtC,EAAQwC,IAAI,IACP1B,EAAS1B,YACZkD,CAACA,GAAMvB,GACH,EAGZ,ECpCW6C,EAAO,CAKlB5D,EACAsD,IAEQpE,IACN6C,EACE/B,EACAsD,EAFFvB,EAGE,EAAEE,EAAMK,MACF,MAAAkB,EAAYlB,EAAImB,MAAM,KAC5B,IAAI1C,EAAiBkB,EACXuB,EAAAE,SAASC,IACjB5C,EAASA,EAAkC4C,EAAQ,SAGvC,IAAV5C,GAAuBA,IAAUkB,GACnC/C,EAAE6B,EAAU,GAEf,EC1BQ8C,EAAU,CACrB7D,EACAH,IAEQX,IACNW,GAAW,KACTG,EAAQd,EAAC,GACV,ECHQ4E,EAAO,CAClBC,EACAlE,IAEQX,IACA,MAAA8E,EAAa5E,EAAU2E,GAE7BlE,GAAW,KACH,MAAAkB,EAAQiD,EAAW5E,YACrB4B,EAASD,IACX7B,EAAE6B,EAAK,GAEV,EChBQkD,EAAO,CAClBjE,EACAkE,EAAgB,IAERhF,IACN,IAAIiF,EAA4B,KAChBC,EAAApE,GAAUqE,GAChB/E,IACF6E,GACF7D,aAAa6D,GAEfA,EAAY3D,YAAW,KACrB6D,EAAG/E,EAAC,GACH4E,EAAK,GAPIE,CASblF,EAAC,ECXKoF,EAAWtE,GACdd,IACN,IAAIqF,GAAqB,EACrBrB,EAAsB,KAa1BlD,GAASV,IACK4D,EAAA5D,EACPiF,IAZgBA,GAAA,EACrBC,gBAAe,KACQD,GAAA,EACH,OAAdrB,IACFhE,EAAEgE,GACUA,EAAA,KAAA,IAQI,GAErB,ECtBQuB,EACXzE,GAEQd,IACN,MAAMwF,EAAkC,CAAC,EAEzC1E,GAAQ,EAAEsC,EAAKvB,MACb2D,EAAOpC,GAAOvB,EACd7B,EAAEwF,EAAW,GACd,ECNQC,EACXC,GAEQ1F,IACA,MAAA2F,EAAO3C,OAAO2C,KAAKD,GACzB7C,KAAOG,OAAO4C,OAAOF,GAArB7C,EAAkCK,IAChC,MAAMsC,EAA8B,CAAC,EAC7BtC,EAAAsB,SAAQ,CAACqB,EAAOC,KACfN,EAAAG,EAAKG,IAAUD,CAAA,IAExB7F,EAAEwF,EAAM,GACT,ECbQO,EAAe,CAC1BC,EACAC,EAAiCC,EAAG,MAE5BlG,IACN6C,EACEoD,KACGD,EAFLnD,EAGE,EAAEsD,WACAnG,EAAAoG,EAAQC,KAAKF,GAAS,GACzB,ECNQG,EAAW,CACtBC,EAA4BL,EAAG,IAC/BM,EAAgDN,EAAG,CAAA,MAEnD,IAAIO,EAAgB,EACpB,MAAMC,EAAkC,CACtCC,KAAMT,EAAG,SAELU,EAAgC,GAC/B,MAAA,CACL/E,MAA4B7B,IACpB,MAAA6G,EAAUpB,EAASiB,GACjB9D,EAAAC,EAAI0D,EAAQC,EAAWK,IAAU,EAAE9D,EAAM+D,EAAOJ,MAC/C1D,OAAAE,QAAQ4D,GAAOtC,SAAQ,EAAEuC,EAAIC,MAClCjE,EAAOA,EAAKkE,WAAWF,EAAIG,OAAOF,GAAI,IAEjChE,OAAAE,QAAQwD,GAAMlC,SAAQ,EAAEuC,EAAIC,MACjCjE,EAAOA,EAAKkE,WAAWF,EAAIG,OAAOF,GAAI,IAGjCjE,IARDH,CASL5C,EAAC,EAENsG,SAAWzE,IACT0E,EAASL,EAAGrE,EAAK,EAMnBsF,IAAMC,IACE,MAAAC,EAAU,OAAOZ,IAKhB,OAJUA,GAAA,EACjBC,EAAKW,GAAW9G,EAAW6G,GAAME,IAC/BV,EAAYW,KAAKD,EAAC,IACjBzF,MACIwF,CAAA,EAET,OAAAG,GACEZ,EAAYpC,SAAS8C,GAAMA,KAAG,EAElC,EC7CWG,EAAgB,CAC3BC,EACAC,EACAC,EAA8B1B,EAAG,MAEzBlG,IACN6C,EACE6E,EACAC,EACAC,EAHF/E,EAIE,EAAEgF,EAAShG,EAAOiG,MAClB9H,EAAE,IAAI+H,OAAOF,EAASC,GAAOE,KAAKnG,GAAM,GACzC,ECZQoG,EAAiB,CAC5BN,EACAD,EACAQ,EACAN,EAA8B1B,EAAG,MAEzBlG,IACN6C,EACE6E,EACAC,EACAO,EACAN,EAJF/E,EAKE,EAAEgF,EAAShG,EAAOsG,EAAcL,MAC9B9H,EAAAkH,OAAOrF,GAAOuG,QAAQ,IAAIL,OAAOF,EAASC,GAAQK,GAAa,GAClE,ECdQE,EAAc,CACzBX,EACAC,EACAC,EAA8B1B,EAAG,MAEzBlG,IACN6C,EACE6E,EACAC,EACAC,EAHF/E,EAIE,EAAEgF,EAAShG,EAAOiG,MAClB,MAAMzH,EAAS,IAAI0H,OAAOF,EAASC,GAAOQ,KAAKzG,GAC7C7B,EAAAK,GAAU,GAAE,GACf,ECbQkI,EAAM,CACjBzH,EACAsD,EACAuD,IAEQ3H,IACN6C,EACE/B,EACAsD,EACAuD,EAHF9E,EAIE,EAAEE,EAAMK,EAAKvB,MACZkB,EAAiCK,GAAOvB,EACzC7B,EAAE+C,EAAI,GACP,ECDCyF,EAAW,IAAMtC,GAAG,GAMbuC,EAAS,CACpBC,EACAC,EACAC,IAEQ5I,IACN,MAAM4G,EAAgC,GAChCiC,EAAiB,KACrBjC,EAAYpC,SAAS8C,GAAMA,MAC3BV,EAAYkC,OAAS,CAAA,EAwChB,OAtCPjG,EACE8F,EACAD,EAFF7F,EAGE,EAAEkG,EAAQC,MACKH,IACf,MAAMrI,EAAWqC,EACf+F,IACA/F,KACKkG,EAAOE,KACPC,GACC3I,EACED,EACEmH,EACEvB,EAAGgD,EAAErB,SACL3B,EAAG8C,GACHE,EAAEC,aAAejD,EAAGgD,EAAEC,mBAAgB,GAExCD,EAAE5C,SACFkC,IAEDlB,GAAsBV,EAAYW,KAAKD,KACxCzF,UAMFe,EAAApC,GAAW0I,IACX,MAAAE,EAAYF,EAAE,GAAGG,MAAMH,IAAY,IAANA,IAEnC,OAAIE,GAIGF,EAAE,EAAC,GAPJtG,CAQL5C,EAAC,IAGC6I,CAAA,ECpEES,EAAM,CACjBC,EACAC,IAEQxJ,IACN6C,EACE0G,EACAC,EAFF3G,EAGE,EAAE4G,EAAKC,MACP1J,EAAEyJ,GAAOC,EAAG,GACb,ECVQC,EAAK,CAChBJ,EACAC,IAEQxJ,IACN6C,EACE0G,EACAC,EAFF3G,EAGE,EAAE4G,EAAKC,MACP1J,EAAEyJ,GAAOC,EAAG,GACb,ECVQE,EAAO9I,GACVd,IACNc,GAASV,IACPJ,GAAGI,EAAC,GACL,ECHQyJ,EAAQ/I,GACXd,IACE4C,EAAA9B,EAASgJ,QAATlH,CAAkB5C,EAAC,ECHlB+J,EAAW,CACtBC,EACAC,IAEQjK,IACNgK,GAASE,IACH,IACAlK,EAAAwC,KAAKC,MAAMyH,UACNrJ,GACPoJ,IAAa,IAAI1I,MAAM,yBAAyBV,KAAQ,IAE3D,ECXQsJ,EAAS,CACpBC,EACAH,IAEQjK,IACNoK,GAASC,IACH,IACArK,EAAAwC,KAAKE,UAAU2H,GAAK,CAChB,MACOJ,IAAA,IAAI1I,MAAM,6BAA4B,IAEtD,ECXQ+I,EACXxJ,GAEQd,IACN4C,EAAQ9B,GAAUyJ,GAAMA,EAAE,IAA1B3H,CAA8B5C,EAAC"}
1
+ {"version":3,"file":"silentium-components.min.mjs","sources":["../src/behaviors/Branch.ts","../src/behaviors/BranchLazy.ts","../src/behaviors/Const.ts","../src/behaviors/Deadline.ts","../src/behaviors/Deferred.ts","../src/behaviors/Detached.ts","../src/behaviors/Dirty.ts","../src/behaviors/Loading.ts","../src/behaviors/Lock.ts","../src/behaviors/Memo.ts","../src/behaviors/OnlyChanged.ts","../src/behaviors/Part.ts","../src/behaviors/Path.ts","../src/behaviors/Polling.ts","../src/behaviors/Shot.ts","../src/behaviors/Task.ts","../src/behaviors/Tick.ts","../src/structures/HashTable.ts","../src/structures/RecordOf.ts","../src/strings/Concatenated.ts","../src/strings/Template.ts","../src/system/RegexpMatched.ts","../src/system/RegexpReplaced.ts","../src/system/RegexpMatch.ts","../src/system/Set.ts","../src/navigation/Router.ts","../src/boolean/And.ts","../src/boolean/Or.ts","../src/boolean/Not.ts","../src/boolean/Bool.ts","../src/formats/FromJson.ts","../src/formats/ToJson.ts","../src/lists/First.ts"],"sourcesContent":["import { EventType, Primitive } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/branch\n */\nexport function Branch<Then, Else>(\n conditionSrc: EventType<boolean>,\n leftSrc: EventType<Then>,\n rightSrc?: EventType<Else>,\n): EventType<Then | Else> {\n return (user) => {\n const leftSync = Primitive(leftSrc);\n let rightSync: ReturnType<typeof Primitive<Else>>;\n\n if (rightSrc !== undefined) {\n rightSync = Primitive(rightSrc);\n }\n\n conditionSrc((v) => {\n let result: Then | Else | null = null;\n if (v) {\n result = leftSync.primitive();\n } else if (rightSync) {\n result = rightSync.primitive();\n }\n\n if (result !== null) {\n user(result);\n }\n });\n };\n}\n","import { EventType, DestructorType, ConstructorType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/branch\n */\nexport function BranchLazy<Then, Else>(\n conditionSrc: EventType<boolean>,\n leftSrc: ConstructorType<[], EventType<Then>>,\n rightSrc?: ConstructorType<[], EventType<Else>>,\n): EventType<Then | Else> {\n return (user) => {\n let Destructor: DestructorType | void;\n conditionSrc((v) => {\n if (Destructor !== undefined && typeof Destructor === \"function\") {\n Destructor();\n }\n let instance: EventType<Then | Else> | null = null;\n if (v) {\n instance = leftSrc();\n } else if (rightSrc) {\n instance = rightSrc();\n }\n if (instance) {\n Destructor = instance(user);\n }\n });\n\n return () => {\n Destructor?.();\n };\n };\n}\n","import { EventType } from \"silentium\";\n\nexport function Constant<T>(\n permanentValue: T,\n triggerSrc: EventType,\n): EventType<T> {\n return (user) => {\n triggerSrc(() => {\n user(permanentValue);\n });\n };\n}\n","import { EventType, Filtered, Shared, EventUserType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport function Deadline<T>(\n error: EventUserType<Error>,\n baseSrc: EventType<T>,\n timeoutSrc: EventType<number>,\n): EventType<T> {\n return (user) => {\n let timerHead: unknown = null;\n\n const s = Shared(baseSrc, true);\n\n timeoutSrc((timeout) => {\n if (timerHead) {\n clearTimeout(timerHead as number);\n }\n let timeoutReached = false;\n\n timerHead = setTimeout(() => {\n if (timeoutReached) {\n return;\n }\n timeoutReached = true;\n error(new Error(\"Timeout reached in Deadline class\"));\n }, timeout);\n\n const f = Filtered(s.event, () => !timeoutReached);\n f(user);\n\n s.event(() => {\n timeoutReached = true;\n });\n });\n };\n}\n","import { EventType, isFilled, Primitive } from \"silentium\";\n\n/**\n * Defer one source after another, gives values Of baseSrc only when triggerSrc responds\n * https://silentium-lab.github.io/silentium-components/#/behaviors/deferred\n */\nexport function Deferred<T>(\n baseSrc: EventType<T>,\n triggerSrc: EventType<unknown>,\n): EventType<T> {\n return (user) => {\n const baseSync = Primitive(baseSrc);\n triggerSrc(() => {\n const value = baseSync.primitive();\n if (isFilled(value)) {\n user(value);\n }\n });\n };\n}\n","import { EventType, isFilled, Primitive } from \"silentium\";\n\nexport function Detached<T>(baseSrc: EventType<T>): EventType<T> {\n return function Detached(user) {\n const v = Primitive(baseSrc).primitive();\n if (isFilled(v)) {\n user(v);\n }\n };\n}\n","import { All, Applied, EventType, Late, SourceType } from \"silentium\";\n\n/**\n * Takes source and remember it first value\n * returns new record, what will contain only fields what was changed\n * https://silentium-lab.github.io/silentium-components/#/behaviors/dirty\n */\nexport function Dirty<T>(\n baseEntitySource: EventType<T>,\n alwaysKeep: string[] = [],\n excludeKeys: string[] = [],\n cloneFn?: (v: T) => T,\n): SourceType<T> {\n const comparingSrc = Late<T>();\n\n if (cloneFn === undefined) {\n cloneFn = (value) => JSON.parse(JSON.stringify(value));\n }\n\n return {\n event: (user) => {\n const comparingDetached = Applied(comparingSrc.event, cloneFn);\n\n All(\n comparingDetached,\n baseEntitySource,\n )(([comparing, base]) => {\n if (!comparing) {\n return;\n }\n\n user(\n Object.fromEntries(\n Object.entries(comparing).filter(([key, value]) => {\n if (alwaysKeep.includes(key)) {\n return true;\n }\n if (excludeKeys.includes(key)) {\n return false;\n }\n return value !== (base as any)[key];\n }),\n ) as T,\n );\n });\n },\n use: (v) => {\n comparingSrc.use(v);\n },\n };\n}\n","import { EventType } from \"silentium\";\n\n/**\n * Representation Of loading process\n * first informatin source begins loading\n * second information source stops loading\n * https://silentium-lab.github.io/silentium-components/#/behaviors/loading\n */\nexport function Loading(\n loadingStartSrc: EventType<unknown>,\n loadingFinishSrc: EventType<unknown>,\n): EventType<boolean> {\n return (user) => {\n loadingStartSrc(() => user(true));\n loadingFinishSrc(() => user(false));\n };\n}\n","import { EventType, Filtered } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/lock\n */\nexport function Lock<T>(\n baseSrc: EventType<T>,\n lockSrc: EventType<boolean>,\n): EventType<T> {\n return (user) => {\n let locked = false;\n lockSrc((newLock) => {\n locked = newLock;\n });\n const i = Filtered(baseSrc, () => !locked);\n i(user);\n };\n}\n","import { EventType } from \"silentium\";\n\n/**\n * Didn't respond if new value Of baseSrc equals to old value\n * https://silentium-lab.github.io/silentium-components/#/behaviors/memo\n */\nexport function Memo<T>(baseSrc: EventType<T>): EventType<T> {\n return (user) => {\n let lastValue: T | null = null;\n\n baseSrc((v) => {\n if (v !== lastValue) {\n user(v);\n lastValue = v;\n }\n });\n };\n}\n","import { EventType } from \"silentium\";\n\n/**\n * Represents source what was changed at least once\n * https://silentium-lab.github.io/silentium-components/#/behaviors/only-changed\n */\nexport function OnlyChanged<T>(baseSrc: EventType<T>): EventType<T> {\n return (user) => {\n let firstValue = false;\n\n baseSrc((v) => {\n if (firstValue === false) {\n firstValue = true;\n } else {\n user(v);\n }\n });\n };\n}\n","import { All, EventType, isFilled, Primitive, SourceType } from \"silentium\";\n\n/**\n * Return source Of record path\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport function Part<R, T extends object | Array<any>, K extends string = any>(\n baseSrc: SourceType<T>,\n keySrc: EventType<K>,\n): SourceType<R> {\n const baseSync = Primitive(baseSrc.event);\n const keySync = Primitive(keySrc);\n return {\n event: (user) => {\n All(\n baseSrc.event,\n keySrc,\n )(([base, key]) => {\n const keyChunks = key.split(\".\");\n let value: unknown = base;\n keyChunks.forEach((keyChunk) => {\n value = (value as Record<string, unknown>)[keyChunk];\n });\n\n if (value !== undefined && value !== base) {\n user(value as R);\n }\n });\n },\n use: (value: R) => {\n const key = keySync.primitive();\n if (isFilled(key)) {\n baseSrc.use({\n ...baseSync.primitive(),\n [key]: value,\n } as T);\n }\n },\n };\n}\n","import { All, EventType } from \"silentium\";\n\n/**\n * Return source Of record path\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport function Path<R, T extends object | Array<any>, K extends string = any>(\n baseSrc: EventType<T>,\n keySrc: EventType<K>,\n): EventType<R> {\n return (user) => {\n All(\n baseSrc,\n keySrc,\n )(([base, key]) => {\n const keyChunks = key.split(\".\");\n let value: unknown = base;\n keyChunks.forEach((keyChunk) => {\n value = (value as Record<string, unknown>)[keyChunk];\n });\n\n if (value !== undefined && value !== base) {\n user(value as R);\n }\n });\n };\n}\n","import { EventType } from \"silentium\";\n\nexport function Polling<T>(\n baseSrc: EventType<T>,\n triggerSrc: EventType<T>,\n): EventType<T> {\n return (user) => {\n triggerSrc(() => {\n baseSrc(user);\n });\n };\n}\n","import { EventType, isFilled, Primitive } from \"silentium\";\n\n/**\n * Helps to represent only last fresh value Of some source, refreshing controls by shotSrc\n * https://silentium-lab.github.io/silentium-components/#/behaviors/shot\n */\nexport function Shot<T>(\n targetSrc: EventType<T>,\n triggerSrc: EventType,\n): EventType<T> {\n return (user) => {\n const targetSync = Primitive(targetSrc);\n\n triggerSrc(() => {\n const value = targetSync.primitive();\n if (isFilled(value)) {\n user(value);\n }\n });\n };\n}\n","import { EventType, ExecutorApplied } from \"silentium\";\n\nexport function Task<T>(\n baseSrc: EventType<T>,\n delay: number = 0,\n): EventType<T> {\n return (user) => {\n let prevTimer: unknown | null = null;\n ExecutorApplied(baseSrc, (fn) => {\n return (v) => {\n if (prevTimer) {\n clearTimeout(prevTimer as number);\n }\n prevTimer = setTimeout(() => {\n fn(v);\n }, delay);\n };\n })(user);\n };\n}\n","import { EventType } from \"silentium\";\n\n/**\n * Accumulates the last value Of the source and returns one result once per tick\n * https://silentium-lab.github.io/silentium-components/#/behaviors/tick\n */\nexport function Tick<T>(baseSrc: EventType<T>): EventType<T> {\n return (user) => {\n let microtaskScheduled = false;\n let lastValue: T | null = null;\n\n const scheduleMicrotask = () => {\n microtaskScheduled = true;\n queueMicrotask(() => {\n microtaskScheduled = false;\n if (lastValue !== null) {\n user(lastValue);\n lastValue = null;\n }\n });\n };\n\n baseSrc((v) => {\n lastValue = v;\n if (!microtaskScheduled) {\n scheduleMicrotask();\n }\n });\n };\n}\n","import { EventType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/structures/hash-table\n */\nexport function HashTable<T>(\n baseSrc: EventType<[string, unknown]>,\n): EventType<T> {\n return (user) => {\n const record: Record<string, unknown> = {};\n\n baseSrc(([key, value]) => {\n record[key] = value;\n user(record as T);\n });\n };\n}\n","import { All, EventType } from \"silentium\";\n\ntype UnInformation<T> = T extends EventType<infer U> ? U : never;\n\n/**\n * Returns record Of data from record Of sources\n * https://silentium-lab.github.io/silentium-components/#/structures/record\n */\nexport function RecordOf<T extends EventType>(\n recordSrc: Record<string, T>,\n): EventType<Record<string, UnInformation<T>>> {\n return (user) => {\n const keys = Object.keys(recordSrc);\n All(...Object.values(recordSrc))((entries) => {\n const record: Record<string, any> = {};\n entries.forEach((entry, index) => {\n record[keys[index]] = entry;\n });\n user(record);\n });\n };\n}\n","import { All, EventType, Of } from \"silentium\";\n\n/**\n * Join sources Of strings to one source\n * https://silentium-lab.github.io/silentium-components/#/string/concatenated\n */\nexport function Concatenated(\n sources: EventType<string>[],\n joinPartSrc: EventType<string> = Of(\"\"),\n): EventType<string> {\n return (user) => {\n All(\n joinPartSrc,\n ...sources,\n )(([joinPart, ...strings]) => {\n user(strings.join(joinPart));\n });\n };\n}\n","import {\n All,\n Applied,\n EventType,\n Destructor,\n DestructorType,\n Of,\n} from \"silentium\";\nimport { RecordOf } from \"../structures\";\n\nexport function Template(\n theSrc: EventType<string> = Of(\"\"),\n placesSrc: EventType<Record<string, unknown>> = Of({}),\n) {\n let placesCounter = 0;\n const vars: Record<string, EventType> = {\n $TPL: Of(\"$TPL\"),\n };\n const destructors: DestructorType[] = [];\n return {\n value: <EventType<string>>((user) => {\n const varsSrc = RecordOf(vars);\n Applied(All(theSrc, placesSrc, varsSrc), ([base, rules, vars]) => {\n Object.entries(rules).forEach(([ph, val]) => {\n base = base.replaceAll(ph, String(val));\n });\n Object.entries(vars).forEach(([ph, val]) => {\n base = base.replaceAll(ph, String(val));\n });\n\n return base;\n })(user);\n }),\n template: (value: string) => {\n theSrc = Of(value);\n },\n /**\n * Ability to register variable\n * in concrete place Of template\n */\n var: (src: EventType<string>) => {\n const varName = `$var${placesCounter}`;\n placesCounter += 1;\n vars[varName] = Destructor(src, (d: DestructorType) => {\n destructors.push(d);\n }).event;\n return varName;\n },\n destroy() {\n destructors.forEach((d) => d());\n },\n };\n}\n","import { All, EventType, Of } from \"silentium\";\n\n/**\n * Boolean source what checks what string matches pattern\n * https://silentium-lab.github.io/silentium-components/#/system/regexp-matched\n */\nexport function RegexpMatched(\n patternSrc: EventType<string>,\n valueSrc: EventType<string>,\n flagsSrc: EventType<string> = Of(\"\"),\n): EventType<boolean> {\n return (user) => {\n All(\n patternSrc,\n valueSrc,\n flagsSrc,\n )(([pattern, value, flags]) => {\n user(new RegExp(pattern, flags).test(value));\n });\n };\n}\n","import { All, EventType, Of } from \"silentium\";\n\n/**\n * Returns string replaced by regular expression pattern\n * https://silentium-lab.github.io/silentium-components/#/system/regexp-replaced\n */\nexport function RegexpReplaced(\n valueSrc: EventType<string>,\n patternSrc: EventType<string>,\n replaceValueSrc: EventType<string>,\n flagsSrc: EventType<string> = Of(\"\"),\n): EventType<string> {\n return (user) => {\n All(\n patternSrc,\n valueSrc,\n replaceValueSrc,\n flagsSrc,\n )(([pattern, value, replaceValue, flags]) => {\n user(String(value).replace(new RegExp(pattern, flags), replaceValue));\n });\n };\n}\n","import { All, EventType, Of } from \"silentium\";\n\n/**\n * First match Of regexp\n * https://silentium-lab.github.io/silentium-components/#/system/regexp-matched\n */\nexport function RegexpMatch(\n patternSrc: EventType<string>,\n valueSrc: EventType<string>,\n flagsSrc: EventType<string> = Of(\"\"),\n): EventType<string[]> {\n return (user) => {\n All(\n patternSrc,\n valueSrc,\n flagsSrc,\n )(([pattern, value, flags]) => {\n const result = new RegExp(pattern, flags).exec(value);\n user(result ?? []);\n });\n };\n}\n","import { All, EventType } from \"silentium\";\n\n/**\n * Ability to mutate some object, helpful when integrate to procedure systems\n * https://silentium-lab.github.io/silentium-components/#/system/set\n */\nexport function Set<T extends Record<string, unknown>>(\n baseSrc: EventType<T>,\n keySrc: EventType<string>,\n valueSrc: EventType<unknown>,\n): EventType<T> {\n return (user) => {\n All(\n baseSrc,\n keySrc,\n valueSrc,\n )(([base, key, value]) => {\n (base as Record<string, unknown>)[key] = value;\n user(base);\n });\n };\n}\n","import {\n All,\n Applied,\n EventType,\n Destructor,\n DestructorType,\n Of,\n ConstructorType,\n} from \"silentium\";\nimport { RegexpMatched } from \"../system\";\nimport { BranchLazy } from \"../behaviors\";\n\nexport interface Route<T> {\n pattern: string;\n patternFlags?: string;\n template: ConstructorType<[], EventType<T>>;\n}\n\nconst emptySrc = () => Of(false);\n\n/**\n * Router component what will return template if url matches pattern\n * https://silentium-lab.github.io/silentium-components/#/navigation/router\n */\nexport function Router<T = \"string\">(\n urlSrc: EventType<string>,\n routesSrc: EventType<Route<T>[]>,\n defaultSrc: ConstructorType<[], EventType<T>>,\n): EventType<T> {\n return (user) => {\n const destructors: DestructorType[] = [];\n const destroyAllData = () => {\n destructors.forEach((d) => d());\n destructors.length = 0;\n };\n All(\n routesSrc,\n urlSrc,\n )(([routes, url]) => {\n destroyAllData();\n const instance = All(\n defaultSrc(),\n All(\n ...routes.map(\n (r) =>\n Destructor(\n BranchLazy(\n RegexpMatched(\n Of(r.pattern),\n Of(url),\n r.patternFlags ? Of(r.patternFlags) : undefined,\n ),\n r.template,\n emptySrc,\n ),\n (d: DestructorType) => destructors.push(d),\n ).event,\n ),\n ),\n );\n\n // Return first not false or default\n Applied(instance, (r) => {\n const firstReal = r[1].find((r) => r !== false);\n\n if (firstReal) {\n return firstReal as T;\n }\n\n return r[0];\n })(user);\n });\n\n return destroyAllData;\n };\n}\n","import { All, EventType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/and\n */\nexport function And(\n oneSrc: EventType<boolean>,\n twoSrc: EventType<boolean>,\n): EventType<boolean> {\n return (user) => {\n All(\n oneSrc,\n twoSrc,\n )(([one, two]) => {\n user(one && two);\n });\n };\n}\n","import { All, EventType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/or\n */\nexport function Or(\n oneSrc: EventType<boolean>,\n twoSrc: EventType<boolean>,\n): EventType<boolean> {\n return (user) => {\n All(\n oneSrc,\n twoSrc,\n )(([one, two]) => {\n user(one || two);\n });\n };\n}\n","import { EventType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/not\n */\nexport function Not(baseSrc: EventType<boolean>): EventType<boolean> {\n return (user) => {\n baseSrc((v) => {\n user(!v);\n });\n };\n}\n","import { Applied, EventType } from \"silentium\";\n\n/**\n * Convert Any source to boolean source\n * https://silentium-lab.github.io/silentium-components/#/boolean/bool\n */\nexport function Bool(baseSrc: EventType): EventType<boolean> {\n return (user) => {\n Applied(baseSrc, Boolean)(user);\n };\n}\n","import { EventType, EventUserType } from \"silentium\";\n\n/**\n * Represents object from json\n */\nexport function FromJson<T = Record<string, unknown>>(\n jsonSrc: EventType<string>,\n errorOwner?: EventUserType,\n): EventType<T> {\n return (user) => {\n jsonSrc((json) => {\n try {\n user(JSON.parse(json));\n } catch (error) {\n errorOwner?.(new Error(`Failed to parse JSON: ${error}`));\n }\n });\n };\n}\n","import { EventType, EventUserType } from \"silentium\";\n\n/**\n * Represents json from object\n */\nexport function ToJson(\n dataSrc: EventType,\n errorOwner?: EventUserType,\n): EventType<string> {\n return (user) => {\n dataSrc((data: unknown) => {\n try {\n user(JSON.stringify(data));\n } catch {\n errorOwner?.(new Error(\"Failed to convert to JSON\"));\n }\n });\n };\n}\n","import { Applied, EventType } from \"silentium\";\n\n/**\n * Represents the first element Of an array.\n */\nexport function First<T extends Array<unknown>>(\n baseSrc: EventType<T>,\n): EventType<T[0]> {\n return (user) => {\n Applied(baseSrc, (a) => a[0])(user);\n };\n}\n"],"names":["Branch","conditionSrc","leftSrc","rightSrc","user","leftSync","Primitive","rightSync","v","result","primitive","BranchLazy","Destructor","instance","Constant","permanentValue","triggerSrc","Deadline","error","baseSrc","timeoutSrc","timerHead","s","Shared","timeout","clearTimeout","timeoutReached","setTimeout","Error","Filtered","event","f","Deferred","baseSync","value","isFilled","Detached","Dirty","baseEntitySource","alwaysKeep","excludeKeys","cloneFn","comparingSrc","Late","JSON","parse","stringify","comparingDetached","Applied","All","comparing","base","Object","fromEntries","entries","filter","key","includes","use","Loading","loadingStartSrc","loadingFinishSrc","Lock","lockSrc","locked","newLock","i","Memo","lastValue","OnlyChanged","firstValue","Part","keySrc","keySync","keyChunks","split","forEach","keyChunk","Path","Polling","Shot","targetSrc","targetSync","Task","delay","prevTimer","ExecutorApplied","fn","Tick","microtaskScheduled","queueMicrotask","HashTable","record","RecordOf","recordSrc","keys","values","entry","index","Concatenated","sources","joinPartSrc","Of","joinPart","strings","join","Template","theSrc","placesSrc","placesCounter","vars","$TPL","destructors","varsSrc","rules","ph","val","replaceAll","String","template","var","src","varName","d","push","destroy","RegexpMatched","patternSrc","valueSrc","flagsSrc","pattern","flags","RegExp","test","RegexpReplaced","replaceValueSrc","replaceValue","replace","RegexpMatch","exec","Set","emptySrc","Router","urlSrc","routesSrc","defaultSrc","destroyAllData","length","routes","url","map","r","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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"}