silentium-components 0.0.17 → 0.0.20
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 +17 -0
- package/dist/silentium-components.cjs +34 -0
- package/dist/silentium-components.cjs.map +1 -1
- package/dist/silentium-components.d.ts +13 -1
- package/dist/silentium-components.js +34 -2
- 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 +34 -2
- package/dist/silentium-components.mjs.map +1 -1
- package/package.json +1 -1
- package/src/behaviors/OnlyChanged.test.ts +18 -0
- package/src/behaviors/OnlyChanged.ts +21 -0
- package/src/behaviors/Shot._onlyChanged.test.ts +36 -0
- package/src/behaviors/Shot.test.ts +30 -0
- package/src/behaviors/Shot.ts +33 -0
- package/src/behaviors/index.ts +2 -0
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,23 @@
|
|
|
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.20](https://github.com/silentium-lab/silentium-components/compare/v0.0.19...v0.0.20) (2025-05-25)
|
|
6
|
+
|
|
7
|
+
### [0.0.19](https://github.com/silentium-lab/silentium-components/compare/v0.0.18...v0.0.19) (2025-05-25)
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
### Features
|
|
11
|
+
|
|
12
|
+
* **43-issue:** only changed component done ([770bd67](https://github.com/silentium-lab/silentium-components/commit/770bd679c311d5520a88e05eb5cfa1e6808410ce))
|
|
13
|
+
* **main:** shot export ([e05dabc](https://github.com/silentium-lab/silentium-components/commit/e05dabc0785aacdb9e6d5e9a30bdb206b40d15b3))
|
|
14
|
+
|
|
15
|
+
### [0.0.18](https://github.com/silentium-lab/silentium-components/compare/v0.0.17...v0.0.18) (2025-05-21)
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
### Features
|
|
19
|
+
|
|
20
|
+
* **41-issue:** shot component done ([525698f](https://github.com/silentium-lab/silentium-components/commit/525698f81e67a4280fca187c94c30d20962c5137))
|
|
21
|
+
|
|
5
22
|
### [0.0.17](https://github.com/silentium-lab/silentium-components/compare/v0.0.16...v0.0.17) (2025-05-19)
|
|
6
23
|
|
|
7
24
|
### [0.0.16](https://github.com/silentium-lab/silentium-components/compare/v0.0.15...v0.0.16) (2025-05-19)
|
|
@@ -256,6 +256,38 @@ const moment = (baseSrc, defaultValue) => {
|
|
|
256
256
|
};
|
|
257
257
|
};
|
|
258
258
|
|
|
259
|
+
const shot = (baseSrc, shotSrc) => {
|
|
260
|
+
const resetResult = silentium.sourceOf();
|
|
261
|
+
const result = silentium.sourceOf();
|
|
262
|
+
const baseSrcSync = silentium.sourceSync(baseSrc, null);
|
|
263
|
+
silentium.value(
|
|
264
|
+
shotSrc,
|
|
265
|
+
silentium.patron(() => {
|
|
266
|
+
if (baseSrcSync.syncValue() !== null) {
|
|
267
|
+
result.give(baseSrcSync.syncValue());
|
|
268
|
+
resetResult.give(1);
|
|
269
|
+
}
|
|
270
|
+
})
|
|
271
|
+
);
|
|
272
|
+
return silentium.sourceResettable(result, resetResult).value;
|
|
273
|
+
};
|
|
274
|
+
|
|
275
|
+
const onlyChanged = (baseSrc) => {
|
|
276
|
+
let firstValue = false;
|
|
277
|
+
return silentium.source((g) => {
|
|
278
|
+
silentium.value(
|
|
279
|
+
baseSrc,
|
|
280
|
+
silentium.guestCast(g, (v) => {
|
|
281
|
+
if (firstValue === false) {
|
|
282
|
+
firstValue = true;
|
|
283
|
+
} else {
|
|
284
|
+
silentium.give(v, g);
|
|
285
|
+
}
|
|
286
|
+
})
|
|
287
|
+
);
|
|
288
|
+
});
|
|
289
|
+
};
|
|
290
|
+
|
|
259
291
|
const hashTable = (baseSource) => {
|
|
260
292
|
const result = silentium.sourceOf({});
|
|
261
293
|
silentium.subSource(result, baseSource);
|
|
@@ -397,6 +429,7 @@ exports.lock = lock;
|
|
|
397
429
|
exports.memo = memo;
|
|
398
430
|
exports.moment = moment;
|
|
399
431
|
exports.not = not;
|
|
432
|
+
exports.onlyChanged = onlyChanged;
|
|
400
433
|
exports.or = or;
|
|
401
434
|
exports.path = path;
|
|
402
435
|
exports.record = record;
|
|
@@ -405,5 +438,6 @@ exports.regexpMatched = regexpMatched;
|
|
|
405
438
|
exports.regexpReplaced = regexpReplaced;
|
|
406
439
|
exports.router = router;
|
|
407
440
|
exports.set = set;
|
|
441
|
+
exports.shot = shot;
|
|
408
442
|
exports.tick = tick;
|
|
409
443
|
//# sourceMappingURL=silentium-components.cjs.map
|
|
@@ -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/structures/HashTable.ts","../src/structures/Record.ts","../src/strings/Concatenated.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 { patron, sourceAll, SourceType, 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 patron(([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 { patron, sourceOf, SourceType, subSourceMany, value } 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 patron(() => {\n loadingSrc.give(true);\n }),\n );\n value(\n loadingFinishSource,\n patron(() => {\n loadingSrc.give(false);\n }),\n );\n\n return loadingSrc.value;\n};\n","import {\n give,\n patron,\n sourceAll,\n sourceOf,\n SourceType,\n subSourceMany,\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 patron(([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 patron,\n sourceOf,\n SourceType,\n subSource,\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 patron((v) => {\n lastValue = v;\n if (!microtaskScheduled) {\n scheduleMicrotask();\n }\n }),\n );\n\n return result;\n};\n","import {\n sourceOf,\n SourceType,\n sourceResettable,\n value,\n patron,\n removePatronFromPools,\n GuestObjectType,\n patronOnce,\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 patron((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 patron,\n sourceOf,\n sourceResettable,\n SourceType,\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 value(\n triggerSrc,\n patron(() => {\n value(baseSrc, result);\n }),\n );\n\n return result.value;\n};\n","import { patron, patronOnce, sourceOf, SourceType, value } 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 result = sourceOf<Then | Else>();\n\n value(\n conditionSrc,\n patron((v) => {\n if (v === true) {\n value(\n thenSrc,\n patronOnce((v) => {\n result.give(v);\n }),\n );\n } else if (elseSrc !== undefined) {\n value(\n elseSrc,\n patronOnce((v) => {\n result.give(v);\n }),\n );\n }\n }),\n );\n\n return result.value;\n};\n","import { patron, sourceOf, SourceType, 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 patron((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 patron,\n patronOnce,\n sourceOf,\n sourceResettable,\n SourceType,\n subSource,\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, patron(guestDisposable(result.give, () => locked)));\n\n value(\n lockSrc,\n patronOnce(() => {\n locked = true;\n destroy([result]);\n }),\n );\n\n return resultResettable.value;\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 { patron, sourceOf, SourceType, subSource, value } 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 patron(([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 patron,\n sourceAny,\n sourceChain,\n sourceFiltered,\n sourceOf,\n SourceType,\n value,\n} from \"silentium\";\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 value(\n routesSrc,\n patron((routes) => {\n value(\n sourceAny([\n sourceChain(urlSrc, defaultSrc as T),\n ...routes.map((r) =>\n sourceChain(\n sourceFiltered(\n regexpMatched(r.pattern, urlSrc, r.patternFlags),\n Boolean,\n ),\n r.template,\n ),\n ),\n ]),\n patron(resultSrc),\n );\n }),\n );\n\n return resultSrc.value;\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 { patron, sourceAll, SourceType, 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 patron(([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","patron","sourceOf","give","guestCast","patronOnce","subSourceMany","sourceFiltered","subSource","sourceResettable","removePatronFromPools","v","guestDisposable","destroy","guestSync","sourceCombined","record","sourceAny","sourceChain"],"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/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 { patron, sourceAll, SourceType, 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 patron(([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 { patron, sourceOf, SourceType, subSourceMany, value } 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 patron(() => {\n loadingSrc.give(true);\n }),\n );\n value(\n loadingFinishSource,\n patron(() => {\n loadingSrc.give(false);\n }),\n );\n\n return loadingSrc.value;\n};\n","import {\n give,\n patron,\n sourceAll,\n sourceOf,\n SourceType,\n subSourceMany,\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 patron(([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 patron,\n sourceOf,\n SourceType,\n subSource,\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 patron((v) => {\n lastValue = v;\n if (!microtaskScheduled) {\n scheduleMicrotask();\n }\n }),\n );\n\n return result;\n};\n","import {\n sourceOf,\n SourceType,\n sourceResettable,\n value,\n patron,\n removePatronFromPools,\n GuestObjectType,\n patronOnce,\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 patron((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 patron,\n sourceOf,\n sourceResettable,\n SourceType,\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 value(\n triggerSrc,\n patron(() => {\n value(baseSrc, result);\n }),\n );\n\n return result.value;\n};\n","import { patron, patronOnce, sourceOf, SourceType, value } 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 result = sourceOf<Then | Else>();\n\n value(\n conditionSrc,\n patron((v) => {\n if (v === true) {\n value(\n thenSrc,\n patronOnce((v) => {\n result.give(v);\n }),\n );\n } else if (elseSrc !== undefined) {\n value(\n elseSrc,\n patronOnce((v) => {\n result.give(v);\n }),\n );\n }\n }),\n );\n\n return result.value;\n};\n","import { patron, sourceOf, SourceType, 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 patron((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 patron,\n patronOnce,\n sourceOf,\n sourceResettable,\n SourceType,\n subSource,\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, patron(guestDisposable(result.give, () => locked)));\n\n value(\n lockSrc,\n patronOnce(() => {\n locked = true;\n destroy([result]);\n }),\n );\n\n return resultResettable.value;\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 patron,\n sourceOf,\n sourceResettable,\n sourceSync,\n SourceType,\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>(\n baseSrc: SourceType<T>,\n shotSrc: SourceType<unknown>,\n) => {\n const resetResult = sourceOf();\n const result = sourceOf<T>();\n\n const baseSrcSync = sourceSync(baseSrc, null);\n value(\n shotSrc,\n patron(() => {\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).value;\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 { patron, sourceOf, SourceType, subSource, value } 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 patron(([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 patron,\n sourceAny,\n sourceChain,\n sourceFiltered,\n sourceOf,\n SourceType,\n value,\n} from \"silentium\";\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 value(\n routesSrc,\n patron((routes) => {\n value(\n sourceAny([\n sourceChain(urlSrc, defaultSrc as T),\n ...routes.map((r) =>\n sourceChain(\n sourceFiltered(\n regexpMatched(r.pattern, urlSrc, r.patternFlags),\n Boolean,\n ),\n r.template,\n ),\n ),\n ]),\n patron(resultSrc),\n );\n }),\n );\n\n return resultSrc.value;\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 { patron, sourceAll, SourceType, 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 patron(([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","patron","sourceOf","give","guestCast","patronOnce","subSourceMany","sourceFiltered","subSource","sourceResettable","removePatronFromPools","v","guestDisposable","destroy","guestSync","sourceSync","source","sourceCombined","record","sourceAny","sourceChain"],"mappings":";;;;AAOO,MAAM,gBAAmB,GAAA,CAC9B,cACA,EAAA,gBAAA,EACA,gBACG,KAAA;AACH,EAAAA,eAAA;AAAA,IACEC,mBAAU,CAAA,CAAC,cAAgB,EAAA,gBAAA,EAAkB,gBAAgB,CAAC,CAAA;AAAA,IAC9DC,iBAAO,CAAC,CAAC,WAAa,EAAA,aAAA,EAAe,aAAa,CAAM,KAAA;AACtD,MAAc,aAAA,CAAA,OAAA,CAAQ,CAAC,EAAO,KAAA;AAC5B,QAAA,IAAI,GAAG,SAAW,EAAA;AAChB,UAAG,EAAA,CAAA,SAAA,CAAU,OAAO,WAAW,CAAA;AAAA;AACjC,OACD,CAAA;AACD,MAAc,aAAA,CAAA,SAAA,CAAU,IAAI,WAAW,CAAA;AAAA,KACxC;AAAA,GACH;AAEA,EAAO,OAAA,gBAAA;AACT;;ACRa,MAAA,KAAA,GAAQ,CACnB,gBAAA,EACA,gBAAmB,GAAA,KAAA,EACnB,aAAuB,EAAC,EACxB,WAAwB,GAAA,EACa,KAAA;AACrC,EAAA,MAAM,eAAeC,kBAAS,EAAA;AAC9B,EAAA,MAAM,GAAM,GAAAF,mBAAA,CAAU,CAAC,YAAA,EAAc,gBAAgB,CAAC,CAAA;AAEtD,EAAA,MAAM,MAAS,GAAA;AAAA,IACb,KAAKD,MAAU,EAAA;AACb,MAAAI,cAAA,CAAK,KAAK,KAAM,CAAA,IAAA,CAAK,UAAUJ,MAAK,CAAC,GAAG,YAAY,CAAA;AACpD,MAAO,OAAA,MAAA;AAAA,KACT;AAAA,IACA,MAAM,KAA8B,EAAA;AAClC,MAAAA,eAAA;AAAA,QACE,GAAA;AAAA,QACAK,oBAAU,KAAO,EAAA,CAAC,CAAC,SAAA,EAAW,IAAI,CAAM,KAAA;AACtC,UAAA,IAAI,CAAC,SAAW,EAAA;AACd,YAAA;AAAA;AAGF,UAAAD,cAAA;AAAA,YACE,MAAO,CAAA,WAAA;AAAA,cACL,MAAA,CAAO,QAAQ,SAAS,CAAA,CAAE,OAAO,CAAC,CAAC,GAAKJ,EAAAA,MAAK,CAAM,KAAA;AACjD,gBAAI,IAAA,UAAA,CAAW,QAAS,CAAA,GAAG,CAAG,EAAA;AAC5B,kBAAO,OAAA,IAAA;AAAA;AAET,gBAAI,IAAA,WAAA,CAAY,QAAS,CAAA,GAAG,CAAG,EAAA;AAC7B,kBAAO,OAAA,KAAA;AAAA;AAET,gBAAOA,OAAAA,MAAAA,KAAW,KAAa,GAAG,CAAA;AAAA,eACnC;AAAA,aACH;AAAA,YACA;AAAA,WACF;AAAA,SACD;AAAA,OACH;AACA,MAAO,OAAA,MAAA;AAAA;AACT,GACF;AAEA,EAAA,IAAI,gBAAkB,EAAA;AACpB,IAAMA,eAAA,CAAA,gBAAA,EAAkBM,oBAAW,CAAA,MAAM,CAAC,CAAA;AAAA;AAG5C,EAAO,OAAA,MAAA;AACT;;AC3Da,MAAA,OAAA,GAAU,CACrB,kBAAA,EACA,mBACG,KAAA;AACH,EAAA,MAAM,aAAaH,kBAAkB,EAAA;AACrC,EAAAI,uBAAA,CAAc,UAAY,EAAA,CAAC,kBAAoB,EAAA,mBAAmB,CAAC,CAAA;AAEnE,EAAAP,eAAA;AAAA,IACE,kBAAA;AAAA,IACAE,iBAAO,MAAM;AACX,MAAA,UAAA,CAAW,KAAK,IAAI,CAAA;AAAA,KACrB;AAAA,GACH;AACA,EAAAF,eAAA;AAAA,IACE,mBAAA;AAAA,IACAE,iBAAO,MAAM;AACX,MAAA,UAAA,CAAW,KAAK,KAAK,CAAA;AAAA,KACtB;AAAA,GACH;AAEA,EAAA,OAAO,UAAW,CAAA,KAAA;AACpB;;ACZa,MAAA,IAAA,GAAO,CAIlB,OAAA,EACA,MACG,KAAA;AACH,EAAA,MAAM,UAAUC,kBAAkB,EAAA;AAClC,EAAAI,uBAAA,CAAc,OAAS,EAAA,CAAC,OAAS,EAAA,MAAM,CAAC,CAAA;AAExC,EAAAP,eAAA;AAAA,IACEC,mBAAU,CAAA,CAAC,OAAS,EAAA,MAAM,CAAC,CAAA;AAAA,IAC3BC,gBAAO,CAAA,CAAC,CAAC,IAAA,EAAM,GAAG,CAAM,KAAA;AACtB,MAAM,MAAA,SAAA,GAAY,GAAI,CAAA,KAAA,CAAM,GAAG,CAAA;AAC/B,MAAA,IAAIF,MAAiB,GAAA,IAAA;AACrB,MAAU,SAAA,CAAA,OAAA,CAAQ,CAAC,QAAa,KAAA;AAC9B,QAAAA,MAAAA,GAASA,OAAkC,QAAQ,CAAA;AAAA,OACpD,CAAA;AAED,MAAIA,IAAAA,MAAAA,KAAU,MAAaA,IAAAA,MAAAA,KAAU,IAAM,EAAA;AACzC,QAAAI,cAAA,CAAKJ,QAAO,OAAO,CAAA;AAAA;AACrB,KACD;AAAA,GACH;AAEA,EAAA,OAAO,OAAQ,CAAA,KAAA;AACjB;;AC3BO,MAAM,QAAW,GAAA,CACtB,KACA,EAAA,OAAA,EACA,UACG,KAAA;AACH,EAAA,IAAI,SAAqB,GAAA,IAAA;AACzB,EAAA,OAAO,CAAC,CAAoB,KAAA;AAC1B,IAAAA,eAAA;AAAA,MACE,UAAA;AAAA,MACAK,mBAAA,CAAU,CAAG,EAAA,CAAC,OAAY,KAAA;AACxB,QAAA,IAAI,SAAW,EAAA;AACb,UAAA,YAAA,CAAa,SAAmB,CAAA;AAAA;AAGlC,QAAA,IAAI,cAAiB,GAAA,KAAA;AAErB,QAAA,SAAA,GAAY,WAAW,MAAM;AAC3B,UAAA,IAAI,cAAgB,EAAA;AAClB,YAAA;AAAA;AAEF,UAAiB,cAAA,GAAA,IAAA;AACjB,UAAAD,cAAA,CAAK,IAAI,KAAA,CAAM,mCAAmC,CAAA,EAAG,KAAK,CAAA;AAAA,WACzD,OAAO,CAAA;AAEV,QAAAJ,eAAA;AAAA,UACEQ,wBAAe,CAAA,OAAA,EAAS,MAAM,CAAC,cAAc,CAAA;AAAA,UAC7C;AAAA,SACF;AAEA,QAAAR,eAAA;AAAA,UACE,OAAA;AAAA,UACAM,qBAAW,MAAM;AACf,YAAiB,cAAA,GAAA,IAAA;AAAA,WAClB;AAAA,SACH;AAAA,OACD;AAAA,KACH;AAAA,GACF;AACF;;ACtCa,MAAA,IAAA,GAAO,CAAI,OAA2B,KAAA;AACjD,EAAA,MAAM,SAASH,kBAAY,EAAA;AAC3B,EAAAM,mBAAA,CAAU,QAAQ,OAAO,CAAA;AAEzB,EAAA,IAAI,kBAAqB,GAAA,KAAA;AACzB,EAAA,IAAI,SAAsB,GAAA,IAAA;AAE1B,EAAA,MAAM,oBAAoB,MAAM;AAC9B,IAAqB,kBAAA,GAAA,IAAA;AACrB,IAAA,cAAA,CAAe,MAAM;AACnB,MAAqB,kBAAA,GAAA,KAAA;AACrB,MAAA,IAAI,cAAc,IAAM,EAAA;AACtB,QAAAL,cAAA,CAAK,WAAW,MAAM,CAAA;AACtB,QAAY,SAAA,GAAA,IAAA;AAAA;AACd,KACD,CAAA;AAAA,GACH;AAEA,EAAAJ,eAAA;AAAA,IACE,OAAA;AAAA,IACAE,gBAAA,CAAO,CAAC,CAAM,KAAA;AACZ,MAAY,SAAA,GAAA,CAAA;AACZ,MAAA,IAAI,CAAC,kBAAoB,EAAA;AACvB,QAAkB,iBAAA,EAAA;AAAA;AACpB,KACD;AAAA,GACH;AAEA,EAAO,OAAA,MAAA;AACT;;AC5BO,MAAM,IAAO,GAAA,CAClB,YACA,EAAA,SAAA,EACA,SACA,OAC4B,KAAA;AAC5B,EAAA,MAAM,SAASC,kBAAsB,EAAA;AACrC,EAAA,MAAM,QAAQA,kBAAS,EAAA;AACvB,EAAM,MAAA,gBAAA,GAAmBO,0BAAiB,CAAA,MAAA,EAAQ,KAAK,CAAA;AACvD,EAAI,IAAA,UAAA;AACJ,EAAI,IAAA,UAAA;AAEJ,EAAAV,eAAA;AAAA,IACE,YAAA;AAAA,IACAE,gBAAA,CAAO,CAAC,CAAM,KAAA;AACZ,MAAA,KAAA,CAAM,KAAK,CAAC,CAAA;AACZ,MAAA,IAAI,UAAY,EAAA;AACd,QAAAS,+BAAA,CAAsB,UAAU,CAAA;AAAA;AAElC,MAAA,IAAI,UAAY,EAAA;AACd,QAAAA,+BAAA,CAAsB,UAAU,CAAA;AAAA;AAElC,MAAI,IAAA,SAAA,CAAU,CAAC,CAAG,EAAA;AAChB,QAAA,UAAA,GAAaL,qBAAW,MAAM,CAAA;AAC9B,QAAAN,eAAA,CAAM,SAAS,UAAU,CAAA;AAAA,iBAChB,OAAS,EAAA;AAClB,QAAA,UAAA,GAAaM,qBAAW,MAAM,CAAA;AAC9B,QAAAN,eAAA,CAAM,SAAS,UAAU,CAAA;AAAA;AAC3B,KACD;AAAA,GACH;AAEA,EAAO,OAAA,gBAAA;AACT;;ACnCa,MAAA,QAAA,GAAW,CACtB,OAAA,EACA,UACG,KAAA;AACH,EAAA,MAAM,MAAS,GAAAU,0BAAA,CAAoBP,kBAAS,EAAA,EAAG,OAAqB,CAAA;AAEpE,EAAAH,eAAA;AAAA,IACE,UAAA;AAAA,IACAE,iBAAO,MAAM;AACX,MAAAF,eAAA,CAAM,SAAS,MAAM,CAAA;AAAA,KACtB;AAAA,GACH;AAEA,EAAA,OAAO,MAAO,CAAA,KAAA;AAChB;;ACrBO,MAAM,MAAS,GAAA,CACpB,YACA,EAAA,OAAA,EACA,OAC4B,KAAA;AAC5B,EAAA,MAAM,SAASG,kBAAsB,EAAA;AAErC,EAAAH,eAAA;AAAA,IACE,YAAA;AAAA,IACAE,gBAAA,CAAO,CAAC,CAAM,KAAA;AACZ,MAAA,IAAI,MAAM,IAAM,EAAA;AACd,QAAAF,eAAA;AAAA,UACE,OAAA;AAAA,UACAM,oBAAA,CAAW,CAACM,EAAM,KAAA;AAChB,YAAA,MAAA,CAAO,KAAKA,EAAC,CAAA;AAAA,WACd;AAAA,SACH;AAAA,OACF,MAAA,IAAW,YAAY,MAAW,EAAA;AAChC,QAAAZ,eAAA;AAAA,UACE,OAAA;AAAA,UACAM,oBAAA,CAAW,CAACM,EAAM,KAAA;AAChB,YAAA,MAAA,CAAO,KAAKA,EAAC,CAAA;AAAA,WACd;AAAA,SACH;AAAA;AACF,KACD;AAAA,GACH;AAEA,EAAA,OAAO,MAAO,CAAA,KAAA;AAChB;;AC5Ba,MAAA,IAAA,GAAO,CAAI,OAA2B,KAAA;AACjD,EAAA,MAAM,SAAST,kBAAY,EAAA;AAC3B,EAAA,IAAI,SAAsB,GAAA,IAAA;AAE1B,EAAAH,eAAA;AAAA,IACE,OAAA;AAAA,IACAE,gBAAA,CAAO,CAAC,CAAM,KAAA;AACZ,MAAA,IAAI,MAAM,SAAW,EAAA;AACnB,QAAA,MAAA,CAAO,KAAK,CAAC,CAAA;AACb,QAAY,SAAA,GAAA,CAAA;AAAA;AACd,KACD;AAAA,GACH;AAEA,EAAA,OAAO,MAAO,CAAA,KAAA;AAChB;;ACNa,MAAA,IAAA,GAAO,CAClB,OAAA,EACA,OACG,KAAA;AACH,EAAA,MAAM,SAASC,kBAAS,EAAA;AACxB,EAAM,MAAA,gBAAA,GAAmBO,0BAAiB,CAAA,MAAA,EAAQ,OAAO,CAAA;AACzD,EAAA,IAAI,MAAS,GAAA,KAAA;AACb,EAAAD,mBAAA,CAAU,QAAQ,OAAO,CAAA;AAEzB,EAAMT,eAAA,CAAA,OAAA,EAASE,iBAAOW,yBAAgB,CAAA,MAAA,CAAO,MAAM,MAAM,MAAM,CAAC,CAAC,CAAA;AAEjE,EAAAb,eAAA;AAAA,IACE,OAAA;AAAA,IACAM,qBAAW,MAAM;AACf,MAAS,MAAA,GAAA,IAAA;AACT,MAAQQ,iBAAA,CAAA,CAAC,MAAM,CAAC,CAAA;AAAA,KACjB;AAAA,GACH;AAEA,EAAA,OAAO,gBAAiB,CAAA,KAAA;AAC1B;;AC7Ba,MAAA,MAAA,GAAS,CACpB,OAAA,EACA,YACkB,KAAA;AAClB,EAAM,MAAA,KAAA,GAAQC,oBAAU,YAAY,CAAA;AACpC,EAAAf,eAAA,CAAM,SAAS,KAAK,CAAA;AAEpB,EAAA,OAAO,CAAC,CAAoB,KAAA;AAC1B,IAAKI,cAAA,CAAA,KAAA,CAAM,KAAM,EAAA,EAAG,CAAC,CAAA;AAAA,GACvB;AACF;;ACHa,MAAA,IAAA,GAAO,CAClB,OAAA,EACA,OACG,KAAA;AACH,EAAA,MAAM,cAAcD,kBAAS,EAAA;AAC7B,EAAA,MAAM,SAASA,kBAAY,EAAA;AAE3B,EAAM,MAAA,WAAA,GAAca,oBAAW,CAAA,OAAA,EAAS,IAAI,CAAA;AAC5C,EAAAhB,eAAA;AAAA,IACE,OAAA;AAAA,IACAE,iBAAO,MAAM;AACX,MAAI,IAAA,WAAA,CAAY,SAAU,EAAA,KAAM,IAAM,EAAA;AACpC,QAAO,MAAA,CAAA,IAAA,CAAK,WAAY,CAAA,SAAA,EAAgB,CAAA;AACxC,QAAA,WAAA,CAAY,KAAK,CAAC,CAAA;AAAA;AACpB,KACD;AAAA,GACH;AAEA,EAAO,OAAAQ,0BAAA,CAAiB,MAAQ,EAAA,WAAW,CAAE,CAAA,KAAA;AAC/C;;AC1Ba,MAAA,WAAA,GAAc,CAAI,OAA2B,KAAA;AACxD,EAAA,IAAI,UAAa,GAAA,KAAA;AACjB,EAAO,OAAAO,gBAAA,CAAU,CAAC,CAAM,KAAA;AACtB,IAAAjB,eAAA;AAAA,MACE,OAAA;AAAA,MACAK,mBAAA,CAAa,CAAG,EAAA,CAAC,CAAM,KAAA;AACrB,QAAA,IAAI,eAAe,KAAO,EAAA;AACxB,UAAa,UAAA,GAAA,IAAA;AAAA,SACR,MAAA;AACL,UAAAD,cAAA,CAAK,GAAG,CAAC,CAAA;AAAA;AACX,OACD;AAAA,KACH;AAAA,GACD,CAAA;AACH;;ACfa,MAAA,SAAA,GAAY,CAAC,UAA8C,KAAA;AACtE,EAAM,MAAA,MAAA,GAASD,kBAAkC,CAAA,EAAE,CAAA;AACnD,EAAAM,mBAAA,CAAU,QAAQ,UAAU,CAAA;AAE5B,EAAAT,eAAA;AAAA,IACE,UAAA;AAAA,IACAE,gBAAO,CAAA,CAAC,CAAC,GAAA,EAAKF,MAAK,CAAM,KAAA;AACvB,MAAO,MAAA,CAAA,KAAA,CAAM,CAAC,UAAe,KAAA;AAC3B,QAAA,UAAA,CAAW,GAAG,CAAIA,GAAAA,MAAAA;AAAA,OACnB,CAAA;AAAA,KACF;AAAA,GACH;AAEA,EAAA,OAAO,MAAO,CAAA,KAAA;AAChB;;ACba,MAAA,MAAA,GAAS,CAAC,SAA0C,KAAA;AAC/D,EAAM,MAAA,IAAA,GAAO,MAAO,CAAA,IAAA,CAAK,SAAS,CAAA;AAClC,EAAA,OAAOkB,wBAAe,CAAA,GAAG,MAAO,CAAA,MAAA,CAAO,SAAS,CAAC,CAAA;AAAA,IAC/C,CAAC,MAAsC,OAAmB,KAAA;AACxD,MAAA,MAAMC,UAA8B,EAAC;AACrC,MAAQ,OAAA,CAAA,OAAA,CAAQ,CAAC,KAAA,EAAO,KAAU,KAAA;AAChC,QAAAA,OAAO,CAAA,IAAA,CAAK,KAAK,CAAC,CAAI,GAAA,KAAA;AAAA,OACvB,CAAA;AACD,MAAAf,cAAA,CAAKe,SAAQ,CAAC,CAAA;AAAA;AAChB,GACF;AACF;;ACXO,MAAM,YAAe,GAAA,CAC1B,OACA,EAAA,WAAA,GAAkC,EACX,KAAA;AACvB,EAAA,MAAM,MAAS,GAAAD,wBAAA;AAAA,IACb,WAAA;AAAA,IACA,GAAG;AAAA,GACH,CAAA,CAAC,CAAsB,EAAA,QAAA,EAAA,GAAa,OAAY,KAAA;AAChD,IAAAd,cAAA,CAAK,OAAQ,CAAA,IAAA,CAAK,QAAQ,CAAA,EAAG,CAAC,CAAA;AAAA,GAC/B,CAAA;AAED,EAAO,OAAA,MAAA;AACT;;ACZO,MAAM,aAAgB,GAAA,CAC3B,UACA,EAAA,QAAA,EACA,WAA+B,EAE/B,KAAAc,wBAAA;AAAA,EACE,UAAA;AAAA,EACA,QAAA;AAAA,EACA;AACF,CAAA,CAAE,CAAC,CAAA,EAAuB,OAAS,EAAA,KAAA,EAAO,KAAU,KAAA;AAClD,EAAKd,cAAA,CAAA,IAAI,OAAO,OAAS,EAAA,KAAK,EAAE,IAAK,CAAA,KAAK,GAAG,CAAC,CAAA;AAChD,CAAC;;ACII,MAAM,MAAS,GAAA,CACpB,MACA,EAAA,SAAA,EACA,UACG,KAAA;AACH,EAAA,MAAM,YAAYD,kBAAY,EAAA;AAE9B,EAAAH,eAAA;AAAA,IACE,SAAA;AAAA,IACAE,gBAAA,CAAO,CAAC,MAAW,KAAA;AACjB,MAAAF,eAAA;AAAA,QACEoB,mBAAU,CAAA;AAAA,UACRC,qBAAA,CAAY,QAAQ,UAAe,CAAA;AAAA,UACnC,GAAG,MAAO,CAAA,GAAA;AAAA,YAAI,CAAC,CACb,KAAAA,qBAAA;AAAA,cACEb,wBAAA;AAAA,gBACE,aAAc,CAAA,CAAA,CAAE,OAAS,EAAA,MAAA,EAAQ,EAAE,YAAY,CAAA;AAAA,gBAC/C;AAAA,eACF;AAAA,cACA,CAAE,CAAA;AAAA;AACJ;AACF,SACD,CAAA;AAAA,QACDN,iBAAO,SAAS;AAAA,OAClB;AAAA,KACD;AAAA,GACH;AAEA,EAAA,OAAO,SAAU,CAAA,KAAA;AACnB;;AC5CO,MAAM,iBAAiB,CAC5B,QAAA,EACA,UACA,EAAA,eAAA,EACA,WAA+B,EAE/B,KAAAgB,wBAAA;AAAA,EACE,UAAA;AAAA,EACA,QAAA;AAAA,EACA,eAAA;AAAA,EACA;AACF,CAAA,CAAE,CAAC,CAAA,EAAsB,OAAS,EAAA,KAAA,EAAO,cAAc,KAAU,KAAA;AAC/D,EAAKd,cAAA,CAAA,MAAA,CAAO,KAAK,CAAA,CAAE,OAAQ,CAAA,IAAI,MAAO,CAAA,OAAA,EAAS,KAAK,CAAA,EAAG,YAAY,CAAA,EAAG,CAAC,CAAA;AACzE,CAAC;;ACbI,MAAM,WAAc,GAAA,CACzB,UACA,EAAA,QAAA,EACA,WAA+B,EAE/B,KAAAc,wBAAA;AAAA,EACE,UAAA;AAAA,EACA,QAAA;AAAA,EACA;AACF,CAAA,CAAE,CAAC,CAAA,EAAwB,OAAS,EAAA,KAAA,EAAO,KAAU,KAAA;AACnD,EAAA,MAAM,SAAS,IAAI,MAAA,CAAO,SAAS,KAAK,CAAA,CAAE,KAAK,KAAK,CAAA;AACpD,EAAKd,cAAA,CAAA,MAAA,IAAU,EAAC,EAAG,CAAC,CAAA;AACtB,CAAC;;ACZI,MAAM,GAAM,GAAA,CACjB,OACA,EAAA,MAAA,EACA,QACG,KAAA;AACH,EAAAJ,eAAA;AAAA,IACEC,mBAAU,CAAA,CAAC,OAAS,EAAA,MAAA,EAAQ,QAAQ,CAAC,CAAA;AAAA,IACrCC,iBAAO,CAAC,CAAC,IAAM,EAAA,GAAA,EAAKF,MAAK,CAAM,KAAA;AAC7B,MAAC,IAAA,CAAiC,GAAG,CAAIA,GAAAA,MAAAA;AAAA,KAC1C;AAAA,GACH;AAEA,EAAO,OAAA,OAAA;AACT;;ACda,MAAA,GAAA,GAAM,CACjB,MAAA,EACA,MACG,KAAA;AACH,EAAO,OAAAkB,wBAAA;AAAA,IACL,MAAA;AAAA,IACA;AAAA,GACA,CAAA,CAAC,KAA2B,EAAA,GAAA,EAAK,GAAQ,KAAA;AACzC,IAAKd,cAAA,CAAA,GAAA,IAAO,KAAK,KAAK,CAAA;AAAA,GACvB,CAAA;AACH;;ACVa,MAAA,EAAA,GAAK,CAChB,MAAA,EACA,MACG,KAAA;AACH,EAAO,OAAAc,wBAAA;AAAA,IACL,MAAA;AAAA,IACA;AAAA,GACA,CAAA,CAAC,KAA2B,EAAA,GAAA,EAAK,GAAQ,KAAA;AACzC,IAAKd,cAAA,CAAA,GAAA,IAAO,KAAK,KAAK,CAAA;AAAA,GACvB,CAAA;AACH;;ACVa,MAAA,GAAA,GAAM,CAAC,OAAiC,KAAA;AACnD,EAAA,OAAO,CAAC,CAA0B,KAAA;AAChC,IAAAJ,eAAA;AAAA,MACE,OAAA;AAAA,MACAK,mBAAA,CAAU,CAAG,EAAA,CAAC,IAAS,KAAA;AACrB,QAAKD,cAAA,CAAA,CAAC,MAAM,CAAC,CAAA;AAAA,OACd;AAAA,KACH;AAAA,GACF;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -70,6 +70,18 @@ declare const lock: <T>(baseSrc: SourceType<T>, lockSrc: SourceType<unknown>) =>
|
|
|
70
70
|
*/
|
|
71
71
|
declare const moment: <T>(baseSrc: SourceType<T>, defaultValue?: T) => SourceType<T>;
|
|
72
72
|
|
|
73
|
+
/**
|
|
74
|
+
* Helps to represent only last fresh value of some source, refreshing controls by shotSrc
|
|
75
|
+
* https://silentium-lab.github.io/silentium-components/#/behaviors/shot
|
|
76
|
+
*/
|
|
77
|
+
declare const shot: <T>(baseSrc: SourceType<T>, shotSrc: SourceType<unknown>) => silentium.SourceExecutorType<T>;
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Represents source what was changed at least once
|
|
81
|
+
* https://silentium-lab.github.io/silentium-components/#/behaviors/only-changed
|
|
82
|
+
*/
|
|
83
|
+
declare const onlyChanged: <T>(baseSrc: SourceType<T>) => silentium.SourceExecutorType<T>;
|
|
84
|
+
|
|
73
85
|
/**
|
|
74
86
|
* https://silentium-lab.github.io/silentium-components/#/structures/hash-table
|
|
75
87
|
*/
|
|
@@ -137,5 +149,5 @@ declare const or: (oneSrc: SourceType<boolean>, twoSrc: SourceType<boolean>) =>
|
|
|
137
149
|
*/
|
|
138
150
|
declare const not: (baseSrc: SourceType<boolean>) => (g: GuestType<boolean>) => void;
|
|
139
151
|
|
|
140
|
-
export { and, branch, concatenated, deadline, deferred, dirty, fork, groupActiveClass, hashTable, loading, lock, memo, moment, not, or, path, record, regexpMatch, regexpMatched, regexpReplaced, router, set, tick };
|
|
152
|
+
export { and, branch, concatenated, deadline, deferred, dirty, fork, groupActiveClass, hashTable, loading, lock, memo, moment, not, onlyChanged, or, path, record, regexpMatch, regexpMatched, regexpReplaced, router, set, shot, tick };
|
|
141
153
|
export type { Route };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { value, sourceAll, patron, sourceOf, patronOnce, guestCast, give, subSourceMany, sourceFiltered, subSource, sourceResettable, removePatronFromPools, guestDisposable, destroy, guestSync, sourceCombined, sourceAny, sourceChain } from 'silentium';
|
|
1
|
+
import { value, sourceAll, patron, sourceOf, patronOnce, guestCast, give, subSourceMany, sourceFiltered, subSource, sourceResettable, removePatronFromPools, guestDisposable, destroy, guestSync, sourceSync, source, sourceCombined, sourceAny, sourceChain } from 'silentium';
|
|
2
2
|
|
|
3
3
|
const groupActiveClass = (activeClassSrc, activeElementSrc, groupElementsSrc) => {
|
|
4
4
|
value(
|
|
@@ -254,6 +254,38 @@ const moment = (baseSrc, defaultValue) => {
|
|
|
254
254
|
};
|
|
255
255
|
};
|
|
256
256
|
|
|
257
|
+
const shot = (baseSrc, shotSrc) => {
|
|
258
|
+
const resetResult = sourceOf();
|
|
259
|
+
const result = sourceOf();
|
|
260
|
+
const baseSrcSync = sourceSync(baseSrc, null);
|
|
261
|
+
value(
|
|
262
|
+
shotSrc,
|
|
263
|
+
patron(() => {
|
|
264
|
+
if (baseSrcSync.syncValue() !== null) {
|
|
265
|
+
result.give(baseSrcSync.syncValue());
|
|
266
|
+
resetResult.give(1);
|
|
267
|
+
}
|
|
268
|
+
})
|
|
269
|
+
);
|
|
270
|
+
return sourceResettable(result, resetResult).value;
|
|
271
|
+
};
|
|
272
|
+
|
|
273
|
+
const onlyChanged = (baseSrc) => {
|
|
274
|
+
let firstValue = false;
|
|
275
|
+
return source((g) => {
|
|
276
|
+
value(
|
|
277
|
+
baseSrc,
|
|
278
|
+
guestCast(g, (v) => {
|
|
279
|
+
if (firstValue === false) {
|
|
280
|
+
firstValue = true;
|
|
281
|
+
} else {
|
|
282
|
+
give(v, g);
|
|
283
|
+
}
|
|
284
|
+
})
|
|
285
|
+
);
|
|
286
|
+
});
|
|
287
|
+
};
|
|
288
|
+
|
|
257
289
|
const hashTable = (baseSource) => {
|
|
258
290
|
const result = sourceOf({});
|
|
259
291
|
subSource(result, baseSource);
|
|
@@ -381,5 +413,5 @@ const not = (baseSrc) => {
|
|
|
381
413
|
};
|
|
382
414
|
};
|
|
383
415
|
|
|
384
|
-
export { and, branch, concatenated, deadline, deferred, dirty, fork, groupActiveClass, hashTable, loading, lock, memo, moment, not, or, path, record, regexpMatch, regexpMatched, regexpReplaced, router, set, tick };
|
|
416
|
+
export { and, branch, concatenated, deadline, deferred, dirty, fork, groupActiveClass, hashTable, loading, lock, memo, moment, not, onlyChanged, or, path, record, regexpMatch, regexpMatched, regexpReplaced, router, set, shot, tick };
|
|
385
417
|
//# sourceMappingURL=silentium-components.js.map
|
|
@@ -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/structures/HashTable.ts","../src/structures/Record.ts","../src/strings/Concatenated.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 { patron, sourceAll, SourceType, 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 patron(([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 { patron, sourceOf, SourceType, subSourceMany, value } 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 patron(() => {\n loadingSrc.give(true);\n }),\n );\n value(\n loadingFinishSource,\n patron(() => {\n loadingSrc.give(false);\n }),\n );\n\n return loadingSrc.value;\n};\n","import {\n give,\n patron,\n sourceAll,\n sourceOf,\n SourceType,\n subSourceMany,\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 patron(([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 patron,\n sourceOf,\n SourceType,\n subSource,\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 patron((v) => {\n lastValue = v;\n if (!microtaskScheduled) {\n scheduleMicrotask();\n }\n }),\n );\n\n return result;\n};\n","import {\n sourceOf,\n SourceType,\n sourceResettable,\n value,\n patron,\n removePatronFromPools,\n GuestObjectType,\n patronOnce,\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 patron((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 patron,\n sourceOf,\n sourceResettable,\n SourceType,\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 value(\n triggerSrc,\n patron(() => {\n value(baseSrc, result);\n }),\n );\n\n return result.value;\n};\n","import { patron, patronOnce, sourceOf, SourceType, value } 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 result = sourceOf<Then | Else>();\n\n value(\n conditionSrc,\n patron((v) => {\n if (v === true) {\n value(\n thenSrc,\n patronOnce((v) => {\n result.give(v);\n }),\n );\n } else if (elseSrc !== undefined) {\n value(\n elseSrc,\n patronOnce((v) => {\n result.give(v);\n }),\n );\n }\n }),\n );\n\n return result.value;\n};\n","import { patron, sourceOf, SourceType, 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 patron((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 patron,\n patronOnce,\n sourceOf,\n sourceResettable,\n SourceType,\n subSource,\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, patron(guestDisposable(result.give, () => locked)));\n\n value(\n lockSrc,\n patronOnce(() => {\n locked = true;\n destroy([result]);\n }),\n );\n\n return resultResettable.value;\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 { patron, sourceOf, SourceType, subSource, value } 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 patron(([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 patron,\n sourceAny,\n sourceChain,\n sourceFiltered,\n sourceOf,\n SourceType,\n value,\n} from \"silentium\";\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 value(\n routesSrc,\n patron((routes) => {\n value(\n sourceAny([\n sourceChain(urlSrc, defaultSrc as T),\n ...routes.map((r) =>\n sourceChain(\n sourceFiltered(\n regexpMatched(r.pattern, urlSrc, r.patternFlags),\n Boolean,\n ),\n r.template,\n ),\n ),\n ]),\n patron(resultSrc),\n );\n }),\n );\n\n return resultSrc.value;\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 { patron, sourceAll, SourceType, 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 patron(([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","v","record"],"mappings":";;AAOO,MAAM,gBAAmB,GAAA,CAC9B,cACA,EAAA,gBAAA,EACA,gBACG,KAAA;AACH,EAAA,KAAA;AAAA,IACE,SAAU,CAAA,CAAC,cAAgB,EAAA,gBAAA,EAAkB,gBAAgB,CAAC,CAAA;AAAA,IAC9D,OAAO,CAAC,CAAC,WAAa,EAAA,aAAA,EAAe,aAAa,CAAM,KAAA;AACtD,MAAc,aAAA,CAAA,OAAA,CAAQ,CAAC,EAAO,KAAA;AAC5B,QAAA,IAAI,GAAG,SAAW,EAAA;AAChB,UAAG,EAAA,CAAA,SAAA,CAAU,OAAO,WAAW,CAAA;AAAA;AACjC,OACD,CAAA;AACD,MAAc,aAAA,CAAA,SAAA,CAAU,IAAI,WAAW,CAAA;AAAA,KACxC;AAAA,GACH;AAEA,EAAO,OAAA,gBAAA;AACT;;ACRa,MAAA,KAAA,GAAQ,CACnB,gBAAA,EACA,gBAAmB,GAAA,KAAA,EACnB,aAAuB,EAAC,EACxB,WAAwB,GAAA,EACa,KAAA;AACrC,EAAA,MAAM,eAAe,QAAS,EAAA;AAC9B,EAAA,MAAM,GAAM,GAAA,SAAA,CAAU,CAAC,YAAA,EAAc,gBAAgB,CAAC,CAAA;AAEtD,EAAA,MAAM,MAAS,GAAA;AAAA,IACb,KAAKA,MAAU,EAAA;AACb,MAAA,IAAA,CAAK,KAAK,KAAM,CAAA,IAAA,CAAK,UAAUA,MAAK,CAAC,GAAG,YAAY,CAAA;AACpD,MAAO,OAAA,MAAA;AAAA,KACT;AAAA,IACA,MAAM,KAA8B,EAAA;AAClC,MAAA,KAAA;AAAA,QACE,GAAA;AAAA,QACA,UAAU,KAAO,EAAA,CAAC,CAAC,SAAA,EAAW,IAAI,CAAM,KAAA;AACtC,UAAA,IAAI,CAAC,SAAW,EAAA;AACd,YAAA;AAAA;AAGF,UAAA,IAAA;AAAA,YACE,MAAO,CAAA,WAAA;AAAA,cACL,MAAA,CAAO,QAAQ,SAAS,CAAA,CAAE,OAAO,CAAC,CAAC,GAAKA,EAAAA,MAAK,CAAM,KAAA;AACjD,gBAAI,IAAA,UAAA,CAAW,QAAS,CAAA,GAAG,CAAG,EAAA;AAC5B,kBAAO,OAAA,IAAA;AAAA;AAET,gBAAI,IAAA,WAAA,CAAY,QAAS,CAAA,GAAG,CAAG,EAAA;AAC7B,kBAAO,OAAA,KAAA;AAAA;AAET,gBAAOA,OAAAA,MAAAA,KAAW,KAAa,GAAG,CAAA;AAAA,eACnC;AAAA,aACH;AAAA,YACA;AAAA,WACF;AAAA,SACD;AAAA,OACH;AACA,MAAO,OAAA,MAAA;AAAA;AACT,GACF;AAEA,EAAA,IAAI,gBAAkB,EAAA;AACpB,IAAM,KAAA,CAAA,gBAAA,EAAkB,UAAW,CAAA,MAAM,CAAC,CAAA;AAAA;AAG5C,EAAO,OAAA,MAAA;AACT;;AC3Da,MAAA,OAAA,GAAU,CACrB,kBAAA,EACA,mBACG,KAAA;AACH,EAAA,MAAM,aAAa,QAAkB,EAAA;AACrC,EAAA,aAAA,CAAc,UAAY,EAAA,CAAC,kBAAoB,EAAA,mBAAmB,CAAC,CAAA;AAEnE,EAAA,KAAA;AAAA,IACE,kBAAA;AAAA,IACA,OAAO,MAAM;AACX,MAAA,UAAA,CAAW,KAAK,IAAI,CAAA;AAAA,KACrB;AAAA,GACH;AACA,EAAA,KAAA;AAAA,IACE,mBAAA;AAAA,IACA,OAAO,MAAM;AACX,MAAA,UAAA,CAAW,KAAK,KAAK,CAAA;AAAA,KACtB;AAAA,GACH;AAEA,EAAA,OAAO,UAAW,CAAA,KAAA;AACpB;;ACZa,MAAA,IAAA,GAAO,CAIlB,OAAA,EACA,MACG,KAAA;AACH,EAAA,MAAM,UAAU,QAAkB,EAAA;AAClC,EAAA,aAAA,CAAc,OAAS,EAAA,CAAC,OAAS,EAAA,MAAM,CAAC,CAAA;AAExC,EAAA,KAAA;AAAA,IACE,SAAU,CAAA,CAAC,OAAS,EAAA,MAAM,CAAC,CAAA;AAAA,IAC3B,MAAO,CAAA,CAAC,CAAC,IAAA,EAAM,GAAG,CAAM,KAAA;AACtB,MAAM,MAAA,SAAA,GAAY,GAAI,CAAA,KAAA,CAAM,GAAG,CAAA;AAC/B,MAAA,IAAIA,MAAiB,GAAA,IAAA;AACrB,MAAU,SAAA,CAAA,OAAA,CAAQ,CAAC,QAAa,KAAA;AAC9B,QAAAA,MAAAA,GAASA,OAAkC,QAAQ,CAAA;AAAA,OACpD,CAAA;AAED,MAAIA,IAAAA,MAAAA,KAAU,MAAaA,IAAAA,MAAAA,KAAU,IAAM,EAAA;AACzC,QAAA,IAAA,CAAKA,QAAO,OAAO,CAAA;AAAA;AACrB,KACD;AAAA,GACH;AAEA,EAAA,OAAO,OAAQ,CAAA,KAAA;AACjB;;AC3BO,MAAM,QAAW,GAAA,CACtB,KACA,EAAA,OAAA,EACA,UACG,KAAA;AACH,EAAA,IAAI,SAAqB,GAAA,IAAA;AACzB,EAAA,OAAO,CAAC,CAAoB,KAAA;AAC1B,IAAA,KAAA;AAAA,MACE,UAAA;AAAA,MACA,SAAA,CAAU,CAAG,EAAA,CAAC,OAAY,KAAA;AACxB,QAAA,IAAI,SAAW,EAAA;AACb,UAAA,YAAA,CAAa,SAAmB,CAAA;AAAA;AAGlC,QAAA,IAAI,cAAiB,GAAA,KAAA;AAErB,QAAA,SAAA,GAAY,WAAW,MAAM;AAC3B,UAAA,IAAI,cAAgB,EAAA;AAClB,YAAA;AAAA;AAEF,UAAiB,cAAA,GAAA,IAAA;AACjB,UAAA,IAAA,CAAK,IAAI,KAAA,CAAM,mCAAmC,CAAA,EAAG,KAAK,CAAA;AAAA,WACzD,OAAO,CAAA;AAEV,QAAA,KAAA;AAAA,UACE,cAAe,CAAA,OAAA,EAAS,MAAM,CAAC,cAAc,CAAA;AAAA,UAC7C;AAAA,SACF;AAEA,QAAA,KAAA;AAAA,UACE,OAAA;AAAA,UACA,WAAW,MAAM;AACf,YAAiB,cAAA,GAAA,IAAA;AAAA,WAClB;AAAA,SACH;AAAA,OACD;AAAA,KACH;AAAA,GACF;AACF;;ACtCa,MAAA,IAAA,GAAO,CAAI,OAA2B,KAAA;AACjD,EAAA,MAAM,SAAS,QAAY,EAAA;AAC3B,EAAA,SAAA,CAAU,QAAQ,OAAO,CAAA;AAEzB,EAAA,IAAI,kBAAqB,GAAA,KAAA;AACzB,EAAA,IAAI,SAAsB,GAAA,IAAA;AAE1B,EAAA,MAAM,oBAAoB,MAAM;AAC9B,IAAqB,kBAAA,GAAA,IAAA;AACrB,IAAA,cAAA,CAAe,MAAM;AACnB,MAAqB,kBAAA,GAAA,KAAA;AACrB,MAAA,IAAI,cAAc,IAAM,EAAA;AACtB,QAAA,IAAA,CAAK,WAAW,MAAM,CAAA;AACtB,QAAY,SAAA,GAAA,IAAA;AAAA;AACd,KACD,CAAA;AAAA,GACH;AAEA,EAAA,KAAA;AAAA,IACE,OAAA;AAAA,IACA,MAAA,CAAO,CAAC,CAAM,KAAA;AACZ,MAAY,SAAA,GAAA,CAAA;AACZ,MAAA,IAAI,CAAC,kBAAoB,EAAA;AACvB,QAAkB,iBAAA,EAAA;AAAA;AACpB,KACD;AAAA,GACH;AAEA,EAAO,OAAA,MAAA;AACT;;AC5BO,MAAM,IAAO,GAAA,CAClB,YACA,EAAA,SAAA,EACA,SACA,OAC4B,KAAA;AAC5B,EAAA,MAAM,SAAS,QAAsB,EAAA;AACrC,EAAA,MAAM,QAAQ,QAAS,EAAA;AACvB,EAAM,MAAA,gBAAA,GAAmB,gBAAiB,CAAA,MAAA,EAAQ,KAAK,CAAA;AACvD,EAAI,IAAA,UAAA;AACJ,EAAI,IAAA,UAAA;AAEJ,EAAA,KAAA;AAAA,IACE,YAAA;AAAA,IACA,MAAA,CAAO,CAAC,CAAM,KAAA;AACZ,MAAA,KAAA,CAAM,KAAK,CAAC,CAAA;AACZ,MAAA,IAAI,UAAY,EAAA;AACd,QAAA,qBAAA,CAAsB,UAAU,CAAA;AAAA;AAElC,MAAA,IAAI,UAAY,EAAA;AACd,QAAA,qBAAA,CAAsB,UAAU,CAAA;AAAA;AAElC,MAAI,IAAA,SAAA,CAAU,CAAC,CAAG,EAAA;AAChB,QAAA,UAAA,GAAa,WAAW,MAAM,CAAA;AAC9B,QAAA,KAAA,CAAM,SAAS,UAAU,CAAA;AAAA,iBAChB,OAAS,EAAA;AAClB,QAAA,UAAA,GAAa,WAAW,MAAM,CAAA;AAC9B,QAAA,KAAA,CAAM,SAAS,UAAU,CAAA;AAAA;AAC3B,KACD;AAAA,GACH;AAEA,EAAO,OAAA,gBAAA;AACT;;ACnCa,MAAA,QAAA,GAAW,CACtB,OAAA,EACA,UACG,KAAA;AACH,EAAA,MAAM,MAAS,GAAA,gBAAA,CAAoB,QAAS,EAAA,EAAG,OAAqB,CAAA;AAEpE,EAAA,KAAA;AAAA,IACE,UAAA;AAAA,IACA,OAAO,MAAM;AACX,MAAA,KAAA,CAAM,SAAS,MAAM,CAAA;AAAA,KACtB;AAAA,GACH;AAEA,EAAA,OAAO,MAAO,CAAA,KAAA;AAChB;;ACrBO,MAAM,MAAS,GAAA,CACpB,YACA,EAAA,OAAA,EACA,OAC4B,KAAA;AAC5B,EAAA,MAAM,SAAS,QAAsB,EAAA;AAErC,EAAA,KAAA;AAAA,IACE,YAAA;AAAA,IACA,MAAA,CAAO,CAAC,CAAM,KAAA;AACZ,MAAA,IAAI,MAAM,IAAM,EAAA;AACd,QAAA,KAAA;AAAA,UACE,OAAA;AAAA,UACA,UAAA,CAAW,CAACC,EAAM,KAAA;AAChB,YAAA,MAAA,CAAO,KAAKA,EAAC,CAAA;AAAA,WACd;AAAA,SACH;AAAA,OACF,MAAA,IAAW,YAAY,MAAW,EAAA;AAChC,QAAA,KAAA;AAAA,UACE,OAAA;AAAA,UACA,UAAA,CAAW,CAACA,EAAM,KAAA;AAChB,YAAA,MAAA,CAAO,KAAKA,EAAC,CAAA;AAAA,WACd;AAAA,SACH;AAAA;AACF,KACD;AAAA,GACH;AAEA,EAAA,OAAO,MAAO,CAAA,KAAA;AAChB;;AC5Ba,MAAA,IAAA,GAAO,CAAI,OAA2B,KAAA;AACjD,EAAA,MAAM,SAAS,QAAY,EAAA;AAC3B,EAAA,IAAI,SAAsB,GAAA,IAAA;AAE1B,EAAA,KAAA;AAAA,IACE,OAAA;AAAA,IACA,MAAA,CAAO,CAAC,CAAM,KAAA;AACZ,MAAA,IAAI,MAAM,SAAW,EAAA;AACnB,QAAA,MAAA,CAAO,KAAK,CAAC,CAAA;AACb,QAAY,SAAA,GAAA,CAAA;AAAA;AACd,KACD;AAAA,GACH;AAEA,EAAA,OAAO,MAAO,CAAA,KAAA;AAChB;;ACNa,MAAA,IAAA,GAAO,CAClB,OAAA,EACA,OACG,KAAA;AACH,EAAA,MAAM,SAAS,QAAS,EAAA;AACxB,EAAM,MAAA,gBAAA,GAAmB,gBAAiB,CAAA,MAAA,EAAQ,OAAO,CAAA;AACzD,EAAA,IAAI,MAAS,GAAA,KAAA;AACb,EAAA,SAAA,CAAU,QAAQ,OAAO,CAAA;AAEzB,EAAM,KAAA,CAAA,OAAA,EAAS,OAAO,eAAgB,CAAA,MAAA,CAAO,MAAM,MAAM,MAAM,CAAC,CAAC,CAAA;AAEjE,EAAA,KAAA;AAAA,IACE,OAAA;AAAA,IACA,WAAW,MAAM;AACf,MAAS,MAAA,GAAA,IAAA;AACT,MAAQ,OAAA,CAAA,CAAC,MAAM,CAAC,CAAA;AAAA,KACjB;AAAA,GACH;AAEA,EAAA,OAAO,gBAAiB,CAAA,KAAA;AAC1B;;AC7Ba,MAAA,MAAA,GAAS,CACpB,OAAA,EACA,YACkB,KAAA;AAClB,EAAM,MAAA,KAAA,GAAQ,UAAU,YAAY,CAAA;AACpC,EAAA,KAAA,CAAM,SAAS,KAAK,CAAA;AAEpB,EAAA,OAAO,CAAC,CAAoB,KAAA;AAC1B,IAAK,IAAA,CAAA,KAAA,CAAM,KAAM,EAAA,EAAG,CAAC,CAAA;AAAA,GACvB;AACF;;ACXa,MAAA,SAAA,GAAY,CAAC,UAA8C,KAAA;AACtE,EAAM,MAAA,MAAA,GAAS,QAAkC,CAAA,EAAE,CAAA;AACnD,EAAA,SAAA,CAAU,QAAQ,UAAU,CAAA;AAE5B,EAAA,KAAA;AAAA,IACE,UAAA;AAAA,IACA,MAAO,CAAA,CAAC,CAAC,GAAA,EAAKD,MAAK,CAAM,KAAA;AACvB,MAAO,MAAA,CAAA,KAAA,CAAM,CAAC,UAAe,KAAA;AAC3B,QAAA,UAAA,CAAW,GAAG,CAAIA,GAAAA,MAAAA;AAAA,OACnB,CAAA;AAAA,KACF;AAAA,GACH;AAEA,EAAA,OAAO,MAAO,CAAA,KAAA;AAChB;;ACba,MAAA,MAAA,GAAS,CAAC,SAA0C,KAAA;AAC/D,EAAM,MAAA,IAAA,GAAO,MAAO,CAAA,IAAA,CAAK,SAAS,CAAA;AAClC,EAAA,OAAO,cAAe,CAAA,GAAG,MAAO,CAAA,MAAA,CAAO,SAAS,CAAC,CAAA;AAAA,IAC/C,CAAC,MAAsC,OAAmB,KAAA;AACxD,MAAA,MAAME,UAA8B,EAAC;AACrC,MAAQ,OAAA,CAAA,OAAA,CAAQ,CAAC,KAAA,EAAO,KAAU,KAAA;AAChC,QAAAA,OAAO,CAAA,IAAA,CAAK,KAAK,CAAC,CAAI,GAAA,KAAA;AAAA,OACvB,CAAA;AACD,MAAA,IAAA,CAAKA,SAAQ,CAAC,CAAA;AAAA;AAChB,GACF;AACF;;ACXO,MAAM,YAAe,GAAA,CAC1B,OACA,EAAA,WAAA,GAAkC,EACX,KAAA;AACvB,EAAA,MAAM,MAAS,GAAA,cAAA;AAAA,IACb,WAAA;AAAA,IACA,GAAG;AAAA,GACH,CAAA,CAAC,CAAsB,EAAA,QAAA,EAAA,GAAa,OAAY,KAAA;AAChD,IAAA,IAAA,CAAK,OAAQ,CAAA,IAAA,CAAK,QAAQ,CAAA,EAAG,CAAC,CAAA;AAAA,GAC/B,CAAA;AAED,EAAO,OAAA,MAAA;AACT;;ACZO,MAAM,aAAgB,GAAA,CAC3B,UACA,EAAA,QAAA,EACA,WAA+B,EAE/B,KAAA,cAAA;AAAA,EACE,UAAA;AAAA,EACA,QAAA;AAAA,EACA;AACF,CAAA,CAAE,CAAC,CAAA,EAAuB,OAAS,EAAA,KAAA,EAAO,KAAU,KAAA;AAClD,EAAK,IAAA,CAAA,IAAI,OAAO,OAAS,EAAA,KAAK,EAAE,IAAK,CAAA,KAAK,GAAG,CAAC,CAAA;AAChD,CAAC;;ACII,MAAM,MAAS,GAAA,CACpB,MACA,EAAA,SAAA,EACA,UACG,KAAA;AACH,EAAA,MAAM,YAAY,QAAY,EAAA;AAE9B,EAAA,KAAA;AAAA,IACE,SAAA;AAAA,IACA,MAAA,CAAO,CAAC,MAAW,KAAA;AACjB,MAAA,KAAA;AAAA,QACE,SAAU,CAAA;AAAA,UACR,WAAA,CAAY,QAAQ,UAAe,CAAA;AAAA,UACnC,GAAG,MAAO,CAAA,GAAA;AAAA,YAAI,CAAC,CACb,KAAA,WAAA;AAAA,cACE,cAAA;AAAA,gBACE,aAAc,CAAA,CAAA,CAAE,OAAS,EAAA,MAAA,EAAQ,EAAE,YAAY,CAAA;AAAA,gBAC/C;AAAA,eACF;AAAA,cACA,CAAE,CAAA;AAAA;AACJ;AACF,SACD,CAAA;AAAA,QACD,OAAO,SAAS;AAAA,OAClB;AAAA,KACD;AAAA,GACH;AAEA,EAAA,OAAO,SAAU,CAAA,KAAA;AACnB;;AC5CO,MAAM,iBAAiB,CAC5B,QAAA,EACA,UACA,EAAA,eAAA,EACA,WAA+B,EAE/B,KAAA,cAAA;AAAA,EACE,UAAA;AAAA,EACA,QAAA;AAAA,EACA,eAAA;AAAA,EACA;AACF,CAAA,CAAE,CAAC,CAAA,EAAsB,OAAS,EAAA,KAAA,EAAO,cAAc,KAAU,KAAA;AAC/D,EAAK,IAAA,CAAA,MAAA,CAAO,KAAK,CAAA,CAAE,OAAQ,CAAA,IAAI,MAAO,CAAA,OAAA,EAAS,KAAK,CAAA,EAAG,YAAY,CAAA,EAAG,CAAC,CAAA;AACzE,CAAC;;ACbI,MAAM,WAAc,GAAA,CACzB,UACA,EAAA,QAAA,EACA,WAA+B,EAE/B,KAAA,cAAA;AAAA,EACE,UAAA;AAAA,EACA,QAAA;AAAA,EACA;AACF,CAAA,CAAE,CAAC,CAAA,EAAwB,OAAS,EAAA,KAAA,EAAO,KAAU,KAAA;AACnD,EAAA,MAAM,SAAS,IAAI,MAAA,CAAO,SAAS,KAAK,CAAA,CAAE,KAAK,KAAK,CAAA;AACpD,EAAK,IAAA,CAAA,MAAA,IAAU,EAAC,EAAG,CAAC,CAAA;AACtB,CAAC;;ACZI,MAAM,GAAM,GAAA,CACjB,OACA,EAAA,MAAA,EACA,QACG,KAAA;AACH,EAAA,KAAA;AAAA,IACE,SAAU,CAAA,CAAC,OAAS,EAAA,MAAA,EAAQ,QAAQ,CAAC,CAAA;AAAA,IACrC,OAAO,CAAC,CAAC,IAAM,EAAA,GAAA,EAAKF,MAAK,CAAM,KAAA;AAC7B,MAAC,IAAA,CAAiC,GAAG,CAAIA,GAAAA,MAAAA;AAAA,KAC1C;AAAA,GACH;AAEA,EAAO,OAAA,OAAA;AACT;;ACda,MAAA,GAAA,GAAM,CACjB,MAAA,EACA,MACG,KAAA;AACH,EAAO,OAAA,cAAA;AAAA,IACL,MAAA;AAAA,IACA;AAAA,GACA,CAAA,CAAC,KAA2B,EAAA,GAAA,EAAK,GAAQ,KAAA;AACzC,IAAK,IAAA,CAAA,GAAA,IAAO,KAAK,KAAK,CAAA;AAAA,GACvB,CAAA;AACH;;ACVa,MAAA,EAAA,GAAK,CAChB,MAAA,EACA,MACG,KAAA;AACH,EAAO,OAAA,cAAA;AAAA,IACL,MAAA;AAAA,IACA;AAAA,GACA,CAAA,CAAC,KAA2B,EAAA,GAAA,EAAK,GAAQ,KAAA;AACzC,IAAK,IAAA,CAAA,GAAA,IAAO,KAAK,KAAK,CAAA;AAAA,GACvB,CAAA;AACH;;ACVa,MAAA,GAAA,GAAM,CAAC,OAAiC,KAAA;AACnD,EAAA,OAAO,CAAC,CAA0B,KAAA;AAChC,IAAA,KAAA;AAAA,MACE,OAAA;AAAA,MACA,SAAA,CAAU,CAAG,EAAA,CAAC,IAAS,KAAA;AACrB,QAAK,IAAA,CAAA,CAAC,MAAM,CAAC,CAAA;AAAA,OACd;AAAA,KACH;AAAA,GACF;AACF;;;;"}
|
|
1
|
+
{"version":3,"file":"silentium-components.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/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 { patron, sourceAll, SourceType, 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 patron(([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 { patron, sourceOf, SourceType, subSourceMany, value } 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 patron(() => {\n loadingSrc.give(true);\n }),\n );\n value(\n loadingFinishSource,\n patron(() => {\n loadingSrc.give(false);\n }),\n );\n\n return loadingSrc.value;\n};\n","import {\n give,\n patron,\n sourceAll,\n sourceOf,\n SourceType,\n subSourceMany,\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 patron(([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 patron,\n sourceOf,\n SourceType,\n subSource,\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 patron((v) => {\n lastValue = v;\n if (!microtaskScheduled) {\n scheduleMicrotask();\n }\n }),\n );\n\n return result;\n};\n","import {\n sourceOf,\n SourceType,\n sourceResettable,\n value,\n patron,\n removePatronFromPools,\n GuestObjectType,\n patronOnce,\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 patron((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 patron,\n sourceOf,\n sourceResettable,\n SourceType,\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 value(\n triggerSrc,\n patron(() => {\n value(baseSrc, result);\n }),\n );\n\n return result.value;\n};\n","import { patron, patronOnce, sourceOf, SourceType, value } 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 result = sourceOf<Then | Else>();\n\n value(\n conditionSrc,\n patron((v) => {\n if (v === true) {\n value(\n thenSrc,\n patronOnce((v) => {\n result.give(v);\n }),\n );\n } else if (elseSrc !== undefined) {\n value(\n elseSrc,\n patronOnce((v) => {\n result.give(v);\n }),\n );\n }\n }),\n );\n\n return result.value;\n};\n","import { patron, sourceOf, SourceType, 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 patron((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 patron,\n patronOnce,\n sourceOf,\n sourceResettable,\n SourceType,\n subSource,\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, patron(guestDisposable(result.give, () => locked)));\n\n value(\n lockSrc,\n patronOnce(() => {\n locked = true;\n destroy([result]);\n }),\n );\n\n return resultResettable.value;\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 patron,\n sourceOf,\n sourceResettable,\n sourceSync,\n SourceType,\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>(\n baseSrc: SourceType<T>,\n shotSrc: SourceType<unknown>,\n) => {\n const resetResult = sourceOf();\n const result = sourceOf<T>();\n\n const baseSrcSync = sourceSync(baseSrc, null);\n value(\n shotSrc,\n patron(() => {\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).value;\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 { patron, sourceOf, SourceType, subSource, value } 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 patron(([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 patron,\n sourceAny,\n sourceChain,\n sourceFiltered,\n sourceOf,\n SourceType,\n value,\n} from \"silentium\";\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 value(\n routesSrc,\n patron((routes) => {\n value(\n sourceAny([\n sourceChain(urlSrc, defaultSrc as T),\n ...routes.map((r) =>\n sourceChain(\n sourceFiltered(\n regexpMatched(r.pattern, urlSrc, r.patternFlags),\n Boolean,\n ),\n r.template,\n ),\n ),\n ]),\n patron(resultSrc),\n );\n }),\n );\n\n return resultSrc.value;\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 { patron, sourceAll, SourceType, 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 patron(([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","v","record"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(e,r){"use strict";const
|
|
1
|
+
!function(e,r){"use strict";const u=(e,u,t="")=>r.sourceCombined(e,u,t)(((e,u,t,o)=>{r.give(new RegExp(u,o).test(t),e)}));e.and=(e,u)=>r.sourceCombined(e,u)(((e,u,t)=>{r.give(u&&t,e)})),e.branch=(e,u,t)=>{const o=r.sourceOf();return r.value(e,r.patron((e=>{!0===e?r.value(u,r.patronOnce((e=>{o.give(e)}))):void 0!==t&&r.value(t,r.patronOnce((e=>{o.give(e)})))}))),o.value},e.concatenated=(e,u="")=>r.sourceCombined(u,...e)(((e,u,...t)=>{r.give(t.join(u),e)})),e.deadline=(e,u,t)=>{let o=null;return n=>{r.value(t,r.guestCast(n,(t=>{o&&clearTimeout(o);let a=!1;o=setTimeout((()=>{a||(a=!0,r.give(new Error("Timeout reached in Deadline class"),e))}),t),r.value(r.sourceFiltered(u,(()=>!a)),n),r.value(u,r.patronOnce((()=>{a=!0})))})))}},e.deferred=(e,u)=>{const t=r.sourceResettable(r.sourceOf(),e);return r.value(u,r.patron((()=>{r.value(e,t)}))),t.value},e.dirty=(e,u=!1,t=[],o=[])=>{const n=r.sourceOf(),a=r.sourceAll([n,e]),s={give:e=>(r.give(JSON.parse(JSON.stringify(e)),n),s),value:e=>(r.value(a,r.guestCast(e,(([u,n])=>{u&&r.give(Object.fromEntries(Object.entries(u).filter((([e,r])=>!!t.includes(e)||!o.includes(e)&&r!==n[e]))),e)}))),s)};return u&&r.value(e,r.patronOnce(s)),s},e.fork=(e,u,t,o)=>{const n=r.sourceOf(),a=r.sourceOf(),s=r.sourceResettable(n,a);let l,c;return r.value(e,r.patron((e=>{a.give(1),l&&r.removePatronFromPools(l),c&&r.removePatronFromPools(c),u(e)?(l=r.patronOnce(n),r.value(t,l)):o&&(c=r.patronOnce(n),r.value(o,c))}))),s},e.groupActiveClass=(e,u,t)=>(r.value(r.sourceAll([e,u,t]),r.patron((([e,r,u])=>{u.forEach((r=>{r.classList&&r.classList.remove(e)})),r.classList.add(e)}))),t),e.hashTable=e=>{const u=r.sourceOf({});return r.subSource(u,e),r.value(e,r.patron((([e,r])=>{u.value((u=>{u[e]=r}))}))),u.value},e.loading=(e,u)=>{const t=r.sourceOf();return r.subSourceMany(t,[e,u]),r.value(e,r.patron((()=>{t.give(!0)}))),r.value(u,r.patron((()=>{t.give(!1)}))),t.value},e.lock=(e,u)=>{const t=r.sourceOf(),o=r.sourceResettable(t,u);let n=!1;return r.subSource(t,e),r.value(e,r.patron(r.guestDisposable(t.give,(()=>n)))),r.value(u,r.patronOnce((()=>{n=!0,r.destroy([t])}))),o.value},e.memo=e=>{const u=r.sourceOf();let t=null;return r.value(e,r.patron((e=>{e!==t&&(u.give(e),t=e)}))),u.value},e.moment=(e,u)=>{const t=r.guestSync(u);return r.value(e,t),e=>{r.give(t.value(),e)}},e.not=e=>u=>{r.value(e,r.guestCast(u,(e=>{r.give(!e,u)})))},e.onlyChanged=e=>{let u=!1;return r.source((t=>{r.value(e,r.guestCast(t,(e=>{!1===u?u=!0:r.give(e,t)})))}))},e.or=(e,u)=>r.sourceCombined(e,u)(((e,u,t)=>{r.give(u||t,e)})),e.path=(e,u)=>{const t=r.sourceOf();return r.subSourceMany(t,[e,u]),r.value(r.sourceAll([e,u]),r.patron((([e,u])=>{const o=u.split(".");let n=e;o.forEach((e=>{n=n[e]})),void 0!==n&&n!==e&&r.give(n,t)}))),t.value},e.record=e=>{const u=Object.keys(e);return r.sourceCombined(...Object.values(e))(((e,...t)=>{const o={};t.forEach(((e,r)=>{o[u[r]]=e})),r.give(o,e)}))},e.regexpMatch=(e,u,t="")=>r.sourceCombined(e,u,t)(((e,u,t,o)=>{const n=new RegExp(u,o).exec(t);r.give(n??[],e)})),e.regexpMatched=u,e.regexpReplaced=(e,u,t,o="")=>r.sourceCombined(u,e,t,o)(((e,u,t,o,n)=>{r.give(String(t).replace(new RegExp(u,n),o),e)})),e.router=(e,t,o)=>{const n=r.sourceOf();return r.value(t,r.patron((t=>{r.value(r.sourceAny([r.sourceChain(e,o),...t.map((t=>r.sourceChain(r.sourceFiltered(u(t.pattern,e,t.patternFlags),Boolean),t.template)))]),r.patron(n))}))),n.value},e.set=(e,u,t)=>(r.value(r.sourceAll([e,u,t]),r.patron((([e,r,u])=>{e[r]=u}))),e),e.shot=(e,u)=>{const t=r.sourceOf(),o=r.sourceOf(),n=r.sourceSync(e,null);return r.value(u,r.patron((()=>{null!==n.syncValue()&&(o.give(n.syncValue()),t.give(1))}))),r.sourceResettable(o,t).value},e.tick=e=>{const u=r.sourceOf();r.subSource(u,e);let t=!1,o=null;return r.value(e,r.patron((e=>{o=e,t||(t=!0,queueMicrotask((()=>{t=!1,null!==o&&(r.give(o,u),o=null)})))}))),u}}({},silentium);
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{value as e,sourceAll as t,patron as n,sourceOf as r,patronOnce as l,guestCast as
|
|
1
|
+
import{value as e,sourceAll as t,patron as n,sourceOf as r,patronOnce as l,guestCast as u,give as s,subSourceMany as c,sourceFiltered as o,subSource as a,sourceResettable as i,removePatronFromPools as v,guestDisposable as g,destroy as p,guestSync as m,sourceSync as d,source as E,sourceCombined as f,sourceAny as O,sourceChain as j}from"silentium";const x=(r,l,u)=>(e(t([r,l,u]),n((([e,t,n])=>{n.forEach((t=>{t.classList&&t.classList.remove(e)})),t.classList.add(e)}))),u),b=(n,c=!1,o=[],a=[])=>{const i=r(),v=t([i,n]),g={give:e=>(s(JSON.parse(JSON.stringify(e)),i),g),value:t=>(e(v,u(t,(([e,n])=>{e&&s(Object.fromEntries(Object.entries(e).filter((([e,t])=>!!o.includes(e)||!a.includes(e)&&t!==n[e]))),t)}))),g)};return c&&e(n,l(g)),g},h=(t,l)=>{const u=r();return c(u,[t,l]),e(t,n((()=>{u.give(!0)}))),e(l,n((()=>{u.give(!1)}))),u.value},w=(l,u)=>{const o=r();return c(o,[l,u]),e(t([l,u]),n((([e,t])=>{const n=t.split(".");let r=e;n.forEach((e=>{r=r[e]})),void 0!==r&&r!==e&&s(r,o)}))),o.value},y=(t,n,r)=>{let c=null;return a=>{e(r,u(a,(r=>{c&&clearTimeout(c);let u=!1;c=setTimeout((()=>{u||(u=!0,s(new Error("Timeout reached in Deadline class"),t))}),r),e(o(n,(()=>!u)),a),e(n,l((()=>{u=!0})))})))}},L=t=>{const l=r();a(l,t);let u=!1,c=null;return e(t,n((e=>{c=e,u||(u=!0,queueMicrotask((()=>{u=!1,null!==c&&(s(c,l),c=null)})))}))),l},R=(t,u,s,c)=>{const o=r(),a=r(),g=i(o,a);let p,m;return e(t,n((t=>{a.give(1),p&&v(p),m&&v(m),u(t)?(p=l(o),e(s,p)):c&&(m=l(o),e(c,m))}))),g},S=(t,l)=>{const u=i(r(),t);return e(l,n((()=>{e(t,u)}))),u.value},T=(t,u,s)=>{const c=r();return e(t,n((t=>{!0===t?e(u,l((e=>{c.give(e)}))):void 0!==s&&e(s,l((e=>{c.give(e)})))}))),c.value},k=t=>{const l=r();let u=null;return e(t,n((e=>{e!==u&&(l.give(e),u=e)}))),l.value},J=(t,u)=>{const s=r(),c=i(s,u);let o=!1;return a(s,t),e(t,n(g(s.give,(()=>o)))),e(u,l((()=>{o=!0,p([s])}))),c.value},N=(t,n)=>{const r=m(n);return e(t,r),e=>{s(r.value(),e)}},V=(t,l)=>{const u=r(),s=r(),c=d(t,null);return e(l,n((()=>{null!==c.syncValue()&&(s.give(c.syncValue()),u.give(1))}))),i(s,u).value},q=t=>{let n=!1;return E((r=>{e(t,u(r,(e=>{!1===n?n=!0:s(e,r)})))}))},B=t=>{const l=r({});return a(l,t),e(t,n((([e,t])=>{l.value((n=>{n[e]=t}))}))),l.value},D=e=>{const t=Object.keys(e);return f(...Object.values(e))(((e,...n)=>{const r={};n.forEach(((e,n)=>{r[t[n]]=e})),s(r,e)}))},F=(e,t="")=>f(t,...e)(((e,t,...n)=>{s(n.join(t),e)})),M=(e,t,n="")=>f(e,t,n)(((e,t,n,r)=>{s(new RegExp(t,r).test(n),e)})),z=(t,l,u)=>{const s=r();return e(l,n((r=>{e(O([j(t,u),...r.map((e=>j(o(M(e.pattern,t,e.patternFlags),Boolean),e.template)))]),n(s))}))),s.value},A=(e,t,n,r="")=>f(t,e,n,r)(((e,t,n,r,l)=>{s(String(n).replace(new RegExp(t,l),r),e)})),C=(e,t,n="")=>f(e,t,n)(((e,t,n,r)=>{const l=new RegExp(t,r).exec(n);s(l??[],e)})),G=(r,l,u)=>(e(t([r,l,u]),n((([e,t,n])=>{e[t]=n}))),r),H=(e,t)=>f(e,t)(((e,t,n)=>{s(t&&n,e)})),I=(e,t)=>f(e,t)(((e,t,n)=>{s(t||n,e)})),K=t=>n=>{e(t,u(n,(e=>{s(!e,n)})))};export{H as and,T as branch,F as concatenated,y as deadline,S as deferred,b as dirty,R as fork,x as groupActiveClass,B as hashTable,h as loading,J as lock,k as memo,N as moment,K as not,q as onlyChanged,I as or,w as path,D as record,C as regexpMatch,M as regexpMatched,A as regexpReplaced,z as router,G as set,V as shot,L 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/structures/HashTable.ts","../src/structures/Record.ts","../src/strings/Concatenated.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 { patron, sourceAll, SourceType, 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 patron(([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 { patron, sourceOf, SourceType, subSourceMany, value } 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 patron(() => {\n loadingSrc.give(true);\n }),\n );\n value(\n loadingFinishSource,\n patron(() => {\n loadingSrc.give(false);\n }),\n );\n\n return loadingSrc.value;\n};\n","import {\n give,\n patron,\n sourceAll,\n sourceOf,\n SourceType,\n subSourceMany,\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 patron(([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 patron,\n sourceOf,\n SourceType,\n subSource,\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 patron((v) => {\n lastValue = v;\n if (!microtaskScheduled) {\n scheduleMicrotask();\n }\n }),\n );\n\n return result;\n};\n","import {\n sourceOf,\n SourceType,\n sourceResettable,\n value,\n patron,\n removePatronFromPools,\n GuestObjectType,\n patronOnce,\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 patron((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 patron,\n sourceOf,\n sourceResettable,\n SourceType,\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 value(\n triggerSrc,\n patron(() => {\n value(baseSrc, result);\n }),\n );\n\n return result.value;\n};\n","import { patron, patronOnce, sourceOf, SourceType, value } 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 result = sourceOf<Then | Else>();\n\n value(\n conditionSrc,\n patron((v) => {\n if (v === true) {\n value(\n thenSrc,\n patronOnce((v) => {\n result.give(v);\n }),\n );\n } else if (elseSrc !== undefined) {\n value(\n elseSrc,\n patronOnce((v) => {\n result.give(v);\n }),\n );\n }\n }),\n );\n\n return result.value;\n};\n","import { patron, sourceOf, SourceType, 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 patron((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 patron,\n patronOnce,\n sourceOf,\n sourceResettable,\n SourceType,\n subSource,\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, patron(guestDisposable(result.give, () => locked)));\n\n value(\n lockSrc,\n patronOnce(() => {\n locked = true;\n destroy([result]);\n }),\n );\n\n return resultResettable.value;\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 { patron, sourceOf, SourceType, subSource, value } 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 patron(([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 patron,\n sourceAny,\n sourceChain,\n sourceFiltered,\n sourceOf,\n SourceType,\n value,\n} from \"silentium\";\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 value(\n routesSrc,\n patron((routes) => {\n value(\n sourceAny([\n sourceChain(urlSrc, defaultSrc as T),\n ...routes.map((r) =>\n sourceChain(\n sourceFiltered(\n regexpMatched(r.pattern, urlSrc, r.patternFlags),\n Boolean,\n ),\n r.template,\n ),\n ),\n ]),\n patron(resultSrc),\n );\n }),\n );\n\n return resultSrc.value;\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 { patron, sourceAll, SourceType, 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 patron(([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","patron","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","branch","memo","lock","lockSrc","locked","guestDisposable","destroy","moment","defaultValue","guestSync","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","resultSrc","routes","sourceAny","sourceChain","map","r","patternFlags","Boolean","template","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/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 { patron, sourceAll, SourceType, 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 patron(([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 { patron, sourceOf, SourceType, subSourceMany, value } 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 patron(() => {\n loadingSrc.give(true);\n }),\n );\n value(\n loadingFinishSource,\n patron(() => {\n loadingSrc.give(false);\n }),\n );\n\n return loadingSrc.value;\n};\n","import {\n give,\n patron,\n sourceAll,\n sourceOf,\n SourceType,\n subSourceMany,\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 patron(([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 patron,\n sourceOf,\n SourceType,\n subSource,\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 patron((v) => {\n lastValue = v;\n if (!microtaskScheduled) {\n scheduleMicrotask();\n }\n }),\n );\n\n return result;\n};\n","import {\n sourceOf,\n SourceType,\n sourceResettable,\n value,\n patron,\n removePatronFromPools,\n GuestObjectType,\n patronOnce,\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 patron((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 patron,\n sourceOf,\n sourceResettable,\n SourceType,\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 value(\n triggerSrc,\n patron(() => {\n value(baseSrc, result);\n }),\n );\n\n return result.value;\n};\n","import { patron, patronOnce, sourceOf, SourceType, value } 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 result = sourceOf<Then | Else>();\n\n value(\n conditionSrc,\n patron((v) => {\n if (v === true) {\n value(\n thenSrc,\n patronOnce((v) => {\n result.give(v);\n }),\n );\n } else if (elseSrc !== undefined) {\n value(\n elseSrc,\n patronOnce((v) => {\n result.give(v);\n }),\n );\n }\n }),\n );\n\n return result.value;\n};\n","import { patron, sourceOf, SourceType, 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 patron((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 patron,\n patronOnce,\n sourceOf,\n sourceResettable,\n SourceType,\n subSource,\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, patron(guestDisposable(result.give, () => locked)));\n\n value(\n lockSrc,\n patronOnce(() => {\n locked = true;\n destroy([result]);\n }),\n );\n\n return resultResettable.value;\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 patron,\n sourceOf,\n sourceResettable,\n sourceSync,\n SourceType,\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>(\n baseSrc: SourceType<T>,\n shotSrc: SourceType<unknown>,\n) => {\n const resetResult = sourceOf();\n const result = sourceOf<T>();\n\n const baseSrcSync = sourceSync(baseSrc, null);\n value(\n shotSrc,\n patron(() => {\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).value;\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 { patron, sourceOf, SourceType, subSource, value } 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 patron(([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 patron,\n sourceAny,\n sourceChain,\n sourceFiltered,\n sourceOf,\n SourceType,\n value,\n} from \"silentium\";\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 value(\n routesSrc,\n patron((routes) => {\n value(\n sourceAny([\n sourceChain(urlSrc, defaultSrc as T),\n ...routes.map((r) =>\n sourceChain(\n sourceFiltered(\n regexpMatched(r.pattern, urlSrc, r.patternFlags),\n Boolean,\n ),\n r.template,\n ),\n ),\n ]),\n patron(resultSrc),\n );\n }),\n );\n\n return resultSrc.value;\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 { patron, sourceAll, SourceType, 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 patron(([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","patron","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","branch","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","resultSrc","routes","sourceAny","sourceChain","map","r","patternFlags","Boolean","template","regexpReplaced","replaceValueSrc","replaceValue","String","replace","regexpMatch","exec","set","and","oneSrc","twoSrc","one","two","or","not"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { value, sourceAll, patron, sourceOf, patronOnce, guestCast, give, subSourceMany, sourceFiltered, subSource, sourceResettable, removePatronFromPools, guestDisposable, destroy, guestSync, sourceCombined, sourceAny, sourceChain } from 'silentium';
|
|
1
|
+
import { value, sourceAll, patron, sourceOf, patronOnce, guestCast, give, subSourceMany, sourceFiltered, subSource, sourceResettable, removePatronFromPools, guestDisposable, destroy, guestSync, sourceSync, source, sourceCombined, sourceAny, sourceChain } from 'silentium';
|
|
2
2
|
|
|
3
3
|
const groupActiveClass = (activeClassSrc, activeElementSrc, groupElementsSrc) => {
|
|
4
4
|
value(
|
|
@@ -254,6 +254,38 @@ const moment = (baseSrc, defaultValue) => {
|
|
|
254
254
|
};
|
|
255
255
|
};
|
|
256
256
|
|
|
257
|
+
const shot = (baseSrc, shotSrc) => {
|
|
258
|
+
const resetResult = sourceOf();
|
|
259
|
+
const result = sourceOf();
|
|
260
|
+
const baseSrcSync = sourceSync(baseSrc, null);
|
|
261
|
+
value(
|
|
262
|
+
shotSrc,
|
|
263
|
+
patron(() => {
|
|
264
|
+
if (baseSrcSync.syncValue() !== null) {
|
|
265
|
+
result.give(baseSrcSync.syncValue());
|
|
266
|
+
resetResult.give(1);
|
|
267
|
+
}
|
|
268
|
+
})
|
|
269
|
+
);
|
|
270
|
+
return sourceResettable(result, resetResult).value;
|
|
271
|
+
};
|
|
272
|
+
|
|
273
|
+
const onlyChanged = (baseSrc) => {
|
|
274
|
+
let firstValue = false;
|
|
275
|
+
return source((g) => {
|
|
276
|
+
value(
|
|
277
|
+
baseSrc,
|
|
278
|
+
guestCast(g, (v) => {
|
|
279
|
+
if (firstValue === false) {
|
|
280
|
+
firstValue = true;
|
|
281
|
+
} else {
|
|
282
|
+
give(v, g);
|
|
283
|
+
}
|
|
284
|
+
})
|
|
285
|
+
);
|
|
286
|
+
});
|
|
287
|
+
};
|
|
288
|
+
|
|
257
289
|
const hashTable = (baseSource) => {
|
|
258
290
|
const result = sourceOf({});
|
|
259
291
|
subSource(result, baseSource);
|
|
@@ -381,5 +413,5 @@ const not = (baseSrc) => {
|
|
|
381
413
|
};
|
|
382
414
|
};
|
|
383
415
|
|
|
384
|
-
export { and, branch, concatenated, deadline, deferred, dirty, fork, groupActiveClass, hashTable, loading, lock, memo, moment, not, or, path, record, regexpMatch, regexpMatched, regexpReplaced, router, set, tick };
|
|
416
|
+
export { and, branch, concatenated, deadline, deferred, dirty, fork, groupActiveClass, hashTable, loading, lock, memo, moment, not, onlyChanged, or, path, record, regexpMatch, regexpMatched, regexpReplaced, router, set, shot, tick };
|
|
385
417
|
//# sourceMappingURL=silentium-components.mjs.map
|
|
@@ -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/structures/HashTable.ts","../src/structures/Record.ts","../src/strings/Concatenated.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 { patron, sourceAll, SourceType, 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 patron(([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 { patron, sourceOf, SourceType, subSourceMany, value } 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 patron(() => {\n loadingSrc.give(true);\n }),\n );\n value(\n loadingFinishSource,\n patron(() => {\n loadingSrc.give(false);\n }),\n );\n\n return loadingSrc.value;\n};\n","import {\n give,\n patron,\n sourceAll,\n sourceOf,\n SourceType,\n subSourceMany,\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 patron(([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 patron,\n sourceOf,\n SourceType,\n subSource,\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 patron((v) => {\n lastValue = v;\n if (!microtaskScheduled) {\n scheduleMicrotask();\n }\n }),\n );\n\n return result;\n};\n","import {\n sourceOf,\n SourceType,\n sourceResettable,\n value,\n patron,\n removePatronFromPools,\n GuestObjectType,\n patronOnce,\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 patron((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 patron,\n sourceOf,\n sourceResettable,\n SourceType,\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 value(\n triggerSrc,\n patron(() => {\n value(baseSrc, result);\n }),\n );\n\n return result.value;\n};\n","import { patron, patronOnce, sourceOf, SourceType, value } 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 result = sourceOf<Then | Else>();\n\n value(\n conditionSrc,\n patron((v) => {\n if (v === true) {\n value(\n thenSrc,\n patronOnce((v) => {\n result.give(v);\n }),\n );\n } else if (elseSrc !== undefined) {\n value(\n elseSrc,\n patronOnce((v) => {\n result.give(v);\n }),\n );\n }\n }),\n );\n\n return result.value;\n};\n","import { patron, sourceOf, SourceType, 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 patron((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 patron,\n patronOnce,\n sourceOf,\n sourceResettable,\n SourceType,\n subSource,\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, patron(guestDisposable(result.give, () => locked)));\n\n value(\n lockSrc,\n patronOnce(() => {\n locked = true;\n destroy([result]);\n }),\n );\n\n return resultResettable.value;\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 { patron, sourceOf, SourceType, subSource, value } 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 patron(([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 patron,\n sourceAny,\n sourceChain,\n sourceFiltered,\n sourceOf,\n SourceType,\n value,\n} from \"silentium\";\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 value(\n routesSrc,\n patron((routes) => {\n value(\n sourceAny([\n sourceChain(urlSrc, defaultSrc as T),\n ...routes.map((r) =>\n sourceChain(\n sourceFiltered(\n regexpMatched(r.pattern, urlSrc, r.patternFlags),\n Boolean,\n ),\n r.template,\n ),\n ),\n ]),\n patron(resultSrc),\n );\n }),\n );\n\n return resultSrc.value;\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 { patron, sourceAll, SourceType, 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 patron(([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","v","record"],"mappings":";;AAOO,MAAM,gBAAmB,GAAA,CAC9B,cACA,EAAA,gBAAA,EACA,gBACG,KAAA;AACH,EAAA,KAAA;AAAA,IACE,SAAU,CAAA,CAAC,cAAgB,EAAA,gBAAA,EAAkB,gBAAgB,CAAC,CAAA;AAAA,IAC9D,OAAO,CAAC,CAAC,WAAa,EAAA,aAAA,EAAe,aAAa,CAAM,KAAA;AACtD,MAAc,aAAA,CAAA,OAAA,CAAQ,CAAC,EAAO,KAAA;AAC5B,QAAA,IAAI,GAAG,SAAW,EAAA;AAChB,UAAG,EAAA,CAAA,SAAA,CAAU,OAAO,WAAW,CAAA;AAAA;AACjC,OACD,CAAA;AACD,MAAc,aAAA,CAAA,SAAA,CAAU,IAAI,WAAW,CAAA;AAAA,KACxC;AAAA,GACH;AAEA,EAAO,OAAA,gBAAA;AACT;;ACRa,MAAA,KAAA,GAAQ,CACnB,gBAAA,EACA,gBAAmB,GAAA,KAAA,EACnB,aAAuB,EAAC,EACxB,WAAwB,GAAA,EACa,KAAA;AACrC,EAAA,MAAM,eAAe,QAAS,EAAA;AAC9B,EAAA,MAAM,GAAM,GAAA,SAAA,CAAU,CAAC,YAAA,EAAc,gBAAgB,CAAC,CAAA;AAEtD,EAAA,MAAM,MAAS,GAAA;AAAA,IACb,KAAKA,MAAU,EAAA;AACb,MAAA,IAAA,CAAK,KAAK,KAAM,CAAA,IAAA,CAAK,UAAUA,MAAK,CAAC,GAAG,YAAY,CAAA;AACpD,MAAO,OAAA,MAAA;AAAA,KACT;AAAA,IACA,MAAM,KAA8B,EAAA;AAClC,MAAA,KAAA;AAAA,QACE,GAAA;AAAA,QACA,UAAU,KAAO,EAAA,CAAC,CAAC,SAAA,EAAW,IAAI,CAAM,KAAA;AACtC,UAAA,IAAI,CAAC,SAAW,EAAA;AACd,YAAA;AAAA;AAGF,UAAA,IAAA;AAAA,YACE,MAAO,CAAA,WAAA;AAAA,cACL,MAAA,CAAO,QAAQ,SAAS,CAAA,CAAE,OAAO,CAAC,CAAC,GAAKA,EAAAA,MAAK,CAAM,KAAA;AACjD,gBAAI,IAAA,UAAA,CAAW,QAAS,CAAA,GAAG,CAAG,EAAA;AAC5B,kBAAO,OAAA,IAAA;AAAA;AAET,gBAAI,IAAA,WAAA,CAAY,QAAS,CAAA,GAAG,CAAG,EAAA;AAC7B,kBAAO,OAAA,KAAA;AAAA;AAET,gBAAOA,OAAAA,MAAAA,KAAW,KAAa,GAAG,CAAA;AAAA,eACnC;AAAA,aACH;AAAA,YACA;AAAA,WACF;AAAA,SACD;AAAA,OACH;AACA,MAAO,OAAA,MAAA;AAAA;AACT,GACF;AAEA,EAAA,IAAI,gBAAkB,EAAA;AACpB,IAAM,KAAA,CAAA,gBAAA,EAAkB,UAAW,CAAA,MAAM,CAAC,CAAA;AAAA;AAG5C,EAAO,OAAA,MAAA;AACT;;AC3Da,MAAA,OAAA,GAAU,CACrB,kBAAA,EACA,mBACG,KAAA;AACH,EAAA,MAAM,aAAa,QAAkB,EAAA;AACrC,EAAA,aAAA,CAAc,UAAY,EAAA,CAAC,kBAAoB,EAAA,mBAAmB,CAAC,CAAA;AAEnE,EAAA,KAAA;AAAA,IACE,kBAAA;AAAA,IACA,OAAO,MAAM;AACX,MAAA,UAAA,CAAW,KAAK,IAAI,CAAA;AAAA,KACrB;AAAA,GACH;AACA,EAAA,KAAA;AAAA,IACE,mBAAA;AAAA,IACA,OAAO,MAAM;AACX,MAAA,UAAA,CAAW,KAAK,KAAK,CAAA;AAAA,KACtB;AAAA,GACH;AAEA,EAAA,OAAO,UAAW,CAAA,KAAA;AACpB;;ACZa,MAAA,IAAA,GAAO,CAIlB,OAAA,EACA,MACG,KAAA;AACH,EAAA,MAAM,UAAU,QAAkB,EAAA;AAClC,EAAA,aAAA,CAAc,OAAS,EAAA,CAAC,OAAS,EAAA,MAAM,CAAC,CAAA;AAExC,EAAA,KAAA;AAAA,IACE,SAAU,CAAA,CAAC,OAAS,EAAA,MAAM,CAAC,CAAA;AAAA,IAC3B,MAAO,CAAA,CAAC,CAAC,IAAA,EAAM,GAAG,CAAM,KAAA;AACtB,MAAM,MAAA,SAAA,GAAY,GAAI,CAAA,KAAA,CAAM,GAAG,CAAA;AAC/B,MAAA,IAAIA,MAAiB,GAAA,IAAA;AACrB,MAAU,SAAA,CAAA,OAAA,CAAQ,CAAC,QAAa,KAAA;AAC9B,QAAAA,MAAAA,GAASA,OAAkC,QAAQ,CAAA;AAAA,OACpD,CAAA;AAED,MAAIA,IAAAA,MAAAA,KAAU,MAAaA,IAAAA,MAAAA,KAAU,IAAM,EAAA;AACzC,QAAA,IAAA,CAAKA,QAAO,OAAO,CAAA;AAAA;AACrB,KACD;AAAA,GACH;AAEA,EAAA,OAAO,OAAQ,CAAA,KAAA;AACjB;;AC3BO,MAAM,QAAW,GAAA,CACtB,KACA,EAAA,OAAA,EACA,UACG,KAAA;AACH,EAAA,IAAI,SAAqB,GAAA,IAAA;AACzB,EAAA,OAAO,CAAC,CAAoB,KAAA;AAC1B,IAAA,KAAA;AAAA,MACE,UAAA;AAAA,MACA,SAAA,CAAU,CAAG,EAAA,CAAC,OAAY,KAAA;AACxB,QAAA,IAAI,SAAW,EAAA;AACb,UAAA,YAAA,CAAa,SAAmB,CAAA;AAAA;AAGlC,QAAA,IAAI,cAAiB,GAAA,KAAA;AAErB,QAAA,SAAA,GAAY,WAAW,MAAM;AAC3B,UAAA,IAAI,cAAgB,EAAA;AAClB,YAAA;AAAA;AAEF,UAAiB,cAAA,GAAA,IAAA;AACjB,UAAA,IAAA,CAAK,IAAI,KAAA,CAAM,mCAAmC,CAAA,EAAG,KAAK,CAAA;AAAA,WACzD,OAAO,CAAA;AAEV,QAAA,KAAA;AAAA,UACE,cAAe,CAAA,OAAA,EAAS,MAAM,CAAC,cAAc,CAAA;AAAA,UAC7C;AAAA,SACF;AAEA,QAAA,KAAA;AAAA,UACE,OAAA;AAAA,UACA,WAAW,MAAM;AACf,YAAiB,cAAA,GAAA,IAAA;AAAA,WAClB;AAAA,SACH;AAAA,OACD;AAAA,KACH;AAAA,GACF;AACF;;ACtCa,MAAA,IAAA,GAAO,CAAI,OAA2B,KAAA;AACjD,EAAA,MAAM,SAAS,QAAY,EAAA;AAC3B,EAAA,SAAA,CAAU,QAAQ,OAAO,CAAA;AAEzB,EAAA,IAAI,kBAAqB,GAAA,KAAA;AACzB,EAAA,IAAI,SAAsB,GAAA,IAAA;AAE1B,EAAA,MAAM,oBAAoB,MAAM;AAC9B,IAAqB,kBAAA,GAAA,IAAA;AACrB,IAAA,cAAA,CAAe,MAAM;AACnB,MAAqB,kBAAA,GAAA,KAAA;AACrB,MAAA,IAAI,cAAc,IAAM,EAAA;AACtB,QAAA,IAAA,CAAK,WAAW,MAAM,CAAA;AACtB,QAAY,SAAA,GAAA,IAAA;AAAA;AACd,KACD,CAAA;AAAA,GACH;AAEA,EAAA,KAAA;AAAA,IACE,OAAA;AAAA,IACA,MAAA,CAAO,CAAC,CAAM,KAAA;AACZ,MAAY,SAAA,GAAA,CAAA;AACZ,MAAA,IAAI,CAAC,kBAAoB,EAAA;AACvB,QAAkB,iBAAA,EAAA;AAAA;AACpB,KACD;AAAA,GACH;AAEA,EAAO,OAAA,MAAA;AACT;;AC5BO,MAAM,IAAO,GAAA,CAClB,YACA,EAAA,SAAA,EACA,SACA,OAC4B,KAAA;AAC5B,EAAA,MAAM,SAAS,QAAsB,EAAA;AACrC,EAAA,MAAM,QAAQ,QAAS,EAAA;AACvB,EAAM,MAAA,gBAAA,GAAmB,gBAAiB,CAAA,MAAA,EAAQ,KAAK,CAAA;AACvD,EAAI,IAAA,UAAA;AACJ,EAAI,IAAA,UAAA;AAEJ,EAAA,KAAA;AAAA,IACE,YAAA;AAAA,IACA,MAAA,CAAO,CAAC,CAAM,KAAA;AACZ,MAAA,KAAA,CAAM,KAAK,CAAC,CAAA;AACZ,MAAA,IAAI,UAAY,EAAA;AACd,QAAA,qBAAA,CAAsB,UAAU,CAAA;AAAA;AAElC,MAAA,IAAI,UAAY,EAAA;AACd,QAAA,qBAAA,CAAsB,UAAU,CAAA;AAAA;AAElC,MAAI,IAAA,SAAA,CAAU,CAAC,CAAG,EAAA;AAChB,QAAA,UAAA,GAAa,WAAW,MAAM,CAAA;AAC9B,QAAA,KAAA,CAAM,SAAS,UAAU,CAAA;AAAA,iBAChB,OAAS,EAAA;AAClB,QAAA,UAAA,GAAa,WAAW,MAAM,CAAA;AAC9B,QAAA,KAAA,CAAM,SAAS,UAAU,CAAA;AAAA;AAC3B,KACD;AAAA,GACH;AAEA,EAAO,OAAA,gBAAA;AACT;;ACnCa,MAAA,QAAA,GAAW,CACtB,OAAA,EACA,UACG,KAAA;AACH,EAAA,MAAM,MAAS,GAAA,gBAAA,CAAoB,QAAS,EAAA,EAAG,OAAqB,CAAA;AAEpE,EAAA,KAAA;AAAA,IACE,UAAA;AAAA,IACA,OAAO,MAAM;AACX,MAAA,KAAA,CAAM,SAAS,MAAM,CAAA;AAAA,KACtB;AAAA,GACH;AAEA,EAAA,OAAO,MAAO,CAAA,KAAA;AAChB;;ACrBO,MAAM,MAAS,GAAA,CACpB,YACA,EAAA,OAAA,EACA,OAC4B,KAAA;AAC5B,EAAA,MAAM,SAAS,QAAsB,EAAA;AAErC,EAAA,KAAA;AAAA,IACE,YAAA;AAAA,IACA,MAAA,CAAO,CAAC,CAAM,KAAA;AACZ,MAAA,IAAI,MAAM,IAAM,EAAA;AACd,QAAA,KAAA;AAAA,UACE,OAAA;AAAA,UACA,UAAA,CAAW,CAACC,EAAM,KAAA;AAChB,YAAA,MAAA,CAAO,KAAKA,EAAC,CAAA;AAAA,WACd;AAAA,SACH;AAAA,OACF,MAAA,IAAW,YAAY,MAAW,EAAA;AAChC,QAAA,KAAA;AAAA,UACE,OAAA;AAAA,UACA,UAAA,CAAW,CAACA,EAAM,KAAA;AAChB,YAAA,MAAA,CAAO,KAAKA,EAAC,CAAA;AAAA,WACd;AAAA,SACH;AAAA;AACF,KACD;AAAA,GACH;AAEA,EAAA,OAAO,MAAO,CAAA,KAAA;AAChB;;AC5Ba,MAAA,IAAA,GAAO,CAAI,OAA2B,KAAA;AACjD,EAAA,MAAM,SAAS,QAAY,EAAA;AAC3B,EAAA,IAAI,SAAsB,GAAA,IAAA;AAE1B,EAAA,KAAA;AAAA,IACE,OAAA;AAAA,IACA,MAAA,CAAO,CAAC,CAAM,KAAA;AACZ,MAAA,IAAI,MAAM,SAAW,EAAA;AACnB,QAAA,MAAA,CAAO,KAAK,CAAC,CAAA;AACb,QAAY,SAAA,GAAA,CAAA;AAAA;AACd,KACD;AAAA,GACH;AAEA,EAAA,OAAO,MAAO,CAAA,KAAA;AAChB;;ACNa,MAAA,IAAA,GAAO,CAClB,OAAA,EACA,OACG,KAAA;AACH,EAAA,MAAM,SAAS,QAAS,EAAA;AACxB,EAAM,MAAA,gBAAA,GAAmB,gBAAiB,CAAA,MAAA,EAAQ,OAAO,CAAA;AACzD,EAAA,IAAI,MAAS,GAAA,KAAA;AACb,EAAA,SAAA,CAAU,QAAQ,OAAO,CAAA;AAEzB,EAAM,KAAA,CAAA,OAAA,EAAS,OAAO,eAAgB,CAAA,MAAA,CAAO,MAAM,MAAM,MAAM,CAAC,CAAC,CAAA;AAEjE,EAAA,KAAA;AAAA,IACE,OAAA;AAAA,IACA,WAAW,MAAM;AACf,MAAS,MAAA,GAAA,IAAA;AACT,MAAQ,OAAA,CAAA,CAAC,MAAM,CAAC,CAAA;AAAA,KACjB;AAAA,GACH;AAEA,EAAA,OAAO,gBAAiB,CAAA,KAAA;AAC1B;;AC7Ba,MAAA,MAAA,GAAS,CACpB,OAAA,EACA,YACkB,KAAA;AAClB,EAAM,MAAA,KAAA,GAAQ,UAAU,YAAY,CAAA;AACpC,EAAA,KAAA,CAAM,SAAS,KAAK,CAAA;AAEpB,EAAA,OAAO,CAAC,CAAoB,KAAA;AAC1B,IAAK,IAAA,CAAA,KAAA,CAAM,KAAM,EAAA,EAAG,CAAC,CAAA;AAAA,GACvB;AACF;;ACXa,MAAA,SAAA,GAAY,CAAC,UAA8C,KAAA;AACtE,EAAM,MAAA,MAAA,GAAS,QAAkC,CAAA,EAAE,CAAA;AACnD,EAAA,SAAA,CAAU,QAAQ,UAAU,CAAA;AAE5B,EAAA,KAAA;AAAA,IACE,UAAA;AAAA,IACA,MAAO,CAAA,CAAC,CAAC,GAAA,EAAKD,MAAK,CAAM,KAAA;AACvB,MAAO,MAAA,CAAA,KAAA,CAAM,CAAC,UAAe,KAAA;AAC3B,QAAA,UAAA,CAAW,GAAG,CAAIA,GAAAA,MAAAA;AAAA,OACnB,CAAA;AAAA,KACF;AAAA,GACH;AAEA,EAAA,OAAO,MAAO,CAAA,KAAA;AAChB;;ACba,MAAA,MAAA,GAAS,CAAC,SAA0C,KAAA;AAC/D,EAAM,MAAA,IAAA,GAAO,MAAO,CAAA,IAAA,CAAK,SAAS,CAAA;AAClC,EAAA,OAAO,cAAe,CAAA,GAAG,MAAO,CAAA,MAAA,CAAO,SAAS,CAAC,CAAA;AAAA,IAC/C,CAAC,MAAsC,OAAmB,KAAA;AACxD,MAAA,MAAME,UAA8B,EAAC;AACrC,MAAQ,OAAA,CAAA,OAAA,CAAQ,CAAC,KAAA,EAAO,KAAU,KAAA;AAChC,QAAAA,OAAO,CAAA,IAAA,CAAK,KAAK,CAAC,CAAI,GAAA,KAAA;AAAA,OACvB,CAAA;AACD,MAAA,IAAA,CAAKA,SAAQ,CAAC,CAAA;AAAA;AAChB,GACF;AACF;;ACXO,MAAM,YAAe,GAAA,CAC1B,OACA,EAAA,WAAA,GAAkC,EACX,KAAA;AACvB,EAAA,MAAM,MAAS,GAAA,cAAA;AAAA,IACb,WAAA;AAAA,IACA,GAAG;AAAA,GACH,CAAA,CAAC,CAAsB,EAAA,QAAA,EAAA,GAAa,OAAY,KAAA;AAChD,IAAA,IAAA,CAAK,OAAQ,CAAA,IAAA,CAAK,QAAQ,CAAA,EAAG,CAAC,CAAA;AAAA,GAC/B,CAAA;AAED,EAAO,OAAA,MAAA;AACT;;ACZO,MAAM,aAAgB,GAAA,CAC3B,UACA,EAAA,QAAA,EACA,WAA+B,EAE/B,KAAA,cAAA;AAAA,EACE,UAAA;AAAA,EACA,QAAA;AAAA,EACA;AACF,CAAA,CAAE,CAAC,CAAA,EAAuB,OAAS,EAAA,KAAA,EAAO,KAAU,KAAA;AAClD,EAAK,IAAA,CAAA,IAAI,OAAO,OAAS,EAAA,KAAK,EAAE,IAAK,CAAA,KAAK,GAAG,CAAC,CAAA;AAChD,CAAC;;ACII,MAAM,MAAS,GAAA,CACpB,MACA,EAAA,SAAA,EACA,UACG,KAAA;AACH,EAAA,MAAM,YAAY,QAAY,EAAA;AAE9B,EAAA,KAAA;AAAA,IACE,SAAA;AAAA,IACA,MAAA,CAAO,CAAC,MAAW,KAAA;AACjB,MAAA,KAAA;AAAA,QACE,SAAU,CAAA;AAAA,UACR,WAAA,CAAY,QAAQ,UAAe,CAAA;AAAA,UACnC,GAAG,MAAO,CAAA,GAAA;AAAA,YAAI,CAAC,CACb,KAAA,WAAA;AAAA,cACE,cAAA;AAAA,gBACE,aAAc,CAAA,CAAA,CAAE,OAAS,EAAA,MAAA,EAAQ,EAAE,YAAY,CAAA;AAAA,gBAC/C;AAAA,eACF;AAAA,cACA,CAAE,CAAA;AAAA;AACJ;AACF,SACD,CAAA;AAAA,QACD,OAAO,SAAS;AAAA,OAClB;AAAA,KACD;AAAA,GACH;AAEA,EAAA,OAAO,SAAU,CAAA,KAAA;AACnB;;AC5CO,MAAM,iBAAiB,CAC5B,QAAA,EACA,UACA,EAAA,eAAA,EACA,WAA+B,EAE/B,KAAA,cAAA;AAAA,EACE,UAAA;AAAA,EACA,QAAA;AAAA,EACA,eAAA;AAAA,EACA;AACF,CAAA,CAAE,CAAC,CAAA,EAAsB,OAAS,EAAA,KAAA,EAAO,cAAc,KAAU,KAAA;AAC/D,EAAK,IAAA,CAAA,MAAA,CAAO,KAAK,CAAA,CAAE,OAAQ,CAAA,IAAI,MAAO,CAAA,OAAA,EAAS,KAAK,CAAA,EAAG,YAAY,CAAA,EAAG,CAAC,CAAA;AACzE,CAAC;;ACbI,MAAM,WAAc,GAAA,CACzB,UACA,EAAA,QAAA,EACA,WAA+B,EAE/B,KAAA,cAAA;AAAA,EACE,UAAA;AAAA,EACA,QAAA;AAAA,EACA;AACF,CAAA,CAAE,CAAC,CAAA,EAAwB,OAAS,EAAA,KAAA,EAAO,KAAU,KAAA;AACnD,EAAA,MAAM,SAAS,IAAI,MAAA,CAAO,SAAS,KAAK,CAAA,CAAE,KAAK,KAAK,CAAA;AACpD,EAAK,IAAA,CAAA,MAAA,IAAU,EAAC,EAAG,CAAC,CAAA;AACtB,CAAC;;ACZI,MAAM,GAAM,GAAA,CACjB,OACA,EAAA,MAAA,EACA,QACG,KAAA;AACH,EAAA,KAAA;AAAA,IACE,SAAU,CAAA,CAAC,OAAS,EAAA,MAAA,EAAQ,QAAQ,CAAC,CAAA;AAAA,IACrC,OAAO,CAAC,CAAC,IAAM,EAAA,GAAA,EAAKF,MAAK,CAAM,KAAA;AAC7B,MAAC,IAAA,CAAiC,GAAG,CAAIA,GAAAA,MAAAA;AAAA,KAC1C;AAAA,GACH;AAEA,EAAO,OAAA,OAAA;AACT;;ACda,MAAA,GAAA,GAAM,CACjB,MAAA,EACA,MACG,KAAA;AACH,EAAO,OAAA,cAAA;AAAA,IACL,MAAA;AAAA,IACA;AAAA,GACA,CAAA,CAAC,KAA2B,EAAA,GAAA,EAAK,GAAQ,KAAA;AACzC,IAAK,IAAA,CAAA,GAAA,IAAO,KAAK,KAAK,CAAA;AAAA,GACvB,CAAA;AACH;;ACVa,MAAA,EAAA,GAAK,CAChB,MAAA,EACA,MACG,KAAA;AACH,EAAO,OAAA,cAAA;AAAA,IACL,MAAA;AAAA,IACA;AAAA,GACA,CAAA,CAAC,KAA2B,EAAA,GAAA,EAAK,GAAQ,KAAA;AACzC,IAAK,IAAA,CAAA,GAAA,IAAO,KAAK,KAAK,CAAA;AAAA,GACvB,CAAA;AACH;;ACVa,MAAA,GAAA,GAAM,CAAC,OAAiC,KAAA;AACnD,EAAA,OAAO,CAAC,CAA0B,KAAA;AAChC,IAAA,KAAA;AAAA,MACE,OAAA;AAAA,MACA,SAAA,CAAU,CAAG,EAAA,CAAC,IAAS,KAAA;AACrB,QAAK,IAAA,CAAA,CAAC,MAAM,CAAC,CAAA;AAAA,OACd;AAAA,KACH;AAAA,GACF;AACF;;;;"}
|
|
1
|
+
{"version":3,"file":"silentium-components.mjs","sources":["../src/controls/GroupActiveClass.ts","../src/behaviors/Dirty.ts","../src/behaviors/Loading.ts","../src/behaviors/Path.ts","../src/behaviors/Deadline.ts","../src/behaviors/Tick.ts","../src/behaviors/Fork.ts","../src/behaviors/Deferred.ts","../src/behaviors/Branch.ts","../src/behaviors/Memo.ts","../src/behaviors/Lock.ts","../src/behaviors/Moment.ts","../src/behaviors/Shot.ts","../src/behaviors/OnlyChanged.ts","../src/structures/HashTable.ts","../src/structures/Record.ts","../src/strings/Concatenated.ts","../src/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 { patron, sourceAll, SourceType, 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 patron(([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 { patron, sourceOf, SourceType, subSourceMany, value } 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 patron(() => {\n loadingSrc.give(true);\n }),\n );\n value(\n loadingFinishSource,\n patron(() => {\n loadingSrc.give(false);\n }),\n );\n\n return loadingSrc.value;\n};\n","import {\n give,\n patron,\n sourceAll,\n sourceOf,\n SourceType,\n subSourceMany,\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 patron(([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 patron,\n sourceOf,\n SourceType,\n subSource,\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 patron((v) => {\n lastValue = v;\n if (!microtaskScheduled) {\n scheduleMicrotask();\n }\n }),\n );\n\n return result;\n};\n","import {\n sourceOf,\n SourceType,\n sourceResettable,\n value,\n patron,\n removePatronFromPools,\n GuestObjectType,\n patronOnce,\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 patron((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 patron,\n sourceOf,\n sourceResettable,\n SourceType,\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 value(\n triggerSrc,\n patron(() => {\n value(baseSrc, result);\n }),\n );\n\n return result.value;\n};\n","import { patron, patronOnce, sourceOf, SourceType, value } 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 result = sourceOf<Then | Else>();\n\n value(\n conditionSrc,\n patron((v) => {\n if (v === true) {\n value(\n thenSrc,\n patronOnce((v) => {\n result.give(v);\n }),\n );\n } else if (elseSrc !== undefined) {\n value(\n elseSrc,\n patronOnce((v) => {\n result.give(v);\n }),\n );\n }\n }),\n );\n\n return result.value;\n};\n","import { patron, sourceOf, SourceType, 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 patron((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 patron,\n patronOnce,\n sourceOf,\n sourceResettable,\n SourceType,\n subSource,\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, patron(guestDisposable(result.give, () => locked)));\n\n value(\n lockSrc,\n patronOnce(() => {\n locked = true;\n destroy([result]);\n }),\n );\n\n return resultResettable.value;\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 patron,\n sourceOf,\n sourceResettable,\n sourceSync,\n SourceType,\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>(\n baseSrc: SourceType<T>,\n shotSrc: SourceType<unknown>,\n) => {\n const resetResult = sourceOf();\n const result = sourceOf<T>();\n\n const baseSrcSync = sourceSync(baseSrc, null);\n value(\n shotSrc,\n patron(() => {\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).value;\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 { patron, sourceOf, SourceType, subSource, value } 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 patron(([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 patron,\n sourceAny,\n sourceChain,\n sourceFiltered,\n sourceOf,\n SourceType,\n value,\n} from \"silentium\";\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 value(\n routesSrc,\n patron((routes) => {\n value(\n sourceAny([\n sourceChain(urlSrc, defaultSrc as T),\n ...routes.map((r) =>\n sourceChain(\n sourceFiltered(\n regexpMatched(r.pattern, urlSrc, r.patternFlags),\n Boolean,\n ),\n r.template,\n ),\n ),\n ]),\n patron(resultSrc),\n );\n }),\n );\n\n return resultSrc.value;\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 { patron, sourceAll, SourceType, 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 patron(([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","v","record"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { sourceOf, value } from "silentium";
|
|
2
|
+
import { onlyChanged } from "../behaviors/OnlyChanged";
|
|
3
|
+
import { expect, test, vi } from "vitest";
|
|
4
|
+
|
|
5
|
+
test("OnlyChanged.test", () => {
|
|
6
|
+
const src = sourceOf<number>(1);
|
|
7
|
+
const changedSrc = onlyChanged(src);
|
|
8
|
+
|
|
9
|
+
const g = vi.fn();
|
|
10
|
+
value(changedSrc, g);
|
|
11
|
+
expect(g).not.toBeCalled();
|
|
12
|
+
|
|
13
|
+
src.give(2);
|
|
14
|
+
|
|
15
|
+
const g2 = vi.fn();
|
|
16
|
+
value(changedSrc, g2);
|
|
17
|
+
expect(g2).toBeCalledWith(2);
|
|
18
|
+
});
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { give, guestCast, source, SourceType, value } from "silentium";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Represents source what was changed at least once
|
|
5
|
+
* https://silentium-lab.github.io/silentium-components/#/behaviors/only-changed
|
|
6
|
+
*/
|
|
7
|
+
export const onlyChanged = <T>(baseSrc: SourceType<T>) => {
|
|
8
|
+
let firstValue = false;
|
|
9
|
+
return source<T>((g) => {
|
|
10
|
+
value(
|
|
11
|
+
baseSrc,
|
|
12
|
+
guestCast<T>(g, (v) => {
|
|
13
|
+
if (firstValue === false) {
|
|
14
|
+
firstValue = true;
|
|
15
|
+
} else {
|
|
16
|
+
give(v, g);
|
|
17
|
+
}
|
|
18
|
+
}),
|
|
19
|
+
);
|
|
20
|
+
});
|
|
21
|
+
};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { patron, sourceOf, value } from "silentium";
|
|
2
|
+
import { expect, test } from "vitest";
|
|
3
|
+
import { onlyChanged } from "../behaviors/OnlyChanged";
|
|
4
|
+
import { shot } from "../behaviors/Shot";
|
|
5
|
+
|
|
6
|
+
test("Shot._onlyChanged.test", () => {
|
|
7
|
+
const baseSrc = sourceOf<number>(123);
|
|
8
|
+
const resultSrc = shot(baseSrc, onlyChanged(baseSrc));
|
|
9
|
+
|
|
10
|
+
const vals: number[] = [];
|
|
11
|
+
|
|
12
|
+
value(
|
|
13
|
+
resultSrc,
|
|
14
|
+
patron((v) => {
|
|
15
|
+
vals.push(v);
|
|
16
|
+
}),
|
|
17
|
+
);
|
|
18
|
+
|
|
19
|
+
expect(vals).toStrictEqual([]);
|
|
20
|
+
|
|
21
|
+
baseSrc.give(222);
|
|
22
|
+
|
|
23
|
+
expect(vals).toStrictEqual([222]);
|
|
24
|
+
|
|
25
|
+
baseSrc.give(222);
|
|
26
|
+
|
|
27
|
+
expect(vals).toStrictEqual([222, 222]);
|
|
28
|
+
|
|
29
|
+
baseSrc.give(333);
|
|
30
|
+
|
|
31
|
+
expect(vals).toStrictEqual([222, 222, 333]);
|
|
32
|
+
|
|
33
|
+
baseSrc.give(123);
|
|
34
|
+
|
|
35
|
+
expect(vals).toStrictEqual([222, 222, 333, 123]);
|
|
36
|
+
});
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { patron, sourceOf, sourceSync, value } from "silentium";
|
|
2
|
+
import { shot } from "../behaviors/Shot";
|
|
3
|
+
import { expect, test, vi } from "vitest";
|
|
4
|
+
|
|
5
|
+
test("Shot.test", () => {
|
|
6
|
+
const baseSrc = sourceOf();
|
|
7
|
+
const shotSrc = sourceOf();
|
|
8
|
+
const result = sourceOf();
|
|
9
|
+
const resultSync = sourceSync(result);
|
|
10
|
+
|
|
11
|
+
const shotResult = shot(baseSrc, shotSrc);
|
|
12
|
+
value(shotResult, patron(result));
|
|
13
|
+
|
|
14
|
+
baseSrc.give(1);
|
|
15
|
+
shotSrc.give(1);
|
|
16
|
+
|
|
17
|
+
expect(resultSync.syncValue()).toBe(1);
|
|
18
|
+
|
|
19
|
+
baseSrc.give(2);
|
|
20
|
+
|
|
21
|
+
expect(resultSync.syncValue()).toBe(1);
|
|
22
|
+
|
|
23
|
+
shotSrc.give(1);
|
|
24
|
+
|
|
25
|
+
expect(resultSync.syncValue()).toBe(2);
|
|
26
|
+
|
|
27
|
+
const g = vi.fn();
|
|
28
|
+
value(shotResult, g);
|
|
29
|
+
expect(g).not.toBeCalled();
|
|
30
|
+
});
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import {
|
|
2
|
+
patron,
|
|
3
|
+
sourceOf,
|
|
4
|
+
sourceResettable,
|
|
5
|
+
sourceSync,
|
|
6
|
+
SourceType,
|
|
7
|
+
value,
|
|
8
|
+
} from "silentium";
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Helps to represent only last fresh value of some source, refreshing controls by shotSrc
|
|
12
|
+
* https://silentium-lab.github.io/silentium-components/#/behaviors/shot
|
|
13
|
+
*/
|
|
14
|
+
export const shot = <T>(
|
|
15
|
+
baseSrc: SourceType<T>,
|
|
16
|
+
shotSrc: SourceType<unknown>,
|
|
17
|
+
) => {
|
|
18
|
+
const resetResult = sourceOf();
|
|
19
|
+
const result = sourceOf<T>();
|
|
20
|
+
|
|
21
|
+
const baseSrcSync = sourceSync(baseSrc, null);
|
|
22
|
+
value(
|
|
23
|
+
shotSrc,
|
|
24
|
+
patron(() => {
|
|
25
|
+
if (baseSrcSync.syncValue() !== null) {
|
|
26
|
+
result.give(baseSrcSync.syncValue() as T);
|
|
27
|
+
resetResult.give(1);
|
|
28
|
+
}
|
|
29
|
+
}),
|
|
30
|
+
);
|
|
31
|
+
|
|
32
|
+
return sourceResettable(result, resetResult).value;
|
|
33
|
+
};
|