silentium-components 0.0.8 → 0.0.9
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 +7 -0
- package/dist/silentium-components.cjs +45 -0
- package/dist/silentium-components.cjs.map +1 -1
- package/dist/silentium-components.d.ts +16 -1
- package/dist/silentium-components.js +45 -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 +45 -2
- package/dist/silentium-components.mjs.map +1 -1
- package/package.json +1 -1
- package/src/index.ts +2 -0
- package/src/strings/index.ts +1 -0
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
|
4
4
|
|
|
5
|
+
### [0.0.9](https://github.com/silentium-lab/silentium-components/compare/v0.0.8...v0.0.9) (2025-05-03)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Bug Fixes
|
|
9
|
+
|
|
10
|
+
* **main:** fix exports ([073feb2](https://github.com/silentium-lab/silentium-components/commit/073feb24cca3e391ff0990b857d67875415e48a3))
|
|
11
|
+
|
|
5
12
|
### [0.0.8](https://github.com/silentium-lab/silentium-components/compare/v0.0.7...v0.0.8) (2025-05-03)
|
|
6
13
|
|
|
7
14
|
|
|
@@ -153,6 +153,50 @@ const record = (recordSrc) => {
|
|
|
153
153
|
);
|
|
154
154
|
};
|
|
155
155
|
|
|
156
|
+
const concatenated = (sources, joinPartSrc = "") => {
|
|
157
|
+
const result = silentium.sourceCombined(
|
|
158
|
+
joinPartSrc,
|
|
159
|
+
...sources
|
|
160
|
+
)((g, joinPart, ...strings) => {
|
|
161
|
+
silentium.give(strings.join(joinPart), g);
|
|
162
|
+
});
|
|
163
|
+
return result;
|
|
164
|
+
};
|
|
165
|
+
|
|
166
|
+
const regexpMatched = (patternSrc, valueSrc, flagsSrc = "") => silentium.sourceCombined(
|
|
167
|
+
patternSrc,
|
|
168
|
+
valueSrc,
|
|
169
|
+
flagsSrc
|
|
170
|
+
)((g, pattern, value, flags) => {
|
|
171
|
+
silentium.give(new RegExp(pattern, flags).test(value), g);
|
|
172
|
+
});
|
|
173
|
+
|
|
174
|
+
const router = (urlSrc, routesSrc, defaultSrc) => {
|
|
175
|
+
const resultSrc = silentium.sourceOf();
|
|
176
|
+
silentium.value(
|
|
177
|
+
routesSrc,
|
|
178
|
+
silentium.patron((routes) => {
|
|
179
|
+
silentium.value(
|
|
180
|
+
silentium.sourceAny([
|
|
181
|
+
silentium.sourceChain(urlSrc, defaultSrc),
|
|
182
|
+
...routes.map(
|
|
183
|
+
(r) => silentium.sourceChain(
|
|
184
|
+
silentium.sourceFiltered(
|
|
185
|
+
regexpMatched(r.pattern, urlSrc, r.patternFlags),
|
|
186
|
+
Boolean
|
|
187
|
+
),
|
|
188
|
+
r.template
|
|
189
|
+
)
|
|
190
|
+
)
|
|
191
|
+
]),
|
|
192
|
+
silentium.patron(resultSrc)
|
|
193
|
+
);
|
|
194
|
+
})
|
|
195
|
+
);
|
|
196
|
+
return resultSrc.value;
|
|
197
|
+
};
|
|
198
|
+
|
|
199
|
+
exports.concatenated = concatenated;
|
|
156
200
|
exports.deadline = deadline;
|
|
157
201
|
exports.dirty = dirty;
|
|
158
202
|
exports.groupActiveClass = groupActiveClass;
|
|
@@ -160,4 +204,5 @@ exports.hashTable = hashTable;
|
|
|
160
204
|
exports.loading = loading;
|
|
161
205
|
exports.path = path;
|
|
162
206
|
exports.record = record;
|
|
207
|
+
exports.router = router;
|
|
163
208
|
//# 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/structures/HashTable.ts","../src/structures/Record.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 */\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\nexport const path = <T extends Record<string, unknown>, K extends string>(\n baseSrc: SourceType<T>,\n keySrc: SourceType<K>,\n) => {\n const pathSrc = sourceOf<T[K]>();\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 T)[keyChunk];\n });\n\n if (value !== undefined && value !== base) {\n give(value as T[K], 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\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 { 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"],"names":["value","sourceAll","patron","sourceOf","give","guestCast","patronOnce","subSourceMany","sourceFiltered","subSource","sourceCombined","record"],"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/structures/HashTable.ts","../src/structures/Record.ts","../src/strings/Concatenated.ts","../src/system/RegexpMatched.ts","../src/navigation/Router.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 */\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\nexport const path = <T extends Record<string, unknown>, K extends string>(\n baseSrc: SourceType<T>,\n keySrc: SourceType<K>,\n) => {\n const pathSrc = sourceOf<T[K]>();\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 T)[keyChunk];\n });\n\n if (value !== undefined && value !== base) {\n give(value as T[K], 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\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 { 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 */\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 */\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 */\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"],"names":["value","sourceAll","patron","sourceOf","give","guestCast","patronOnce","subSourceMany","sourceFiltered","subSource","sourceCombined","record","sourceAny","sourceChain"],"mappings":"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"}
|
|
@@ -34,4 +34,19 @@ declare const hashTable: (baseSource: SourceType<[string, unknown]>) => silentiu
|
|
|
34
34
|
*/
|
|
35
35
|
declare const record: (recordSrc: Record<string, SourceType>) => SourceType<Record<string, any>>;
|
|
36
36
|
|
|
37
|
-
|
|
37
|
+
/**
|
|
38
|
+
* Join sources of strings to one source
|
|
39
|
+
*/
|
|
40
|
+
declare const concatenated: (sources: SourceType<string>[], joinPartSrc?: SourceType<string>) => SourceType<string>;
|
|
41
|
+
|
|
42
|
+
interface Route<T> {
|
|
43
|
+
pattern: string;
|
|
44
|
+
patternFlags?: string;
|
|
45
|
+
template: T | SourceType<T>;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Router component what will return template if url matches pattern
|
|
49
|
+
*/
|
|
50
|
+
declare const router: <T = "string">(urlSrc: SourceType<string>, routesSrc: SourceType<Route<T>[]>, defaultSrc: SourceType<T>) => silentium.SourceExecutorType<T>;
|
|
51
|
+
|
|
52
|
+
export { type Route, concatenated, deadline, dirty, groupActiveClass, hashTable, loading, path, record, router };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { value, sourceAll, patron, sourceOf, patronOnce, guestCast, give, subSourceMany, sourceFiltered, subSource, sourceCombined } from 'silentium';
|
|
1
|
+
import { value, sourceAll, patron, sourceOf, patronOnce, guestCast, give, subSourceMany, sourceFiltered, subSource, sourceCombined, sourceAny, sourceChain } from 'silentium';
|
|
2
2
|
|
|
3
3
|
const groupActiveClass = (activeClassSrc, activeElementSrc, groupElementsSrc) => {
|
|
4
4
|
value(
|
|
@@ -151,5 +151,48 @@ const record = (recordSrc) => {
|
|
|
151
151
|
);
|
|
152
152
|
};
|
|
153
153
|
|
|
154
|
-
|
|
154
|
+
const concatenated = (sources, joinPartSrc = "") => {
|
|
155
|
+
const result = sourceCombined(
|
|
156
|
+
joinPartSrc,
|
|
157
|
+
...sources
|
|
158
|
+
)((g, joinPart, ...strings) => {
|
|
159
|
+
give(strings.join(joinPart), g);
|
|
160
|
+
});
|
|
161
|
+
return result;
|
|
162
|
+
};
|
|
163
|
+
|
|
164
|
+
const regexpMatched = (patternSrc, valueSrc, flagsSrc = "") => sourceCombined(
|
|
165
|
+
patternSrc,
|
|
166
|
+
valueSrc,
|
|
167
|
+
flagsSrc
|
|
168
|
+
)((g, pattern, value, flags) => {
|
|
169
|
+
give(new RegExp(pattern, flags).test(value), g);
|
|
170
|
+
});
|
|
171
|
+
|
|
172
|
+
const router = (urlSrc, routesSrc, defaultSrc) => {
|
|
173
|
+
const resultSrc = sourceOf();
|
|
174
|
+
value(
|
|
175
|
+
routesSrc,
|
|
176
|
+
patron((routes) => {
|
|
177
|
+
value(
|
|
178
|
+
sourceAny([
|
|
179
|
+
sourceChain(urlSrc, defaultSrc),
|
|
180
|
+
...routes.map(
|
|
181
|
+
(r) => sourceChain(
|
|
182
|
+
sourceFiltered(
|
|
183
|
+
regexpMatched(r.pattern, urlSrc, r.patternFlags),
|
|
184
|
+
Boolean
|
|
185
|
+
),
|
|
186
|
+
r.template
|
|
187
|
+
)
|
|
188
|
+
)
|
|
189
|
+
]),
|
|
190
|
+
patron(resultSrc)
|
|
191
|
+
);
|
|
192
|
+
})
|
|
193
|
+
);
|
|
194
|
+
return resultSrc.value;
|
|
195
|
+
};
|
|
196
|
+
|
|
197
|
+
export { concatenated, deadline, dirty, groupActiveClass, hashTable, loading, path, record, router };
|
|
155
198
|
//# 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/structures/HashTable.ts","../src/structures/Record.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 */\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\nexport const path = <T extends Record<string, unknown>, K extends string>(\n baseSrc: SourceType<T>,\n keySrc: SourceType<K>,\n) => {\n const pathSrc = sourceOf<T[K]>();\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 T)[keyChunk];\n });\n\n if (value !== undefined && value !== base) {\n give(value as T[K], 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\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 { 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"],"names":["value","record"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"silentium-components.js","sources":["../src/controls/GroupActiveClass.ts","../src/behaviors/Dirty.ts","../src/behaviors/Loading.ts","../src/behaviors/Path.ts","../src/behaviors/Deadline.ts","../src/structures/HashTable.ts","../src/structures/Record.ts","../src/strings/Concatenated.ts","../src/system/RegexpMatched.ts","../src/navigation/Router.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 */\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\nexport const path = <T extends Record<string, unknown>, K extends string>(\n baseSrc: SourceType<T>,\n keySrc: SourceType<K>,\n) => {\n const pathSrc = sourceOf<T[K]>();\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 T)[keyChunk];\n });\n\n if (value !== undefined && value !== base) {\n give(value as T[K], 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\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 { 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 */\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 */\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 */\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"],"names":["value","record"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(e,r){"use strict";e.deadline=(e,t,
|
|
1
|
+
!function(e,r){"use strict";e.concatenated=(e,t="")=>r.sourceCombined(t,...e)(((e,t,...u)=>{r.give(u.join(t),e)})),e.deadline=(e,t,u)=>{let a=null;return s=>{r.value(u,r.guestCast(s,(u=>{a&&clearTimeout(a);let o=!1;a=setTimeout((()=>{o||(o=!0,r.give(new Error("Timeout reached in Deadline class"),e))}),u),r.value(r.sourceFiltered(t,(()=>!o)),s),r.value(t,r.patronOnce((()=>{o=!0})))})))}},e.dirty=(e,t=!1,u=[],a=[])=>{const s=r.sourceOf(),o=r.sourceAll([s,e]),n={give:e=>(r.give(JSON.parse(JSON.stringify(e)),s),n),value:e=>(r.value(o,r.guestCast(e,(([t,s])=>{t&&r.give(Object.fromEntries(Object.entries(t).filter((([e,r])=>!!u.includes(e)||!a.includes(e)&&r!==s[e]))),e)}))),n)};return t&&r.value(e,r.patronOnce(n)),n},e.groupActiveClass=(e,t,u)=>(r.value(r.sourceAll([e,t,u]),r.patron((([e,r,t])=>{t.forEach((r=>{r.classList&&r.classList.remove(e)})),r.classList.add(e)}))),u),e.hashTable=e=>{const t=r.sourceOf({});return r.subSource(t,e),r.value(e,r.patron((([e,r])=>{t.value((t=>{t[e]=r}))}))),t.value},e.loading=(e,t)=>{const u=r.sourceOf();return r.subSourceMany(u,[e,t]),r.value(e,r.patron((()=>{u.give(!0)}))),r.value(t,r.patron((()=>{u.give(!1)}))),u.value},e.path=(e,t)=>{const u=r.sourceOf();return r.subSourceMany(u,[e,t]),r.value(r.sourceAll([e,t]),r.patron((([e,t])=>{const a=t.split(".");let s=e;a.forEach((e=>{s=s[e]})),void 0!==s&&s!==e&&r.give(s,u)}))),u.value},e.record=e=>{const t=Object.keys(e);return r.sourceCombined(...Object.values(e))(((e,...u)=>{const a={};u.forEach(((e,r)=>{a[t[r]]=e})),r.give(a,e)}))},e.router=(e,t,u)=>{const a=r.sourceOf();return r.value(t,r.patron((t=>{r.value(r.sourceAny([r.sourceChain(e,u),...t.map((t=>r.sourceChain(r.sourceFiltered(((e,t,u="")=>r.sourceCombined(e,t,u)(((e,t,u,a)=>{r.give(new RegExp(t,a).test(u),e)})))(t.pattern,e,t.patternFlags),Boolean),t.template)))]),r.patron(a))}))),a.value}}({},silentium);
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{value as e,sourceAll as t,patron as r,sourceOf as s,patronOnce as n,guestCast as
|
|
1
|
+
import{value as e,sourceAll as t,patron as r,sourceOf as s,patronOnce as n,guestCast as l,give as a,subSourceMany as o,sourceFiltered as c,subSource as i,sourceCombined as u,sourceAny as v,sourceChain as m}from"silentium";const p=(s,n,l)=>(e(t([s,n,l]),r((([e,t,r])=>{r.forEach((t=>{t.classList&&t.classList.remove(e)})),t.classList.add(e)}))),l),d=(r,o=!1,c=[],i=[])=>{const u=s(),v=t([u,r]),m={give:e=>(a(JSON.parse(JSON.stringify(e)),u),m),value:t=>(e(v,l(t,(([e,r])=>{e&&a(Object.fromEntries(Object.entries(e).filter((([e,t])=>!!c.includes(e)||!i.includes(e)&&t!==r[e]))),t)}))),m)};return o&&e(r,n(m)),m},f=(t,n)=>{const l=s();return o(l,[t,n]),e(t,r((()=>{l.give(!0)}))),e(n,r((()=>{l.give(!1)}))),l.value},g=(n,l)=>{const c=s();return o(c,[n,l]),e(t([n,l]),r((([e,t])=>{const r=t.split(".");let s=e;r.forEach((e=>{s=s[e]})),void 0!==s&&s!==e&&a(s,c)}))),c.value},E=(t,r,s)=>{let o=null;return i=>{e(s,l(i,(s=>{o&&clearTimeout(o);let l=!1;o=setTimeout((()=>{l||(l=!0,a(new Error("Timeout reached in Deadline class"),t))}),s),e(c(r,(()=>!l)),i),e(r,n((()=>{l=!0})))})))}},O=t=>{const n=s({});return i(n,t),e(t,r((([e,t])=>{n.value((r=>{r[e]=t}))}))),n.value},j=e=>{const t=Object.keys(e);return u(...Object.values(e))(((e,...r)=>{const s={};r.forEach(((e,r)=>{s[t[r]]=e})),a(s,e)}))},b=(e,t="")=>u(t,...e)(((e,t,...r)=>{a(r.join(t),e)})),h=(t,n,l)=>{const o=s();return e(n,r((s=>{e(v([m(t,l),...s.map((e=>m(c(((e,t,r="")=>u(e,t,r)(((e,t,r,s)=>{a(new RegExp(t,s).test(r),e)})))(e.pattern,t,e.patternFlags),Boolean),e.template)))]),r(o))}))),o.value};export{b as concatenated,E as deadline,d as dirty,p as groupActiveClass,O as hashTable,f as loading,g as path,j as record,h as router};
|
|
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/structures/HashTable.ts","../src/structures/Record.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 */\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\nexport const path = <T extends Record<string, unknown>, K extends string>(\n baseSrc: SourceType<T>,\n keySrc: SourceType<K>,\n) => {\n const pathSrc = sourceOf<T[K]>();\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 T)[keyChunk];\n });\n\n if (value !== undefined && value !== base) {\n give(value as T[K], 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\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 { 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"],"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","hashTable","baseSource","subSource","lastRecord","record","recordSrc","keys","sourceCombined","values","entry","index"],"mappings":"8LAOO,MAAMA,EAAmB,CAC9BC,EACAC,EACAC,KAEAC,EACEC,EAAU,CAACJ,EAAgBC,EAAkBC,IAC7CG,GAAO,EAAEC,EAAaC,EAAeC,MACrBA,EAAAC,SAASC,IACjBA,EAAGC,WACFD,EAAAC,UAAUC,OAAON,EAAW,IAGrBC,EAAAI,UAAUE,IAAIP,EAAW,KAIpCJ,GCRIY,EAAQ,CACnBC,EACAC,GAAmB,EACnBC,EAAuB,GACvBC,EAAwB,MAExB,MAAMC,EAAeC,IACfC,EAAMjB,EAAU,CAACe,EAAcJ,IAE/BO,EAAS,CACbC,KAAKpB,IACHoB,EAAKC,KAAKC,MAAMD,KAAKE,UAAUvB,IAASgB,GACjCG,GAETnB,MAAMwB,IACJxB,EACEkB,EACAO,EAAUD,GAAO,EAAEE,EAAWC,MACvBD,GAILN,EACEQ,OAAOC,YACLD,OAAOE,QAAQJ,GAAWK,QAAO,EAAEC,EAAKhC,OAClCc,EAAWmB,SAASD,KAGpBjB,EAAYkB,SAASD,IAGlBhC,IAAW2B,EAAaK,MAGnCR,EACF,KAGGL,IAQJ,OAJHN,GACIb,EAAAY,EAAkBsB,EAAWf,IAG9BA,CAAA,ECzDIgB,EAAU,CACrBC,EACAC,KAEA,MAAMC,EAAarB,IAgBnB,OAfAsB,EAAcD,EAAY,CAACF,EAAoBC,IAE/CrC,EACEoC,EACAlC,GAAO,KACLoC,EAAWlB,MAAK,EAAI,KAGxBpB,EACEqC,EACAnC,GAAO,KACLoC,EAAWlB,MAAK,EAAK,KAIlBkB,EAAWtC,KAAA,ECfPwC,EAAO,CAClBC,EACAC,KAEA,MAAMC,EAAU1B,IAkBhB,OAjBAsB,EAAcI,EAAS,CAACF,EAASC,IAEjC1C,EACEC,EAAU,CAACwC,EAASC,IACpBxC,GAAO,EAAEyB,EAAMK,MACP,MAAAY,EAAYZ,EAAIa,MAAM,KAC5B,IAAI7C,EAAiB2B,EACXiB,EAAAtC,SAASwC,IACjB9C,EAASA,EAAY8C,EAAQ,SAGjB,IAAV9C,GAAuBA,IAAU2B,GACnCP,EAAKpB,EAAe2C,EAAO,KAK1BA,EAAQ3C,KAAA,ECtBJ+C,EAAW,CACtBC,EACAP,EACAQ,KAEA,IAAIC,EAAqB,KACzB,OAAQC,IACNnD,EACEiD,EACAxB,EAAU0B,GAAIC,IACRF,GACFG,aAAaH,GAGf,IAAII,GAAiB,EAErBJ,EAAYK,YAAW,KACjBD,IAGaA,GAAA,EACjBlC,EAAK,IAAIoC,MAAM,qCAAsCR,GAAK,GACzDI,GAEHpD,EACEyD,EAAehB,GAAS,KAAOa,IAC/BH,GAGFnD,EACEyC,EACAP,GAAW,KACQoB,GAAA,CAAA,IAErB,IAEJ,CACF,EC1CWI,EAAaC,IAClB,MAAAxC,EAASF,EAAkC,IAYjD,OAXA2C,EAAUzC,EAAQwC,GAElB3D,EACE2D,EACAzD,GAAO,EAAE8B,EAAKhC,MACLmB,EAAAnB,OAAO6D,IACZA,EAAW7B,GAAOhC,CAAAA,GACnB,KAIEmB,EAAOnB,KAAA,ECZH8D,EAAUC,IACf,MAAAC,EAAOpC,OAAOoC,KAAKD,GACzB,OAAOE,KAAkBrC,OAAOsC,OAAOH,GAAhCE,EACL,CAACd,KAAsCrB,KACrC,MAAMgC,EAA8B,CAAC,EAC7BhC,EAAAxB,SAAQ,CAAC6D,EAAOC,KACtBN,EAAOE,EAAKI,IAAUD,CAAA,IAExB/C,EAAK0C,EAAQX,EAAC,GAElB"}
|
|
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/structures/HashTable.ts","../src/structures/Record.ts","../src/strings/Concatenated.ts","../src/navigation/Router.ts","../src/system/RegexpMatched.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 */\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\nexport const path = <T extends Record<string, unknown>, K extends string>(\n baseSrc: SourceType<T>,\n keySrc: SourceType<K>,\n) => {\n const pathSrc = sourceOf<T[K]>();\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 T)[keyChunk];\n });\n\n if (value !== undefined && value !== base) {\n give(value as T[K], 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\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 { 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 */\nexport const concatenated = (\n sources: SourceType<string>[],\n joinPartSrc: SourceType<string> = \"\",\n): SourceType<string> => {\n const result = sourceCombined(\n joinPartSrc,\n ...sources,\n )((g: GuestType<string>, joinPart, ...strings) => {\n give(strings.join(joinPart), g);\n });\n\n return result;\n};\n","import {\n 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 */\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 * Boolean source what checks what string matches pattern\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"],"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","hashTable","baseSource","subSource","lastRecord","record","recordSrc","keys","sourceCombined","values","entry","index","concatenated","sources","joinPartSrc","joinPart","strings","join","router","urlSrc","routesSrc","defaultSrc","resultSrc","routes","sourceAny","sourceChain","map","r","patternSrc","valueSrc","flagsSrc","pattern","flags","RegExp","test","regexpMatched","patternFlags","Boolean","template"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { value, sourceAll, patron, sourceOf, patronOnce, guestCast, give, subSourceMany, sourceFiltered, subSource, sourceCombined } from 'silentium';
|
|
1
|
+
import { value, sourceAll, patron, sourceOf, patronOnce, guestCast, give, subSourceMany, sourceFiltered, subSource, sourceCombined, sourceAny, sourceChain } from 'silentium';
|
|
2
2
|
|
|
3
3
|
const groupActiveClass = (activeClassSrc, activeElementSrc, groupElementsSrc) => {
|
|
4
4
|
value(
|
|
@@ -151,5 +151,48 @@ const record = (recordSrc) => {
|
|
|
151
151
|
);
|
|
152
152
|
};
|
|
153
153
|
|
|
154
|
-
|
|
154
|
+
const concatenated = (sources, joinPartSrc = "") => {
|
|
155
|
+
const result = sourceCombined(
|
|
156
|
+
joinPartSrc,
|
|
157
|
+
...sources
|
|
158
|
+
)((g, joinPart, ...strings) => {
|
|
159
|
+
give(strings.join(joinPart), g);
|
|
160
|
+
});
|
|
161
|
+
return result;
|
|
162
|
+
};
|
|
163
|
+
|
|
164
|
+
const regexpMatched = (patternSrc, valueSrc, flagsSrc = "") => sourceCombined(
|
|
165
|
+
patternSrc,
|
|
166
|
+
valueSrc,
|
|
167
|
+
flagsSrc
|
|
168
|
+
)((g, pattern, value, flags) => {
|
|
169
|
+
give(new RegExp(pattern, flags).test(value), g);
|
|
170
|
+
});
|
|
171
|
+
|
|
172
|
+
const router = (urlSrc, routesSrc, defaultSrc) => {
|
|
173
|
+
const resultSrc = sourceOf();
|
|
174
|
+
value(
|
|
175
|
+
routesSrc,
|
|
176
|
+
patron((routes) => {
|
|
177
|
+
value(
|
|
178
|
+
sourceAny([
|
|
179
|
+
sourceChain(urlSrc, defaultSrc),
|
|
180
|
+
...routes.map(
|
|
181
|
+
(r) => sourceChain(
|
|
182
|
+
sourceFiltered(
|
|
183
|
+
regexpMatched(r.pattern, urlSrc, r.patternFlags),
|
|
184
|
+
Boolean
|
|
185
|
+
),
|
|
186
|
+
r.template
|
|
187
|
+
)
|
|
188
|
+
)
|
|
189
|
+
]),
|
|
190
|
+
patron(resultSrc)
|
|
191
|
+
);
|
|
192
|
+
})
|
|
193
|
+
);
|
|
194
|
+
return resultSrc.value;
|
|
195
|
+
};
|
|
196
|
+
|
|
197
|
+
export { concatenated, deadline, dirty, groupActiveClass, hashTable, loading, path, record, router };
|
|
155
198
|
//# 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/structures/HashTable.ts","../src/structures/Record.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 */\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\nexport const path = <T extends Record<string, unknown>, K extends string>(\n baseSrc: SourceType<T>,\n keySrc: SourceType<K>,\n) => {\n const pathSrc = sourceOf<T[K]>();\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 T)[keyChunk];\n });\n\n if (value !== undefined && value !== base) {\n give(value as T[K], 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\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 { 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"],"names":["value","record"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"silentium-components.mjs","sources":["../src/controls/GroupActiveClass.ts","../src/behaviors/Dirty.ts","../src/behaviors/Loading.ts","../src/behaviors/Path.ts","../src/behaviors/Deadline.ts","../src/structures/HashTable.ts","../src/structures/Record.ts","../src/strings/Concatenated.ts","../src/system/RegexpMatched.ts","../src/navigation/Router.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 */\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\nexport const path = <T extends Record<string, unknown>, K extends string>(\n baseSrc: SourceType<T>,\n keySrc: SourceType<K>,\n) => {\n const pathSrc = sourceOf<T[K]>();\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 T)[keyChunk];\n });\n\n if (value !== undefined && value !== base) {\n give(value as T[K], 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\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 { 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 */\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 */\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 */\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"],"names":["value","record"],"mappings":"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"}
|
package/package.json
CHANGED
package/src/index.ts
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./Concatenated";
|