silentium-components 0.0.21 → 0.0.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,14 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4
4
 
5
+ ### [0.0.22](https://github.com/silentium-lab/silentium-components/compare/v0.0.21...v0.0.22) (2025-06-17)
6
+
7
+
8
+ ### Features
9
+
10
+ * **45-need-to-create-component-promised-which-will-turn-promis-into-source:** promised component ([e9a8149](https://github.com/silentium-lab/silentium-components/commit/e9a81496dcca6295f99a24142b552a1b2af583ee))
11
+ * **main:** rename survey to polling ([313a280](https://github.com/silentium-lab/silentium-components/commit/313a280082f5eadc46701e4a7068fbbf1153c5bb))
12
+
5
13
  ### [0.0.21](https://github.com/silentium-lab/silentium-components/compare/v0.0.20...v0.0.21) (2025-06-16)
6
14
 
7
15
 
package/beforeRelease.sh CHANGED
@@ -2,10 +2,10 @@
2
2
 
3
3
  current_branch=$(git rev-parse --abbrev-ref HEAD)
4
4
 
5
- if [ "$current_branch" != "main" ]; then
6
- echo "Error: Current branch not 'main'. Release impossible you are on '$current_branch'."
5
+ if [ "$current_branch" != "release" ]; then
6
+ echo "Error: Current branch not 'release'. Release impossible you are on '$current_branch'."
7
7
  exit 1
8
8
  fi
9
9
 
10
- echo "Current branch — 'main'."
10
+ echo "Current branch — 'release'."
11
11
  exit 0
@@ -207,9 +207,9 @@ const branch = (conditionSrc, thenSrc, elseSrc) => {
207
207
  silentium.systemPatron((v) => {
208
208
  resetSrc.give(1);
209
209
  if (v === true) {
210
- silentium.value(thenSrc, result.give);
210
+ silentium.value(thenSrc, silentium.patronOnce(result.give));
211
211
  } else if (elseSrc !== void 0) {
212
- silentium.value(elseSrc, result.give);
212
+ silentium.value(elseSrc, silentium.patronOnce(result.give));
213
213
  }
214
214
  })
215
215
  );
@@ -328,7 +328,7 @@ const concatenated = (sources, joinPartSrc = "") => {
328
328
  return result;
329
329
  };
330
330
 
331
- const survey = (targetSrc, triggerSrc) => {
331
+ const polling = (targetSrc, triggerSrc) => {
332
332
  const resultSrc = silentium.sourceOf();
333
333
  const visited = silentium.firstVisit(() => {
334
334
  silentium.value(
@@ -344,14 +344,6 @@ const survey = (targetSrc, triggerSrc) => {
344
344
  };
345
345
  };
346
346
 
347
- const regexpMatched = (patternSrc, valueSrc, flagsSrc = "") => silentium.sourceCombined(
348
- patternSrc,
349
- valueSrc,
350
- flagsSrc
351
- )((g, pattern, value, flags) => {
352
- silentium.give(new RegExp(pattern, flags).test(value), g);
353
- });
354
-
355
347
  const priority = (sources) => {
356
348
  return (g) => {
357
349
  let highestPriorityIndex = 0;
@@ -370,6 +362,14 @@ const priority = (sources) => {
370
362
  };
371
363
  };
372
364
 
365
+ const regexpMatched = (patternSrc, valueSrc, flagsSrc = "") => silentium.sourceCombined(
366
+ patternSrc,
367
+ valueSrc,
368
+ flagsSrc
369
+ )((g, pattern, value, flags) => {
370
+ silentium.give(new RegExp(pattern, flags).test(value), g);
371
+ });
372
+
373
373
  const router = (urlSrc, routesSrc, defaultSrc) => {
374
374
  const resultSrc = silentium.sourceOf();
375
375
  const visited = silentium.firstVisit(() => {
@@ -390,14 +390,8 @@ const router = (urlSrc, routesSrc, defaultSrc) => {
390
390
  )
391
391
  )
392
392
  ]);
393
- const surveySrc = survey(prioritySrc, urlSrc);
394
- silentium.value(surveySrc, silentium.patron(resultSrc));
395
- silentium.value(
396
- surveySrc,
397
- silentium.patron((v) => {
398
- return v;
399
- })
400
- );
393
+ const pollingSrc = polling(prioritySrc, urlSrc);
394
+ silentium.value(pollingSrc, silentium.systemPatron(resultSrc));
401
395
  })
402
396
  );
403
397
  });
@@ -1 +1 @@
1
- {"version":3,"file":"silentium-components.cjs","sources":["../src/controls/GroupActiveClass.ts","../src/behaviors/Dirty.ts","../src/behaviors/Loading.ts","../src/behaviors/Path.ts","../src/behaviors/Deadline.ts","../src/behaviors/Tick.ts","../src/behaviors/Fork.ts","../src/behaviors/Deferred.ts","../src/behaviors/Branch.ts","../src/behaviors/Memo.ts","../src/behaviors/Lock.ts","../src/behaviors/Moment.ts","../src/behaviors/Shot.ts","../src/behaviors/OnlyChanged.ts","../src/structures/HashTable.ts","../src/structures/Record.ts","../src/strings/Concatenated.ts","../src/behaviors/Survey.ts","../src/system/RegexpMatched.ts","../src/behaviors/Priority.ts","../src/navigation/Router.ts","../src/system/RegexpReplaced.ts","../src/system/RegexpMatch.ts","../src/system/Set.ts","../src/boolean/And.ts","../src/boolean/Or.ts","../src/boolean/Not.ts"],"sourcesContent":["import { sourceAll, SourceType, systemPatron, value } from \"silentium\";\n\n/**\n * Sets activeClass to one element of group\n * and resets activeClass on other group elements\n * suitable for menu active class\n */\nexport const groupActiveClass = (\n activeClassSrc: SourceType<string>,\n activeElementSrc: SourceType<HTMLElement>,\n groupElementsSrc: SourceType<HTMLElement[]>,\n) => {\n value(\n sourceAll([activeClassSrc, activeElementSrc, groupElementsSrc]),\n systemPatron(([activeClass, activeElement, groupElements]) => {\n groupElements.forEach((el) => {\n if (el.classList) {\n el.classList.remove(activeClass);\n }\n });\n activeElement.classList.add(activeClass);\n }),\n );\n\n return groupElementsSrc;\n};\n","import {\n give,\n guestCast,\n GuestType,\n patronOnce,\n sourceAll,\n SourceChangeableType,\n sourceOf,\n SourceType,\n value,\n} 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 extends object>(\n baseEntitySource: SourceType<T>,\n becomePatronAuto = false,\n alwaysKeep: string[] = [],\n excludeKeys: string[] = [],\n): SourceChangeableType<Partial<T>> => {\n const comparingSrc = sourceOf();\n const all = sourceAll([comparingSrc, baseEntitySource]);\n\n const result = {\n give(value: T) {\n give(JSON.parse(JSON.stringify(value)), comparingSrc);\n return result;\n },\n value(guest: GuestType<Partial<T>>) {\n value(\n all,\n guestCast(guest, ([comparing, base]) => {\n if (!comparing) {\n return;\n }\n\n give(\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 guest,\n );\n }),\n );\n return result;\n },\n };\n\n if (becomePatronAuto) {\n value(baseEntitySource, patronOnce(result));\n }\n\n return result;\n};\n","import {\n sourceOf,\n SourceType,\n subSourceMany,\n systemPatron,\n value,\n} from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/loading\n */\nexport const loading = (\n loadingStartSource: SourceType<unknown>,\n loadingFinishSource: SourceType<unknown>,\n) => {\n const loadingSrc = sourceOf<boolean>();\n subSourceMany(loadingSrc, [loadingStartSource, loadingFinishSource]);\n\n value(\n loadingStartSource,\n systemPatron(() => {\n loadingSrc.give(true);\n }),\n );\n value(\n loadingFinishSource,\n systemPatron(() => {\n loadingSrc.give(false);\n }),\n );\n\n return loadingSrc.value;\n};\n","import {\n give,\n sourceAll,\n sourceOf,\n SourceType,\n subSourceMany,\n systemPatron,\n value,\n} 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 T extends Record<string, unknown> | Array<unknown>,\n K extends string,\n>(\n baseSrc: SourceType<T>,\n keySrc: SourceType<K>,\n) => {\n const pathSrc = sourceOf<unknown>();\n subSourceMany(pathSrc, [baseSrc, keySrc]);\n\n value(\n sourceAll([baseSrc, keySrc]),\n systemPatron(([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 give(value, pathSrc);\n }\n }),\n );\n\n return pathSrc.value;\n};\n","import {\n give,\n guestCast,\n GuestType,\n patronOnce,\n sourceFiltered,\n SourceType,\n value,\n} from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport const deadline = <T>(\n error: GuestType<Error>,\n baseSrc: SourceType<T>,\n timeoutSrc: SourceType<number>,\n) => {\n let timerHead: unknown = null;\n return (g: GuestType<T>) => {\n value(\n timeoutSrc,\n guestCast(g, (timeout) => {\n if (timerHead) {\n clearTimeout(timerHead as number);\n }\n\n let timeoutReached = false;\n\n timerHead = setTimeout(() => {\n if (timeoutReached) {\n return;\n }\n timeoutReached = true;\n give(new Error(\"Timeout reached in Deadline class\"), error);\n }, timeout);\n\n value(\n sourceFiltered(baseSrc, () => !timeoutReached),\n g,\n );\n\n value(\n baseSrc,\n patronOnce(() => {\n timeoutReached = true;\n }),\n );\n }),\n );\n };\n};\n","import {\n give,\n sourceOf,\n SourceType,\n subSource,\n systemPatron,\n value,\n} 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: SourceType<T>) => {\n const result = sourceOf<T>();\n subSource(result, baseSrc);\n\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 give(lastValue, result);\n lastValue = null;\n }\n });\n };\n\n value(\n baseSrc,\n systemPatron((v) => {\n lastValue = v;\n if (!microtaskScheduled) {\n scheduleMicrotask();\n }\n }),\n );\n\n return result;\n};\n","import {\n GuestObjectType,\n patronOnce,\n removePatronFromPools,\n sourceOf,\n sourceResettable,\n SourceType,\n systemPatron,\n value,\n} from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/dirty\n */\nexport const fork = <T, Then, Else>(\n conditionSrc: SourceType<T>,\n predicate: (v: T) => boolean,\n thenSrc: SourceType<Then>,\n elseSrc?: SourceType<Else>,\n): SourceType<Then | Else> => {\n const result = sourceOf<Then | Else>();\n const reset = sourceOf();\n const resultResettable = sourceResettable(result, reset);\n let thenPatron: GuestObjectType<Then> | undefined;\n let elsePatron: GuestObjectType<Else> | undefined;\n\n value(\n conditionSrc,\n systemPatron((v) => {\n reset.give(1);\n if (thenPatron) {\n removePatronFromPools(thenPatron);\n }\n if (elsePatron) {\n removePatronFromPools(elsePatron);\n }\n if (predicate(v)) {\n thenPatron = patronOnce(result);\n value(thenSrc, thenPatron);\n } else if (elseSrc) {\n elsePatron = patronOnce(result);\n value(elseSrc, elsePatron);\n }\n }),\n );\n\n return resultResettable;\n};\n","import {\n firstVisit,\n GuestType,\n sourceOf,\n sourceResettable,\n SourceType,\n systemPatron,\n value,\n} from \"silentium\";\n\n/**\n * Defer one source after another, gives values of baseSrc only once when triggerSrc responds\n * https://silentium-lab.github.io/silentium-components/#/behaviors/deferred\n */\nexport const deferred = <T>(\n baseSrc: SourceType<T>,\n triggerSrc: SourceType<unknown>,\n) => {\n const result = sourceResettable<T>(sourceOf(), baseSrc as SourceType);\n\n const visited = firstVisit(() => {\n value(\n triggerSrc,\n systemPatron(() => {\n value(baseSrc, result);\n }),\n );\n });\n\n return (g: GuestType<T>) => {\n visited();\n value(result, g);\n };\n};\n","import {\n firstVisit,\n GuestType,\n sourceOf,\n sourceResettable,\n SourceType,\n systemPatron,\n value,\n} from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/branch\n */\nexport const branch = <Then, Else>(\n conditionSrc: SourceType<boolean>,\n thenSrc: SourceType<Then>,\n elseSrc?: SourceType<Else>,\n): SourceType<Then | Else> => {\n const resetSrc = sourceOf();\n const result = sourceOf<Then | Else>();\n const resultSrc = sourceResettable(result, resetSrc);\n\n const visited = firstVisit(() => {\n value(\n conditionSrc,\n systemPatron((v) => {\n resetSrc.give(1);\n if (v === true) {\n value(thenSrc, result.give);\n } else if (elseSrc !== undefined) {\n value(elseSrc, result.give);\n }\n }),\n );\n });\n\n return (g: GuestType<Then | Else>) => {\n visited();\n resultSrc.value(g);\n };\n};\n","import { sourceOf, SourceType, systemPatron, value } 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: SourceType<T>) => {\n const result = sourceOf<T>();\n let lastValue: T | null = null;\n\n value(\n baseSrc,\n systemPatron((v) => {\n if (v !== lastValue) {\n result.give(v);\n lastValue = v;\n }\n }),\n );\n\n return result.value;\n};\n","import {\n destroy,\n guestDisposable,\n patronOnce,\n sourceOf,\n sourceResettable,\n SourceType,\n subSource,\n systemPatron,\n value,\n} from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/lock\n */\nexport const lock = <T>(\n baseSrc: SourceType<T>,\n lockSrc: SourceType<unknown>,\n) => {\n const result = sourceOf();\n const resultResettable = sourceResettable(result, lockSrc);\n let locked = false;\n subSource(result, baseSrc);\n\n value(baseSrc, systemPatron(guestDisposable(result.give, () => locked)));\n\n value(\n lockSrc,\n patronOnce(() => {\n locked = true;\n destroy([result]);\n }),\n );\n\n return resultResettable;\n};\n","import { give, guestSync, GuestType, SourceType, value } from \"silentium\";\n\n/**\n * Get's value from source in moment of component call and than return this value every time\n * https://silentium-lab.github.io/silentium-components/#/behaviors/moment\n */\nexport const moment = <T>(\n baseSrc: SourceType<T>,\n defaultValue?: T,\n): SourceType<T> => {\n const guest = guestSync(defaultValue);\n value(baseSrc, guest);\n\n return (g: GuestType<T>) => {\n give(guest.value(), g);\n };\n};\n","import {\n sourceOf,\n sourceResettable,\n sourceSync,\n SourceType,\n systemPatron,\n value,\n} 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>(baseSrc: SourceType<T>, shotSrc: SourceType) => {\n const resetResult = sourceOf();\n const result = sourceOf<T>();\n\n const baseSrcSync = sourceSync(baseSrc, null);\n value(\n shotSrc,\n systemPatron(() => {\n if (baseSrcSync.syncValue() !== null) {\n result.give(baseSrcSync.syncValue() as T);\n resetResult.give(1);\n }\n }),\n );\n\n return sourceResettable(result, resetResult);\n};\n","import { give, guestCast, source, SourceType, value } 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: SourceType<T>) => {\n let firstValue = false;\n return source<T>((g) => {\n value(\n baseSrc,\n guestCast<T>(g, (v) => {\n if (firstValue === false) {\n firstValue = true;\n } else {\n give(v, g);\n }\n }),\n );\n });\n};\n","import {\n sourceOf,\n SourceType,\n subSource,\n systemPatron,\n value,\n} from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/structures/hash-table\n */\nexport const hashTable = (baseSource: SourceType<[string, unknown]>) => {\n const result = sourceOf<Record<string, unknown>>({});\n subSource(result, baseSource);\n\n value(\n baseSource,\n systemPatron(([key, value]) => {\n result.value((lastRecord) => {\n lastRecord[key] = value;\n });\n }),\n );\n\n return result.value;\n};\n","import { give, GuestType, sourceCombined, SourceType } from \"silentium\";\n\n/**\n * Returns record of data from record of sources\n * https://silentium-lab.github.io/silentium-components/#/structures/record\n */\nexport const record = (recordSrc: Record<string, SourceType>) => {\n const keys = Object.keys(recordSrc);\n return sourceCombined(...Object.values(recordSrc))(\n (g: GuestType<Record<string, any>>, ...entries: any[]) => {\n const record: Record<string, any> = {};\n entries.forEach((entry, index) => {\n record[keys[index]] = entry;\n });\n give(record, g);\n },\n );\n};\n","import { give, GuestType, sourceCombined, SourceType } 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: SourceType<string>[],\n joinPartSrc: SourceType<string> = \"\",\n): SourceType<string> => {\n const result = sourceCombined(\n joinPartSrc,\n ...sources,\n )((g: GuestType<string>, joinPart, ...strings) => {\n give(strings.join(joinPart), g);\n });\n\n return result;\n};\n","import {\n firstVisit,\n GuestType,\n sourceOf,\n SourceType,\n systemPatron,\n value,\n} from \"silentium\";\n\nexport const survey = <T>(\n targetSrc: SourceType<T>,\n triggerSrc: SourceType,\n): SourceType<T> => {\n const resultSrc = sourceOf<T>();\n\n const visited = firstVisit(() => {\n value(\n triggerSrc,\n systemPatron(() => {\n value(targetSrc, resultSrc);\n }),\n );\n });\n\n return (g: GuestType<T>) => {\n visited();\n resultSrc.value(g);\n };\n};\n","import { give, GuestType, sourceCombined, SourceType } 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: SourceType<string>,\n valueSrc: SourceType<string>,\n flagsSrc: SourceType<string> = \"\",\n): SourceType<boolean> =>\n sourceCombined(\n patternSrc,\n valueSrc,\n flagsSrc,\n )((g: GuestType<boolean>, pattern, value, flags) => {\n give(new RegExp(pattern, flags).test(value), g);\n });\n","import { give, GuestType, SourceType, value } from \"silentium\";\n\nexport const priority = <T>(sources: SourceType<T>[]) => {\n return (g: GuestType<T>) => {\n let highestPriorityIndex = 0;\n let highestPriorityResult;\n sources.forEach((source, index) => {\n value(source, (v) => {\n if (highestPriorityIndex <= index) {\n highestPriorityIndex = index;\n highestPriorityResult = v;\n }\n });\n });\n\n if (highestPriorityResult !== undefined) {\n give(highestPriorityResult, g);\n }\n };\n};\n","import {\n firstVisit,\n GuestType,\n patron,\n patronOnce,\n sourceOf,\n SourceType,\n systemPatron,\n value,\n} from \"silentium\";\nimport { survey } from \"../behaviors/Survey\";\nimport { branch } from \"../behaviors\";\nimport { regexpMatched } from \"../system/RegexpMatched\";\nimport { priority } from \"../behaviors/Priority\";\n\nexport interface Route<T> {\n pattern: string;\n patternFlags?: string;\n template: T | SourceType<T>;\n}\n\n/**\n * Router component what will return template if url matches pattern\n * https://silentium-lab.github.io/silentium-components/#/navigation/router\n */\nexport const router = <T = \"string\">(\n urlSrc: SourceType<string>,\n routesSrc: SourceType<Route<T>[]>,\n defaultSrc: SourceType<T>,\n) => {\n const resultSrc = sourceOf<T>();\n\n const visited = firstVisit(() => {\n value(\n routesSrc,\n patronOnce((routes) => {\n const prioritySrc = priority([\n defaultSrc,\n ...routes.map((r) =>\n value(\n branch(\n regexpMatched(r.pattern, urlSrc, r.patternFlags),\n r.template as SourceType,\n ),\n systemPatron((v) => {\n return v;\n }),\n ),\n ),\n ]);\n const surveySrc = survey(prioritySrc, urlSrc);\n value(surveySrc, patron(resultSrc));\n value(\n surveySrc,\n patron((v) => {\n return v;\n }),\n );\n }),\n );\n });\n\n return (g: GuestType<T>) => {\n visited();\n resultSrc.value(g);\n };\n};\n","import { give, GuestType, sourceCombined, SourceType } 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: SourceType<string>,\n patternSrc: SourceType<string>,\n replaceValueSrc: SourceType<string>,\n flagsSrc: SourceType<string> = \"\",\n): SourceType<string> =>\n sourceCombined(\n patternSrc,\n valueSrc,\n replaceValueSrc,\n flagsSrc,\n )((g: GuestType<string>, pattern, value, replaceValue, flags) => {\n give(String(value).replace(new RegExp(pattern, flags), replaceValue), g);\n });\n","import { give, GuestType, sourceCombined, SourceType } 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: SourceType<string>,\n valueSrc: SourceType<string>,\n flagsSrc: SourceType<string> = \"\",\n): SourceType<string[]> =>\n sourceCombined(\n patternSrc,\n valueSrc,\n flagsSrc,\n )((g: GuestType<string[]>, pattern, value, flags) => {\n const result = new RegExp(pattern, flags).exec(value);\n give(result ?? [], g);\n });\n","import { sourceAll, SourceType, systemPatron, value } 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: SourceType<T>,\n keySrc: SourceType<string>,\n valueSrc: SourceType<unknown>,\n) => {\n value(\n sourceAll([baseSrc, keySrc, valueSrc]),\n systemPatron(([base, key, value]) => {\n (base as Record<string, unknown>)[key] = value;\n }),\n );\n\n return baseSrc;\n};\n","import { give, GuestType, sourceCombined, SourceType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/and\n */\nexport const and = (\n oneSrc: SourceType<boolean>,\n twoSrc: SourceType<boolean>,\n) => {\n return sourceCombined(\n oneSrc,\n twoSrc,\n )((guest: GuestType<boolean>, one, two) => {\n give(one && two, guest);\n });\n};\n","import { give, GuestType, sourceCombined, SourceType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/or\n */\nexport const or = (\n oneSrc: SourceType<boolean>,\n twoSrc: SourceType<boolean>,\n) => {\n return sourceCombined(\n oneSrc,\n twoSrc,\n )((guest: GuestType<boolean>, one, two) => {\n give(one || two, guest);\n });\n};\n","import { give, guestCast, GuestType, SourceType, value } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/not\n */\nexport const not = (baseSrc: SourceType<boolean>) => {\n return (g: GuestType<boolean>) => {\n value(\n baseSrc,\n guestCast(g, (base) => {\n give(!base, g);\n }),\n );\n };\n};\n"],"names":["value","sourceAll","systemPatron","sourceOf","give","guestCast","patronOnce","subSourceMany","sourceFiltered","subSource","sourceResettable","removePatronFromPools","firstVisit","guestDisposable","destroy","guestSync","sourceSync","source","sourceCombined","record","patron"],"mappings":"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"}
1
+ {"version":3,"file":"silentium-components.cjs","sources":["../src/controls/GroupActiveClass.ts","../src/behaviors/Dirty.ts","../src/behaviors/Loading.ts","../src/behaviors/Path.ts","../src/behaviors/Deadline.ts","../src/behaviors/Tick.ts","../src/behaviors/Fork.ts","../src/behaviors/Deferred.ts","../src/behaviors/Branch.ts","../src/behaviors/Memo.ts","../src/behaviors/Lock.ts","../src/behaviors/Moment.ts","../src/behaviors/Shot.ts","../src/behaviors/OnlyChanged.ts","../src/structures/HashTable.ts","../src/structures/Record.ts","../src/strings/Concatenated.ts","../src/behaviors/Polling.ts","../src/behaviors/Priority.ts","../src/system/RegexpMatched.ts","../src/navigation/Router.ts","../src/system/RegexpReplaced.ts","../src/system/RegexpMatch.ts","../src/system/Set.ts","../src/boolean/And.ts","../src/boolean/Or.ts","../src/boolean/Not.ts"],"sourcesContent":["import { sourceAll, SourceType, systemPatron, value } from \"silentium\";\n\n/**\n * Sets activeClass to one element of group\n * and resets activeClass on other group elements\n * suitable for menu active class\n */\nexport const groupActiveClass = (\n activeClassSrc: SourceType<string>,\n activeElementSrc: SourceType<HTMLElement>,\n groupElementsSrc: SourceType<HTMLElement[]>,\n) => {\n value(\n sourceAll([activeClassSrc, activeElementSrc, groupElementsSrc]),\n systemPatron(([activeClass, activeElement, groupElements]) => {\n groupElements.forEach((el) => {\n if (el.classList) {\n el.classList.remove(activeClass);\n }\n });\n activeElement.classList.add(activeClass);\n }),\n );\n\n return groupElementsSrc;\n};\n","import {\n give,\n guestCast,\n GuestType,\n patronOnce,\n sourceAll,\n SourceChangeableType,\n sourceOf,\n SourceType,\n value,\n} 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 extends object>(\n baseEntitySource: SourceType<T>,\n becomePatronAuto = false,\n alwaysKeep: string[] = [],\n excludeKeys: string[] = [],\n): SourceChangeableType<Partial<T>> => {\n const comparingSrc = sourceOf();\n const all = sourceAll([comparingSrc, baseEntitySource]);\n\n const result = {\n give(value: T) {\n give(JSON.parse(JSON.stringify(value)), comparingSrc);\n return result;\n },\n value(guest: GuestType<Partial<T>>) {\n value(\n all,\n guestCast(guest, ([comparing, base]) => {\n if (!comparing) {\n return;\n }\n\n give(\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 guest,\n );\n }),\n );\n return result;\n },\n };\n\n if (becomePatronAuto) {\n value(baseEntitySource, patronOnce(result));\n }\n\n return result;\n};\n","import {\n sourceOf,\n SourceType,\n subSourceMany,\n systemPatron,\n value,\n} from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/loading\n */\nexport const loading = (\n loadingStartSource: SourceType<unknown>,\n loadingFinishSource: SourceType<unknown>,\n) => {\n const loadingSrc = sourceOf<boolean>();\n subSourceMany(loadingSrc, [loadingStartSource, loadingFinishSource]);\n\n value(\n loadingStartSource,\n systemPatron(() => {\n loadingSrc.give(true);\n }),\n );\n value(\n loadingFinishSource,\n systemPatron(() => {\n loadingSrc.give(false);\n }),\n );\n\n return loadingSrc.value;\n};\n","import {\n give,\n sourceAll,\n sourceOf,\n SourceType,\n subSourceMany,\n systemPatron,\n value,\n} 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 T extends Record<string, unknown> | Array<unknown>,\n K extends string,\n>(\n baseSrc: SourceType<T>,\n keySrc: SourceType<K>,\n) => {\n const pathSrc = sourceOf<unknown>();\n subSourceMany(pathSrc, [baseSrc, keySrc]);\n\n value(\n sourceAll([baseSrc, keySrc]),\n systemPatron(([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 give(value, pathSrc);\n }\n }),\n );\n\n return pathSrc.value;\n};\n","import {\n give,\n guestCast,\n GuestType,\n patronOnce,\n sourceFiltered,\n SourceType,\n value,\n} from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport const deadline = <T>(\n error: GuestType<Error>,\n baseSrc: SourceType<T>,\n timeoutSrc: SourceType<number>,\n) => {\n let timerHead: unknown = null;\n return (g: GuestType<T>) => {\n value(\n timeoutSrc,\n guestCast(g, (timeout) => {\n if (timerHead) {\n clearTimeout(timerHead as number);\n }\n\n let timeoutReached = false;\n\n timerHead = setTimeout(() => {\n if (timeoutReached) {\n return;\n }\n timeoutReached = true;\n give(new Error(\"Timeout reached in Deadline class\"), error);\n }, timeout);\n\n value(\n sourceFiltered(baseSrc, () => !timeoutReached),\n g,\n );\n\n value(\n baseSrc,\n patronOnce(() => {\n timeoutReached = true;\n }),\n );\n }),\n );\n };\n};\n","import {\n give,\n sourceOf,\n SourceType,\n subSource,\n systemPatron,\n value,\n} 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: SourceType<T>) => {\n const result = sourceOf<T>();\n subSource(result, baseSrc);\n\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 give(lastValue, result);\n lastValue = null;\n }\n });\n };\n\n value(\n baseSrc,\n systemPatron((v) => {\n lastValue = v;\n if (!microtaskScheduled) {\n scheduleMicrotask();\n }\n }),\n );\n\n return result;\n};\n","import {\n GuestObjectType,\n patronOnce,\n removePatronFromPools,\n sourceOf,\n sourceResettable,\n SourceType,\n systemPatron,\n value,\n} from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/dirty\n */\nexport const fork = <T, Then, Else>(\n conditionSrc: SourceType<T>,\n predicate: (v: T) => boolean,\n thenSrc: SourceType<Then>,\n elseSrc?: SourceType<Else>,\n): SourceType<Then | Else> => {\n const result = sourceOf<Then | Else>();\n const reset = sourceOf();\n const resultResettable = sourceResettable(result, reset);\n let thenPatron: GuestObjectType<Then> | undefined;\n let elsePatron: GuestObjectType<Else> | undefined;\n\n value(\n conditionSrc,\n systemPatron((v) => {\n reset.give(1);\n if (thenPatron) {\n removePatronFromPools(thenPatron);\n }\n if (elsePatron) {\n removePatronFromPools(elsePatron);\n }\n if (predicate(v)) {\n thenPatron = patronOnce(result);\n value(thenSrc, thenPatron);\n } else if (elseSrc) {\n elsePatron = patronOnce(result);\n value(elseSrc, elsePatron);\n }\n }),\n );\n\n return resultResettable;\n};\n","import {\n firstVisit,\n GuestType,\n sourceOf,\n sourceResettable,\n SourceType,\n systemPatron,\n value,\n} from \"silentium\";\n\n/**\n * Defer one source after another, gives values of baseSrc only once when triggerSrc responds\n * https://silentium-lab.github.io/silentium-components/#/behaviors/deferred\n */\nexport const deferred = <T>(\n baseSrc: SourceType<T>,\n triggerSrc: SourceType<unknown>,\n) => {\n const result = sourceResettable<T>(sourceOf(), baseSrc as SourceType);\n\n const visited = firstVisit(() => {\n value(\n triggerSrc,\n systemPatron(() => {\n value(baseSrc, result);\n }),\n );\n });\n\n return (g: GuestType<T>) => {\n visited();\n value(result, g);\n };\n};\n","import {\n firstVisit,\n GuestType,\n patronOnce,\n sourceOf,\n sourceResettable,\n SourceType,\n systemPatron,\n value,\n} from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/branch\n */\nexport const branch = <Then, Else>(\n conditionSrc: SourceType<boolean>,\n thenSrc: SourceType<Then>,\n elseSrc?: SourceType<Else>,\n): SourceType<Then | Else> => {\n const resetSrc = sourceOf();\n const result = sourceOf<Then | Else>();\n const resultSrc = sourceResettable(result, resetSrc);\n\n const visited = firstVisit(() => {\n value(\n conditionSrc,\n systemPatron((v) => {\n resetSrc.give(1);\n if (v === true) {\n value(thenSrc, patronOnce(result.give));\n } else if (elseSrc !== undefined) {\n value(elseSrc, patronOnce(result.give));\n }\n }),\n );\n });\n\n return (g: GuestType<Then | Else>) => {\n visited();\n resultSrc.value(g);\n };\n};\n","import { sourceOf, SourceType, systemPatron, value } 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: SourceType<T>) => {\n const result = sourceOf<T>();\n let lastValue: T | null = null;\n\n value(\n baseSrc,\n systemPatron((v) => {\n if (v !== lastValue) {\n result.give(v);\n lastValue = v;\n }\n }),\n );\n\n return result.value;\n};\n","import {\n destroy,\n guestDisposable,\n patronOnce,\n sourceOf,\n sourceResettable,\n SourceType,\n subSource,\n systemPatron,\n value,\n} from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/lock\n */\nexport const lock = <T>(\n baseSrc: SourceType<T>,\n lockSrc: SourceType<unknown>,\n) => {\n const result = sourceOf();\n const resultResettable = sourceResettable(result, lockSrc);\n let locked = false;\n subSource(result, baseSrc);\n\n value(baseSrc, systemPatron(guestDisposable(result.give, () => locked)));\n\n value(\n lockSrc,\n patronOnce(() => {\n locked = true;\n destroy([result]);\n }),\n );\n\n return resultResettable;\n};\n","import { give, guestSync, GuestType, SourceType, value } from \"silentium\";\n\n/**\n * Get's value from source in moment of component call and than return this value every time\n * https://silentium-lab.github.io/silentium-components/#/behaviors/moment\n */\nexport const moment = <T>(\n baseSrc: SourceType<T>,\n defaultValue?: T,\n): SourceType<T> => {\n const guest = guestSync(defaultValue);\n value(baseSrc, guest);\n\n return (g: GuestType<T>) => {\n give(guest.value(), g);\n };\n};\n","import {\n sourceOf,\n sourceResettable,\n sourceSync,\n SourceType,\n systemPatron,\n value,\n} 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>(baseSrc: SourceType<T>, shotSrc: SourceType) => {\n const resetResult = sourceOf();\n const result = sourceOf<T>();\n\n const baseSrcSync = sourceSync(baseSrc, null);\n value(\n shotSrc,\n systemPatron(() => {\n if (baseSrcSync.syncValue() !== null) {\n result.give(baseSrcSync.syncValue() as T);\n resetResult.give(1);\n }\n }),\n );\n\n return sourceResettable(result, resetResult);\n};\n","import { give, guestCast, source, SourceType, value } 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: SourceType<T>) => {\n let firstValue = false;\n return source<T>((g) => {\n value(\n baseSrc,\n guestCast<T>(g, (v) => {\n if (firstValue === false) {\n firstValue = true;\n } else {\n give(v, g);\n }\n }),\n );\n });\n};\n","import {\n sourceOf,\n SourceType,\n subSource,\n systemPatron,\n value,\n} from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/structures/hash-table\n */\nexport const hashTable = (baseSource: SourceType<[string, unknown]>) => {\n const result = sourceOf<Record<string, unknown>>({});\n subSource(result, baseSource);\n\n value(\n baseSource,\n systemPatron(([key, value]) => {\n result.value((lastRecord) => {\n lastRecord[key] = value;\n });\n }),\n );\n\n return result.value;\n};\n","import { give, GuestType, sourceCombined, SourceType } from \"silentium\";\n\n/**\n * Returns record of data from record of sources\n * https://silentium-lab.github.io/silentium-components/#/structures/record\n */\nexport const record = (recordSrc: Record<string, SourceType>) => {\n const keys = Object.keys(recordSrc);\n return sourceCombined(...Object.values(recordSrc))(\n (g: GuestType<Record<string, any>>, ...entries: any[]) => {\n const record: Record<string, any> = {};\n entries.forEach((entry, index) => {\n record[keys[index]] = entry;\n });\n give(record, g);\n },\n );\n};\n","import { give, GuestType, sourceCombined, SourceType } 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: SourceType<string>[],\n joinPartSrc: SourceType<string> = \"\",\n): SourceType<string> => {\n const result = sourceCombined(\n joinPartSrc,\n ...sources,\n )((g: GuestType<string>, joinPart, ...strings) => {\n give(strings.join(joinPart), g);\n });\n\n return result;\n};\n","import {\n firstVisit,\n GuestType,\n sourceOf,\n SourceType,\n systemPatron,\n value,\n} from \"silentium\";\n\nexport const polling = <T>(\n targetSrc: SourceType<T>,\n triggerSrc: SourceType,\n): SourceType<T> => {\n const resultSrc = sourceOf<T>();\n\n const visited = firstVisit(() => {\n value(\n triggerSrc,\n systemPatron(() => {\n value(targetSrc, resultSrc);\n }),\n );\n });\n\n return (g: GuestType<T>) => {\n visited();\n resultSrc.value(g);\n };\n};\n","import { give, GuestType, SourceType, value } from \"silentium\";\n\nexport const priority = <T>(sources: SourceType<T>[]) => {\n return (g: GuestType<T>) => {\n let highestPriorityIndex = 0;\n let highestPriorityResult;\n sources.forEach((source, index) => {\n value(source, (v) => {\n if (highestPriorityIndex <= index) {\n highestPriorityIndex = index;\n highestPriorityResult = v;\n }\n });\n });\n\n if (highestPriorityResult !== undefined) {\n give(highestPriorityResult, g);\n }\n };\n};\n","import { give, GuestType, sourceCombined, SourceType } 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: SourceType<string>,\n valueSrc: SourceType<string>,\n flagsSrc: SourceType<string> = \"\",\n): SourceType<boolean> =>\n sourceCombined(\n patternSrc,\n valueSrc,\n flagsSrc,\n )((g: GuestType<boolean>, pattern, value, flags) => {\n give(new RegExp(pattern, flags).test(value), g);\n });\n","import {\n firstVisit,\n GuestType,\n patronOnce,\n sourceOf,\n SourceType,\n systemPatron,\n value,\n} from \"silentium\";\nimport { branch } from \"../behaviors\";\nimport { polling } from \"../behaviors/Polling\";\nimport { priority } from \"../behaviors/Priority\";\nimport { regexpMatched } from \"../system/RegexpMatched\";\n\nexport interface Route<T> {\n pattern: string;\n patternFlags?: string;\n template: T | SourceType<T>;\n}\n\n/**\n * Router component what will return template if url matches pattern\n * https://silentium-lab.github.io/silentium-components/#/navigation/router\n */\nexport const router = <T = \"string\">(\n urlSrc: SourceType<string>,\n routesSrc: SourceType<Route<T>[]>,\n defaultSrc: SourceType<T>,\n) => {\n const resultSrc = sourceOf<T>();\n\n const visited = firstVisit(() => {\n value(\n routesSrc,\n patronOnce((routes) => {\n const prioritySrc = priority([\n defaultSrc,\n ...routes.map((r) =>\n value(\n branch(\n regexpMatched(r.pattern, urlSrc, r.patternFlags),\n r.template as SourceType,\n ),\n systemPatron((v) => {\n return v;\n }),\n ),\n ),\n ]);\n const pollingSrc = polling(prioritySrc, urlSrc);\n value(pollingSrc, systemPatron(resultSrc));\n }),\n );\n });\n\n return (g: GuestType<T>) => {\n visited();\n resultSrc.value(g);\n };\n};\n","import { give, GuestType, sourceCombined, SourceType } 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: SourceType<string>,\n patternSrc: SourceType<string>,\n replaceValueSrc: SourceType<string>,\n flagsSrc: SourceType<string> = \"\",\n): SourceType<string> =>\n sourceCombined(\n patternSrc,\n valueSrc,\n replaceValueSrc,\n flagsSrc,\n )((g: GuestType<string>, pattern, value, replaceValue, flags) => {\n give(String(value).replace(new RegExp(pattern, flags), replaceValue), g);\n });\n","import { give, GuestType, sourceCombined, SourceType } 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: SourceType<string>,\n valueSrc: SourceType<string>,\n flagsSrc: SourceType<string> = \"\",\n): SourceType<string[]> =>\n sourceCombined(\n patternSrc,\n valueSrc,\n flagsSrc,\n )((g: GuestType<string[]>, pattern, value, flags) => {\n const result = new RegExp(pattern, flags).exec(value);\n give(result ?? [], g);\n });\n","import { sourceAll, SourceType, systemPatron, value } 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: SourceType<T>,\n keySrc: SourceType<string>,\n valueSrc: SourceType<unknown>,\n) => {\n value(\n sourceAll([baseSrc, keySrc, valueSrc]),\n systemPatron(([base, key, value]) => {\n (base as Record<string, unknown>)[key] = value;\n }),\n );\n\n return baseSrc;\n};\n","import { give, GuestType, sourceCombined, SourceType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/and\n */\nexport const and = (\n oneSrc: SourceType<boolean>,\n twoSrc: SourceType<boolean>,\n) => {\n return sourceCombined(\n oneSrc,\n twoSrc,\n )((guest: GuestType<boolean>, one, two) => {\n give(one && two, guest);\n });\n};\n","import { give, GuestType, sourceCombined, SourceType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/or\n */\nexport const or = (\n oneSrc: SourceType<boolean>,\n twoSrc: SourceType<boolean>,\n) => {\n return sourceCombined(\n oneSrc,\n twoSrc,\n )((guest: GuestType<boolean>, one, two) => {\n give(one || two, guest);\n });\n};\n","import { give, guestCast, GuestType, SourceType, value } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/not\n */\nexport const not = (baseSrc: SourceType<boolean>) => {\n return (g: GuestType<boolean>) => {\n value(\n baseSrc,\n guestCast(g, (base) => {\n give(!base, g);\n }),\n );\n };\n};\n"],"names":["value","sourceAll","systemPatron","sourceOf","give","guestCast","patronOnce","subSourceMany","sourceFiltered","subSource","sourceResettable","removePatronFromPools","firstVisit","guestDisposable","destroy","guestSync","sourceSync","source","sourceCombined","record"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { value, sourceAll, systemPatron, sourceOf, patronOnce, guestCast, give, subSourceMany, sourceFiltered, subSource, sourceResettable, removePatronFromPools, firstVisit, guestDisposable, destroy, guestSync, sourceSync, source, sourceCombined, patron } from 'silentium';
1
+ import { value, sourceAll, systemPatron, sourceOf, patronOnce, guestCast, give, subSourceMany, sourceFiltered, subSource, sourceResettable, removePatronFromPools, firstVisit, guestDisposable, destroy, guestSync, sourceSync, source, sourceCombined } from 'silentium';
2
2
 
3
3
  const groupActiveClass = (activeClassSrc, activeElementSrc, groupElementsSrc) => {
4
4
  value(
@@ -205,9 +205,9 @@ const branch = (conditionSrc, thenSrc, elseSrc) => {
205
205
  systemPatron((v) => {
206
206
  resetSrc.give(1);
207
207
  if (v === true) {
208
- value(thenSrc, result.give);
208
+ value(thenSrc, patronOnce(result.give));
209
209
  } else if (elseSrc !== void 0) {
210
- value(elseSrc, result.give);
210
+ value(elseSrc, patronOnce(result.give));
211
211
  }
212
212
  })
213
213
  );
@@ -326,7 +326,7 @@ const concatenated = (sources, joinPartSrc = "") => {
326
326
  return result;
327
327
  };
328
328
 
329
- const survey = (targetSrc, triggerSrc) => {
329
+ const polling = (targetSrc, triggerSrc) => {
330
330
  const resultSrc = sourceOf();
331
331
  const visited = firstVisit(() => {
332
332
  value(
@@ -342,14 +342,6 @@ const survey = (targetSrc, triggerSrc) => {
342
342
  };
343
343
  };
344
344
 
345
- const regexpMatched = (patternSrc, valueSrc, flagsSrc = "") => sourceCombined(
346
- patternSrc,
347
- valueSrc,
348
- flagsSrc
349
- )((g, pattern, value, flags) => {
350
- give(new RegExp(pattern, flags).test(value), g);
351
- });
352
-
353
345
  const priority = (sources) => {
354
346
  return (g) => {
355
347
  let highestPriorityIndex = 0;
@@ -368,6 +360,14 @@ const priority = (sources) => {
368
360
  };
369
361
  };
370
362
 
363
+ const regexpMatched = (patternSrc, valueSrc, flagsSrc = "") => sourceCombined(
364
+ patternSrc,
365
+ valueSrc,
366
+ flagsSrc
367
+ )((g, pattern, value, flags) => {
368
+ give(new RegExp(pattern, flags).test(value), g);
369
+ });
370
+
371
371
  const router = (urlSrc, routesSrc, defaultSrc) => {
372
372
  const resultSrc = sourceOf();
373
373
  const visited = firstVisit(() => {
@@ -388,14 +388,8 @@ const router = (urlSrc, routesSrc, defaultSrc) => {
388
388
  )
389
389
  )
390
390
  ]);
391
- const surveySrc = survey(prioritySrc, urlSrc);
392
- value(surveySrc, patron(resultSrc));
393
- value(
394
- surveySrc,
395
- patron((v) => {
396
- return v;
397
- })
398
- );
391
+ const pollingSrc = polling(prioritySrc, urlSrc);
392
+ value(pollingSrc, systemPatron(resultSrc));
399
393
  })
400
394
  );
401
395
  });
@@ -1 +1 @@
1
- {"version":3,"file":"silentium-components.js","sources":["../src/controls/GroupActiveClass.ts","../src/behaviors/Dirty.ts","../src/behaviors/Loading.ts","../src/behaviors/Path.ts","../src/behaviors/Deadline.ts","../src/behaviors/Tick.ts","../src/behaviors/Fork.ts","../src/behaviors/Deferred.ts","../src/behaviors/Branch.ts","../src/behaviors/Memo.ts","../src/behaviors/Lock.ts","../src/behaviors/Moment.ts","../src/behaviors/Shot.ts","../src/behaviors/OnlyChanged.ts","../src/structures/HashTable.ts","../src/structures/Record.ts","../src/strings/Concatenated.ts","../src/behaviors/Survey.ts","../src/system/RegexpMatched.ts","../src/behaviors/Priority.ts","../src/navigation/Router.ts","../src/system/RegexpReplaced.ts","../src/system/RegexpMatch.ts","../src/system/Set.ts","../src/boolean/And.ts","../src/boolean/Or.ts","../src/boolean/Not.ts"],"sourcesContent":["import { sourceAll, SourceType, systemPatron, value } from \"silentium\";\n\n/**\n * Sets activeClass to one element of group\n * and resets activeClass on other group elements\n * suitable for menu active class\n */\nexport const groupActiveClass = (\n activeClassSrc: SourceType<string>,\n activeElementSrc: SourceType<HTMLElement>,\n groupElementsSrc: SourceType<HTMLElement[]>,\n) => {\n value(\n sourceAll([activeClassSrc, activeElementSrc, groupElementsSrc]),\n systemPatron(([activeClass, activeElement, groupElements]) => {\n groupElements.forEach((el) => {\n if (el.classList) {\n el.classList.remove(activeClass);\n }\n });\n activeElement.classList.add(activeClass);\n }),\n );\n\n return groupElementsSrc;\n};\n","import {\n give,\n guestCast,\n GuestType,\n patronOnce,\n sourceAll,\n SourceChangeableType,\n sourceOf,\n SourceType,\n value,\n} 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 extends object>(\n baseEntitySource: SourceType<T>,\n becomePatronAuto = false,\n alwaysKeep: string[] = [],\n excludeKeys: string[] = [],\n): SourceChangeableType<Partial<T>> => {\n const comparingSrc = sourceOf();\n const all = sourceAll([comparingSrc, baseEntitySource]);\n\n const result = {\n give(value: T) {\n give(JSON.parse(JSON.stringify(value)), comparingSrc);\n return result;\n },\n value(guest: GuestType<Partial<T>>) {\n value(\n all,\n guestCast(guest, ([comparing, base]) => {\n if (!comparing) {\n return;\n }\n\n give(\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 guest,\n );\n }),\n );\n return result;\n },\n };\n\n if (becomePatronAuto) {\n value(baseEntitySource, patronOnce(result));\n }\n\n return result;\n};\n","import {\n sourceOf,\n SourceType,\n subSourceMany,\n systemPatron,\n value,\n} from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/loading\n */\nexport const loading = (\n loadingStartSource: SourceType<unknown>,\n loadingFinishSource: SourceType<unknown>,\n) => {\n const loadingSrc = sourceOf<boolean>();\n subSourceMany(loadingSrc, [loadingStartSource, loadingFinishSource]);\n\n value(\n loadingStartSource,\n systemPatron(() => {\n loadingSrc.give(true);\n }),\n );\n value(\n loadingFinishSource,\n systemPatron(() => {\n loadingSrc.give(false);\n }),\n );\n\n return loadingSrc.value;\n};\n","import {\n give,\n sourceAll,\n sourceOf,\n SourceType,\n subSourceMany,\n systemPatron,\n value,\n} 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 T extends Record<string, unknown> | Array<unknown>,\n K extends string,\n>(\n baseSrc: SourceType<T>,\n keySrc: SourceType<K>,\n) => {\n const pathSrc = sourceOf<unknown>();\n subSourceMany(pathSrc, [baseSrc, keySrc]);\n\n value(\n sourceAll([baseSrc, keySrc]),\n systemPatron(([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 give(value, pathSrc);\n }\n }),\n );\n\n return pathSrc.value;\n};\n","import {\n give,\n guestCast,\n GuestType,\n patronOnce,\n sourceFiltered,\n SourceType,\n value,\n} from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport const deadline = <T>(\n error: GuestType<Error>,\n baseSrc: SourceType<T>,\n timeoutSrc: SourceType<number>,\n) => {\n let timerHead: unknown = null;\n return (g: GuestType<T>) => {\n value(\n timeoutSrc,\n guestCast(g, (timeout) => {\n if (timerHead) {\n clearTimeout(timerHead as number);\n }\n\n let timeoutReached = false;\n\n timerHead = setTimeout(() => {\n if (timeoutReached) {\n return;\n }\n timeoutReached = true;\n give(new Error(\"Timeout reached in Deadline class\"), error);\n }, timeout);\n\n value(\n sourceFiltered(baseSrc, () => !timeoutReached),\n g,\n );\n\n value(\n baseSrc,\n patronOnce(() => {\n timeoutReached = true;\n }),\n );\n }),\n );\n };\n};\n","import {\n give,\n sourceOf,\n SourceType,\n subSource,\n systemPatron,\n value,\n} 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: SourceType<T>) => {\n const result = sourceOf<T>();\n subSource(result, baseSrc);\n\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 give(lastValue, result);\n lastValue = null;\n }\n });\n };\n\n value(\n baseSrc,\n systemPatron((v) => {\n lastValue = v;\n if (!microtaskScheduled) {\n scheduleMicrotask();\n }\n }),\n );\n\n return result;\n};\n","import {\n GuestObjectType,\n patronOnce,\n removePatronFromPools,\n sourceOf,\n sourceResettable,\n SourceType,\n systemPatron,\n value,\n} from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/dirty\n */\nexport const fork = <T, Then, Else>(\n conditionSrc: SourceType<T>,\n predicate: (v: T) => boolean,\n thenSrc: SourceType<Then>,\n elseSrc?: SourceType<Else>,\n): SourceType<Then | Else> => {\n const result = sourceOf<Then | Else>();\n const reset = sourceOf();\n const resultResettable = sourceResettable(result, reset);\n let thenPatron: GuestObjectType<Then> | undefined;\n let elsePatron: GuestObjectType<Else> | undefined;\n\n value(\n conditionSrc,\n systemPatron((v) => {\n reset.give(1);\n if (thenPatron) {\n removePatronFromPools(thenPatron);\n }\n if (elsePatron) {\n removePatronFromPools(elsePatron);\n }\n if (predicate(v)) {\n thenPatron = patronOnce(result);\n value(thenSrc, thenPatron);\n } else if (elseSrc) {\n elsePatron = patronOnce(result);\n value(elseSrc, elsePatron);\n }\n }),\n );\n\n return resultResettable;\n};\n","import {\n firstVisit,\n GuestType,\n sourceOf,\n sourceResettable,\n SourceType,\n systemPatron,\n value,\n} from \"silentium\";\n\n/**\n * Defer one source after another, gives values of baseSrc only once when triggerSrc responds\n * https://silentium-lab.github.io/silentium-components/#/behaviors/deferred\n */\nexport const deferred = <T>(\n baseSrc: SourceType<T>,\n triggerSrc: SourceType<unknown>,\n) => {\n const result = sourceResettable<T>(sourceOf(), baseSrc as SourceType);\n\n const visited = firstVisit(() => {\n value(\n triggerSrc,\n systemPatron(() => {\n value(baseSrc, result);\n }),\n );\n });\n\n return (g: GuestType<T>) => {\n visited();\n value(result, g);\n };\n};\n","import {\n firstVisit,\n GuestType,\n sourceOf,\n sourceResettable,\n SourceType,\n systemPatron,\n value,\n} from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/branch\n */\nexport const branch = <Then, Else>(\n conditionSrc: SourceType<boolean>,\n thenSrc: SourceType<Then>,\n elseSrc?: SourceType<Else>,\n): SourceType<Then | Else> => {\n const resetSrc = sourceOf();\n const result = sourceOf<Then | Else>();\n const resultSrc = sourceResettable(result, resetSrc);\n\n const visited = firstVisit(() => {\n value(\n conditionSrc,\n systemPatron((v) => {\n resetSrc.give(1);\n if (v === true) {\n value(thenSrc, result.give);\n } else if (elseSrc !== undefined) {\n value(elseSrc, result.give);\n }\n }),\n );\n });\n\n return (g: GuestType<Then | Else>) => {\n visited();\n resultSrc.value(g);\n };\n};\n","import { sourceOf, SourceType, systemPatron, value } 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: SourceType<T>) => {\n const result = sourceOf<T>();\n let lastValue: T | null = null;\n\n value(\n baseSrc,\n systemPatron((v) => {\n if (v !== lastValue) {\n result.give(v);\n lastValue = v;\n }\n }),\n );\n\n return result.value;\n};\n","import {\n destroy,\n guestDisposable,\n patronOnce,\n sourceOf,\n sourceResettable,\n SourceType,\n subSource,\n systemPatron,\n value,\n} from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/lock\n */\nexport const lock = <T>(\n baseSrc: SourceType<T>,\n lockSrc: SourceType<unknown>,\n) => {\n const result = sourceOf();\n const resultResettable = sourceResettable(result, lockSrc);\n let locked = false;\n subSource(result, baseSrc);\n\n value(baseSrc, systemPatron(guestDisposable(result.give, () => locked)));\n\n value(\n lockSrc,\n patronOnce(() => {\n locked = true;\n destroy([result]);\n }),\n );\n\n return resultResettable;\n};\n","import { give, guestSync, GuestType, SourceType, value } from \"silentium\";\n\n/**\n * Get's value from source in moment of component call and than return this value every time\n * https://silentium-lab.github.io/silentium-components/#/behaviors/moment\n */\nexport const moment = <T>(\n baseSrc: SourceType<T>,\n defaultValue?: T,\n): SourceType<T> => {\n const guest = guestSync(defaultValue);\n value(baseSrc, guest);\n\n return (g: GuestType<T>) => {\n give(guest.value(), g);\n };\n};\n","import {\n sourceOf,\n sourceResettable,\n sourceSync,\n SourceType,\n systemPatron,\n value,\n} 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>(baseSrc: SourceType<T>, shotSrc: SourceType) => {\n const resetResult = sourceOf();\n const result = sourceOf<T>();\n\n const baseSrcSync = sourceSync(baseSrc, null);\n value(\n shotSrc,\n systemPatron(() => {\n if (baseSrcSync.syncValue() !== null) {\n result.give(baseSrcSync.syncValue() as T);\n resetResult.give(1);\n }\n }),\n );\n\n return sourceResettable(result, resetResult);\n};\n","import { give, guestCast, source, SourceType, value } 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: SourceType<T>) => {\n let firstValue = false;\n return source<T>((g) => {\n value(\n baseSrc,\n guestCast<T>(g, (v) => {\n if (firstValue === false) {\n firstValue = true;\n } else {\n give(v, g);\n }\n }),\n );\n });\n};\n","import {\n sourceOf,\n SourceType,\n subSource,\n systemPatron,\n value,\n} from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/structures/hash-table\n */\nexport const hashTable = (baseSource: SourceType<[string, unknown]>) => {\n const result = sourceOf<Record<string, unknown>>({});\n subSource(result, baseSource);\n\n value(\n baseSource,\n systemPatron(([key, value]) => {\n result.value((lastRecord) => {\n lastRecord[key] = value;\n });\n }),\n );\n\n return result.value;\n};\n","import { give, GuestType, sourceCombined, SourceType } from \"silentium\";\n\n/**\n * Returns record of data from record of sources\n * https://silentium-lab.github.io/silentium-components/#/structures/record\n */\nexport const record = (recordSrc: Record<string, SourceType>) => {\n const keys = Object.keys(recordSrc);\n return sourceCombined(...Object.values(recordSrc))(\n (g: GuestType<Record<string, any>>, ...entries: any[]) => {\n const record: Record<string, any> = {};\n entries.forEach((entry, index) => {\n record[keys[index]] = entry;\n });\n give(record, g);\n },\n );\n};\n","import { give, GuestType, sourceCombined, SourceType } 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: SourceType<string>[],\n joinPartSrc: SourceType<string> = \"\",\n): SourceType<string> => {\n const result = sourceCombined(\n joinPartSrc,\n ...sources,\n )((g: GuestType<string>, joinPart, ...strings) => {\n give(strings.join(joinPart), g);\n });\n\n return result;\n};\n","import {\n firstVisit,\n GuestType,\n sourceOf,\n SourceType,\n systemPatron,\n value,\n} from \"silentium\";\n\nexport const survey = <T>(\n targetSrc: SourceType<T>,\n triggerSrc: SourceType,\n): SourceType<T> => {\n const resultSrc = sourceOf<T>();\n\n const visited = firstVisit(() => {\n value(\n triggerSrc,\n systemPatron(() => {\n value(targetSrc, resultSrc);\n }),\n );\n });\n\n return (g: GuestType<T>) => {\n visited();\n resultSrc.value(g);\n };\n};\n","import { give, GuestType, sourceCombined, SourceType } 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: SourceType<string>,\n valueSrc: SourceType<string>,\n flagsSrc: SourceType<string> = \"\",\n): SourceType<boolean> =>\n sourceCombined(\n patternSrc,\n valueSrc,\n flagsSrc,\n )((g: GuestType<boolean>, pattern, value, flags) => {\n give(new RegExp(pattern, flags).test(value), g);\n });\n","import { give, GuestType, SourceType, value } from \"silentium\";\n\nexport const priority = <T>(sources: SourceType<T>[]) => {\n return (g: GuestType<T>) => {\n let highestPriorityIndex = 0;\n let highestPriorityResult;\n sources.forEach((source, index) => {\n value(source, (v) => {\n if (highestPriorityIndex <= index) {\n highestPriorityIndex = index;\n highestPriorityResult = v;\n }\n });\n });\n\n if (highestPriorityResult !== undefined) {\n give(highestPriorityResult, g);\n }\n };\n};\n","import {\n firstVisit,\n GuestType,\n patron,\n patronOnce,\n sourceOf,\n SourceType,\n systemPatron,\n value,\n} from \"silentium\";\nimport { survey } from \"../behaviors/Survey\";\nimport { branch } from \"../behaviors\";\nimport { regexpMatched } from \"../system/RegexpMatched\";\nimport { priority } from \"../behaviors/Priority\";\n\nexport interface Route<T> {\n pattern: string;\n patternFlags?: string;\n template: T | SourceType<T>;\n}\n\n/**\n * Router component what will return template if url matches pattern\n * https://silentium-lab.github.io/silentium-components/#/navigation/router\n */\nexport const router = <T = \"string\">(\n urlSrc: SourceType<string>,\n routesSrc: SourceType<Route<T>[]>,\n defaultSrc: SourceType<T>,\n) => {\n const resultSrc = sourceOf<T>();\n\n const visited = firstVisit(() => {\n value(\n routesSrc,\n patronOnce((routes) => {\n const prioritySrc = priority([\n defaultSrc,\n ...routes.map((r) =>\n value(\n branch(\n regexpMatched(r.pattern, urlSrc, r.patternFlags),\n r.template as SourceType,\n ),\n systemPatron((v) => {\n return v;\n }),\n ),\n ),\n ]);\n const surveySrc = survey(prioritySrc, urlSrc);\n value(surveySrc, patron(resultSrc));\n value(\n surveySrc,\n patron((v) => {\n return v;\n }),\n );\n }),\n );\n });\n\n return (g: GuestType<T>) => {\n visited();\n resultSrc.value(g);\n };\n};\n","import { give, GuestType, sourceCombined, SourceType } 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: SourceType<string>,\n patternSrc: SourceType<string>,\n replaceValueSrc: SourceType<string>,\n flagsSrc: SourceType<string> = \"\",\n): SourceType<string> =>\n sourceCombined(\n patternSrc,\n valueSrc,\n replaceValueSrc,\n flagsSrc,\n )((g: GuestType<string>, pattern, value, replaceValue, flags) => {\n give(String(value).replace(new RegExp(pattern, flags), replaceValue), g);\n });\n","import { give, GuestType, sourceCombined, SourceType } 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: SourceType<string>,\n valueSrc: SourceType<string>,\n flagsSrc: SourceType<string> = \"\",\n): SourceType<string[]> =>\n sourceCombined(\n patternSrc,\n valueSrc,\n flagsSrc,\n )((g: GuestType<string[]>, pattern, value, flags) => {\n const result = new RegExp(pattern, flags).exec(value);\n give(result ?? [], g);\n });\n","import { sourceAll, SourceType, systemPatron, value } 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: SourceType<T>,\n keySrc: SourceType<string>,\n valueSrc: SourceType<unknown>,\n) => {\n value(\n sourceAll([baseSrc, keySrc, valueSrc]),\n systemPatron(([base, key, value]) => {\n (base as Record<string, unknown>)[key] = value;\n }),\n );\n\n return baseSrc;\n};\n","import { give, GuestType, sourceCombined, SourceType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/and\n */\nexport const and = (\n oneSrc: SourceType<boolean>,\n twoSrc: SourceType<boolean>,\n) => {\n return sourceCombined(\n oneSrc,\n twoSrc,\n )((guest: GuestType<boolean>, one, two) => {\n give(one && two, guest);\n });\n};\n","import { give, GuestType, sourceCombined, SourceType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/or\n */\nexport const or = (\n oneSrc: SourceType<boolean>,\n twoSrc: SourceType<boolean>,\n) => {\n return sourceCombined(\n oneSrc,\n twoSrc,\n )((guest: GuestType<boolean>, one, two) => {\n give(one || two, guest);\n });\n};\n","import { give, guestCast, GuestType, SourceType, value } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/not\n */\nexport const not = (baseSrc: SourceType<boolean>) => {\n return (g: GuestType<boolean>) => {\n value(\n baseSrc,\n guestCast(g, (base) => {\n give(!base, g);\n }),\n );\n };\n};\n"],"names":["value","record"],"mappings":"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"}
1
+ {"version":3,"file":"silentium-components.js","sources":["../src/controls/GroupActiveClass.ts","../src/behaviors/Dirty.ts","../src/behaviors/Loading.ts","../src/behaviors/Path.ts","../src/behaviors/Deadline.ts","../src/behaviors/Tick.ts","../src/behaviors/Fork.ts","../src/behaviors/Deferred.ts","../src/behaviors/Branch.ts","../src/behaviors/Memo.ts","../src/behaviors/Lock.ts","../src/behaviors/Moment.ts","../src/behaviors/Shot.ts","../src/behaviors/OnlyChanged.ts","../src/structures/HashTable.ts","../src/structures/Record.ts","../src/strings/Concatenated.ts","../src/behaviors/Polling.ts","../src/behaviors/Priority.ts","../src/system/RegexpMatched.ts","../src/navigation/Router.ts","../src/system/RegexpReplaced.ts","../src/system/RegexpMatch.ts","../src/system/Set.ts","../src/boolean/And.ts","../src/boolean/Or.ts","../src/boolean/Not.ts"],"sourcesContent":["import { sourceAll, SourceType, systemPatron, value } from \"silentium\";\n\n/**\n * Sets activeClass to one element of group\n * and resets activeClass on other group elements\n * suitable for menu active class\n */\nexport const groupActiveClass = (\n activeClassSrc: SourceType<string>,\n activeElementSrc: SourceType<HTMLElement>,\n groupElementsSrc: SourceType<HTMLElement[]>,\n) => {\n value(\n sourceAll([activeClassSrc, activeElementSrc, groupElementsSrc]),\n systemPatron(([activeClass, activeElement, groupElements]) => {\n groupElements.forEach((el) => {\n if (el.classList) {\n el.classList.remove(activeClass);\n }\n });\n activeElement.classList.add(activeClass);\n }),\n );\n\n return groupElementsSrc;\n};\n","import {\n give,\n guestCast,\n GuestType,\n patronOnce,\n sourceAll,\n SourceChangeableType,\n sourceOf,\n SourceType,\n value,\n} 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 extends object>(\n baseEntitySource: SourceType<T>,\n becomePatronAuto = false,\n alwaysKeep: string[] = [],\n excludeKeys: string[] = [],\n): SourceChangeableType<Partial<T>> => {\n const comparingSrc = sourceOf();\n const all = sourceAll([comparingSrc, baseEntitySource]);\n\n const result = {\n give(value: T) {\n give(JSON.parse(JSON.stringify(value)), comparingSrc);\n return result;\n },\n value(guest: GuestType<Partial<T>>) {\n value(\n all,\n guestCast(guest, ([comparing, base]) => {\n if (!comparing) {\n return;\n }\n\n give(\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 guest,\n );\n }),\n );\n return result;\n },\n };\n\n if (becomePatronAuto) {\n value(baseEntitySource, patronOnce(result));\n }\n\n return result;\n};\n","import {\n sourceOf,\n SourceType,\n subSourceMany,\n systemPatron,\n value,\n} from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/loading\n */\nexport const loading = (\n loadingStartSource: SourceType<unknown>,\n loadingFinishSource: SourceType<unknown>,\n) => {\n const loadingSrc = sourceOf<boolean>();\n subSourceMany(loadingSrc, [loadingStartSource, loadingFinishSource]);\n\n value(\n loadingStartSource,\n systemPatron(() => {\n loadingSrc.give(true);\n }),\n );\n value(\n loadingFinishSource,\n systemPatron(() => {\n loadingSrc.give(false);\n }),\n );\n\n return loadingSrc.value;\n};\n","import {\n give,\n sourceAll,\n sourceOf,\n SourceType,\n subSourceMany,\n systemPatron,\n value,\n} 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 T extends Record<string, unknown> | Array<unknown>,\n K extends string,\n>(\n baseSrc: SourceType<T>,\n keySrc: SourceType<K>,\n) => {\n const pathSrc = sourceOf<unknown>();\n subSourceMany(pathSrc, [baseSrc, keySrc]);\n\n value(\n sourceAll([baseSrc, keySrc]),\n systemPatron(([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 give(value, pathSrc);\n }\n }),\n );\n\n return pathSrc.value;\n};\n","import {\n give,\n guestCast,\n GuestType,\n patronOnce,\n sourceFiltered,\n SourceType,\n value,\n} from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport const deadline = <T>(\n error: GuestType<Error>,\n baseSrc: SourceType<T>,\n timeoutSrc: SourceType<number>,\n) => {\n let timerHead: unknown = null;\n return (g: GuestType<T>) => {\n value(\n timeoutSrc,\n guestCast(g, (timeout) => {\n if (timerHead) {\n clearTimeout(timerHead as number);\n }\n\n let timeoutReached = false;\n\n timerHead = setTimeout(() => {\n if (timeoutReached) {\n return;\n }\n timeoutReached = true;\n give(new Error(\"Timeout reached in Deadline class\"), error);\n }, timeout);\n\n value(\n sourceFiltered(baseSrc, () => !timeoutReached),\n g,\n );\n\n value(\n baseSrc,\n patronOnce(() => {\n timeoutReached = true;\n }),\n );\n }),\n );\n };\n};\n","import {\n give,\n sourceOf,\n SourceType,\n subSource,\n systemPatron,\n value,\n} 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: SourceType<T>) => {\n const result = sourceOf<T>();\n subSource(result, baseSrc);\n\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 give(lastValue, result);\n lastValue = null;\n }\n });\n };\n\n value(\n baseSrc,\n systemPatron((v) => {\n lastValue = v;\n if (!microtaskScheduled) {\n scheduleMicrotask();\n }\n }),\n );\n\n return result;\n};\n","import {\n GuestObjectType,\n patronOnce,\n removePatronFromPools,\n sourceOf,\n sourceResettable,\n SourceType,\n systemPatron,\n value,\n} from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/dirty\n */\nexport const fork = <T, Then, Else>(\n conditionSrc: SourceType<T>,\n predicate: (v: T) => boolean,\n thenSrc: SourceType<Then>,\n elseSrc?: SourceType<Else>,\n): SourceType<Then | Else> => {\n const result = sourceOf<Then | Else>();\n const reset = sourceOf();\n const resultResettable = sourceResettable(result, reset);\n let thenPatron: GuestObjectType<Then> | undefined;\n let elsePatron: GuestObjectType<Else> | undefined;\n\n value(\n conditionSrc,\n systemPatron((v) => {\n reset.give(1);\n if (thenPatron) {\n removePatronFromPools(thenPatron);\n }\n if (elsePatron) {\n removePatronFromPools(elsePatron);\n }\n if (predicate(v)) {\n thenPatron = patronOnce(result);\n value(thenSrc, thenPatron);\n } else if (elseSrc) {\n elsePatron = patronOnce(result);\n value(elseSrc, elsePatron);\n }\n }),\n );\n\n return resultResettable;\n};\n","import {\n firstVisit,\n GuestType,\n sourceOf,\n sourceResettable,\n SourceType,\n systemPatron,\n value,\n} from \"silentium\";\n\n/**\n * Defer one source after another, gives values of baseSrc only once when triggerSrc responds\n * https://silentium-lab.github.io/silentium-components/#/behaviors/deferred\n */\nexport const deferred = <T>(\n baseSrc: SourceType<T>,\n triggerSrc: SourceType<unknown>,\n) => {\n const result = sourceResettable<T>(sourceOf(), baseSrc as SourceType);\n\n const visited = firstVisit(() => {\n value(\n triggerSrc,\n systemPatron(() => {\n value(baseSrc, result);\n }),\n );\n });\n\n return (g: GuestType<T>) => {\n visited();\n value(result, g);\n };\n};\n","import {\n firstVisit,\n GuestType,\n patronOnce,\n sourceOf,\n sourceResettable,\n SourceType,\n systemPatron,\n value,\n} from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/branch\n */\nexport const branch = <Then, Else>(\n conditionSrc: SourceType<boolean>,\n thenSrc: SourceType<Then>,\n elseSrc?: SourceType<Else>,\n): SourceType<Then | Else> => {\n const resetSrc = sourceOf();\n const result = sourceOf<Then | Else>();\n const resultSrc = sourceResettable(result, resetSrc);\n\n const visited = firstVisit(() => {\n value(\n conditionSrc,\n systemPatron((v) => {\n resetSrc.give(1);\n if (v === true) {\n value(thenSrc, patronOnce(result.give));\n } else if (elseSrc !== undefined) {\n value(elseSrc, patronOnce(result.give));\n }\n }),\n );\n });\n\n return (g: GuestType<Then | Else>) => {\n visited();\n resultSrc.value(g);\n };\n};\n","import { sourceOf, SourceType, systemPatron, value } 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: SourceType<T>) => {\n const result = sourceOf<T>();\n let lastValue: T | null = null;\n\n value(\n baseSrc,\n systemPatron((v) => {\n if (v !== lastValue) {\n result.give(v);\n lastValue = v;\n }\n }),\n );\n\n return result.value;\n};\n","import {\n destroy,\n guestDisposable,\n patronOnce,\n sourceOf,\n sourceResettable,\n SourceType,\n subSource,\n systemPatron,\n value,\n} from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/lock\n */\nexport const lock = <T>(\n baseSrc: SourceType<T>,\n lockSrc: SourceType<unknown>,\n) => {\n const result = sourceOf();\n const resultResettable = sourceResettable(result, lockSrc);\n let locked = false;\n subSource(result, baseSrc);\n\n value(baseSrc, systemPatron(guestDisposable(result.give, () => locked)));\n\n value(\n lockSrc,\n patronOnce(() => {\n locked = true;\n destroy([result]);\n }),\n );\n\n return resultResettable;\n};\n","import { give, guestSync, GuestType, SourceType, value } from \"silentium\";\n\n/**\n * Get's value from source in moment of component call and than return this value every time\n * https://silentium-lab.github.io/silentium-components/#/behaviors/moment\n */\nexport const moment = <T>(\n baseSrc: SourceType<T>,\n defaultValue?: T,\n): SourceType<T> => {\n const guest = guestSync(defaultValue);\n value(baseSrc, guest);\n\n return (g: GuestType<T>) => {\n give(guest.value(), g);\n };\n};\n","import {\n sourceOf,\n sourceResettable,\n sourceSync,\n SourceType,\n systemPatron,\n value,\n} 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>(baseSrc: SourceType<T>, shotSrc: SourceType) => {\n const resetResult = sourceOf();\n const result = sourceOf<T>();\n\n const baseSrcSync = sourceSync(baseSrc, null);\n value(\n shotSrc,\n systemPatron(() => {\n if (baseSrcSync.syncValue() !== null) {\n result.give(baseSrcSync.syncValue() as T);\n resetResult.give(1);\n }\n }),\n );\n\n return sourceResettable(result, resetResult);\n};\n","import { give, guestCast, source, SourceType, value } 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: SourceType<T>) => {\n let firstValue = false;\n return source<T>((g) => {\n value(\n baseSrc,\n guestCast<T>(g, (v) => {\n if (firstValue === false) {\n firstValue = true;\n } else {\n give(v, g);\n }\n }),\n );\n });\n};\n","import {\n sourceOf,\n SourceType,\n subSource,\n systemPatron,\n value,\n} from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/structures/hash-table\n */\nexport const hashTable = (baseSource: SourceType<[string, unknown]>) => {\n const result = sourceOf<Record<string, unknown>>({});\n subSource(result, baseSource);\n\n value(\n baseSource,\n systemPatron(([key, value]) => {\n result.value((lastRecord) => {\n lastRecord[key] = value;\n });\n }),\n );\n\n return result.value;\n};\n","import { give, GuestType, sourceCombined, SourceType } from \"silentium\";\n\n/**\n * Returns record of data from record of sources\n * https://silentium-lab.github.io/silentium-components/#/structures/record\n */\nexport const record = (recordSrc: Record<string, SourceType>) => {\n const keys = Object.keys(recordSrc);\n return sourceCombined(...Object.values(recordSrc))(\n (g: GuestType<Record<string, any>>, ...entries: any[]) => {\n const record: Record<string, any> = {};\n entries.forEach((entry, index) => {\n record[keys[index]] = entry;\n });\n give(record, g);\n },\n );\n};\n","import { give, GuestType, sourceCombined, SourceType } 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: SourceType<string>[],\n joinPartSrc: SourceType<string> = \"\",\n): SourceType<string> => {\n const result = sourceCombined(\n joinPartSrc,\n ...sources,\n )((g: GuestType<string>, joinPart, ...strings) => {\n give(strings.join(joinPart), g);\n });\n\n return result;\n};\n","import {\n firstVisit,\n GuestType,\n sourceOf,\n SourceType,\n systemPatron,\n value,\n} from \"silentium\";\n\nexport const polling = <T>(\n targetSrc: SourceType<T>,\n triggerSrc: SourceType,\n): SourceType<T> => {\n const resultSrc = sourceOf<T>();\n\n const visited = firstVisit(() => {\n value(\n triggerSrc,\n systemPatron(() => {\n value(targetSrc, resultSrc);\n }),\n );\n });\n\n return (g: GuestType<T>) => {\n visited();\n resultSrc.value(g);\n };\n};\n","import { give, GuestType, SourceType, value } from \"silentium\";\n\nexport const priority = <T>(sources: SourceType<T>[]) => {\n return (g: GuestType<T>) => {\n let highestPriorityIndex = 0;\n let highestPriorityResult;\n sources.forEach((source, index) => {\n value(source, (v) => {\n if (highestPriorityIndex <= index) {\n highestPriorityIndex = index;\n highestPriorityResult = v;\n }\n });\n });\n\n if (highestPriorityResult !== undefined) {\n give(highestPriorityResult, g);\n }\n };\n};\n","import { give, GuestType, sourceCombined, SourceType } 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: SourceType<string>,\n valueSrc: SourceType<string>,\n flagsSrc: SourceType<string> = \"\",\n): SourceType<boolean> =>\n sourceCombined(\n patternSrc,\n valueSrc,\n flagsSrc,\n )((g: GuestType<boolean>, pattern, value, flags) => {\n give(new RegExp(pattern, flags).test(value), g);\n });\n","import {\n firstVisit,\n GuestType,\n patronOnce,\n sourceOf,\n SourceType,\n systemPatron,\n value,\n} from \"silentium\";\nimport { branch } from \"../behaviors\";\nimport { polling } from \"../behaviors/Polling\";\nimport { priority } from \"../behaviors/Priority\";\nimport { regexpMatched } from \"../system/RegexpMatched\";\n\nexport interface Route<T> {\n pattern: string;\n patternFlags?: string;\n template: T | SourceType<T>;\n}\n\n/**\n * Router component what will return template if url matches pattern\n * https://silentium-lab.github.io/silentium-components/#/navigation/router\n */\nexport const router = <T = \"string\">(\n urlSrc: SourceType<string>,\n routesSrc: SourceType<Route<T>[]>,\n defaultSrc: SourceType<T>,\n) => {\n const resultSrc = sourceOf<T>();\n\n const visited = firstVisit(() => {\n value(\n routesSrc,\n patronOnce((routes) => {\n const prioritySrc = priority([\n defaultSrc,\n ...routes.map((r) =>\n value(\n branch(\n regexpMatched(r.pattern, urlSrc, r.patternFlags),\n r.template as SourceType,\n ),\n systemPatron((v) => {\n return v;\n }),\n ),\n ),\n ]);\n const pollingSrc = polling(prioritySrc, urlSrc);\n value(pollingSrc, systemPatron(resultSrc));\n }),\n );\n });\n\n return (g: GuestType<T>) => {\n visited();\n resultSrc.value(g);\n };\n};\n","import { give, GuestType, sourceCombined, SourceType } 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: SourceType<string>,\n patternSrc: SourceType<string>,\n replaceValueSrc: SourceType<string>,\n flagsSrc: SourceType<string> = \"\",\n): SourceType<string> =>\n sourceCombined(\n patternSrc,\n valueSrc,\n replaceValueSrc,\n flagsSrc,\n )((g: GuestType<string>, pattern, value, replaceValue, flags) => {\n give(String(value).replace(new RegExp(pattern, flags), replaceValue), g);\n });\n","import { give, GuestType, sourceCombined, SourceType } 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: SourceType<string>,\n valueSrc: SourceType<string>,\n flagsSrc: SourceType<string> = \"\",\n): SourceType<string[]> =>\n sourceCombined(\n patternSrc,\n valueSrc,\n flagsSrc,\n )((g: GuestType<string[]>, pattern, value, flags) => {\n const result = new RegExp(pattern, flags).exec(value);\n give(result ?? [], g);\n });\n","import { sourceAll, SourceType, systemPatron, value } 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: SourceType<T>,\n keySrc: SourceType<string>,\n valueSrc: SourceType<unknown>,\n) => {\n value(\n sourceAll([baseSrc, keySrc, valueSrc]),\n systemPatron(([base, key, value]) => {\n (base as Record<string, unknown>)[key] = value;\n }),\n );\n\n return baseSrc;\n};\n","import { give, GuestType, sourceCombined, SourceType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/and\n */\nexport const and = (\n oneSrc: SourceType<boolean>,\n twoSrc: SourceType<boolean>,\n) => {\n return sourceCombined(\n oneSrc,\n twoSrc,\n )((guest: GuestType<boolean>, one, two) => {\n give(one && two, guest);\n });\n};\n","import { give, GuestType, sourceCombined, SourceType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/or\n */\nexport const or = (\n oneSrc: SourceType<boolean>,\n twoSrc: SourceType<boolean>,\n) => {\n return sourceCombined(\n oneSrc,\n twoSrc,\n )((guest: GuestType<boolean>, one, two) => {\n give(one || two, guest);\n });\n};\n","import { give, guestCast, GuestType, SourceType, value } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/not\n */\nexport const not = (baseSrc: SourceType<boolean>) => {\n return (g: GuestType<boolean>) => {\n value(\n baseSrc,\n guestCast(g, (base) => {\n give(!base, g);\n }),\n );\n };\n};\n"],"names":["value","record"],"mappings":"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"}
@@ -1 +1 @@
1
- !function(e,t){"use strict";const s=(e,s,r)=>{const u=t.sourceOf(),o=t.sourceOf(),a=t.sourceResettable(o,u),n=t.firstVisit((()=>{t.value(e,t.systemPatron((e=>{u.give(1),!0===e?t.value(s,o.give):void 0!==r&&t.value(r,o.give)})))}));return e=>{n(),a.value(e)}},r=(e,s,r="")=>t.sourceCombined(e,s,r)(((e,s,r,u)=>{t.give(new RegExp(s,u).test(r),e)}));e.and=(e,s)=>t.sourceCombined(e,s)(((e,s,r)=>{t.give(s&&r,e)})),e.branch=s,e.concatenated=(e,s="")=>t.sourceCombined(s,...e)(((e,s,...r)=>{t.give(r.join(s),e)})),e.deadline=(e,s,r)=>{let u=null;return o=>{t.value(r,t.guestCast(o,(r=>{u&&clearTimeout(u);let a=!1;u=setTimeout((()=>{a||(a=!0,t.give(new Error("Timeout reached in Deadline class"),e))}),r),t.value(t.sourceFiltered(s,(()=>!a)),o),t.value(s,t.patronOnce((()=>{a=!0})))})))}},e.deferred=(e,s)=>{const r=t.sourceResettable(t.sourceOf(),e),u=t.firstVisit((()=>{t.value(s,t.systemPatron((()=>{t.value(e,r)})))}));return e=>{u(),t.value(r,e)}},e.dirty=(e,s=!1,r=[],u=[])=>{const o=t.sourceOf(),a=t.sourceAll([o,e]),n={give:e=>(t.give(JSON.parse(JSON.stringify(e)),o),n),value:e=>(t.value(a,t.guestCast(e,(([s,o])=>{s&&t.give(Object.fromEntries(Object.entries(s).filter((([e,t])=>!!r.includes(e)||!u.includes(e)&&t!==o[e]))),e)}))),n)};return s&&t.value(e,t.patronOnce(n)),n},e.fork=(e,s,r,u)=>{const o=t.sourceOf(),a=t.sourceOf(),n=t.sourceResettable(o,a);let l,c;return t.value(e,t.systemPatron((e=>{a.give(1),l&&t.removePatronFromPools(l),c&&t.removePatronFromPools(c),s(e)?(l=t.patronOnce(o),t.value(r,l)):u&&(c=t.patronOnce(o),t.value(u,c))}))),n},e.groupActiveClass=(e,s,r)=>(t.value(t.sourceAll([e,s,r]),t.systemPatron((([e,t,s])=>{s.forEach((t=>{t.classList&&t.classList.remove(e)})),t.classList.add(e)}))),r),e.hashTable=e=>{const s=t.sourceOf({});return t.subSource(s,e),t.value(e,t.systemPatron((([e,t])=>{s.value((s=>{s[e]=t}))}))),s.value},e.loading=(e,s)=>{const r=t.sourceOf();return t.subSourceMany(r,[e,s]),t.value(e,t.systemPatron((()=>{r.give(!0)}))),t.value(s,t.systemPatron((()=>{r.give(!1)}))),r.value},e.lock=(e,s)=>{const r=t.sourceOf(),u=t.sourceResettable(r,s);let o=!1;return t.subSource(r,e),t.value(e,t.systemPatron(t.guestDisposable(r.give,(()=>o)))),t.value(s,t.patronOnce((()=>{o=!0,t.destroy([r])}))),u},e.memo=e=>{const s=t.sourceOf();let r=null;return t.value(e,t.systemPatron((e=>{e!==r&&(s.give(e),r=e)}))),s.value},e.moment=(e,s)=>{const r=t.guestSync(s);return t.value(e,r),e=>{t.give(r.value(),e)}},e.not=e=>s=>{t.value(e,t.guestCast(s,(e=>{t.give(!e,s)})))},e.onlyChanged=e=>{let s=!1;return t.source((r=>{t.value(e,t.guestCast(r,(e=>{!1===s?s=!0:t.give(e,r)})))}))},e.or=(e,s)=>t.sourceCombined(e,s)(((e,s,r)=>{t.give(s||r,e)})),e.path=(e,s)=>{const r=t.sourceOf();return t.subSourceMany(r,[e,s]),t.value(t.sourceAll([e,s]),t.systemPatron((([e,s])=>{const u=s.split(".");let o=e;u.forEach((e=>{o=o[e]})),void 0!==o&&o!==e&&t.give(o,r)}))),r.value},e.record=e=>{const s=Object.keys(e);return t.sourceCombined(...Object.values(e))(((e,...r)=>{const u={};r.forEach(((e,t)=>{u[s[t]]=e})),t.give(u,e)}))},e.regexpMatch=(e,s,r="")=>t.sourceCombined(e,s,r)(((e,s,r,u)=>{const o=new RegExp(s,u).exec(r);t.give(o??[],e)})),e.regexpMatched=r,e.regexpReplaced=(e,s,r,u="")=>t.sourceCombined(s,e,r,u)(((e,s,r,u,o)=>{t.give(String(r).replace(new RegExp(s,o),u),e)})),e.router=(e,u,o)=>{const a=t.sourceOf(),n=t.firstVisit((()=>{t.value(u,t.patronOnce((u=>{var n;const l=((e,s)=>{const r=t.sourceOf(),u=t.firstVisit((()=>{t.value(s,t.systemPatron((()=>{t.value(e,r)})))}));return e=>{u(),r.value(e)}})((n=[o,...u.map((u=>t.value(s(r(u.pattern,e,u.patternFlags),u.template),t.systemPatron((e=>e)))))],e=>{let s,r=0;n.forEach(((e,u)=>{t.value(e,(e=>{r<=u&&(r=u,s=e)}))})),void 0!==s&&t.give(s,e)}),e);t.value(l,t.patron(a)),t.value(l,t.patron((e=>e)))})))}));return e=>{n(),a.value(e)}},e.set=(e,s,r)=>(t.value(t.sourceAll([e,s,r]),t.systemPatron((([e,t,s])=>{e[t]=s}))),e),e.shot=(e,s)=>{const r=t.sourceOf(),u=t.sourceOf(),o=t.sourceSync(e,null);return t.value(s,t.systemPatron((()=>{null!==o.syncValue()&&(u.give(o.syncValue()),r.give(1))}))),t.sourceResettable(u,r)},e.tick=e=>{const s=t.sourceOf();t.subSource(s,e);let r=!1,u=null;return t.value(e,t.systemPatron((e=>{u=e,r||(r=!0,queueMicrotask((()=>{r=!1,null!==u&&(t.give(u,s),u=null)})))}))),s}}({},silentium);
1
+ !function(e,t){"use strict";const s=(e,s,r)=>{const u=t.sourceOf(),o=t.sourceOf(),a=t.sourceResettable(o,u),n=t.firstVisit((()=>{t.value(e,t.systemPatron((e=>{u.give(1),!0===e?t.value(s,t.patronOnce(o.give)):void 0!==r&&t.value(r,t.patronOnce(o.give))})))}));return e=>{n(),a.value(e)}},r=(e,s,r="")=>t.sourceCombined(e,s,r)(((e,s,r,u)=>{t.give(new RegExp(s,u).test(r),e)}));e.and=(e,s)=>t.sourceCombined(e,s)(((e,s,r)=>{t.give(s&&r,e)})),e.branch=s,e.concatenated=(e,s="")=>t.sourceCombined(s,...e)(((e,s,...r)=>{t.give(r.join(s),e)})),e.deadline=(e,s,r)=>{let u=null;return o=>{t.value(r,t.guestCast(o,(r=>{u&&clearTimeout(u);let a=!1;u=setTimeout((()=>{a||(a=!0,t.give(new Error("Timeout reached in Deadline class"),e))}),r),t.value(t.sourceFiltered(s,(()=>!a)),o),t.value(s,t.patronOnce((()=>{a=!0})))})))}},e.deferred=(e,s)=>{const r=t.sourceResettable(t.sourceOf(),e),u=t.firstVisit((()=>{t.value(s,t.systemPatron((()=>{t.value(e,r)})))}));return e=>{u(),t.value(r,e)}},e.dirty=(e,s=!1,r=[],u=[])=>{const o=t.sourceOf(),a=t.sourceAll([o,e]),n={give:e=>(t.give(JSON.parse(JSON.stringify(e)),o),n),value:e=>(t.value(a,t.guestCast(e,(([s,o])=>{s&&t.give(Object.fromEntries(Object.entries(s).filter((([e,t])=>!!r.includes(e)||!u.includes(e)&&t!==o[e]))),e)}))),n)};return s&&t.value(e,t.patronOnce(n)),n},e.fork=(e,s,r,u)=>{const o=t.sourceOf(),a=t.sourceOf(),n=t.sourceResettable(o,a);let l,c;return t.value(e,t.systemPatron((e=>{a.give(1),l&&t.removePatronFromPools(l),c&&t.removePatronFromPools(c),s(e)?(l=t.patronOnce(o),t.value(r,l)):u&&(c=t.patronOnce(o),t.value(u,c))}))),n},e.groupActiveClass=(e,s,r)=>(t.value(t.sourceAll([e,s,r]),t.systemPatron((([e,t,s])=>{s.forEach((t=>{t.classList&&t.classList.remove(e)})),t.classList.add(e)}))),r),e.hashTable=e=>{const s=t.sourceOf({});return t.subSource(s,e),t.value(e,t.systemPatron((([e,t])=>{s.value((s=>{s[e]=t}))}))),s.value},e.loading=(e,s)=>{const r=t.sourceOf();return t.subSourceMany(r,[e,s]),t.value(e,t.systemPatron((()=>{r.give(!0)}))),t.value(s,t.systemPatron((()=>{r.give(!1)}))),r.value},e.lock=(e,s)=>{const r=t.sourceOf(),u=t.sourceResettable(r,s);let o=!1;return t.subSource(r,e),t.value(e,t.systemPatron(t.guestDisposable(r.give,(()=>o)))),t.value(s,t.patronOnce((()=>{o=!0,t.destroy([r])}))),u},e.memo=e=>{const s=t.sourceOf();let r=null;return t.value(e,t.systemPatron((e=>{e!==r&&(s.give(e),r=e)}))),s.value},e.moment=(e,s)=>{const r=t.guestSync(s);return t.value(e,r),e=>{t.give(r.value(),e)}},e.not=e=>s=>{t.value(e,t.guestCast(s,(e=>{t.give(!e,s)})))},e.onlyChanged=e=>{let s=!1;return t.source((r=>{t.value(e,t.guestCast(r,(e=>{!1===s?s=!0:t.give(e,r)})))}))},e.or=(e,s)=>t.sourceCombined(e,s)(((e,s,r)=>{t.give(s||r,e)})),e.path=(e,s)=>{const r=t.sourceOf();return t.subSourceMany(r,[e,s]),t.value(t.sourceAll([e,s]),t.systemPatron((([e,s])=>{const u=s.split(".");let o=e;u.forEach((e=>{o=o[e]})),void 0!==o&&o!==e&&t.give(o,r)}))),r.value},e.record=e=>{const s=Object.keys(e);return t.sourceCombined(...Object.values(e))(((e,...r)=>{const u={};r.forEach(((e,t)=>{u[s[t]]=e})),t.give(u,e)}))},e.regexpMatch=(e,s,r="")=>t.sourceCombined(e,s,r)(((e,s,r,u)=>{const o=new RegExp(s,u).exec(r);t.give(o??[],e)})),e.regexpMatched=r,e.regexpReplaced=(e,s,r,u="")=>t.sourceCombined(s,e,r,u)(((e,s,r,u,o)=>{t.give(String(r).replace(new RegExp(s,o),u),e)})),e.router=(e,u,o)=>{const a=t.sourceOf(),n=t.firstVisit((()=>{t.value(u,t.patronOnce((u=>{var n;const l=((e,s)=>{const r=t.sourceOf(),u=t.firstVisit((()=>{t.value(s,t.systemPatron((()=>{t.value(e,r)})))}));return e=>{u(),r.value(e)}})((n=[o,...u.map((u=>t.value(s(r(u.pattern,e,u.patternFlags),u.template),t.systemPatron((e=>e)))))],e=>{let s,r=0;n.forEach(((e,u)=>{t.value(e,(e=>{r<=u&&(r=u,s=e)}))})),void 0!==s&&t.give(s,e)}),e);t.value(l,t.systemPatron(a))})))}));return e=>{n(),a.value(e)}},e.set=(e,s,r)=>(t.value(t.sourceAll([e,s,r]),t.systemPatron((([e,t,s])=>{e[t]=s}))),e),e.shot=(e,s)=>{const r=t.sourceOf(),u=t.sourceOf(),o=t.sourceSync(e,null);return t.value(s,t.systemPatron((()=>{null!==o.syncValue()&&(u.give(o.syncValue()),r.give(1))}))),t.sourceResettable(u,r)},e.tick=e=>{const s=t.sourceOf();t.subSource(s,e);let r=!1,u=null;return t.value(e,t.systemPatron((e=>{u=e,r||(r=!0,queueMicrotask((()=>{r=!1,null!==u&&(t.give(u,s),u=null)})))}))),s}}({},silentium);
@@ -1,2 +1,2 @@
1
- import{value as e,sourceAll as t,systemPatron as n,sourceOf as r,patronOnce as l,guestCast as s,give as u,subSourceMany as c,sourceFiltered as o,subSource as i,sourceResettable as a,removePatronFromPools as v,firstVisit as g,guestDisposable as p,destroy as m,guestSync as d,sourceSync as E,source as f,sourceCombined as O,patron as h}from"silentium";const j=(r,l,s)=>(e(t([r,l,s]),n((([e,t,n])=>{n.forEach((t=>{t.classList&&t.classList.remove(e)})),t.classList.add(e)}))),s),x=(n,c=!1,o=[],i=[])=>{const a=r(),v=t([a,n]),g={give:e=>(u(JSON.parse(JSON.stringify(e)),a),g),value:t=>(e(v,s(t,(([e,n])=>{e&&u(Object.fromEntries(Object.entries(e).filter((([e,t])=>!!o.includes(e)||!i.includes(e)&&t!==n[e]))),t)}))),g)};return c&&e(n,l(g)),g},b=(t,l)=>{const s=r();return c(s,[t,l]),e(t,n((()=>{s.give(!0)}))),e(l,n((()=>{s.give(!1)}))),s.value},w=(l,s)=>{const o=r();return c(o,[l,s]),e(t([l,s]),n((([e,t])=>{const n=t.split(".");let r=e;n.forEach((e=>{r=r[e]})),void 0!==r&&r!==e&&u(r,o)}))),o.value},y=(t,n,r)=>{let c=null;return i=>{e(r,s(i,(r=>{c&&clearTimeout(c);let s=!1;c=setTimeout((()=>{s||(s=!0,u(new Error("Timeout reached in Deadline class"),t))}),r),e(o(n,(()=>!s)),i),e(n,l((()=>{s=!0})))})))}},L=t=>{const l=r();i(l,t);let s=!1,c=null;return e(t,n((e=>{c=e,s||(s=!0,queueMicrotask((()=>{s=!1,null!==c&&(u(c,l),c=null)})))}))),l},R=(t,s,u,c)=>{const o=r(),i=r(),g=a(o,i);let p,m;return e(t,n((t=>{i.give(1),p&&v(p),m&&v(m),s(t)?(p=l(o),e(u,p)):c&&(m=l(o),e(c,m))}))),g},S=(t,l)=>{const s=a(r(),t),u=g((()=>{e(l,n((()=>{e(t,s)})))}));return t=>{u(),e(s,t)}},T=(t,l,s)=>{const u=r(),c=r(),o=a(c,u),i=g((()=>{e(t,n((t=>{u.give(1),!0===t?e(l,c.give):void 0!==s&&e(s,c.give)})))}));return e=>{i(),o.value(e)}},k=t=>{const l=r();let s=null;return e(t,n((e=>{e!==s&&(l.give(e),s=e)}))),l.value},J=(t,s)=>{const u=r(),c=a(u,s);let o=!1;return i(u,t),e(t,n(p(u.give,(()=>o)))),e(s,l((()=>{o=!0,m([u])}))),c},N=(t,n)=>{const r=d(n);return e(t,r),e=>{u(r.value(),e)}},V=(t,l)=>{const s=r(),u=r(),c=E(t,null);return e(l,n((()=>{null!==c.syncValue()&&(u.give(c.syncValue()),s.give(1))}))),a(u,s)},q=t=>{let n=!1;return f((r=>{e(t,s(r,(e=>{!1===n?n=!0:u(e,r)})))}))},D=t=>{const l=r({});return i(l,t),e(t,n((([e,t])=>{l.value((n=>{n[e]=t}))}))),l.value},F=e=>{const t=Object.keys(e);return O(...Object.values(e))(((e,...n)=>{const r={};n.forEach(((e,n)=>{r[t[n]]=e})),u(r,e)}))},M=(e,t="")=>O(t,...e)(((e,t,...n)=>{u(n.join(t),e)})),z=(e,t,n="")=>O(e,t,n)(((e,t,n,r)=>{u(new RegExp(t,r).test(n),e)})),A=(t,s,c)=>{const o=r(),i=g((()=>{e(s,l((l=>{const s=(i=[c,...l.map((r=>e(T(z(r.pattern,t,r.patternFlags),r.template),n((e=>e)))))],t=>{let n,r=0;i.forEach(((t,l)=>{e(t,(e=>{r<=l&&(r=l,n=e)}))})),void 0!==n&&u(n,t)});var i;const a=((t,l)=>{const s=r(),u=g((()=>{e(l,n((()=>{e(t,s)})))}));return e=>{u(),s.value(e)}})(s,t);e(a,h(o)),e(a,h((e=>e)))})))}));return e=>{i(),o.value(e)}},B=(e,t,n,r="")=>O(t,e,n,r)(((e,t,n,r,l)=>{u(String(n).replace(new RegExp(t,l),r),e)})),C=(e,t,n="")=>O(e,t,n)(((e,t,n,r)=>{const l=new RegExp(t,r).exec(n);u(l??[],e)})),G=(r,l,s)=>(e(t([r,l,s]),n((([e,t,n])=>{e[t]=n}))),r),H=(e,t)=>O(e,t)(((e,t,n)=>{u(t&&n,e)})),I=(e,t)=>O(e,t)(((e,t,n)=>{u(t||n,e)})),K=t=>n=>{e(t,s(n,(e=>{u(!e,n)})))};export{H as and,T as branch,M as concatenated,y as deadline,S as deferred,x as dirty,R as fork,j as groupActiveClass,D as hashTable,b as loading,J as lock,k as memo,N as moment,K as not,q as onlyChanged,I as or,w as path,F as record,C as regexpMatch,z as regexpMatched,B as regexpReplaced,A as router,G as set,V as shot,L as tick};
1
+ import{value as e,sourceAll as t,systemPatron as n,sourceOf as r,patronOnce as l,guestCast as s,give as u,subSourceMany as c,sourceFiltered as o,subSource as i,sourceResettable as a,removePatronFromPools as v,firstVisit as g,guestDisposable as p,destroy as m,guestSync as d,sourceSync as E,source as f,sourceCombined as O}from"silentium";const h=(r,l,s)=>(e(t([r,l,s]),n((([e,t,n])=>{n.forEach((t=>{t.classList&&t.classList.remove(e)})),t.classList.add(e)}))),s),j=(n,c=!1,o=[],i=[])=>{const a=r(),v=t([a,n]),g={give:e=>(u(JSON.parse(JSON.stringify(e)),a),g),value:t=>(e(v,s(t,(([e,n])=>{e&&u(Object.fromEntries(Object.entries(e).filter((([e,t])=>!!o.includes(e)||!i.includes(e)&&t!==n[e]))),t)}))),g)};return c&&e(n,l(g)),g},x=(t,l)=>{const s=r();return c(s,[t,l]),e(t,n((()=>{s.give(!0)}))),e(l,n((()=>{s.give(!1)}))),s.value},b=(l,s)=>{const o=r();return c(o,[l,s]),e(t([l,s]),n((([e,t])=>{const n=t.split(".");let r=e;n.forEach((e=>{r=r[e]})),void 0!==r&&r!==e&&u(r,o)}))),o.value},w=(t,n,r)=>{let c=null;return i=>{e(r,s(i,(r=>{c&&clearTimeout(c);let s=!1;c=setTimeout((()=>{s||(s=!0,u(new Error("Timeout reached in Deadline class"),t))}),r),e(o(n,(()=>!s)),i),e(n,l((()=>{s=!0})))})))}},y=t=>{const l=r();i(l,t);let s=!1,c=null;return e(t,n((e=>{c=e,s||(s=!0,queueMicrotask((()=>{s=!1,null!==c&&(u(c,l),c=null)})))}))),l},L=(t,s,u,c)=>{const o=r(),i=r(),g=a(o,i);let p,m;return e(t,n((t=>{i.give(1),p&&v(p),m&&v(m),s(t)?(p=l(o),e(u,p)):c&&(m=l(o),e(c,m))}))),g},R=(t,l)=>{const s=a(r(),t),u=g((()=>{e(l,n((()=>{e(t,s)})))}));return t=>{u(),e(s,t)}},S=(t,s,u)=>{const c=r(),o=r(),i=a(o,c),v=g((()=>{e(t,n((t=>{c.give(1),!0===t?e(s,l(o.give)):void 0!==u&&e(u,l(o.give))})))}));return e=>{v(),i.value(e)}},T=t=>{const l=r();let s=null;return e(t,n((e=>{e!==s&&(l.give(e),s=e)}))),l.value},k=(t,s)=>{const u=r(),c=a(u,s);let o=!1;return i(u,t),e(t,n(p(u.give,(()=>o)))),e(s,l((()=>{o=!0,m([u])}))),c},J=(t,n)=>{const r=d(n);return e(t,r),e=>{u(r.value(),e)}},N=(t,l)=>{const s=r(),u=r(),c=E(t,null);return e(l,n((()=>{null!==c.syncValue()&&(u.give(c.syncValue()),s.give(1))}))),a(u,s)},V=t=>{let n=!1;return f((r=>{e(t,s(r,(e=>{!1===n?n=!0:u(e,r)})))}))},q=t=>{const l=r({});return i(l,t),e(t,n((([e,t])=>{l.value((n=>{n[e]=t}))}))),l.value},D=e=>{const t=Object.keys(e);return O(...Object.values(e))(((e,...n)=>{const r={};n.forEach(((e,n)=>{r[t[n]]=e})),u(r,e)}))},F=(e,t="")=>O(t,...e)(((e,t,...n)=>{u(n.join(t),e)})),M=(e,t,n="")=>O(e,t,n)(((e,t,n,r)=>{u(new RegExp(t,r).test(n),e)})),z=(t,s,c)=>{const o=r(),i=g((()=>{e(s,l((l=>{const s=(i=[c,...l.map((r=>e(S(M(r.pattern,t,r.patternFlags),r.template),n((e=>e)))))],t=>{let n,r=0;i.forEach(((t,l)=>{e(t,(e=>{r<=l&&(r=l,n=e)}))})),void 0!==n&&u(n,t)});var i;const a=((t,l)=>{const s=r(),u=g((()=>{e(l,n((()=>{e(t,s)})))}));return e=>{u(),s.value(e)}})(s,t);e(a,n(o))})))}));return e=>{i(),o.value(e)}},A=(e,t,n,r="")=>O(t,e,n,r)(((e,t,n,r,l)=>{u(String(n).replace(new RegExp(t,l),r),e)})),B=(e,t,n="")=>O(e,t,n)(((e,t,n,r)=>{const l=new RegExp(t,r).exec(n);u(l??[],e)})),C=(r,l,s)=>(e(t([r,l,s]),n((([e,t,n])=>{e[t]=n}))),r),G=(e,t)=>O(e,t)(((e,t,n)=>{u(t&&n,e)})),H=(e,t)=>O(e,t)(((e,t,n)=>{u(t||n,e)})),I=t=>n=>{e(t,s(n,(e=>{u(!e,n)})))};export{G as and,S as branch,F as concatenated,w as deadline,R as deferred,j as dirty,L as fork,h as groupActiveClass,q as hashTable,x as loading,k as lock,T as memo,J as moment,I as not,V as onlyChanged,H as or,b as path,D as record,B as regexpMatch,M as regexpMatched,A as regexpReplaced,z as router,C as set,N as shot,y as tick};
2
2
  //# sourceMappingURL=silentium-components.min.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"silentium-components.min.mjs","sources":["../src/controls/GroupActiveClass.ts","../src/behaviors/Dirty.ts","../src/behaviors/Loading.ts","../src/behaviors/Path.ts","../src/behaviors/Deadline.ts","../src/behaviors/Tick.ts","../src/behaviors/Fork.ts","../src/behaviors/Deferred.ts","../src/behaviors/Branch.ts","../src/behaviors/Memo.ts","../src/behaviors/Lock.ts","../src/behaviors/Moment.ts","../src/behaviors/Shot.ts","../src/behaviors/OnlyChanged.ts","../src/structures/HashTable.ts","../src/structures/Record.ts","../src/strings/Concatenated.ts","../src/system/RegexpMatched.ts","../src/navigation/Router.ts","../src/behaviors/Priority.ts","../src/behaviors/Survey.ts","../src/system/RegexpReplaced.ts","../src/system/RegexpMatch.ts","../src/system/Set.ts","../src/boolean/And.ts","../src/boolean/Or.ts","../src/boolean/Not.ts"],"sourcesContent":["import { sourceAll, SourceType, systemPatron, value } from \"silentium\";\n\n/**\n * Sets activeClass to one element of group\n * and resets activeClass on other group elements\n * suitable for menu active class\n */\nexport const groupActiveClass = (\n activeClassSrc: SourceType<string>,\n activeElementSrc: SourceType<HTMLElement>,\n groupElementsSrc: SourceType<HTMLElement[]>,\n) => {\n value(\n sourceAll([activeClassSrc, activeElementSrc, groupElementsSrc]),\n systemPatron(([activeClass, activeElement, groupElements]) => {\n groupElements.forEach((el) => {\n if (el.classList) {\n el.classList.remove(activeClass);\n }\n });\n activeElement.classList.add(activeClass);\n }),\n );\n\n return groupElementsSrc;\n};\n","import {\n give,\n guestCast,\n GuestType,\n patronOnce,\n sourceAll,\n SourceChangeableType,\n sourceOf,\n SourceType,\n value,\n} 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 extends object>(\n baseEntitySource: SourceType<T>,\n becomePatronAuto = false,\n alwaysKeep: string[] = [],\n excludeKeys: string[] = [],\n): SourceChangeableType<Partial<T>> => {\n const comparingSrc = sourceOf();\n const all = sourceAll([comparingSrc, baseEntitySource]);\n\n const result = {\n give(value: T) {\n give(JSON.parse(JSON.stringify(value)), comparingSrc);\n return result;\n },\n value(guest: GuestType<Partial<T>>) {\n value(\n all,\n guestCast(guest, ([comparing, base]) => {\n if (!comparing) {\n return;\n }\n\n give(\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 guest,\n );\n }),\n );\n return result;\n },\n };\n\n if (becomePatronAuto) {\n value(baseEntitySource, patronOnce(result));\n }\n\n return result;\n};\n","import {\n sourceOf,\n SourceType,\n subSourceMany,\n systemPatron,\n value,\n} from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/loading\n */\nexport const loading = (\n loadingStartSource: SourceType<unknown>,\n loadingFinishSource: SourceType<unknown>,\n) => {\n const loadingSrc = sourceOf<boolean>();\n subSourceMany(loadingSrc, [loadingStartSource, loadingFinishSource]);\n\n value(\n loadingStartSource,\n systemPatron(() => {\n loadingSrc.give(true);\n }),\n );\n value(\n loadingFinishSource,\n systemPatron(() => {\n loadingSrc.give(false);\n }),\n );\n\n return loadingSrc.value;\n};\n","import {\n give,\n sourceAll,\n sourceOf,\n SourceType,\n subSourceMany,\n systemPatron,\n value,\n} 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 T extends Record<string, unknown> | Array<unknown>,\n K extends string,\n>(\n baseSrc: SourceType<T>,\n keySrc: SourceType<K>,\n) => {\n const pathSrc = sourceOf<unknown>();\n subSourceMany(pathSrc, [baseSrc, keySrc]);\n\n value(\n sourceAll([baseSrc, keySrc]),\n systemPatron(([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 give(value, pathSrc);\n }\n }),\n );\n\n return pathSrc.value;\n};\n","import {\n give,\n guestCast,\n GuestType,\n patronOnce,\n sourceFiltered,\n SourceType,\n value,\n} from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport const deadline = <T>(\n error: GuestType<Error>,\n baseSrc: SourceType<T>,\n timeoutSrc: SourceType<number>,\n) => {\n let timerHead: unknown = null;\n return (g: GuestType<T>) => {\n value(\n timeoutSrc,\n guestCast(g, (timeout) => {\n if (timerHead) {\n clearTimeout(timerHead as number);\n }\n\n let timeoutReached = false;\n\n timerHead = setTimeout(() => {\n if (timeoutReached) {\n return;\n }\n timeoutReached = true;\n give(new Error(\"Timeout reached in Deadline class\"), error);\n }, timeout);\n\n value(\n sourceFiltered(baseSrc, () => !timeoutReached),\n g,\n );\n\n value(\n baseSrc,\n patronOnce(() => {\n timeoutReached = true;\n }),\n );\n }),\n );\n };\n};\n","import {\n give,\n sourceOf,\n SourceType,\n subSource,\n systemPatron,\n value,\n} 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: SourceType<T>) => {\n const result = sourceOf<T>();\n subSource(result, baseSrc);\n\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 give(lastValue, result);\n lastValue = null;\n }\n });\n };\n\n value(\n baseSrc,\n systemPatron((v) => {\n lastValue = v;\n if (!microtaskScheduled) {\n scheduleMicrotask();\n }\n }),\n );\n\n return result;\n};\n","import {\n GuestObjectType,\n patronOnce,\n removePatronFromPools,\n sourceOf,\n sourceResettable,\n SourceType,\n systemPatron,\n value,\n} from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/dirty\n */\nexport const fork = <T, Then, Else>(\n conditionSrc: SourceType<T>,\n predicate: (v: T) => boolean,\n thenSrc: SourceType<Then>,\n elseSrc?: SourceType<Else>,\n): SourceType<Then | Else> => {\n const result = sourceOf<Then | Else>();\n const reset = sourceOf();\n const resultResettable = sourceResettable(result, reset);\n let thenPatron: GuestObjectType<Then> | undefined;\n let elsePatron: GuestObjectType<Else> | undefined;\n\n value(\n conditionSrc,\n systemPatron((v) => {\n reset.give(1);\n if (thenPatron) {\n removePatronFromPools(thenPatron);\n }\n if (elsePatron) {\n removePatronFromPools(elsePatron);\n }\n if (predicate(v)) {\n thenPatron = patronOnce(result);\n value(thenSrc, thenPatron);\n } else if (elseSrc) {\n elsePatron = patronOnce(result);\n value(elseSrc, elsePatron);\n }\n }),\n );\n\n return resultResettable;\n};\n","import {\n firstVisit,\n GuestType,\n sourceOf,\n sourceResettable,\n SourceType,\n systemPatron,\n value,\n} from \"silentium\";\n\n/**\n * Defer one source after another, gives values of baseSrc only once when triggerSrc responds\n * https://silentium-lab.github.io/silentium-components/#/behaviors/deferred\n */\nexport const deferred = <T>(\n baseSrc: SourceType<T>,\n triggerSrc: SourceType<unknown>,\n) => {\n const result = sourceResettable<T>(sourceOf(), baseSrc as SourceType);\n\n const visited = firstVisit(() => {\n value(\n triggerSrc,\n systemPatron(() => {\n value(baseSrc, result);\n }),\n );\n });\n\n return (g: GuestType<T>) => {\n visited();\n value(result, g);\n };\n};\n","import {\n firstVisit,\n GuestType,\n sourceOf,\n sourceResettable,\n SourceType,\n systemPatron,\n value,\n} from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/branch\n */\nexport const branch = <Then, Else>(\n conditionSrc: SourceType<boolean>,\n thenSrc: SourceType<Then>,\n elseSrc?: SourceType<Else>,\n): SourceType<Then | Else> => {\n const resetSrc = sourceOf();\n const result = sourceOf<Then | Else>();\n const resultSrc = sourceResettable(result, resetSrc);\n\n const visited = firstVisit(() => {\n value(\n conditionSrc,\n systemPatron((v) => {\n resetSrc.give(1);\n if (v === true) {\n value(thenSrc, result.give);\n } else if (elseSrc !== undefined) {\n value(elseSrc, result.give);\n }\n }),\n );\n });\n\n return (g: GuestType<Then | Else>) => {\n visited();\n resultSrc.value(g);\n };\n};\n","import { sourceOf, SourceType, systemPatron, value } 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: SourceType<T>) => {\n const result = sourceOf<T>();\n let lastValue: T | null = null;\n\n value(\n baseSrc,\n systemPatron((v) => {\n if (v !== lastValue) {\n result.give(v);\n lastValue = v;\n }\n }),\n );\n\n return result.value;\n};\n","import {\n destroy,\n guestDisposable,\n patronOnce,\n sourceOf,\n sourceResettable,\n SourceType,\n subSource,\n systemPatron,\n value,\n} from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/lock\n */\nexport const lock = <T>(\n baseSrc: SourceType<T>,\n lockSrc: SourceType<unknown>,\n) => {\n const result = sourceOf();\n const resultResettable = sourceResettable(result, lockSrc);\n let locked = false;\n subSource(result, baseSrc);\n\n value(baseSrc, systemPatron(guestDisposable(result.give, () => locked)));\n\n value(\n lockSrc,\n patronOnce(() => {\n locked = true;\n destroy([result]);\n }),\n );\n\n return resultResettable;\n};\n","import { give, guestSync, GuestType, SourceType, value } from \"silentium\";\n\n/**\n * Get's value from source in moment of component call and than return this value every time\n * https://silentium-lab.github.io/silentium-components/#/behaviors/moment\n */\nexport const moment = <T>(\n baseSrc: SourceType<T>,\n defaultValue?: T,\n): SourceType<T> => {\n const guest = guestSync(defaultValue);\n value(baseSrc, guest);\n\n return (g: GuestType<T>) => {\n give(guest.value(), g);\n };\n};\n","import {\n sourceOf,\n sourceResettable,\n sourceSync,\n SourceType,\n systemPatron,\n value,\n} 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>(baseSrc: SourceType<T>, shotSrc: SourceType) => {\n const resetResult = sourceOf();\n const result = sourceOf<T>();\n\n const baseSrcSync = sourceSync(baseSrc, null);\n value(\n shotSrc,\n systemPatron(() => {\n if (baseSrcSync.syncValue() !== null) {\n result.give(baseSrcSync.syncValue() as T);\n resetResult.give(1);\n }\n }),\n );\n\n return sourceResettable(result, resetResult);\n};\n","import { give, guestCast, source, SourceType, value } 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: SourceType<T>) => {\n let firstValue = false;\n return source<T>((g) => {\n value(\n baseSrc,\n guestCast<T>(g, (v) => {\n if (firstValue === false) {\n firstValue = true;\n } else {\n give(v, g);\n }\n }),\n );\n });\n};\n","import {\n sourceOf,\n SourceType,\n subSource,\n systemPatron,\n value,\n} from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/structures/hash-table\n */\nexport const hashTable = (baseSource: SourceType<[string, unknown]>) => {\n const result = sourceOf<Record<string, unknown>>({});\n subSource(result, baseSource);\n\n value(\n baseSource,\n systemPatron(([key, value]) => {\n result.value((lastRecord) => {\n lastRecord[key] = value;\n });\n }),\n );\n\n return result.value;\n};\n","import { give, GuestType, sourceCombined, SourceType } from \"silentium\";\n\n/**\n * Returns record of data from record of sources\n * https://silentium-lab.github.io/silentium-components/#/structures/record\n */\nexport const record = (recordSrc: Record<string, SourceType>) => {\n const keys = Object.keys(recordSrc);\n return sourceCombined(...Object.values(recordSrc))(\n (g: GuestType<Record<string, any>>, ...entries: any[]) => {\n const record: Record<string, any> = {};\n entries.forEach((entry, index) => {\n record[keys[index]] = entry;\n });\n give(record, g);\n },\n );\n};\n","import { give, GuestType, sourceCombined, SourceType } 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: SourceType<string>[],\n joinPartSrc: SourceType<string> = \"\",\n): SourceType<string> => {\n const result = sourceCombined(\n joinPartSrc,\n ...sources,\n )((g: GuestType<string>, joinPart, ...strings) => {\n give(strings.join(joinPart), g);\n });\n\n return result;\n};\n","import { give, GuestType, sourceCombined, SourceType } 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: SourceType<string>,\n valueSrc: SourceType<string>,\n flagsSrc: SourceType<string> = \"\",\n): SourceType<boolean> =>\n sourceCombined(\n patternSrc,\n valueSrc,\n flagsSrc,\n )((g: GuestType<boolean>, pattern, value, flags) => {\n give(new RegExp(pattern, flags).test(value), g);\n });\n","import {\n firstVisit,\n GuestType,\n patron,\n patronOnce,\n sourceOf,\n SourceType,\n systemPatron,\n value,\n} from \"silentium\";\nimport { survey } from \"../behaviors/Survey\";\nimport { branch } from \"../behaviors\";\nimport { regexpMatched } from \"../system/RegexpMatched\";\nimport { priority } from \"../behaviors/Priority\";\n\nexport interface Route<T> {\n pattern: string;\n patternFlags?: string;\n template: T | SourceType<T>;\n}\n\n/**\n * Router component what will return template if url matches pattern\n * https://silentium-lab.github.io/silentium-components/#/navigation/router\n */\nexport const router = <T = \"string\">(\n urlSrc: SourceType<string>,\n routesSrc: SourceType<Route<T>[]>,\n defaultSrc: SourceType<T>,\n) => {\n const resultSrc = sourceOf<T>();\n\n const visited = firstVisit(() => {\n value(\n routesSrc,\n patronOnce((routes) => {\n const prioritySrc = priority([\n defaultSrc,\n ...routes.map((r) =>\n value(\n branch(\n regexpMatched(r.pattern, urlSrc, r.patternFlags),\n r.template as SourceType,\n ),\n systemPatron((v) => {\n return v;\n }),\n ),\n ),\n ]);\n const surveySrc = survey(prioritySrc, urlSrc);\n value(surveySrc, patron(resultSrc));\n value(\n surveySrc,\n patron((v) => {\n return v;\n }),\n );\n }),\n );\n });\n\n return (g: GuestType<T>) => {\n visited();\n resultSrc.value(g);\n };\n};\n","import { give, GuestType, SourceType, value } from \"silentium\";\n\nexport const priority = <T>(sources: SourceType<T>[]) => {\n return (g: GuestType<T>) => {\n let highestPriorityIndex = 0;\n let highestPriorityResult;\n sources.forEach((source, index) => {\n value(source, (v) => {\n if (highestPriorityIndex <= index) {\n highestPriorityIndex = index;\n highestPriorityResult = v;\n }\n });\n });\n\n if (highestPriorityResult !== undefined) {\n give(highestPriorityResult, g);\n }\n };\n};\n","import {\n firstVisit,\n GuestType,\n sourceOf,\n SourceType,\n systemPatron,\n value,\n} from \"silentium\";\n\nexport const survey = <T>(\n targetSrc: SourceType<T>,\n triggerSrc: SourceType,\n): SourceType<T> => {\n const resultSrc = sourceOf<T>();\n\n const visited = firstVisit(() => {\n value(\n triggerSrc,\n systemPatron(() => {\n value(targetSrc, resultSrc);\n }),\n );\n });\n\n return (g: GuestType<T>) => {\n visited();\n resultSrc.value(g);\n };\n};\n","import { give, GuestType, sourceCombined, SourceType } 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: SourceType<string>,\n patternSrc: SourceType<string>,\n replaceValueSrc: SourceType<string>,\n flagsSrc: SourceType<string> = \"\",\n): SourceType<string> =>\n sourceCombined(\n patternSrc,\n valueSrc,\n replaceValueSrc,\n flagsSrc,\n )((g: GuestType<string>, pattern, value, replaceValue, flags) => {\n give(String(value).replace(new RegExp(pattern, flags), replaceValue), g);\n });\n","import { give, GuestType, sourceCombined, SourceType } 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: SourceType<string>,\n valueSrc: SourceType<string>,\n flagsSrc: SourceType<string> = \"\",\n): SourceType<string[]> =>\n sourceCombined(\n patternSrc,\n valueSrc,\n flagsSrc,\n )((g: GuestType<string[]>, pattern, value, flags) => {\n const result = new RegExp(pattern, flags).exec(value);\n give(result ?? [], g);\n });\n","import { sourceAll, SourceType, systemPatron, value } 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: SourceType<T>,\n keySrc: SourceType<string>,\n valueSrc: SourceType<unknown>,\n) => {\n value(\n sourceAll([baseSrc, keySrc, valueSrc]),\n systemPatron(([base, key, value]) => {\n (base as Record<string, unknown>)[key] = value;\n }),\n );\n\n return baseSrc;\n};\n","import { give, GuestType, sourceCombined, SourceType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/and\n */\nexport const and = (\n oneSrc: SourceType<boolean>,\n twoSrc: SourceType<boolean>,\n) => {\n return sourceCombined(\n oneSrc,\n twoSrc,\n )((guest: GuestType<boolean>, one, two) => {\n give(one && two, guest);\n });\n};\n","import { give, GuestType, sourceCombined, SourceType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/or\n */\nexport const or = (\n oneSrc: SourceType<boolean>,\n twoSrc: SourceType<boolean>,\n) => {\n return sourceCombined(\n oneSrc,\n twoSrc,\n )((guest: GuestType<boolean>, one, two) => {\n give(one || two, guest);\n });\n};\n","import { give, guestCast, GuestType, SourceType, value } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/not\n */\nexport const not = (baseSrc: SourceType<boolean>) => {\n return (g: GuestType<boolean>) => {\n value(\n baseSrc,\n guestCast(g, (base) => {\n give(!base, g);\n }),\n );\n };\n};\n"],"names":["groupActiveClass","activeClassSrc","activeElementSrc","groupElementsSrc","value","sourceAll","systemPatron","activeClass","activeElement","groupElements","forEach","el","classList","remove","add","dirty","baseEntitySource","becomePatronAuto","alwaysKeep","excludeKeys","comparingSrc","sourceOf","all","result","give","JSON","parse","stringify","guest","guestCast","comparing","base","Object","fromEntries","entries","filter","key","includes","patronOnce","loading","loadingStartSource","loadingFinishSource","loadingSrc","subSourceMany","path","baseSrc","keySrc","pathSrc","keyChunks","split","keyChunk","deadline","error","timeoutSrc","timerHead","g","timeout","clearTimeout","timeoutReached","setTimeout","Error","sourceFiltered","tick","subSource","microtaskScheduled","lastValue","v","queueMicrotask","fork","conditionSrc","predicate","thenSrc","elseSrc","reset","resultResettable","sourceResettable","thenPatron","elsePatron","removePatronFromPools","deferred","triggerSrc","visited","firstVisit","branch","resetSrc","resultSrc","memo","lock","lockSrc","locked","guestDisposable","destroy","moment","defaultValue","guestSync","shot","shotSrc","resetResult","baseSrcSync","sourceSync","syncValue","onlyChanged","firstValue","source","hashTable","baseSource","lastRecord","record","recordSrc","keys","sourceCombined","values","entry","index","concatenated","sources","joinPartSrc","joinPart","strings","join","regexpMatched","patternSrc","valueSrc","flagsSrc","pattern","flags","RegExp","test","router","urlSrc","routesSrc","defaultSrc","routes","prioritySrc","map","r","patternFlags","template","highestPriorityResult","highestPriorityIndex","surveySrc","targetSrc","survey","patron","regexpReplaced","replaceValueSrc","replaceValue","String","replace","regexpMatch","exec","set","and","oneSrc","twoSrc","one","two","or","not"],"mappings":"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"}
1
+ {"version":3,"file":"silentium-components.min.mjs","sources":["../src/controls/GroupActiveClass.ts","../src/behaviors/Dirty.ts","../src/behaviors/Loading.ts","../src/behaviors/Path.ts","../src/behaviors/Deadline.ts","../src/behaviors/Tick.ts","../src/behaviors/Fork.ts","../src/behaviors/Deferred.ts","../src/behaviors/Branch.ts","../src/behaviors/Memo.ts","../src/behaviors/Lock.ts","../src/behaviors/Moment.ts","../src/behaviors/Shot.ts","../src/behaviors/OnlyChanged.ts","../src/structures/HashTable.ts","../src/structures/Record.ts","../src/strings/Concatenated.ts","../src/system/RegexpMatched.ts","../src/navigation/Router.ts","../src/behaviors/Priority.ts","../src/behaviors/Polling.ts","../src/system/RegexpReplaced.ts","../src/system/RegexpMatch.ts","../src/system/Set.ts","../src/boolean/And.ts","../src/boolean/Or.ts","../src/boolean/Not.ts"],"sourcesContent":["import { sourceAll, SourceType, systemPatron, value } from \"silentium\";\n\n/**\n * Sets activeClass to one element of group\n * and resets activeClass on other group elements\n * suitable for menu active class\n */\nexport const groupActiveClass = (\n activeClassSrc: SourceType<string>,\n activeElementSrc: SourceType<HTMLElement>,\n groupElementsSrc: SourceType<HTMLElement[]>,\n) => {\n value(\n sourceAll([activeClassSrc, activeElementSrc, groupElementsSrc]),\n systemPatron(([activeClass, activeElement, groupElements]) => {\n groupElements.forEach((el) => {\n if (el.classList) {\n el.classList.remove(activeClass);\n }\n });\n activeElement.classList.add(activeClass);\n }),\n );\n\n return groupElementsSrc;\n};\n","import {\n give,\n guestCast,\n GuestType,\n patronOnce,\n sourceAll,\n SourceChangeableType,\n sourceOf,\n SourceType,\n value,\n} 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 extends object>(\n baseEntitySource: SourceType<T>,\n becomePatronAuto = false,\n alwaysKeep: string[] = [],\n excludeKeys: string[] = [],\n): SourceChangeableType<Partial<T>> => {\n const comparingSrc = sourceOf();\n const all = sourceAll([comparingSrc, baseEntitySource]);\n\n const result = {\n give(value: T) {\n give(JSON.parse(JSON.stringify(value)), comparingSrc);\n return result;\n },\n value(guest: GuestType<Partial<T>>) {\n value(\n all,\n guestCast(guest, ([comparing, base]) => {\n if (!comparing) {\n return;\n }\n\n give(\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 guest,\n );\n }),\n );\n return result;\n },\n };\n\n if (becomePatronAuto) {\n value(baseEntitySource, patronOnce(result));\n }\n\n return result;\n};\n","import {\n sourceOf,\n SourceType,\n subSourceMany,\n systemPatron,\n value,\n} from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/loading\n */\nexport const loading = (\n loadingStartSource: SourceType<unknown>,\n loadingFinishSource: SourceType<unknown>,\n) => {\n const loadingSrc = sourceOf<boolean>();\n subSourceMany(loadingSrc, [loadingStartSource, loadingFinishSource]);\n\n value(\n loadingStartSource,\n systemPatron(() => {\n loadingSrc.give(true);\n }),\n );\n value(\n loadingFinishSource,\n systemPatron(() => {\n loadingSrc.give(false);\n }),\n );\n\n return loadingSrc.value;\n};\n","import {\n give,\n sourceAll,\n sourceOf,\n SourceType,\n subSourceMany,\n systemPatron,\n value,\n} 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 T extends Record<string, unknown> | Array<unknown>,\n K extends string,\n>(\n baseSrc: SourceType<T>,\n keySrc: SourceType<K>,\n) => {\n const pathSrc = sourceOf<unknown>();\n subSourceMany(pathSrc, [baseSrc, keySrc]);\n\n value(\n sourceAll([baseSrc, keySrc]),\n systemPatron(([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 give(value, pathSrc);\n }\n }),\n );\n\n return pathSrc.value;\n};\n","import {\n give,\n guestCast,\n GuestType,\n patronOnce,\n sourceFiltered,\n SourceType,\n value,\n} from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport const deadline = <T>(\n error: GuestType<Error>,\n baseSrc: SourceType<T>,\n timeoutSrc: SourceType<number>,\n) => {\n let timerHead: unknown = null;\n return (g: GuestType<T>) => {\n value(\n timeoutSrc,\n guestCast(g, (timeout) => {\n if (timerHead) {\n clearTimeout(timerHead as number);\n }\n\n let timeoutReached = false;\n\n timerHead = setTimeout(() => {\n if (timeoutReached) {\n return;\n }\n timeoutReached = true;\n give(new Error(\"Timeout reached in Deadline class\"), error);\n }, timeout);\n\n value(\n sourceFiltered(baseSrc, () => !timeoutReached),\n g,\n );\n\n value(\n baseSrc,\n patronOnce(() => {\n timeoutReached = true;\n }),\n );\n }),\n );\n };\n};\n","import {\n give,\n sourceOf,\n SourceType,\n subSource,\n systemPatron,\n value,\n} 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: SourceType<T>) => {\n const result = sourceOf<T>();\n subSource(result, baseSrc);\n\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 give(lastValue, result);\n lastValue = null;\n }\n });\n };\n\n value(\n baseSrc,\n systemPatron((v) => {\n lastValue = v;\n if (!microtaskScheduled) {\n scheduleMicrotask();\n }\n }),\n );\n\n return result;\n};\n","import {\n GuestObjectType,\n patronOnce,\n removePatronFromPools,\n sourceOf,\n sourceResettable,\n SourceType,\n systemPatron,\n value,\n} from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/dirty\n */\nexport const fork = <T, Then, Else>(\n conditionSrc: SourceType<T>,\n predicate: (v: T) => boolean,\n thenSrc: SourceType<Then>,\n elseSrc?: SourceType<Else>,\n): SourceType<Then | Else> => {\n const result = sourceOf<Then | Else>();\n const reset = sourceOf();\n const resultResettable = sourceResettable(result, reset);\n let thenPatron: GuestObjectType<Then> | undefined;\n let elsePatron: GuestObjectType<Else> | undefined;\n\n value(\n conditionSrc,\n systemPatron((v) => {\n reset.give(1);\n if (thenPatron) {\n removePatronFromPools(thenPatron);\n }\n if (elsePatron) {\n removePatronFromPools(elsePatron);\n }\n if (predicate(v)) {\n thenPatron = patronOnce(result);\n value(thenSrc, thenPatron);\n } else if (elseSrc) {\n elsePatron = patronOnce(result);\n value(elseSrc, elsePatron);\n }\n }),\n );\n\n return resultResettable;\n};\n","import {\n firstVisit,\n GuestType,\n sourceOf,\n sourceResettable,\n SourceType,\n systemPatron,\n value,\n} from \"silentium\";\n\n/**\n * Defer one source after another, gives values of baseSrc only once when triggerSrc responds\n * https://silentium-lab.github.io/silentium-components/#/behaviors/deferred\n */\nexport const deferred = <T>(\n baseSrc: SourceType<T>,\n triggerSrc: SourceType<unknown>,\n) => {\n const result = sourceResettable<T>(sourceOf(), baseSrc as SourceType);\n\n const visited = firstVisit(() => {\n value(\n triggerSrc,\n systemPatron(() => {\n value(baseSrc, result);\n }),\n );\n });\n\n return (g: GuestType<T>) => {\n visited();\n value(result, g);\n };\n};\n","import {\n firstVisit,\n GuestType,\n patronOnce,\n sourceOf,\n sourceResettable,\n SourceType,\n systemPatron,\n value,\n} from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/branch\n */\nexport const branch = <Then, Else>(\n conditionSrc: SourceType<boolean>,\n thenSrc: SourceType<Then>,\n elseSrc?: SourceType<Else>,\n): SourceType<Then | Else> => {\n const resetSrc = sourceOf();\n const result = sourceOf<Then | Else>();\n const resultSrc = sourceResettable(result, resetSrc);\n\n const visited = firstVisit(() => {\n value(\n conditionSrc,\n systemPatron((v) => {\n resetSrc.give(1);\n if (v === true) {\n value(thenSrc, patronOnce(result.give));\n } else if (elseSrc !== undefined) {\n value(elseSrc, patronOnce(result.give));\n }\n }),\n );\n });\n\n return (g: GuestType<Then | Else>) => {\n visited();\n resultSrc.value(g);\n };\n};\n","import { sourceOf, SourceType, systemPatron, value } 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: SourceType<T>) => {\n const result = sourceOf<T>();\n let lastValue: T | null = null;\n\n value(\n baseSrc,\n systemPatron((v) => {\n if (v !== lastValue) {\n result.give(v);\n lastValue = v;\n }\n }),\n );\n\n return result.value;\n};\n","import {\n destroy,\n guestDisposable,\n patronOnce,\n sourceOf,\n sourceResettable,\n SourceType,\n subSource,\n systemPatron,\n value,\n} from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/lock\n */\nexport const lock = <T>(\n baseSrc: SourceType<T>,\n lockSrc: SourceType<unknown>,\n) => {\n const result = sourceOf();\n const resultResettable = sourceResettable(result, lockSrc);\n let locked = false;\n subSource(result, baseSrc);\n\n value(baseSrc, systemPatron(guestDisposable(result.give, () => locked)));\n\n value(\n lockSrc,\n patronOnce(() => {\n locked = true;\n destroy([result]);\n }),\n );\n\n return resultResettable;\n};\n","import { give, guestSync, GuestType, SourceType, value } from \"silentium\";\n\n/**\n * Get's value from source in moment of component call and than return this value every time\n * https://silentium-lab.github.io/silentium-components/#/behaviors/moment\n */\nexport const moment = <T>(\n baseSrc: SourceType<T>,\n defaultValue?: T,\n): SourceType<T> => {\n const guest = guestSync(defaultValue);\n value(baseSrc, guest);\n\n return (g: GuestType<T>) => {\n give(guest.value(), g);\n };\n};\n","import {\n sourceOf,\n sourceResettable,\n sourceSync,\n SourceType,\n systemPatron,\n value,\n} 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>(baseSrc: SourceType<T>, shotSrc: SourceType) => {\n const resetResult = sourceOf();\n const result = sourceOf<T>();\n\n const baseSrcSync = sourceSync(baseSrc, null);\n value(\n shotSrc,\n systemPatron(() => {\n if (baseSrcSync.syncValue() !== null) {\n result.give(baseSrcSync.syncValue() as T);\n resetResult.give(1);\n }\n }),\n );\n\n return sourceResettable(result, resetResult);\n};\n","import { give, guestCast, source, SourceType, value } 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: SourceType<T>) => {\n let firstValue = false;\n return source<T>((g) => {\n value(\n baseSrc,\n guestCast<T>(g, (v) => {\n if (firstValue === false) {\n firstValue = true;\n } else {\n give(v, g);\n }\n }),\n );\n });\n};\n","import {\n sourceOf,\n SourceType,\n subSource,\n systemPatron,\n value,\n} from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/structures/hash-table\n */\nexport const hashTable = (baseSource: SourceType<[string, unknown]>) => {\n const result = sourceOf<Record<string, unknown>>({});\n subSource(result, baseSource);\n\n value(\n baseSource,\n systemPatron(([key, value]) => {\n result.value((lastRecord) => {\n lastRecord[key] = value;\n });\n }),\n );\n\n return result.value;\n};\n","import { give, GuestType, sourceCombined, SourceType } from \"silentium\";\n\n/**\n * Returns record of data from record of sources\n * https://silentium-lab.github.io/silentium-components/#/structures/record\n */\nexport const record = (recordSrc: Record<string, SourceType>) => {\n const keys = Object.keys(recordSrc);\n return sourceCombined(...Object.values(recordSrc))(\n (g: GuestType<Record<string, any>>, ...entries: any[]) => {\n const record: Record<string, any> = {};\n entries.forEach((entry, index) => {\n record[keys[index]] = entry;\n });\n give(record, g);\n },\n );\n};\n","import { give, GuestType, sourceCombined, SourceType } 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: SourceType<string>[],\n joinPartSrc: SourceType<string> = \"\",\n): SourceType<string> => {\n const result = sourceCombined(\n joinPartSrc,\n ...sources,\n )((g: GuestType<string>, joinPart, ...strings) => {\n give(strings.join(joinPart), g);\n });\n\n return result;\n};\n","import { give, GuestType, sourceCombined, SourceType } 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: SourceType<string>,\n valueSrc: SourceType<string>,\n flagsSrc: SourceType<string> = \"\",\n): SourceType<boolean> =>\n sourceCombined(\n patternSrc,\n valueSrc,\n flagsSrc,\n )((g: GuestType<boolean>, pattern, value, flags) => {\n give(new RegExp(pattern, flags).test(value), g);\n });\n","import {\n firstVisit,\n GuestType,\n patronOnce,\n sourceOf,\n SourceType,\n systemPatron,\n value,\n} from \"silentium\";\nimport { branch } from \"../behaviors\";\nimport { polling } from \"../behaviors/Polling\";\nimport { priority } from \"../behaviors/Priority\";\nimport { regexpMatched } from \"../system/RegexpMatched\";\n\nexport interface Route<T> {\n pattern: string;\n patternFlags?: string;\n template: T | SourceType<T>;\n}\n\n/**\n * Router component what will return template if url matches pattern\n * https://silentium-lab.github.io/silentium-components/#/navigation/router\n */\nexport const router = <T = \"string\">(\n urlSrc: SourceType<string>,\n routesSrc: SourceType<Route<T>[]>,\n defaultSrc: SourceType<T>,\n) => {\n const resultSrc = sourceOf<T>();\n\n const visited = firstVisit(() => {\n value(\n routesSrc,\n patronOnce((routes) => {\n const prioritySrc = priority([\n defaultSrc,\n ...routes.map((r) =>\n value(\n branch(\n regexpMatched(r.pattern, urlSrc, r.patternFlags),\n r.template as SourceType,\n ),\n systemPatron((v) => {\n return v;\n }),\n ),\n ),\n ]);\n const pollingSrc = polling(prioritySrc, urlSrc);\n value(pollingSrc, systemPatron(resultSrc));\n }),\n );\n });\n\n return (g: GuestType<T>) => {\n visited();\n resultSrc.value(g);\n };\n};\n","import { give, GuestType, SourceType, value } from \"silentium\";\n\nexport const priority = <T>(sources: SourceType<T>[]) => {\n return (g: GuestType<T>) => {\n let highestPriorityIndex = 0;\n let highestPriorityResult;\n sources.forEach((source, index) => {\n value(source, (v) => {\n if (highestPriorityIndex <= index) {\n highestPriorityIndex = index;\n highestPriorityResult = v;\n }\n });\n });\n\n if (highestPriorityResult !== undefined) {\n give(highestPriorityResult, g);\n }\n };\n};\n","import {\n firstVisit,\n GuestType,\n sourceOf,\n SourceType,\n systemPatron,\n value,\n} from \"silentium\";\n\nexport const polling = <T>(\n targetSrc: SourceType<T>,\n triggerSrc: SourceType,\n): SourceType<T> => {\n const resultSrc = sourceOf<T>();\n\n const visited = firstVisit(() => {\n value(\n triggerSrc,\n systemPatron(() => {\n value(targetSrc, resultSrc);\n }),\n );\n });\n\n return (g: GuestType<T>) => {\n visited();\n resultSrc.value(g);\n };\n};\n","import { give, GuestType, sourceCombined, SourceType } 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: SourceType<string>,\n patternSrc: SourceType<string>,\n replaceValueSrc: SourceType<string>,\n flagsSrc: SourceType<string> = \"\",\n): SourceType<string> =>\n sourceCombined(\n patternSrc,\n valueSrc,\n replaceValueSrc,\n flagsSrc,\n )((g: GuestType<string>, pattern, value, replaceValue, flags) => {\n give(String(value).replace(new RegExp(pattern, flags), replaceValue), g);\n });\n","import { give, GuestType, sourceCombined, SourceType } 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: SourceType<string>,\n valueSrc: SourceType<string>,\n flagsSrc: SourceType<string> = \"\",\n): SourceType<string[]> =>\n sourceCombined(\n patternSrc,\n valueSrc,\n flagsSrc,\n )((g: GuestType<string[]>, pattern, value, flags) => {\n const result = new RegExp(pattern, flags).exec(value);\n give(result ?? [], g);\n });\n","import { sourceAll, SourceType, systemPatron, value } 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: SourceType<T>,\n keySrc: SourceType<string>,\n valueSrc: SourceType<unknown>,\n) => {\n value(\n sourceAll([baseSrc, keySrc, valueSrc]),\n systemPatron(([base, key, value]) => {\n (base as Record<string, unknown>)[key] = value;\n }),\n );\n\n return baseSrc;\n};\n","import { give, GuestType, sourceCombined, SourceType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/and\n */\nexport const and = (\n oneSrc: SourceType<boolean>,\n twoSrc: SourceType<boolean>,\n) => {\n return sourceCombined(\n oneSrc,\n twoSrc,\n )((guest: GuestType<boolean>, one, two) => {\n give(one && two, guest);\n });\n};\n","import { give, GuestType, sourceCombined, SourceType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/or\n */\nexport const or = (\n oneSrc: SourceType<boolean>,\n twoSrc: SourceType<boolean>,\n) => {\n return sourceCombined(\n oneSrc,\n twoSrc,\n )((guest: GuestType<boolean>, one, two) => {\n give(one || two, guest);\n });\n};\n","import { give, guestCast, GuestType, SourceType, value } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/not\n */\nexport const not = (baseSrc: SourceType<boolean>) => {\n return (g: GuestType<boolean>) => {\n value(\n baseSrc,\n guestCast(g, (base) => {\n give(!base, g);\n }),\n );\n };\n};\n"],"names":["groupActiveClass","activeClassSrc","activeElementSrc","groupElementsSrc","value","sourceAll","systemPatron","activeClass","activeElement","groupElements","forEach","el","classList","remove","add","dirty","baseEntitySource","becomePatronAuto","alwaysKeep","excludeKeys","comparingSrc","sourceOf","all","result","give","JSON","parse","stringify","guest","guestCast","comparing","base","Object","fromEntries","entries","filter","key","includes","patronOnce","loading","loadingStartSource","loadingFinishSource","loadingSrc","subSourceMany","path","baseSrc","keySrc","pathSrc","keyChunks","split","keyChunk","deadline","error","timeoutSrc","timerHead","g","timeout","clearTimeout","timeoutReached","setTimeout","Error","sourceFiltered","tick","subSource","microtaskScheduled","lastValue","v","queueMicrotask","fork","conditionSrc","predicate","thenSrc","elseSrc","reset","resultResettable","sourceResettable","thenPatron","elsePatron","removePatronFromPools","deferred","triggerSrc","visited","firstVisit","branch","resetSrc","resultSrc","memo","lock","lockSrc","locked","guestDisposable","destroy","moment","defaultValue","guestSync","shot","shotSrc","resetResult","baseSrcSync","sourceSync","syncValue","onlyChanged","firstValue","source","hashTable","baseSource","lastRecord","record","recordSrc","keys","sourceCombined","values","entry","index","concatenated","sources","joinPartSrc","joinPart","strings","join","regexpMatched","patternSrc","valueSrc","flagsSrc","pattern","flags","RegExp","test","router","urlSrc","routesSrc","defaultSrc","routes","prioritySrc","map","r","patternFlags","template","highestPriorityResult","highestPriorityIndex","pollingSrc","targetSrc","polling","regexpReplaced","replaceValueSrc","replaceValue","String","replace","regexpMatch","exec","set","and","oneSrc","twoSrc","one","two","or","not"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { value, sourceAll, systemPatron, sourceOf, patronOnce, guestCast, give, subSourceMany, sourceFiltered, subSource, sourceResettable, removePatronFromPools, firstVisit, guestDisposable, destroy, guestSync, sourceSync, source, sourceCombined, patron } from 'silentium';
1
+ import { value, sourceAll, systemPatron, sourceOf, patronOnce, guestCast, give, subSourceMany, sourceFiltered, subSource, sourceResettable, removePatronFromPools, firstVisit, guestDisposable, destroy, guestSync, sourceSync, source, sourceCombined } from 'silentium';
2
2
 
3
3
  const groupActiveClass = (activeClassSrc, activeElementSrc, groupElementsSrc) => {
4
4
  value(
@@ -205,9 +205,9 @@ const branch = (conditionSrc, thenSrc, elseSrc) => {
205
205
  systemPatron((v) => {
206
206
  resetSrc.give(1);
207
207
  if (v === true) {
208
- value(thenSrc, result.give);
208
+ value(thenSrc, patronOnce(result.give));
209
209
  } else if (elseSrc !== void 0) {
210
- value(elseSrc, result.give);
210
+ value(elseSrc, patronOnce(result.give));
211
211
  }
212
212
  })
213
213
  );
@@ -326,7 +326,7 @@ const concatenated = (sources, joinPartSrc = "") => {
326
326
  return result;
327
327
  };
328
328
 
329
- const survey = (targetSrc, triggerSrc) => {
329
+ const polling = (targetSrc, triggerSrc) => {
330
330
  const resultSrc = sourceOf();
331
331
  const visited = firstVisit(() => {
332
332
  value(
@@ -342,14 +342,6 @@ const survey = (targetSrc, triggerSrc) => {
342
342
  };
343
343
  };
344
344
 
345
- const regexpMatched = (patternSrc, valueSrc, flagsSrc = "") => sourceCombined(
346
- patternSrc,
347
- valueSrc,
348
- flagsSrc
349
- )((g, pattern, value, flags) => {
350
- give(new RegExp(pattern, flags).test(value), g);
351
- });
352
-
353
345
  const priority = (sources) => {
354
346
  return (g) => {
355
347
  let highestPriorityIndex = 0;
@@ -368,6 +360,14 @@ const priority = (sources) => {
368
360
  };
369
361
  };
370
362
 
363
+ const regexpMatched = (patternSrc, valueSrc, flagsSrc = "") => sourceCombined(
364
+ patternSrc,
365
+ valueSrc,
366
+ flagsSrc
367
+ )((g, pattern, value, flags) => {
368
+ give(new RegExp(pattern, flags).test(value), g);
369
+ });
370
+
371
371
  const router = (urlSrc, routesSrc, defaultSrc) => {
372
372
  const resultSrc = sourceOf();
373
373
  const visited = firstVisit(() => {
@@ -388,14 +388,8 @@ const router = (urlSrc, routesSrc, defaultSrc) => {
388
388
  )
389
389
  )
390
390
  ]);
391
- const surveySrc = survey(prioritySrc, urlSrc);
392
- value(surveySrc, patron(resultSrc));
393
- value(
394
- surveySrc,
395
- patron((v) => {
396
- return v;
397
- })
398
- );
391
+ const pollingSrc = polling(prioritySrc, urlSrc);
392
+ value(pollingSrc, systemPatron(resultSrc));
399
393
  })
400
394
  );
401
395
  });
@@ -1 +1 @@
1
- {"version":3,"file":"silentium-components.mjs","sources":["../src/controls/GroupActiveClass.ts","../src/behaviors/Dirty.ts","../src/behaviors/Loading.ts","../src/behaviors/Path.ts","../src/behaviors/Deadline.ts","../src/behaviors/Tick.ts","../src/behaviors/Fork.ts","../src/behaviors/Deferred.ts","../src/behaviors/Branch.ts","../src/behaviors/Memo.ts","../src/behaviors/Lock.ts","../src/behaviors/Moment.ts","../src/behaviors/Shot.ts","../src/behaviors/OnlyChanged.ts","../src/structures/HashTable.ts","../src/structures/Record.ts","../src/strings/Concatenated.ts","../src/behaviors/Survey.ts","../src/system/RegexpMatched.ts","../src/behaviors/Priority.ts","../src/navigation/Router.ts","../src/system/RegexpReplaced.ts","../src/system/RegexpMatch.ts","../src/system/Set.ts","../src/boolean/And.ts","../src/boolean/Or.ts","../src/boolean/Not.ts"],"sourcesContent":["import { sourceAll, SourceType, systemPatron, value } from \"silentium\";\n\n/**\n * Sets activeClass to one element of group\n * and resets activeClass on other group elements\n * suitable for menu active class\n */\nexport const groupActiveClass = (\n activeClassSrc: SourceType<string>,\n activeElementSrc: SourceType<HTMLElement>,\n groupElementsSrc: SourceType<HTMLElement[]>,\n) => {\n value(\n sourceAll([activeClassSrc, activeElementSrc, groupElementsSrc]),\n systemPatron(([activeClass, activeElement, groupElements]) => {\n groupElements.forEach((el) => {\n if (el.classList) {\n el.classList.remove(activeClass);\n }\n });\n activeElement.classList.add(activeClass);\n }),\n );\n\n return groupElementsSrc;\n};\n","import {\n give,\n guestCast,\n GuestType,\n patronOnce,\n sourceAll,\n SourceChangeableType,\n sourceOf,\n SourceType,\n value,\n} 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 extends object>(\n baseEntitySource: SourceType<T>,\n becomePatronAuto = false,\n alwaysKeep: string[] = [],\n excludeKeys: string[] = [],\n): SourceChangeableType<Partial<T>> => {\n const comparingSrc = sourceOf();\n const all = sourceAll([comparingSrc, baseEntitySource]);\n\n const result = {\n give(value: T) {\n give(JSON.parse(JSON.stringify(value)), comparingSrc);\n return result;\n },\n value(guest: GuestType<Partial<T>>) {\n value(\n all,\n guestCast(guest, ([comparing, base]) => {\n if (!comparing) {\n return;\n }\n\n give(\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 guest,\n );\n }),\n );\n return result;\n },\n };\n\n if (becomePatronAuto) {\n value(baseEntitySource, patronOnce(result));\n }\n\n return result;\n};\n","import {\n sourceOf,\n SourceType,\n subSourceMany,\n systemPatron,\n value,\n} from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/loading\n */\nexport const loading = (\n loadingStartSource: SourceType<unknown>,\n loadingFinishSource: SourceType<unknown>,\n) => {\n const loadingSrc = sourceOf<boolean>();\n subSourceMany(loadingSrc, [loadingStartSource, loadingFinishSource]);\n\n value(\n loadingStartSource,\n systemPatron(() => {\n loadingSrc.give(true);\n }),\n );\n value(\n loadingFinishSource,\n systemPatron(() => {\n loadingSrc.give(false);\n }),\n );\n\n return loadingSrc.value;\n};\n","import {\n give,\n sourceAll,\n sourceOf,\n SourceType,\n subSourceMany,\n systemPatron,\n value,\n} 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 T extends Record<string, unknown> | Array<unknown>,\n K extends string,\n>(\n baseSrc: SourceType<T>,\n keySrc: SourceType<K>,\n) => {\n const pathSrc = sourceOf<unknown>();\n subSourceMany(pathSrc, [baseSrc, keySrc]);\n\n value(\n sourceAll([baseSrc, keySrc]),\n systemPatron(([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 give(value, pathSrc);\n }\n }),\n );\n\n return pathSrc.value;\n};\n","import {\n give,\n guestCast,\n GuestType,\n patronOnce,\n sourceFiltered,\n SourceType,\n value,\n} from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport const deadline = <T>(\n error: GuestType<Error>,\n baseSrc: SourceType<T>,\n timeoutSrc: SourceType<number>,\n) => {\n let timerHead: unknown = null;\n return (g: GuestType<T>) => {\n value(\n timeoutSrc,\n guestCast(g, (timeout) => {\n if (timerHead) {\n clearTimeout(timerHead as number);\n }\n\n let timeoutReached = false;\n\n timerHead = setTimeout(() => {\n if (timeoutReached) {\n return;\n }\n timeoutReached = true;\n give(new Error(\"Timeout reached in Deadline class\"), error);\n }, timeout);\n\n value(\n sourceFiltered(baseSrc, () => !timeoutReached),\n g,\n );\n\n value(\n baseSrc,\n patronOnce(() => {\n timeoutReached = true;\n }),\n );\n }),\n );\n };\n};\n","import {\n give,\n sourceOf,\n SourceType,\n subSource,\n systemPatron,\n value,\n} 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: SourceType<T>) => {\n const result = sourceOf<T>();\n subSource(result, baseSrc);\n\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 give(lastValue, result);\n lastValue = null;\n }\n });\n };\n\n value(\n baseSrc,\n systemPatron((v) => {\n lastValue = v;\n if (!microtaskScheduled) {\n scheduleMicrotask();\n }\n }),\n );\n\n return result;\n};\n","import {\n GuestObjectType,\n patronOnce,\n removePatronFromPools,\n sourceOf,\n sourceResettable,\n SourceType,\n systemPatron,\n value,\n} from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/dirty\n */\nexport const fork = <T, Then, Else>(\n conditionSrc: SourceType<T>,\n predicate: (v: T) => boolean,\n thenSrc: SourceType<Then>,\n elseSrc?: SourceType<Else>,\n): SourceType<Then | Else> => {\n const result = sourceOf<Then | Else>();\n const reset = sourceOf();\n const resultResettable = sourceResettable(result, reset);\n let thenPatron: GuestObjectType<Then> | undefined;\n let elsePatron: GuestObjectType<Else> | undefined;\n\n value(\n conditionSrc,\n systemPatron((v) => {\n reset.give(1);\n if (thenPatron) {\n removePatronFromPools(thenPatron);\n }\n if (elsePatron) {\n removePatronFromPools(elsePatron);\n }\n if (predicate(v)) {\n thenPatron = patronOnce(result);\n value(thenSrc, thenPatron);\n } else if (elseSrc) {\n elsePatron = patronOnce(result);\n value(elseSrc, elsePatron);\n }\n }),\n );\n\n return resultResettable;\n};\n","import {\n firstVisit,\n GuestType,\n sourceOf,\n sourceResettable,\n SourceType,\n systemPatron,\n value,\n} from \"silentium\";\n\n/**\n * Defer one source after another, gives values of baseSrc only once when triggerSrc responds\n * https://silentium-lab.github.io/silentium-components/#/behaviors/deferred\n */\nexport const deferred = <T>(\n baseSrc: SourceType<T>,\n triggerSrc: SourceType<unknown>,\n) => {\n const result = sourceResettable<T>(sourceOf(), baseSrc as SourceType);\n\n const visited = firstVisit(() => {\n value(\n triggerSrc,\n systemPatron(() => {\n value(baseSrc, result);\n }),\n );\n });\n\n return (g: GuestType<T>) => {\n visited();\n value(result, g);\n };\n};\n","import {\n firstVisit,\n GuestType,\n sourceOf,\n sourceResettable,\n SourceType,\n systemPatron,\n value,\n} from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/branch\n */\nexport const branch = <Then, Else>(\n conditionSrc: SourceType<boolean>,\n thenSrc: SourceType<Then>,\n elseSrc?: SourceType<Else>,\n): SourceType<Then | Else> => {\n const resetSrc = sourceOf();\n const result = sourceOf<Then | Else>();\n const resultSrc = sourceResettable(result, resetSrc);\n\n const visited = firstVisit(() => {\n value(\n conditionSrc,\n systemPatron((v) => {\n resetSrc.give(1);\n if (v === true) {\n value(thenSrc, result.give);\n } else if (elseSrc !== undefined) {\n value(elseSrc, result.give);\n }\n }),\n );\n });\n\n return (g: GuestType<Then | Else>) => {\n visited();\n resultSrc.value(g);\n };\n};\n","import { sourceOf, SourceType, systemPatron, value } 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: SourceType<T>) => {\n const result = sourceOf<T>();\n let lastValue: T | null = null;\n\n value(\n baseSrc,\n systemPatron((v) => {\n if (v !== lastValue) {\n result.give(v);\n lastValue = v;\n }\n }),\n );\n\n return result.value;\n};\n","import {\n destroy,\n guestDisposable,\n patronOnce,\n sourceOf,\n sourceResettable,\n SourceType,\n subSource,\n systemPatron,\n value,\n} from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/lock\n */\nexport const lock = <T>(\n baseSrc: SourceType<T>,\n lockSrc: SourceType<unknown>,\n) => {\n const result = sourceOf();\n const resultResettable = sourceResettable(result, lockSrc);\n let locked = false;\n subSource(result, baseSrc);\n\n value(baseSrc, systemPatron(guestDisposable(result.give, () => locked)));\n\n value(\n lockSrc,\n patronOnce(() => {\n locked = true;\n destroy([result]);\n }),\n );\n\n return resultResettable;\n};\n","import { give, guestSync, GuestType, SourceType, value } from \"silentium\";\n\n/**\n * Get's value from source in moment of component call and than return this value every time\n * https://silentium-lab.github.io/silentium-components/#/behaviors/moment\n */\nexport const moment = <T>(\n baseSrc: SourceType<T>,\n defaultValue?: T,\n): SourceType<T> => {\n const guest = guestSync(defaultValue);\n value(baseSrc, guest);\n\n return (g: GuestType<T>) => {\n give(guest.value(), g);\n };\n};\n","import {\n sourceOf,\n sourceResettable,\n sourceSync,\n SourceType,\n systemPatron,\n value,\n} 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>(baseSrc: SourceType<T>, shotSrc: SourceType) => {\n const resetResult = sourceOf();\n const result = sourceOf<T>();\n\n const baseSrcSync = sourceSync(baseSrc, null);\n value(\n shotSrc,\n systemPatron(() => {\n if (baseSrcSync.syncValue() !== null) {\n result.give(baseSrcSync.syncValue() as T);\n resetResult.give(1);\n }\n }),\n );\n\n return sourceResettable(result, resetResult);\n};\n","import { give, guestCast, source, SourceType, value } 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: SourceType<T>) => {\n let firstValue = false;\n return source<T>((g) => {\n value(\n baseSrc,\n guestCast<T>(g, (v) => {\n if (firstValue === false) {\n firstValue = true;\n } else {\n give(v, g);\n }\n }),\n );\n });\n};\n","import {\n sourceOf,\n SourceType,\n subSource,\n systemPatron,\n value,\n} from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/structures/hash-table\n */\nexport const hashTable = (baseSource: SourceType<[string, unknown]>) => {\n const result = sourceOf<Record<string, unknown>>({});\n subSource(result, baseSource);\n\n value(\n baseSource,\n systemPatron(([key, value]) => {\n result.value((lastRecord) => {\n lastRecord[key] = value;\n });\n }),\n );\n\n return result.value;\n};\n","import { give, GuestType, sourceCombined, SourceType } from \"silentium\";\n\n/**\n * Returns record of data from record of sources\n * https://silentium-lab.github.io/silentium-components/#/structures/record\n */\nexport const record = (recordSrc: Record<string, SourceType>) => {\n const keys = Object.keys(recordSrc);\n return sourceCombined(...Object.values(recordSrc))(\n (g: GuestType<Record<string, any>>, ...entries: any[]) => {\n const record: Record<string, any> = {};\n entries.forEach((entry, index) => {\n record[keys[index]] = entry;\n });\n give(record, g);\n },\n );\n};\n","import { give, GuestType, sourceCombined, SourceType } 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: SourceType<string>[],\n joinPartSrc: SourceType<string> = \"\",\n): SourceType<string> => {\n const result = sourceCombined(\n joinPartSrc,\n ...sources,\n )((g: GuestType<string>, joinPart, ...strings) => {\n give(strings.join(joinPart), g);\n });\n\n return result;\n};\n","import {\n firstVisit,\n GuestType,\n sourceOf,\n SourceType,\n systemPatron,\n value,\n} from \"silentium\";\n\nexport const survey = <T>(\n targetSrc: SourceType<T>,\n triggerSrc: SourceType,\n): SourceType<T> => {\n const resultSrc = sourceOf<T>();\n\n const visited = firstVisit(() => {\n value(\n triggerSrc,\n systemPatron(() => {\n value(targetSrc, resultSrc);\n }),\n );\n });\n\n return (g: GuestType<T>) => {\n visited();\n resultSrc.value(g);\n };\n};\n","import { give, GuestType, sourceCombined, SourceType } 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: SourceType<string>,\n valueSrc: SourceType<string>,\n flagsSrc: SourceType<string> = \"\",\n): SourceType<boolean> =>\n sourceCombined(\n patternSrc,\n valueSrc,\n flagsSrc,\n )((g: GuestType<boolean>, pattern, value, flags) => {\n give(new RegExp(pattern, flags).test(value), g);\n });\n","import { give, GuestType, SourceType, value } from \"silentium\";\n\nexport const priority = <T>(sources: SourceType<T>[]) => {\n return (g: GuestType<T>) => {\n let highestPriorityIndex = 0;\n let highestPriorityResult;\n sources.forEach((source, index) => {\n value(source, (v) => {\n if (highestPriorityIndex <= index) {\n highestPriorityIndex = index;\n highestPriorityResult = v;\n }\n });\n });\n\n if (highestPriorityResult !== undefined) {\n give(highestPriorityResult, g);\n }\n };\n};\n","import {\n firstVisit,\n GuestType,\n patron,\n patronOnce,\n sourceOf,\n SourceType,\n systemPatron,\n value,\n} from \"silentium\";\nimport { survey } from \"../behaviors/Survey\";\nimport { branch } from \"../behaviors\";\nimport { regexpMatched } from \"../system/RegexpMatched\";\nimport { priority } from \"../behaviors/Priority\";\n\nexport interface Route<T> {\n pattern: string;\n patternFlags?: string;\n template: T | SourceType<T>;\n}\n\n/**\n * Router component what will return template if url matches pattern\n * https://silentium-lab.github.io/silentium-components/#/navigation/router\n */\nexport const router = <T = \"string\">(\n urlSrc: SourceType<string>,\n routesSrc: SourceType<Route<T>[]>,\n defaultSrc: SourceType<T>,\n) => {\n const resultSrc = sourceOf<T>();\n\n const visited = firstVisit(() => {\n value(\n routesSrc,\n patronOnce((routes) => {\n const prioritySrc = priority([\n defaultSrc,\n ...routes.map((r) =>\n value(\n branch(\n regexpMatched(r.pattern, urlSrc, r.patternFlags),\n r.template as SourceType,\n ),\n systemPatron((v) => {\n return v;\n }),\n ),\n ),\n ]);\n const surveySrc = survey(prioritySrc, urlSrc);\n value(surveySrc, patron(resultSrc));\n value(\n surveySrc,\n patron((v) => {\n return v;\n }),\n );\n }),\n );\n });\n\n return (g: GuestType<T>) => {\n visited();\n resultSrc.value(g);\n };\n};\n","import { give, GuestType, sourceCombined, SourceType } 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: SourceType<string>,\n patternSrc: SourceType<string>,\n replaceValueSrc: SourceType<string>,\n flagsSrc: SourceType<string> = \"\",\n): SourceType<string> =>\n sourceCombined(\n patternSrc,\n valueSrc,\n replaceValueSrc,\n flagsSrc,\n )((g: GuestType<string>, pattern, value, replaceValue, flags) => {\n give(String(value).replace(new RegExp(pattern, flags), replaceValue), g);\n });\n","import { give, GuestType, sourceCombined, SourceType } 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: SourceType<string>,\n valueSrc: SourceType<string>,\n flagsSrc: SourceType<string> = \"\",\n): SourceType<string[]> =>\n sourceCombined(\n patternSrc,\n valueSrc,\n flagsSrc,\n )((g: GuestType<string[]>, pattern, value, flags) => {\n const result = new RegExp(pattern, flags).exec(value);\n give(result ?? [], g);\n });\n","import { sourceAll, SourceType, systemPatron, value } 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: SourceType<T>,\n keySrc: SourceType<string>,\n valueSrc: SourceType<unknown>,\n) => {\n value(\n sourceAll([baseSrc, keySrc, valueSrc]),\n systemPatron(([base, key, value]) => {\n (base as Record<string, unknown>)[key] = value;\n }),\n );\n\n return baseSrc;\n};\n","import { give, GuestType, sourceCombined, SourceType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/and\n */\nexport const and = (\n oneSrc: SourceType<boolean>,\n twoSrc: SourceType<boolean>,\n) => {\n return sourceCombined(\n oneSrc,\n twoSrc,\n )((guest: GuestType<boolean>, one, two) => {\n give(one && two, guest);\n });\n};\n","import { give, GuestType, sourceCombined, SourceType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/or\n */\nexport const or = (\n oneSrc: SourceType<boolean>,\n twoSrc: SourceType<boolean>,\n) => {\n return sourceCombined(\n oneSrc,\n twoSrc,\n )((guest: GuestType<boolean>, one, two) => {\n give(one || two, guest);\n });\n};\n","import { give, guestCast, GuestType, SourceType, value } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/not\n */\nexport const not = (baseSrc: SourceType<boolean>) => {\n return (g: GuestType<boolean>) => {\n value(\n baseSrc,\n guestCast(g, (base) => {\n give(!base, g);\n }),\n );\n };\n};\n"],"names":["value","record"],"mappings":";;AAOO,MAAM,gBAAmB,GAAA,CAC9B,cACA,EAAA,gBAAA,EACA,gBACG,KAAA;AACH,EAAA,KAAA;AAAA,IACE,SAAU,CAAA,CAAC,cAAgB,EAAA,gBAAA,EAAkB,gBAAgB,CAAC,CAAA;AAAA,IAC9D,aAAa,CAAC,CAAC,WAAa,EAAA,aAAA,EAAe,aAAa,CAAM,KAAA;AAC5D,MAAc,aAAA,CAAA,OAAA,CAAQ,CAAC,EAAO,KAAA;AAC5B,QAAA,IAAI,GAAG,SAAW,EAAA;AAChB,UAAG,EAAA,CAAA,SAAA,CAAU,OAAO,WAAW,CAAA;AAAA;AACjC,OACD,CAAA;AACD,MAAc,aAAA,CAAA,SAAA,CAAU,IAAI,WAAW,CAAA;AAAA,KACxC;AAAA,GACH;AAEA,EAAO,OAAA,gBAAA;AACT;;ACRa,MAAA,KAAA,GAAQ,CACnB,gBAAA,EACA,gBAAmB,GAAA,KAAA,EACnB,aAAuB,EAAC,EACxB,WAAwB,GAAA,EACa,KAAA;AACrC,EAAA,MAAM,eAAe,QAAS,EAAA;AAC9B,EAAA,MAAM,GAAM,GAAA,SAAA,CAAU,CAAC,YAAA,EAAc,gBAAgB,CAAC,CAAA;AAEtD,EAAA,MAAM,MAAS,GAAA;AAAA,IACb,KAAKA,MAAU,EAAA;AACb,MAAA,IAAA,CAAK,KAAK,KAAM,CAAA,IAAA,CAAK,UAAUA,MAAK,CAAC,GAAG,YAAY,CAAA;AACpD,MAAO,OAAA,MAAA;AAAA,KACT;AAAA,IACA,MAAM,KAA8B,EAAA;AAClC,MAAA,KAAA;AAAA,QACE,GAAA;AAAA,QACA,UAAU,KAAO,EAAA,CAAC,CAAC,SAAA,EAAW,IAAI,CAAM,KAAA;AACtC,UAAA,IAAI,CAAC,SAAW,EAAA;AACd,YAAA;AAAA;AAGF,UAAA,IAAA;AAAA,YACE,MAAO,CAAA,WAAA;AAAA,cACL,MAAA,CAAO,QAAQ,SAAS,CAAA,CAAE,OAAO,CAAC,CAAC,GAAKA,EAAAA,MAAK,CAAM,KAAA;AACjD,gBAAI,IAAA,UAAA,CAAW,QAAS,CAAA,GAAG,CAAG,EAAA;AAC5B,kBAAO,OAAA,IAAA;AAAA;AAET,gBAAI,IAAA,WAAA,CAAY,QAAS,CAAA,GAAG,CAAG,EAAA;AAC7B,kBAAO,OAAA,KAAA;AAAA;AAET,gBAAOA,OAAAA,MAAAA,KAAW,KAAa,GAAG,CAAA;AAAA,eACnC;AAAA,aACH;AAAA,YACA;AAAA,WACF;AAAA,SACD;AAAA,OACH;AACA,MAAO,OAAA,MAAA;AAAA;AACT,GACF;AAEA,EAAA,IAAI,gBAAkB,EAAA;AACpB,IAAM,KAAA,CAAA,gBAAA,EAAkB,UAAW,CAAA,MAAM,CAAC,CAAA;AAAA;AAG5C,EAAO,OAAA,MAAA;AACT;;ACrDa,MAAA,OAAA,GAAU,CACrB,kBAAA,EACA,mBACG,KAAA;AACH,EAAA,MAAM,aAAa,QAAkB,EAAA;AACrC,EAAA,aAAA,CAAc,UAAY,EAAA,CAAC,kBAAoB,EAAA,mBAAmB,CAAC,CAAA;AAEnE,EAAA,KAAA;AAAA,IACE,kBAAA;AAAA,IACA,aAAa,MAAM;AACjB,MAAA,UAAA,CAAW,KAAK,IAAI,CAAA;AAAA,KACrB;AAAA,GACH;AACA,EAAA,KAAA;AAAA,IACE,mBAAA;AAAA,IACA,aAAa,MAAM;AACjB,MAAA,UAAA,CAAW,KAAK,KAAK,CAAA;AAAA,KACtB;AAAA,GACH;AAEA,EAAA,OAAO,UAAW,CAAA,KAAA;AACpB;;AClBa,MAAA,IAAA,GAAO,CAIlB,OAAA,EACA,MACG,KAAA;AACH,EAAA,MAAM,UAAU,QAAkB,EAAA;AAClC,EAAA,aAAA,CAAc,OAAS,EAAA,CAAC,OAAS,EAAA,MAAM,CAAC,CAAA;AAExC,EAAA,KAAA;AAAA,IACE,SAAU,CAAA,CAAC,OAAS,EAAA,MAAM,CAAC,CAAA;AAAA,IAC3B,YAAa,CAAA,CAAC,CAAC,IAAA,EAAM,GAAG,CAAM,KAAA;AAC5B,MAAM,MAAA,SAAA,GAAY,GAAI,CAAA,KAAA,CAAM,GAAG,CAAA;AAC/B,MAAA,IAAIA,MAAiB,GAAA,IAAA;AACrB,MAAU,SAAA,CAAA,OAAA,CAAQ,CAAC,QAAa,KAAA;AAC9B,QAAAA,MAAAA,GAASA,OAAkC,QAAQ,CAAA;AAAA,OACpD,CAAA;AAED,MAAIA,IAAAA,MAAAA,KAAU,MAAaA,IAAAA,MAAAA,KAAU,IAAM,EAAA;AACzC,QAAA,IAAA,CAAKA,QAAO,OAAO,CAAA;AAAA;AACrB,KACD;AAAA,GACH;AAEA,EAAA,OAAO,OAAQ,CAAA,KAAA;AACjB;;AC3BO,MAAM,QAAW,GAAA,CACtB,KACA,EAAA,OAAA,EACA,UACG,KAAA;AACH,EAAA,IAAI,SAAqB,GAAA,IAAA;AACzB,EAAA,OAAO,CAAC,CAAoB,KAAA;AAC1B,IAAA,KAAA;AAAA,MACE,UAAA;AAAA,MACA,SAAA,CAAU,CAAG,EAAA,CAAC,OAAY,KAAA;AACxB,QAAA,IAAI,SAAW,EAAA;AACb,UAAA,YAAA,CAAa,SAAmB,CAAA;AAAA;AAGlC,QAAA,IAAI,cAAiB,GAAA,KAAA;AAErB,QAAA,SAAA,GAAY,WAAW,MAAM;AAC3B,UAAA,IAAI,cAAgB,EAAA;AAClB,YAAA;AAAA;AAEF,UAAiB,cAAA,GAAA,IAAA;AACjB,UAAA,IAAA,CAAK,IAAI,KAAA,CAAM,mCAAmC,CAAA,EAAG,KAAK,CAAA;AAAA,WACzD,OAAO,CAAA;AAEV,QAAA,KAAA;AAAA,UACE,cAAe,CAAA,OAAA,EAAS,MAAM,CAAC,cAAc,CAAA;AAAA,UAC7C;AAAA,SACF;AAEA,QAAA,KAAA;AAAA,UACE,OAAA;AAAA,UACA,WAAW,MAAM;AACf,YAAiB,cAAA,GAAA,IAAA;AAAA,WAClB;AAAA,SACH;AAAA,OACD;AAAA,KACH;AAAA,GACF;AACF;;ACtCa,MAAA,IAAA,GAAO,CAAI,OAA2B,KAAA;AACjD,EAAA,MAAM,SAAS,QAAY,EAAA;AAC3B,EAAA,SAAA,CAAU,QAAQ,OAAO,CAAA;AAEzB,EAAA,IAAI,kBAAqB,GAAA,KAAA;AACzB,EAAA,IAAI,SAAsB,GAAA,IAAA;AAE1B,EAAA,MAAM,oBAAoB,MAAM;AAC9B,IAAqB,kBAAA,GAAA,IAAA;AACrB,IAAA,cAAA,CAAe,MAAM;AACnB,MAAqB,kBAAA,GAAA,KAAA;AACrB,MAAA,IAAI,cAAc,IAAM,EAAA;AACtB,QAAA,IAAA,CAAK,WAAW,MAAM,CAAA;AACtB,QAAY,SAAA,GAAA,IAAA;AAAA;AACd,KACD,CAAA;AAAA,GACH;AAEA,EAAA,KAAA;AAAA,IACE,OAAA;AAAA,IACA,YAAA,CAAa,CAAC,CAAM,KAAA;AAClB,MAAY,SAAA,GAAA,CAAA;AACZ,MAAA,IAAI,CAAC,kBAAoB,EAAA;AACvB,QAAkB,iBAAA,EAAA;AAAA;AACpB,KACD;AAAA,GACH;AAEA,EAAO,OAAA,MAAA;AACT;;AC5BO,MAAM,IAAO,GAAA,CAClB,YACA,EAAA,SAAA,EACA,SACA,OAC4B,KAAA;AAC5B,EAAA,MAAM,SAAS,QAAsB,EAAA;AACrC,EAAA,MAAM,QAAQ,QAAS,EAAA;AACvB,EAAM,MAAA,gBAAA,GAAmB,gBAAiB,CAAA,MAAA,EAAQ,KAAK,CAAA;AACvD,EAAI,IAAA,UAAA;AACJ,EAAI,IAAA,UAAA;AAEJ,EAAA,KAAA;AAAA,IACE,YAAA;AAAA,IACA,YAAA,CAAa,CAAC,CAAM,KAAA;AAClB,MAAA,KAAA,CAAM,KAAK,CAAC,CAAA;AACZ,MAAA,IAAI,UAAY,EAAA;AACd,QAAA,qBAAA,CAAsB,UAAU,CAAA;AAAA;AAElC,MAAA,IAAI,UAAY,EAAA;AACd,QAAA,qBAAA,CAAsB,UAAU,CAAA;AAAA;AAElC,MAAI,IAAA,SAAA,CAAU,CAAC,CAAG,EAAA;AAChB,QAAA,UAAA,GAAa,WAAW,MAAM,CAAA;AAC9B,QAAA,KAAA,CAAM,SAAS,UAAU,CAAA;AAAA,iBAChB,OAAS,EAAA;AAClB,QAAA,UAAA,GAAa,WAAW,MAAM,CAAA;AAC9B,QAAA,KAAA,CAAM,SAAS,UAAU,CAAA;AAAA;AAC3B,KACD;AAAA,GACH;AAEA,EAAO,OAAA,gBAAA;AACT;;ACjCa,MAAA,QAAA,GAAW,CACtB,OAAA,EACA,UACG,KAAA;AACH,EAAA,MAAM,MAAS,GAAA,gBAAA,CAAoB,QAAS,EAAA,EAAG,OAAqB,CAAA;AAEpE,EAAM,MAAA,OAAA,GAAU,WAAW,MAAM;AAC/B,IAAA,KAAA;AAAA,MACE,UAAA;AAAA,MACA,aAAa,MAAM;AACjB,QAAA,KAAA,CAAM,SAAS,MAAM,CAAA;AAAA,OACtB;AAAA,KACH;AAAA,GACD,CAAA;AAED,EAAA,OAAO,CAAC,CAAoB,KAAA;AAC1B,IAAQ,OAAA,EAAA;AACR,IAAA,KAAA,CAAM,QAAQ,CAAC,CAAA;AAAA,GACjB;AACF;;ACpBO,MAAM,MAAS,GAAA,CACpB,YACA,EAAA,OAAA,EACA,OAC4B,KAAA;AAC5B,EAAA,MAAM,WAAW,QAAS,EAAA;AAC1B,EAAA,MAAM,SAAS,QAAsB,EAAA;AACrC,EAAM,MAAA,SAAA,GAAY,gBAAiB,CAAA,MAAA,EAAQ,QAAQ,CAAA;AAEnD,EAAM,MAAA,OAAA,GAAU,WAAW,MAAM;AAC/B,IAAA,KAAA;AAAA,MACE,YAAA;AAAA,MACA,YAAA,CAAa,CAAC,CAAM,KAAA;AAClB,QAAA,QAAA,CAAS,KAAK,CAAC,CAAA;AACf,QAAA,IAAI,MAAM,IAAM,EAAA;AACd,UAAM,KAAA,CAAA,OAAA,EAAS,OAAO,IAAI,CAAA;AAAA,SAC5B,MAAA,IAAW,YAAY,MAAW,EAAA;AAChC,UAAM,KAAA,CAAA,OAAA,EAAS,OAAO,IAAI,CAAA;AAAA;AAC5B,OACD;AAAA,KACH;AAAA,GACD,CAAA;AAED,EAAA,OAAO,CAAC,CAA8B,KAAA;AACpC,IAAQ,OAAA,EAAA;AACR,IAAA,SAAA,CAAU,MAAM,CAAC,CAAA;AAAA,GACnB;AACF;;AClCa,MAAA,IAAA,GAAO,CAAI,OAA2B,KAAA;AACjD,EAAA,MAAM,SAAS,QAAY,EAAA;AAC3B,EAAA,IAAI,SAAsB,GAAA,IAAA;AAE1B,EAAA,KAAA;AAAA,IACE,OAAA;AAAA,IACA,YAAA,CAAa,CAAC,CAAM,KAAA;AAClB,MAAA,IAAI,MAAM,SAAW,EAAA;AACnB,QAAA,MAAA,CAAO,KAAK,CAAC,CAAA;AACb,QAAY,SAAA,GAAA,CAAA;AAAA;AACd,KACD;AAAA,GACH;AAEA,EAAA,OAAO,MAAO,CAAA,KAAA;AAChB;;ACNa,MAAA,IAAA,GAAO,CAClB,OAAA,EACA,OACG,KAAA;AACH,EAAA,MAAM,SAAS,QAAS,EAAA;AACxB,EAAM,MAAA,gBAAA,GAAmB,gBAAiB,CAAA,MAAA,EAAQ,OAAO,CAAA;AACzD,EAAA,IAAI,MAAS,GAAA,KAAA;AACb,EAAA,SAAA,CAAU,QAAQ,OAAO,CAAA;AAEzB,EAAM,KAAA,CAAA,OAAA,EAAS,aAAa,eAAgB,CAAA,MAAA,CAAO,MAAM,MAAM,MAAM,CAAC,CAAC,CAAA;AAEvE,EAAA,KAAA;AAAA,IACE,OAAA;AAAA,IACA,WAAW,MAAM;AACf,MAAS,MAAA,GAAA,IAAA;AACT,MAAQ,OAAA,CAAA,CAAC,MAAM,CAAC,CAAA;AAAA,KACjB;AAAA,GACH;AAEA,EAAO,OAAA,gBAAA;AACT;;AC7Ba,MAAA,MAAA,GAAS,CACpB,OAAA,EACA,YACkB,KAAA;AAClB,EAAM,MAAA,KAAA,GAAQ,UAAU,YAAY,CAAA;AACpC,EAAA,KAAA,CAAM,SAAS,KAAK,CAAA;AAEpB,EAAA,OAAO,CAAC,CAAoB,KAAA;AAC1B,IAAK,IAAA,CAAA,KAAA,CAAM,KAAM,EAAA,EAAG,CAAC,CAAA;AAAA,GACvB;AACF;;ACHa,MAAA,IAAA,GAAO,CAAI,OAAA,EAAwB,OAAwB,KAAA;AACtE,EAAA,MAAM,cAAc,QAAS,EAAA;AAC7B,EAAA,MAAM,SAAS,QAAY,EAAA;AAE3B,EAAM,MAAA,WAAA,GAAc,UAAW,CAAA,OAAA,EAAS,IAAI,CAAA;AAC5C,EAAA,KAAA;AAAA,IACE,OAAA;AAAA,IACA,aAAa,MAAM;AACjB,MAAI,IAAA,WAAA,CAAY,SAAU,EAAA,KAAM,IAAM,EAAA;AACpC,QAAO,MAAA,CAAA,IAAA,CAAK,WAAY,CAAA,SAAA,EAAgB,CAAA;AACxC,QAAA,WAAA,CAAY,KAAK,CAAC,CAAA;AAAA;AACpB,KACD;AAAA,GACH;AAEA,EAAO,OAAA,gBAAA,CAAiB,QAAQ,WAAW,CAAA;AAC7C;;ACvBa,MAAA,WAAA,GAAc,CAAI,OAA2B,KAAA;AACxD,EAAA,IAAI,UAAa,GAAA,KAAA;AACjB,EAAO,OAAA,MAAA,CAAU,CAAC,CAAM,KAAA;AACtB,IAAA,KAAA;AAAA,MACE,OAAA;AAAA,MACA,SAAA,CAAa,CAAG,EAAA,CAAC,CAAM,KAAA;AACrB,QAAA,IAAI,eAAe,KAAO,EAAA;AACxB,UAAa,UAAA,GAAA,IAAA;AAAA,SACR,MAAA;AACL,UAAA,IAAA,CAAK,GAAG,CAAC,CAAA;AAAA;AACX,OACD;AAAA,KACH;AAAA,GACD,CAAA;AACH;;ACTa,MAAA,SAAA,GAAY,CAAC,UAA8C,KAAA;AACtE,EAAM,MAAA,MAAA,GAAS,QAAkC,CAAA,EAAE,CAAA;AACnD,EAAA,SAAA,CAAU,QAAQ,UAAU,CAAA;AAE5B,EAAA,KAAA;AAAA,IACE,UAAA;AAAA,IACA,YAAa,CAAA,CAAC,CAAC,GAAA,EAAKA,MAAK,CAAM,KAAA;AAC7B,MAAO,MAAA,CAAA,KAAA,CAAM,CAAC,UAAe,KAAA;AAC3B,QAAA,UAAA,CAAW,GAAG,CAAIA,GAAAA,MAAAA;AAAA,OACnB,CAAA;AAAA,KACF;AAAA,GACH;AAEA,EAAA,OAAO,MAAO,CAAA,KAAA;AAChB;;ACnBa,MAAA,MAAA,GAAS,CAAC,SAA0C,KAAA;AAC/D,EAAM,MAAA,IAAA,GAAO,MAAO,CAAA,IAAA,CAAK,SAAS,CAAA;AAClC,EAAA,OAAO,cAAe,CAAA,GAAG,MAAO,CAAA,MAAA,CAAO,SAAS,CAAC,CAAA;AAAA,IAC/C,CAAC,MAAsC,OAAmB,KAAA;AACxD,MAAA,MAAMC,UAA8B,EAAC;AACrC,MAAQ,OAAA,CAAA,OAAA,CAAQ,CAAC,KAAA,EAAO,KAAU,KAAA;AAChC,QAAAA,OAAO,CAAA,IAAA,CAAK,KAAK,CAAC,CAAI,GAAA,KAAA;AAAA,OACvB,CAAA;AACD,MAAA,IAAA,CAAKA,SAAQ,CAAC,CAAA;AAAA;AAChB,GACF;AACF;;ACXO,MAAM,YAAe,GAAA,CAC1B,OACA,EAAA,WAAA,GAAkC,EACX,KAAA;AACvB,EAAA,MAAM,MAAS,GAAA,cAAA;AAAA,IACb,WAAA;AAAA,IACA,GAAG;AAAA,GACH,CAAA,CAAC,CAAsB,EAAA,QAAA,EAAA,GAAa,OAAY,KAAA;AAChD,IAAA,IAAA,CAAK,OAAQ,CAAA,IAAA,CAAK,QAAQ,CAAA,EAAG,CAAC,CAAA;AAAA,GAC/B,CAAA;AAED,EAAO,OAAA,MAAA;AACT;;ACTa,MAAA,MAAA,GAAS,CACpB,SAAA,EACA,UACkB,KAAA;AAClB,EAAA,MAAM,YAAY,QAAY,EAAA;AAE9B,EAAM,MAAA,OAAA,GAAU,WAAW,MAAM;AAC/B,IAAA,KAAA;AAAA,MACE,UAAA;AAAA,MACA,aAAa,MAAM;AACjB,QAAA,KAAA,CAAM,WAAW,SAAS,CAAA;AAAA,OAC3B;AAAA,KACH;AAAA,GACD,CAAA;AAED,EAAA,OAAO,CAAC,CAAoB,KAAA;AAC1B,IAAQ,OAAA,EAAA;AACR,IAAA,SAAA,CAAU,MAAM,CAAC,CAAA;AAAA,GACnB;AACF,CAAA;;ACtBO,MAAM,aAAgB,GAAA,CAC3B,UACA,EAAA,QAAA,EACA,WAA+B,EAE/B,KAAA,cAAA;AAAA,EACE,UAAA;AAAA,EACA,QAAA;AAAA,EACA;AACF,CAAA,CAAE,CAAC,CAAA,EAAuB,OAAS,EAAA,KAAA,EAAO,KAAU,KAAA;AAClD,EAAK,IAAA,CAAA,IAAI,OAAO,OAAS,EAAA,KAAK,EAAE,IAAK,CAAA,KAAK,GAAG,CAAC,CAAA;AAChD,CAAC;;ACfU,MAAA,QAAA,GAAW,CAAI,OAA6B,KAAA;AACvD,EAAA,OAAO,CAAC,CAAoB,KAAA;AAC1B,IAAA,IAAI,oBAAuB,GAAA,CAAA;AAC3B,IAAI,IAAA,qBAAA;AACJ,IAAQ,OAAA,CAAA,OAAA,CAAQ,CAAC,MAAA,EAAQ,KAAU,KAAA;AACjC,MAAM,KAAA,CAAA,MAAA,EAAQ,CAAC,CAAM,KAAA;AACnB,QAAA,IAAI,wBAAwB,KAAO,EAAA;AACjC,UAAuB,oBAAA,GAAA,KAAA;AACvB,UAAwB,qBAAA,GAAA,CAAA;AAAA;AAC1B,OACD,CAAA;AAAA,KACF,CAAA;AAED,IAAA,IAAI,0BAA0B,MAAW,EAAA;AACvC,MAAA,IAAA,CAAK,uBAAuB,CAAC,CAAA;AAAA;AAC/B,GACF;AACF,CAAA;;ACMO,MAAM,MAAS,GAAA,CACpB,MACA,EAAA,SAAA,EACA,UACG,KAAA;AACH,EAAA,MAAM,YAAY,QAAY,EAAA;AAE9B,EAAM,MAAA,OAAA,GAAU,WAAW,MAAM;AAC/B,IAAA,KAAA;AAAA,MACE,SAAA;AAAA,MACA,UAAA,CAAW,CAAC,MAAW,KAAA;AACrB,QAAA,MAAM,cAAc,QAAS,CAAA;AAAA,UAC3B,UAAA;AAAA,UACA,GAAG,MAAO,CAAA,GAAA;AAAA,YAAI,CAAC,CACb,KAAA,KAAA;AAAA,cACE,MAAA;AAAA,gBACE,aAAc,CAAA,CAAA,CAAE,OAAS,EAAA,MAAA,EAAQ,EAAE,YAAY,CAAA;AAAA,gBAC/C,CAAE,CAAA;AAAA,eACJ;AAAA,cACA,YAAA,CAAa,CAAC,CAAM,KAAA;AAClB,gBAAO,OAAA,CAAA;AAAA,eACR;AAAA;AACH;AACF,SACD,CAAA;AACD,QAAM,MAAA,SAAA,GAAY,MAAO,CAAA,WAAA,EAAa,MAAM,CAAA;AAC5C,QAAM,KAAA,CAAA,SAAA,EAAW,MAAO,CAAA,SAAS,CAAC,CAAA;AAClC,QAAA,KAAA;AAAA,UACE,SAAA;AAAA,UACA,MAAA,CAAO,CAAC,CAAM,KAAA;AACZ,YAAO,OAAA,CAAA;AAAA,WACR;AAAA,SACH;AAAA,OACD;AAAA,KACH;AAAA,GACD,CAAA;AAED,EAAA,OAAO,CAAC,CAAoB,KAAA;AAC1B,IAAQ,OAAA,EAAA;AACR,IAAA,SAAA,CAAU,MAAM,CAAC,CAAA;AAAA,GACnB;AACF;;AC5DO,MAAM,iBAAiB,CAC5B,QAAA,EACA,UACA,EAAA,eAAA,EACA,WAA+B,EAE/B,KAAA,cAAA;AAAA,EACE,UAAA;AAAA,EACA,QAAA;AAAA,EACA,eAAA;AAAA,EACA;AACF,CAAA,CAAE,CAAC,CAAA,EAAsB,OAAS,EAAA,KAAA,EAAO,cAAc,KAAU,KAAA;AAC/D,EAAK,IAAA,CAAA,MAAA,CAAO,KAAK,CAAA,CAAE,OAAQ,CAAA,IAAI,MAAO,CAAA,OAAA,EAAS,KAAK,CAAA,EAAG,YAAY,CAAA,EAAG,CAAC,CAAA;AACzE,CAAC;;ACbI,MAAM,WAAc,GAAA,CACzB,UACA,EAAA,QAAA,EACA,WAA+B,EAE/B,KAAA,cAAA;AAAA,EACE,UAAA;AAAA,EACA,QAAA;AAAA,EACA;AACF,CAAA,CAAE,CAAC,CAAA,EAAwB,OAAS,EAAA,KAAA,EAAO,KAAU,KAAA;AACnD,EAAA,MAAM,SAAS,IAAI,MAAA,CAAO,SAAS,KAAK,CAAA,CAAE,KAAK,KAAK,CAAA;AACpD,EAAK,IAAA,CAAA,MAAA,IAAU,EAAC,EAAG,CAAC,CAAA;AACtB,CAAC;;ACZI,MAAM,GAAM,GAAA,CACjB,OACA,EAAA,MAAA,EACA,QACG,KAAA;AACH,EAAA,KAAA;AAAA,IACE,SAAU,CAAA,CAAC,OAAS,EAAA,MAAA,EAAQ,QAAQ,CAAC,CAAA;AAAA,IACrC,aAAa,CAAC,CAAC,IAAM,EAAA,GAAA,EAAKD,MAAK,CAAM,KAAA;AACnC,MAAC,IAAA,CAAiC,GAAG,CAAIA,GAAAA,MAAAA;AAAA,KAC1C;AAAA,GACH;AAEA,EAAO,OAAA,OAAA;AACT;;ACda,MAAA,GAAA,GAAM,CACjB,MAAA,EACA,MACG,KAAA;AACH,EAAO,OAAA,cAAA;AAAA,IACL,MAAA;AAAA,IACA;AAAA,GACA,CAAA,CAAC,KAA2B,EAAA,GAAA,EAAK,GAAQ,KAAA;AACzC,IAAK,IAAA,CAAA,GAAA,IAAO,KAAK,KAAK,CAAA;AAAA,GACvB,CAAA;AACH;;ACVa,MAAA,EAAA,GAAK,CAChB,MAAA,EACA,MACG,KAAA;AACH,EAAO,OAAA,cAAA;AAAA,IACL,MAAA;AAAA,IACA;AAAA,GACA,CAAA,CAAC,KAA2B,EAAA,GAAA,EAAK,GAAQ,KAAA;AACzC,IAAK,IAAA,CAAA,GAAA,IAAO,KAAK,KAAK,CAAA;AAAA,GACvB,CAAA;AACH;;ACVa,MAAA,GAAA,GAAM,CAAC,OAAiC,KAAA;AACnD,EAAA,OAAO,CAAC,CAA0B,KAAA;AAChC,IAAA,KAAA;AAAA,MACE,OAAA;AAAA,MACA,SAAA,CAAU,CAAG,EAAA,CAAC,IAAS,KAAA;AACrB,QAAK,IAAA,CAAA,CAAC,MAAM,CAAC,CAAA;AAAA,OACd;AAAA,KACH;AAAA,GACF;AACF;;;;"}
1
+ {"version":3,"file":"silentium-components.mjs","sources":["../src/controls/GroupActiveClass.ts","../src/behaviors/Dirty.ts","../src/behaviors/Loading.ts","../src/behaviors/Path.ts","../src/behaviors/Deadline.ts","../src/behaviors/Tick.ts","../src/behaviors/Fork.ts","../src/behaviors/Deferred.ts","../src/behaviors/Branch.ts","../src/behaviors/Memo.ts","../src/behaviors/Lock.ts","../src/behaviors/Moment.ts","../src/behaviors/Shot.ts","../src/behaviors/OnlyChanged.ts","../src/structures/HashTable.ts","../src/structures/Record.ts","../src/strings/Concatenated.ts","../src/behaviors/Polling.ts","../src/behaviors/Priority.ts","../src/system/RegexpMatched.ts","../src/navigation/Router.ts","../src/system/RegexpReplaced.ts","../src/system/RegexpMatch.ts","../src/system/Set.ts","../src/boolean/And.ts","../src/boolean/Or.ts","../src/boolean/Not.ts"],"sourcesContent":["import { sourceAll, SourceType, systemPatron, value } from \"silentium\";\n\n/**\n * Sets activeClass to one element of group\n * and resets activeClass on other group elements\n * suitable for menu active class\n */\nexport const groupActiveClass = (\n activeClassSrc: SourceType<string>,\n activeElementSrc: SourceType<HTMLElement>,\n groupElementsSrc: SourceType<HTMLElement[]>,\n) => {\n value(\n sourceAll([activeClassSrc, activeElementSrc, groupElementsSrc]),\n systemPatron(([activeClass, activeElement, groupElements]) => {\n groupElements.forEach((el) => {\n if (el.classList) {\n el.classList.remove(activeClass);\n }\n });\n activeElement.classList.add(activeClass);\n }),\n );\n\n return groupElementsSrc;\n};\n","import {\n give,\n guestCast,\n GuestType,\n patronOnce,\n sourceAll,\n SourceChangeableType,\n sourceOf,\n SourceType,\n value,\n} 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 extends object>(\n baseEntitySource: SourceType<T>,\n becomePatronAuto = false,\n alwaysKeep: string[] = [],\n excludeKeys: string[] = [],\n): SourceChangeableType<Partial<T>> => {\n const comparingSrc = sourceOf();\n const all = sourceAll([comparingSrc, baseEntitySource]);\n\n const result = {\n give(value: T) {\n give(JSON.parse(JSON.stringify(value)), comparingSrc);\n return result;\n },\n value(guest: GuestType<Partial<T>>) {\n value(\n all,\n guestCast(guest, ([comparing, base]) => {\n if (!comparing) {\n return;\n }\n\n give(\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 guest,\n );\n }),\n );\n return result;\n },\n };\n\n if (becomePatronAuto) {\n value(baseEntitySource, patronOnce(result));\n }\n\n return result;\n};\n","import {\n sourceOf,\n SourceType,\n subSourceMany,\n systemPatron,\n value,\n} from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/loading\n */\nexport const loading = (\n loadingStartSource: SourceType<unknown>,\n loadingFinishSource: SourceType<unknown>,\n) => {\n const loadingSrc = sourceOf<boolean>();\n subSourceMany(loadingSrc, [loadingStartSource, loadingFinishSource]);\n\n value(\n loadingStartSource,\n systemPatron(() => {\n loadingSrc.give(true);\n }),\n );\n value(\n loadingFinishSource,\n systemPatron(() => {\n loadingSrc.give(false);\n }),\n );\n\n return loadingSrc.value;\n};\n","import {\n give,\n sourceAll,\n sourceOf,\n SourceType,\n subSourceMany,\n systemPatron,\n value,\n} 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 T extends Record<string, unknown> | Array<unknown>,\n K extends string,\n>(\n baseSrc: SourceType<T>,\n keySrc: SourceType<K>,\n) => {\n const pathSrc = sourceOf<unknown>();\n subSourceMany(pathSrc, [baseSrc, keySrc]);\n\n value(\n sourceAll([baseSrc, keySrc]),\n systemPatron(([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 give(value, pathSrc);\n }\n }),\n );\n\n return pathSrc.value;\n};\n","import {\n give,\n guestCast,\n GuestType,\n patronOnce,\n sourceFiltered,\n SourceType,\n value,\n} from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/path\n */\nexport const deadline = <T>(\n error: GuestType<Error>,\n baseSrc: SourceType<T>,\n timeoutSrc: SourceType<number>,\n) => {\n let timerHead: unknown = null;\n return (g: GuestType<T>) => {\n value(\n timeoutSrc,\n guestCast(g, (timeout) => {\n if (timerHead) {\n clearTimeout(timerHead as number);\n }\n\n let timeoutReached = false;\n\n timerHead = setTimeout(() => {\n if (timeoutReached) {\n return;\n }\n timeoutReached = true;\n give(new Error(\"Timeout reached in Deadline class\"), error);\n }, timeout);\n\n value(\n sourceFiltered(baseSrc, () => !timeoutReached),\n g,\n );\n\n value(\n baseSrc,\n patronOnce(() => {\n timeoutReached = true;\n }),\n );\n }),\n );\n };\n};\n","import {\n give,\n sourceOf,\n SourceType,\n subSource,\n systemPatron,\n value,\n} 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: SourceType<T>) => {\n const result = sourceOf<T>();\n subSource(result, baseSrc);\n\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 give(lastValue, result);\n lastValue = null;\n }\n });\n };\n\n value(\n baseSrc,\n systemPatron((v) => {\n lastValue = v;\n if (!microtaskScheduled) {\n scheduleMicrotask();\n }\n }),\n );\n\n return result;\n};\n","import {\n GuestObjectType,\n patronOnce,\n removePatronFromPools,\n sourceOf,\n sourceResettable,\n SourceType,\n systemPatron,\n value,\n} from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/dirty\n */\nexport const fork = <T, Then, Else>(\n conditionSrc: SourceType<T>,\n predicate: (v: T) => boolean,\n thenSrc: SourceType<Then>,\n elseSrc?: SourceType<Else>,\n): SourceType<Then | Else> => {\n const result = sourceOf<Then | Else>();\n const reset = sourceOf();\n const resultResettable = sourceResettable(result, reset);\n let thenPatron: GuestObjectType<Then> | undefined;\n let elsePatron: GuestObjectType<Else> | undefined;\n\n value(\n conditionSrc,\n systemPatron((v) => {\n reset.give(1);\n if (thenPatron) {\n removePatronFromPools(thenPatron);\n }\n if (elsePatron) {\n removePatronFromPools(elsePatron);\n }\n if (predicate(v)) {\n thenPatron = patronOnce(result);\n value(thenSrc, thenPatron);\n } else if (elseSrc) {\n elsePatron = patronOnce(result);\n value(elseSrc, elsePatron);\n }\n }),\n );\n\n return resultResettable;\n};\n","import {\n firstVisit,\n GuestType,\n sourceOf,\n sourceResettable,\n SourceType,\n systemPatron,\n value,\n} from \"silentium\";\n\n/**\n * Defer one source after another, gives values of baseSrc only once when triggerSrc responds\n * https://silentium-lab.github.io/silentium-components/#/behaviors/deferred\n */\nexport const deferred = <T>(\n baseSrc: SourceType<T>,\n triggerSrc: SourceType<unknown>,\n) => {\n const result = sourceResettable<T>(sourceOf(), baseSrc as SourceType);\n\n const visited = firstVisit(() => {\n value(\n triggerSrc,\n systemPatron(() => {\n value(baseSrc, result);\n }),\n );\n });\n\n return (g: GuestType<T>) => {\n visited();\n value(result, g);\n };\n};\n","import {\n firstVisit,\n GuestType,\n patronOnce,\n sourceOf,\n sourceResettable,\n SourceType,\n systemPatron,\n value,\n} from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/branch\n */\nexport const branch = <Then, Else>(\n conditionSrc: SourceType<boolean>,\n thenSrc: SourceType<Then>,\n elseSrc?: SourceType<Else>,\n): SourceType<Then | Else> => {\n const resetSrc = sourceOf();\n const result = sourceOf<Then | Else>();\n const resultSrc = sourceResettable(result, resetSrc);\n\n const visited = firstVisit(() => {\n value(\n conditionSrc,\n systemPatron((v) => {\n resetSrc.give(1);\n if (v === true) {\n value(thenSrc, patronOnce(result.give));\n } else if (elseSrc !== undefined) {\n value(elseSrc, patronOnce(result.give));\n }\n }),\n );\n });\n\n return (g: GuestType<Then | Else>) => {\n visited();\n resultSrc.value(g);\n };\n};\n","import { sourceOf, SourceType, systemPatron, value } 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: SourceType<T>) => {\n const result = sourceOf<T>();\n let lastValue: T | null = null;\n\n value(\n baseSrc,\n systemPatron((v) => {\n if (v !== lastValue) {\n result.give(v);\n lastValue = v;\n }\n }),\n );\n\n return result.value;\n};\n","import {\n destroy,\n guestDisposable,\n patronOnce,\n sourceOf,\n sourceResettable,\n SourceType,\n subSource,\n systemPatron,\n value,\n} from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/lock\n */\nexport const lock = <T>(\n baseSrc: SourceType<T>,\n lockSrc: SourceType<unknown>,\n) => {\n const result = sourceOf();\n const resultResettable = sourceResettable(result, lockSrc);\n let locked = false;\n subSource(result, baseSrc);\n\n value(baseSrc, systemPatron(guestDisposable(result.give, () => locked)));\n\n value(\n lockSrc,\n patronOnce(() => {\n locked = true;\n destroy([result]);\n }),\n );\n\n return resultResettable;\n};\n","import { give, guestSync, GuestType, SourceType, value } from \"silentium\";\n\n/**\n * Get's value from source in moment of component call and than return this value every time\n * https://silentium-lab.github.io/silentium-components/#/behaviors/moment\n */\nexport const moment = <T>(\n baseSrc: SourceType<T>,\n defaultValue?: T,\n): SourceType<T> => {\n const guest = guestSync(defaultValue);\n value(baseSrc, guest);\n\n return (g: GuestType<T>) => {\n give(guest.value(), g);\n };\n};\n","import {\n sourceOf,\n sourceResettable,\n sourceSync,\n SourceType,\n systemPatron,\n value,\n} 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>(baseSrc: SourceType<T>, shotSrc: SourceType) => {\n const resetResult = sourceOf();\n const result = sourceOf<T>();\n\n const baseSrcSync = sourceSync(baseSrc, null);\n value(\n shotSrc,\n systemPatron(() => {\n if (baseSrcSync.syncValue() !== null) {\n result.give(baseSrcSync.syncValue() as T);\n resetResult.give(1);\n }\n }),\n );\n\n return sourceResettable(result, resetResult);\n};\n","import { give, guestCast, source, SourceType, value } 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: SourceType<T>) => {\n let firstValue = false;\n return source<T>((g) => {\n value(\n baseSrc,\n guestCast<T>(g, (v) => {\n if (firstValue === false) {\n firstValue = true;\n } else {\n give(v, g);\n }\n }),\n );\n });\n};\n","import {\n sourceOf,\n SourceType,\n subSource,\n systemPatron,\n value,\n} from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/structures/hash-table\n */\nexport const hashTable = (baseSource: SourceType<[string, unknown]>) => {\n const result = sourceOf<Record<string, unknown>>({});\n subSource(result, baseSource);\n\n value(\n baseSource,\n systemPatron(([key, value]) => {\n result.value((lastRecord) => {\n lastRecord[key] = value;\n });\n }),\n );\n\n return result.value;\n};\n","import { give, GuestType, sourceCombined, SourceType } from \"silentium\";\n\n/**\n * Returns record of data from record of sources\n * https://silentium-lab.github.io/silentium-components/#/structures/record\n */\nexport const record = (recordSrc: Record<string, SourceType>) => {\n const keys = Object.keys(recordSrc);\n return sourceCombined(...Object.values(recordSrc))(\n (g: GuestType<Record<string, any>>, ...entries: any[]) => {\n const record: Record<string, any> = {};\n entries.forEach((entry, index) => {\n record[keys[index]] = entry;\n });\n give(record, g);\n },\n );\n};\n","import { give, GuestType, sourceCombined, SourceType } 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: SourceType<string>[],\n joinPartSrc: SourceType<string> = \"\",\n): SourceType<string> => {\n const result = sourceCombined(\n joinPartSrc,\n ...sources,\n )((g: GuestType<string>, joinPart, ...strings) => {\n give(strings.join(joinPart), g);\n });\n\n return result;\n};\n","import {\n firstVisit,\n GuestType,\n sourceOf,\n SourceType,\n systemPatron,\n value,\n} from \"silentium\";\n\nexport const polling = <T>(\n targetSrc: SourceType<T>,\n triggerSrc: SourceType,\n): SourceType<T> => {\n const resultSrc = sourceOf<T>();\n\n const visited = firstVisit(() => {\n value(\n triggerSrc,\n systemPatron(() => {\n value(targetSrc, resultSrc);\n }),\n );\n });\n\n return (g: GuestType<T>) => {\n visited();\n resultSrc.value(g);\n };\n};\n","import { give, GuestType, SourceType, value } from \"silentium\";\n\nexport const priority = <T>(sources: SourceType<T>[]) => {\n return (g: GuestType<T>) => {\n let highestPriorityIndex = 0;\n let highestPriorityResult;\n sources.forEach((source, index) => {\n value(source, (v) => {\n if (highestPriorityIndex <= index) {\n highestPriorityIndex = index;\n highestPriorityResult = v;\n }\n });\n });\n\n if (highestPriorityResult !== undefined) {\n give(highestPriorityResult, g);\n }\n };\n};\n","import { give, GuestType, sourceCombined, SourceType } 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: SourceType<string>,\n valueSrc: SourceType<string>,\n flagsSrc: SourceType<string> = \"\",\n): SourceType<boolean> =>\n sourceCombined(\n patternSrc,\n valueSrc,\n flagsSrc,\n )((g: GuestType<boolean>, pattern, value, flags) => {\n give(new RegExp(pattern, flags).test(value), g);\n });\n","import {\n firstVisit,\n GuestType,\n patronOnce,\n sourceOf,\n SourceType,\n systemPatron,\n value,\n} from \"silentium\";\nimport { branch } from \"../behaviors\";\nimport { polling } from \"../behaviors/Polling\";\nimport { priority } from \"../behaviors/Priority\";\nimport { regexpMatched } from \"../system/RegexpMatched\";\n\nexport interface Route<T> {\n pattern: string;\n patternFlags?: string;\n template: T | SourceType<T>;\n}\n\n/**\n * Router component what will return template if url matches pattern\n * https://silentium-lab.github.io/silentium-components/#/navigation/router\n */\nexport const router = <T = \"string\">(\n urlSrc: SourceType<string>,\n routesSrc: SourceType<Route<T>[]>,\n defaultSrc: SourceType<T>,\n) => {\n const resultSrc = sourceOf<T>();\n\n const visited = firstVisit(() => {\n value(\n routesSrc,\n patronOnce((routes) => {\n const prioritySrc = priority([\n defaultSrc,\n ...routes.map((r) =>\n value(\n branch(\n regexpMatched(r.pattern, urlSrc, r.patternFlags),\n r.template as SourceType,\n ),\n systemPatron((v) => {\n return v;\n }),\n ),\n ),\n ]);\n const pollingSrc = polling(prioritySrc, urlSrc);\n value(pollingSrc, systemPatron(resultSrc));\n }),\n );\n });\n\n return (g: GuestType<T>) => {\n visited();\n resultSrc.value(g);\n };\n};\n","import { give, GuestType, sourceCombined, SourceType } 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: SourceType<string>,\n patternSrc: SourceType<string>,\n replaceValueSrc: SourceType<string>,\n flagsSrc: SourceType<string> = \"\",\n): SourceType<string> =>\n sourceCombined(\n patternSrc,\n valueSrc,\n replaceValueSrc,\n flagsSrc,\n )((g: GuestType<string>, pattern, value, replaceValue, flags) => {\n give(String(value).replace(new RegExp(pattern, flags), replaceValue), g);\n });\n","import { give, GuestType, sourceCombined, SourceType } 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: SourceType<string>,\n valueSrc: SourceType<string>,\n flagsSrc: SourceType<string> = \"\",\n): SourceType<string[]> =>\n sourceCombined(\n patternSrc,\n valueSrc,\n flagsSrc,\n )((g: GuestType<string[]>, pattern, value, flags) => {\n const result = new RegExp(pattern, flags).exec(value);\n give(result ?? [], g);\n });\n","import { sourceAll, SourceType, systemPatron, value } 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: SourceType<T>,\n keySrc: SourceType<string>,\n valueSrc: SourceType<unknown>,\n) => {\n value(\n sourceAll([baseSrc, keySrc, valueSrc]),\n systemPatron(([base, key, value]) => {\n (base as Record<string, unknown>)[key] = value;\n }),\n );\n\n return baseSrc;\n};\n","import { give, GuestType, sourceCombined, SourceType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/and\n */\nexport const and = (\n oneSrc: SourceType<boolean>,\n twoSrc: SourceType<boolean>,\n) => {\n return sourceCombined(\n oneSrc,\n twoSrc,\n )((guest: GuestType<boolean>, one, two) => {\n give(one && two, guest);\n });\n};\n","import { give, GuestType, sourceCombined, SourceType } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/or\n */\nexport const or = (\n oneSrc: SourceType<boolean>,\n twoSrc: SourceType<boolean>,\n) => {\n return sourceCombined(\n oneSrc,\n twoSrc,\n )((guest: GuestType<boolean>, one, two) => {\n give(one || two, guest);\n });\n};\n","import { give, guestCast, GuestType, SourceType, value } from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/boolean/not\n */\nexport const not = (baseSrc: SourceType<boolean>) => {\n return (g: GuestType<boolean>) => {\n value(\n baseSrc,\n guestCast(g, (base) => {\n give(!base, g);\n }),\n );\n };\n};\n"],"names":["value","record"],"mappings":"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"}
@@ -13,4 +13,9 @@
13
13
  <div class="card-content bottom-1">Коллекция структур полезных для переиспользования</div>
14
14
  <a class="dynamic-navigation top-auto link" href="#/structures">Посмотреть</a>
15
15
  </div>
16
+ <div class="card">
17
+ <div class="card-title bottom-2">System</div>
18
+ <div class="card-content bottom-1">Коллекция компонентов системных</div>
19
+ <a class="dynamic-navigation top-auto link" href="#/system">Посмотреть</a>
20
+ </div>
16
21
  </div>
@@ -0,0 +1,40 @@
1
+ <script class="page-title" type="text/template">
2
+ Promised
3
+ </script>
4
+
5
+ <a href="https://github.com/silentium-lab/silentium-components/blob/main/src/structures/HashTable.ts" target="_blank"
6
+ class="text-regular inline-flex gap-1 items-center bg-gray-100 border-0 py-1 px-3 focus:outline-none hover:bg-gray-200 rounded text-base mt-4 md:mt-0 mb-4">
7
+ <img src="./assets/img/github_16.jpg" width="16" height="16" />
8
+ Promised на GitHub
9
+ </a>
10
+
11
+ <h2 class="font-medium title-font text-gray-900 text-lg mb-2">
12
+ <span> Promised </span>
13
+ </h2>
14
+
15
+ <a href="https://en.wikipedia.org/wiki/Hash_table" class="link mb-2 block">Hash Table на Wiki</a>
16
+
17
+ <p class="text-gray-600 text-lg mb-4">
18
+ Бывают ситуации когда нужно собрать множество значений по ключу в одной структуре
19
+ в виде хэш-таблицы с быстрым доступом к значениям. Для этого можно использовать класс
20
+ HashTable
21
+ </p>
22
+
23
+ <p class="text-gray-600 text-lg mb-0 font-bold">Пример 1.</p>
24
+ <pre class="mb-4 w-full"><code class="language-js listing-1"></code></pre>
25
+
26
+ <p class="text-gray-600 text-lg mb-0 font-bold">Результат 1.</p>
27
+ <div class="example mb-4">
28
+ <span class="guest-result">Значение установится синхронно!</span>
29
+ </div>
30
+ <script type="module" data-listing=".listing-1">
31
+ import { sourceOf, sourceSync } from "silentium";
32
+ import { hashTable } from 'silentium-components';
33
+
34
+ const entrySource = sourceOf();
35
+ const ht = sourceSync(hashTable(entrySource));
36
+ entrySource.give(["key-one", "value-one"]);
37
+ entrySource.give(["key-two", "value-two"]);
38
+
39
+ document.querySelector(".guest-result").textContent = JSON.stringify(ht.syncValue());
40
+ </script>
@@ -0,0 +1,11 @@
1
+ <script class="page-title" type="text/template">
2
+ System
3
+ </script>
4
+
5
+ <div class="grid grid-3 gap-3">
6
+ <div class="card">
7
+ <div class="card-title bottom-2">Promised</div>
8
+ <div class="card-content bottom-1">Позволяет из промиса получить источник</div>
9
+ <a class="dynamic-navigation top-auto link" href="#/system/promised">Посмотреть</a>
10
+ </div>
11
+ </div>
package/docs/routes.json CHANGED
@@ -1 +1 @@
1
- ["pages/en/404.html","pages/en/index.html","pages/en/behaviors.html","pages/en/structures/hash-table.html","pages/en/structures.html","pages/en/behaviors/deadline.html","pages/en/behaviors/loading.html","pages/en/behaviors/path.html","pages/en/behaviors/dirty.html","pages/404.html","pages/index.html","pages/behaviors.html","pages/structures/hash-table.html","pages/structures.html","pages/behaviors/deadline.html","pages/behaviors/loading.html","pages/behaviors/path.html","pages/behaviors/dirty.html"]
1
+ ["pages/en/404.html","pages/en/index.html","pages/en/behaviors.html","pages/en/structures/hash-table.html","pages/en/structures.html","pages/en/behaviors/deadline.html","pages/en/behaviors/loading.html","pages/en/behaviors/path.html","pages/en/behaviors/dirty.html","pages/404.html","pages/index.html","pages/behaviors.html","pages/structures/hash-table.html","pages/system.html","pages/structures.html","pages/system/promised.html","pages/behaviors/deadline.html","pages/behaviors/loading.html","pages/behaviors/path.html","pages/behaviors/dirty.html"]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "silentium-components",
3
- "version": "0.0.21",
3
+ "version": "0.0.22",
4
4
  "description": "",
5
5
  "type": "module",
6
6
  "main": "dist/silentium-components.js",
@@ -1,6 +1,7 @@
1
1
  import {
2
2
  firstVisit,
3
3
  GuestType,
4
+ patronOnce,
4
5
  sourceOf,
5
6
  sourceResettable,
6
7
  SourceType,
@@ -26,9 +27,9 @@ export const branch = <Then, Else>(
26
27
  systemPatron((v) => {
27
28
  resetSrc.give(1);
28
29
  if (v === true) {
29
- value(thenSrc, result.give);
30
+ value(thenSrc, patronOnce(result.give));
30
31
  } else if (elseSrc !== undefined) {
31
- value(elseSrc, result.give);
32
+ value(elseSrc, patronOnce(result.give));
32
33
  }
33
34
  }),
34
35
  );
@@ -1,11 +1,11 @@
1
1
  import { sourceOf, sourceSync } from "silentium";
2
2
  import { expect, test } from "vitest";
3
- import { survey } from "../behaviors/Survey";
3
+ import { polling } from "./Polling";
4
4
 
5
- test("Survey.test", () => {
5
+ test("Polling.test", () => {
6
6
  const src = sourceOf<number>(1);
7
7
  const triggerSrc = sourceOf(1);
8
- const serveyResult = sourceSync(survey(src, triggerSrc));
8
+ const serveyResult = sourceSync(polling(src, triggerSrc));
9
9
 
10
10
  expect(serveyResult.syncValue()).toBe(1);
11
11
 
@@ -7,7 +7,7 @@ import {
7
7
  value,
8
8
  } from "silentium";
9
9
 
10
- export const survey = <T>(
10
+ export const polling = <T>(
11
11
  targetSrc: SourceType<T>,
12
12
  triggerSrc: SourceType,
13
13
  ): SourceType<T> => {
@@ -1,7 +1,7 @@
1
1
  import { sourceOf, sourceResettable, sourceSync } from "silentium";
2
2
  import { priority } from "../behaviors/Priority";
3
3
  import { expect, test } from "vitest";
4
- import { survey } from "../behaviors/Survey";
4
+ import { polling } from "./Polling";
5
5
 
6
6
  test("Priority.test", () => {
7
7
  const src1 = sourceOf();
@@ -9,7 +9,7 @@ test("Priority.test", () => {
9
9
  const src2 = sourceResettable<number>(2, src2Reset);
10
10
  const triggerSrc = sourceOf();
11
11
 
12
- const prioritySrc = sourceSync(survey(priority([src1, src2]), triggerSrc));
12
+ const prioritySrc = sourceSync(polling(priority([src1, src2]), triggerSrc));
13
13
 
14
14
  src1.give(1);
15
15
  src2.give(2);
@@ -1,17 +1,16 @@
1
1
  import {
2
2
  firstVisit,
3
3
  GuestType,
4
- patron,
5
4
  patronOnce,
6
5
  sourceOf,
7
6
  SourceType,
8
7
  systemPatron,
9
8
  value,
10
9
  } from "silentium";
11
- import { survey } from "../behaviors/Survey";
12
10
  import { branch } from "../behaviors";
13
- import { regexpMatched } from "../system/RegexpMatched";
11
+ import { polling } from "../behaviors/Polling";
14
12
  import { priority } from "../behaviors/Priority";
13
+ import { regexpMatched } from "../system/RegexpMatched";
15
14
 
16
15
  export interface Route<T> {
17
16
  pattern: string;
@@ -48,14 +47,8 @@ export const router = <T = "string">(
48
47
  ),
49
48
  ),
50
49
  ]);
51
- const surveySrc = survey(prioritySrc, urlSrc);
52
- value(surveySrc, patron(resultSrc));
53
- value(
54
- surveySrc,
55
- patron((v) => {
56
- return v;
57
- }),
58
- );
50
+ const pollingSrc = polling(prioritySrc, urlSrc);
51
+ value(pollingSrc, systemPatron(resultSrc));
59
52
  }),
60
53
  );
61
54
  });
@@ -0,0 +1,27 @@
1
+ import { patron, sourceOf, sourceSync, value } from "silentium";
2
+ import { promised } from "../system/Promised";
3
+ import { expect, test, vi } from "vitest";
4
+
5
+ test("Promised.test", async () => {
6
+ vi.useFakeTimers({ shouldAdvanceTime: true });
7
+ const errorSrc = sourceOf();
8
+ value(
9
+ errorSrc,
10
+ patron((v) => {
11
+ return v;
12
+ }),
13
+ );
14
+ const p = sourceSync(promised(Promise.resolve(111), errorSrc));
15
+ await vi.advanceTimersByTime(10);
16
+
17
+ expect(p.syncValue()).toBe(111);
18
+
19
+ const failedP = sourceSync(promised(Promise.reject("test"), errorSrc));
20
+ await vi.advanceTimersByTime(10);
21
+
22
+ expect(() => failedP.syncValue()).toThrowError();
23
+ await vi.advanceTimersByTime(10);
24
+
25
+ expect(sourceSync(errorSrc).syncValue()).toBe("test");
26
+ vi.useRealTimers();
27
+ });
@@ -0,0 +1,23 @@
1
+ import { firstVisit, give, GuestType, sourceOf } from "silentium";
2
+
3
+ /**
4
+ * Turn promise into source
5
+ * https://silentium-lab.github.io/silentium-components/#/system/promised
6
+ */
7
+ export const promised = <T>(
8
+ promise: Promise<T>,
9
+ errorGuest: GuestType<Error>,
10
+ ) => {
11
+ const resultSrc = sourceOf<T>();
12
+
13
+ const visited = firstVisit(() => {
14
+ promise.then(resultSrc.give).catch((e) => {
15
+ give(e, errorGuest);
16
+ });
17
+ });
18
+
19
+ return (g: GuestType<T>) => {
20
+ visited();
21
+ resultSrc.value(g);
22
+ };
23
+ };