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 +8 -0
- package/beforeRelease.sh +3 -3
- package/dist/silentium-components.cjs +13 -19
- package/dist/silentium-components.cjs.map +1 -1
- package/dist/silentium-components.js +14 -20
- package/dist/silentium-components.js.map +1 -1
- package/dist/silentium-components.min.js +1 -1
- package/dist/silentium-components.min.mjs +1 -1
- package/dist/silentium-components.min.mjs.map +1 -1
- package/dist/silentium-components.mjs +14 -20
- package/dist/silentium-components.mjs.map +1 -1
- package/docs/pages/index.html +5 -0
- package/docs/pages/system/promised.html +40 -0
- package/docs/pages/system.html +11 -0
- package/docs/routes.json +1 -1
- package/package.json +1 -1
- package/src/behaviors/Branch.ts +3 -2
- package/src/behaviors/{Survey.test.ts → Polling.test.ts} +3 -3
- package/src/behaviors/{Survey.ts → Polling.ts} +1 -1
- package/src/behaviors/Priority.test.ts +2 -2
- package/src/navigation/Router.ts +4 -11
- package/src/system/Promised.test.ts +27 -0
- package/src/system/Promised.ts +23 -0
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" != "
|
|
6
|
-
echo "Error: Current branch not '
|
|
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 — '
|
|
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
|
|
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
|
|
394
|
-
silentium.value(
|
|
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
|
|
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
|
|
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
|
|
392
|
-
value(
|
|
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.
|
|
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
|
|
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":"kVAOO,MAAMA,EAAmB,CAC9BC,EACAC,EACAC,KAEAC,EACEC,EAAU,CAACJ,EAAgBC,EAAkBC,IAC7CG,GAAa,EAAEC,EAAaC,EAAeC,MAC3BA,EAAAC,SAASC,IACjBA,EAAGC,WACFD,EAAAC,UAAUC,OAAON,EAAW,IAGrBC,EAAAI,UAAUE,IAAIP,EAAW,KAIpCJ,GCPIY,EAAQ,CACnBC,EACAC,GAAmB,EACnBC,EAAuB,GACvBC,EAAwB,MAExB,MAAMC,EAAeC,IACfC,EAAMjB,EAAU,CAACe,EAAcJ,IAE/BO,EAAS,CACbC,KAAKpB,IACHoB,EAAKC,KAAKC,MAAMD,KAAKE,UAAUvB,IAASgB,GACjCG,GAETnB,MAAMwB,IACJxB,EACEkB,EACAO,EAAUD,GAAO,EAAEE,EAAWC,MACvBD,GAILN,EACEQ,OAAOC,YACLD,OAAOE,QAAQJ,GAAWK,QAAO,EAAEC,EAAKhC,OAClCc,EAAWmB,SAASD,KAGpBjB,EAAYkB,SAASD,IAGlBhC,IAAW2B,EAAaK,MAGnCR,EACF,KAGGL,IAQJ,OAJHN,GACIb,EAAAY,EAAkBsB,EAAWf,IAG9BA,CAAA,ECpDIgB,EAAU,CACrBC,EACAC,KAEA,MAAMC,EAAarB,IAgBnB,OAfAsB,EAAcD,EAAY,CAACF,EAAoBC,IAE/CrC,EACEoC,EACAlC,GAAa,KACXoC,EAAWlB,MAAK,EAAI,KAGxBpB,EACEqC,EACAnC,GAAa,KACXoC,EAAWlB,MAAK,EAAK,KAIlBkB,EAAWtC,KAAA,ECjBPwC,EAAO,CAIlBC,EACAC,KAEA,MAAMC,EAAU1B,IAkBhB,OAjBAsB,EAAcI,EAAS,CAACF,EAASC,IAEjC1C,EACEC,EAAU,CAACwC,EAASC,IACpBxC,GAAa,EAAEyB,EAAMK,MACb,MAAAY,EAAYZ,EAAIa,MAAM,KAC5B,IAAI7C,EAAiB2B,EACXiB,EAAAtC,SAASwC,IACjB9C,EAASA,EAAkC8C,EAAQ,SAGvC,IAAV9C,GAAuBA,IAAU2B,GACnCP,EAAKpB,EAAO2C,EAAO,KAKlBA,EAAQ3C,KAAA,EC1BJ+C,EAAW,CACtBC,EACAP,EACAQ,KAEA,IAAIC,EAAqB,KACzB,OAAQC,IACNnD,EACEiD,EACAxB,EAAU0B,GAAIC,IACRF,GACFG,aAAaH,GAGf,IAAII,GAAiB,EAErBJ,EAAYK,YAAW,KACjBD,IAGaA,GAAA,EACjBlC,EAAK,IAAIoC,MAAM,qCAAsCR,GAAK,GACzDI,GAEHpD,EACEyD,EAAehB,GAAS,KAAOa,IAC/BH,GAGFnD,EACEyC,EACAP,GAAW,KACQoB,GAAA,CAAA,IAErB,IAEJ,CACF,ECrCWI,EAAWjB,IACtB,MAAMtB,EAASF,IACf0C,EAAUxC,EAAQsB,GAElB,IAAImB,GAAqB,EACrBC,EAAsB,KAuBnB,OAVP7D,EACEyC,EACAvC,GAAc4D,IACAD,EAAAC,EACPF,IAdcA,GAAA,EACrBG,gBAAe,KACQH,GAAA,EACH,OAAdC,IACFzC,EAAKyC,EAAW1C,GACJ0C,EAAA,KAAA,IAUM,KAKjB1C,CAAA,EC3BI6C,EAAO,CAClBC,EACAC,EACAC,EACAC,KAEA,MAAMjD,EAASF,IACToD,EAAQpD,IACRqD,EAAmBC,EAAiBpD,EAAQkD,GAC9C,IAAAG,EACAC,EAsBG,OApBPzE,EACEiE,EACA/D,GAAc4D,IACZO,EAAMjD,KAAK,GACPoD,GACFE,EAAsBF,GAEpBC,GACFC,EAAsBD,GAEpBP,EAAUJ,IACZU,EAAatC,EAAWf,GACxBnB,EAAMmE,EAASK,IACNJ,IACTK,EAAavC,EAAWf,GACxBnB,EAAMoE,EAASK,GAAU,KAKxBH,CAAA,EChCIK,EAAW,CACtBlC,EACAmC,KAEA,MAAMzD,EAASoD,EAAoBtD,IAAYwB,GAEzCoC,EAAUC,GAAW,KACzB9E,EACE4E,EACA1E,GAAa,KACXF,EAAMyC,EAAStB,EAAM,IAEzB,IAGF,OAAQgC,IACE0B,IACR7E,EAAMmB,EAAQgC,EAAC,CACjB,EClBW4B,EAAS,CACpBd,EACAE,EACAC,KAEA,MAAMY,EAAW/D,IACXE,EAASF,IACTgE,EAAYV,EAAiBpD,EAAQ6D,GAErCH,EAAUC,GAAW,KACzB9E,EACEiE,EACA/D,GAAc4D,IACZkB,EAAS5D,KAAK,IACJ,IAAN0C,EACF9D,EAAMmE,EAASjC,EAAWf,EAAOC,YACZ,IAAZgD,GACTpE,EAAMoE,EAASlC,EAAWf,EAAOC,MAAK,IAG5C,IAGF,OAAQ+B,IACE0B,IACRI,EAAUjF,MAAMmD,EAAC,CACnB,EClCW+B,EAAWzC,IACtB,MAAMtB,EAASF,IACf,IAAI4C,EAAsB,KAY1B,OAVA7D,EACEyC,EACAvC,GAAc4D,IACRA,IAAMD,IACR1C,EAAOC,KAAK0C,GACAD,EAAAC,EAAA,KAKX3C,EAAOnB,KAAA,ECLHmF,EAAO,CAClB1C,EACA2C,KAEA,MAAMjE,EAASF,IACTqD,EAAmBC,EAAiBpD,EAAQiE,GAClD,IAAIC,GAAS,EAaN,OAZP1B,EAAUxC,EAAQsB,GAEZzC,EAAAyC,EAASvC,EAAaoF,EAAgBnE,EAAOC,MAAM,IAAMiE,MAE/DrF,EACEoF,EACAlD,GAAW,KACAmD,GAAA,EACDE,EAAA,CAACpE,GAAO,KAIbmD,CAAA,EC5BIkB,EAAS,CACpB/C,EACAgD,KAEM,MAAAjE,EAAQkE,EAAUD,GAGxB,OAFAzF,EAAMyC,EAASjB,GAEP2B,IACD/B,EAAAI,EAAMxB,QAASmD,EAAC,CACvB,ECFWwC,EAAO,CAAIlD,EAAwBmD,KAC9C,MAAMC,EAAc5E,IACdE,EAASF,IAET6E,EAAcC,EAAWtD,EAAS,MAWjC,OAVPzC,EACE4F,EACA1F,GAAa,KACqB,OAA5B4F,EAAYE,cACP7E,EAAAC,KAAK0E,EAAYE,aACxBH,EAAYzE,KAAK,GAAC,KAKjBmD,EAAiBpD,EAAQ0E,EAAW,ECtBhCI,EAAkBxD,IAC7B,IAAIyD,GAAa,EACV,OAAAC,GAAWhD,IAChBnD,EACEyC,EACAhB,EAAa0B,GAAIW,KACI,IAAfoC,EACWA,GAAA,EAEb9E,EAAK0C,EAAGX,EAAC,IAGf,GACD,ECRUiD,EAAaC,IAClB,MAAAlF,EAASF,EAAkC,IAYjD,OAXA0C,EAAUxC,EAAQkF,GAElBrG,EACEqG,EACAnG,GAAa,EAAE8B,EAAKhC,MACXmB,EAAAnB,OAAOsG,IACZA,EAAWtE,GAAOhC,CAAAA,GACnB,KAIEmB,EAAOnB,KAAA,EClBHuG,EAAUC,IACf,MAAAC,EAAO7E,OAAO6E,KAAKD,GACzB,OAAOE,KAAkB9E,OAAO+E,OAAOH,GAAhCE,EACL,CAACvD,KAAsCrB,KACrC,MAAMyE,EAA8B,CAAC,EAC7BzE,EAAAxB,SAAQ,CAACsG,EAAOC,KACtBN,EAAOE,EAAKI,IAAUD,CAAA,IAExBxF,EAAKmF,EAAQpD,EAAC,GAElB,ECVW2D,EAAe,CAC1BC,EACAC,EAAkC,KAEnBN,EACbM,KACGD,EAFUL,EAGb,CAACvD,EAAsB8D,KAAaC,KACpC9F,EAAK8F,EAAQC,KAAKF,GAAW9D,EAAC,ICRrBiE,EAAgB,CAC3BC,EACAC,EACAC,EAA+B,KAE/Bb,EACEW,EACAC,EACAC,EAHFb,EAIE,CAACvD,EAAuBqE,EAASxH,EAAOyH,KACnCrG,EAAA,IAAIsG,OAAOF,EAASC,GAAOE,KAAK3H,GAAQmD,EAAC,ICQrCyE,EAAS,CACpBC,EACAC,EACAC,KAEA,MAAM9C,EAAYhE,IAEZ4D,EAAUC,GAAW,KACzB9E,EACE8H,EACA5F,GAAY8F,IACV,MAAMC,GCjCclB,EDiCS,CAC3BgB,KACGC,EAAOE,KAAKC,GACbnI,EACE+E,EACEqC,EAAce,EAAEX,QAASK,EAAQM,EAAEC,cACnCD,EAAEE,UAEJnI,GAAc4D,GACLA,QCzCbX,IACN,IACImF,EADAC,EAAuB,EAEnBxB,EAAAzG,SAAQ,CAAC6F,EAAQU,KACjB7G,EAAAmG,GAASrC,IACTyE,GAAwB1B,IACH0B,EAAA1B,EACCyB,EAAAxE,EAAA,GAE3B,SAG2B,IAA1BwE,GACFlH,EAAKkH,EAAuBnF,EAAC,GAdX,IAAI4D,ED+Cd,MAAAyB,EExCS,EACrBC,EACA7D,KAEA,MAAMK,EAAYhE,IAEZ4D,EAAUC,GAAW,KACzB9E,EACE4E,EACA1E,GAAa,KACXF,EAAMyI,EAAWxD,EAAS,IAE9B,IAGF,OAAQ9B,IACE0B,IACRI,EAAUjF,MAAMmD,EAAC,CACnB,EFsByBuF,CAAQT,EAAaJ,GAClC7H,EAAAwI,EAAYtI,EAAa+E,GAAU,IAE7C,IAGF,OAAQ9B,IACE0B,IACRI,EAAUjF,MAAMmD,EAAC,CACnB,EGpDWwF,EAAiB,CAC5BrB,EACAD,EACAuB,EACArB,EAA+B,KAE/Bb,EACEW,EACAC,EACAsB,EACArB,EAJFb,EAKE,CAACvD,EAAsBqE,EAASxH,EAAO6I,EAAcpB,KAChDrG,EAAA0H,OAAO9I,GAAO+I,QAAQ,IAAIrB,OAAOF,EAASC,GAAQoB,GAAe1F,EAAC,ICZ9D6F,EAAc,CACzB3B,EACAC,EACAC,EAA+B,KAE/Bb,EACEW,EACAC,EACAC,EAHFb,EAIE,CAACvD,EAAwBqE,EAASxH,EAAOyH,KACzC,MAAMtG,EAAS,IAAIuG,OAAOF,EAASC,GAAOwB,KAAKjJ,GAC1CoB,EAAAD,GAAU,GAAIgC,EAAC,ICXX+F,EAAM,CACjBzG,EACAC,EACA4E,KAEAtH,EACEC,EAAU,CAACwC,EAASC,EAAQ4E,IAC5BpH,GAAa,EAAEyB,EAAMK,EAAKhC,MACvB2B,EAAiCK,GAAOhC,CAAAA,KAItCyC,GCbI0G,EAAM,CACjBC,EACAC,IAEO3C,EACL0C,EACAC,EAFK3C,EAGL,CAAClF,EAA2B8H,EAAKC,KAC5BnI,EAAAkI,GAAOC,EAAK/H,EAAK,ICRbgI,EAAK,CAChBJ,EACAC,IAEO3C,EACL0C,EACAC,EAFK3C,EAGL,CAAClF,EAA2B8H,EAAKC,KAC5BnI,EAAAkI,GAAOC,EAAK/H,EAAK,ICRbiI,EAAOhH,GACVU,IACNnD,EACEyC,EACAhB,EAAU0B,GAAIxB,IACPP,GAACO,EAAMwB,EAAC,IAEjB"}
|
|
@@ -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
|
|
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
|
|
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
|
|
392
|
-
value(
|
|
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":"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"}
|
|
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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"}
|
package/docs/pages/index.html
CHANGED
|
@@ -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
package/src/behaviors/Branch.ts
CHANGED
|
@@ -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 {
|
|
3
|
+
import { polling } from "./Polling";
|
|
4
4
|
|
|
5
|
-
test("
|
|
5
|
+
test("Polling.test", () => {
|
|
6
6
|
const src = sourceOf<number>(1);
|
|
7
7
|
const triggerSrc = sourceOf(1);
|
|
8
|
-
const serveyResult = sourceSync(
|
|
8
|
+
const serveyResult = sourceSync(polling(src, triggerSrc));
|
|
9
9
|
|
|
10
10
|
expect(serveyResult.syncValue()).toBe(1);
|
|
11
11
|
|
|
@@ -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 {
|
|
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(
|
|
12
|
+
const prioritySrc = sourceSync(polling(priority([src1, src2]), triggerSrc));
|
|
13
13
|
|
|
14
14
|
src1.give(1);
|
|
15
15
|
src2.give(2);
|
package/src/navigation/Router.ts
CHANGED
|
@@ -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 {
|
|
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
|
|
52
|
-
value(
|
|
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
|
+
};
|