silentium-components 0.0.5 → 0.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/dist/silentium-components.cjs +134 -483
  3. package/dist/silentium-components.cjs.map +1 -1
  4. package/dist/silentium-components.d.ts +8 -190
  5. package/dist/silentium-components.js +130 -467
  6. package/dist/silentium-components.js.map +1 -1
  7. package/dist/silentium-components.min.js +1 -1
  8. package/dist/silentium-components.min.mjs +1 -1
  9. package/dist/silentium-components.min.mjs.map +1 -1
  10. package/dist/silentium-components.mjs +130 -467
  11. package/dist/silentium-components.mjs.map +1 -1
  12. package/docs/build.sh +3 -4
  13. package/docs/index.html +3 -3
  14. package/docs/pages/behaviors/deadline.html +60 -0
  15. package/docs/pages/behaviors.html +5 -0
  16. package/docs/routes.json +1 -1
  17. package/eslint.config.mjs +1 -0
  18. package/package.json +7 -5
  19. package/src/behaviors/Deadline._value.test.ts +27 -0
  20. package/src/behaviors/Deadline.test.ts +28 -0
  21. package/src/behaviors/Deadline.ts +49 -0
  22. package/src/behaviors/Dirty.test.ts +5 -5
  23. package/src/behaviors/Dirty.ts +48 -54
  24. package/src/behaviors/Loading.test.ts +8 -8
  25. package/src/behaviors/Loading.ts +21 -31
  26. package/src/behaviors/Path.index.test.ts +5 -5
  27. package/src/behaviors/Path.nested.test.ts +5 -5
  28. package/src/behaviors/Path.test.ts +5 -5
  29. package/src/behaviors/Path.ts +26 -30
  30. package/src/behaviors/index.ts +1 -1
  31. package/src/controls/GroupActiveClass.test.ts +16 -13
  32. package/src/controls/GroupActiveClass.ts +19 -22
  33. package/src/controls/index.ts +0 -5
  34. package/src/index.ts +0 -2
  35. package/src/navigation/Router.test.ts +47 -0
  36. package/src/navigation/Router.ts +43 -111
  37. package/src/navigation/index.ts +0 -6
  38. package/src/strings/Concatenated.test.ts +11 -0
  39. package/src/strings/Concatenated.ts +18 -0
  40. package/src/structures/HashTable.test.ts +5 -5
  41. package/src/structures/HashTable.ts +14 -25
  42. package/src/system/RegexpMatched.test.ts +14 -0
  43. package/src/system/RegexpMatched.ts +17 -0
  44. package/src/system/index.ts +1 -0
  45. package/src/behaviors/Touched.ts +0 -1
  46. package/src/controls/ComputedElement.ts +0 -51
  47. package/src/controls/Input.ts +0 -45
  48. package/src/controls/Link.ts +0 -53
  49. package/src/controls/Text.ts +0 -16
  50. package/src/controls/Visible.ts +0 -16
  51. package/src/jsdom/JSDomDocument.ts +0 -15
  52. package/src/jsdom/JSDomElement.ts +0 -28
  53. package/src/jsdom/JSDomQuerySelector.ts +0 -28
  54. package/src/navigation/CurrentPage.ts +0 -27
  55. package/src/navigation/Navigation.default.test.ts +0 -54
  56. package/src/navigation/Navigation.main.test.ts +0 -47
  57. package/src/navigation/Navigation.ts +0 -92
  58. package/src/navigation/Navigation.wildcard.test.ts +0 -52
  59. package/src/navigation/PageFetchTransport.ts +0 -26
  60. package/src/navigation/RouteDisplay.ts +0 -18
  61. package/src/navigation/RoutePageType.ts +0 -3
  62. package/src/page/EntryPointPage.ts +0 -20
  63. package/src/page/Page.ts +0 -12
  64. package/src/page/PageFake.ts +0 -8
  65. package/src/page/index.ts +0 -2
@@ -1 +1 @@
1
- {"version":3,"file":"silentium-components.cjs","sources":["../src/navigation/PageFetchTransport.ts","../src/navigation/Navigation.ts","../src/navigation/RouteDisplay.ts","../src/navigation/CurrentPage.ts","../src/controls/Input.ts","../src/controls/Visible.ts","../src/controls/Text.ts","../src/controls/Link.ts","../src/controls/ComputedElement.ts","../src/controls/GroupActiveClass.ts","../src/navigation/Router.ts","../src/page/Page.ts","../src/page/EntryPointPage.ts","../src/behaviors/Dirty.ts","../src/behaviors/Loading.ts","../src/behaviors/Touched.ts","../src/behaviors/Path.ts","../src/structures/HashTable.ts"],"sourcesContent":["import { give, GuestType } from \"silentium\";\n\nexport interface RoutePageTransportType {\n content(guest: GuestType<string>): void;\n}\n\n/**\n * Not needed anymore same thing in web api existed\n * @deprecated\n */\nexport class PageFetchTransport implements RoutePageTransportType {\n public constructor(\n private basePath: string,\n private template: string,\n ) {}\n\n public content(guest: GuestType<string>): void {\n fetch(this.basePath + \"/\" + this.template)\n .then((result) => {\n return result.text();\n })\n .then((result) => {\n give(result, guest);\n });\n }\n}\n","import {\n SourceAll,\n Patron,\n PrivateType,\n SourceType,\n value,\n give,\n SourceChangeableType,\n} from \"silentium\";\nimport { RoutePageTransportType } from \"src/navigation/PageFetchTransport\";\nimport { RouteDisplayType } from \"src/navigation/RouteDisplay\";\nimport { RoutePageType } from \"src/navigation/RoutePageType\";\n\nexport interface RouteDocument {\n url: string;\n template: string;\n aliases?: string[];\n page: RoutePageType;\n default?: boolean;\n}\n\nexport class Navigation {\n public constructor(\n private loading: SourceChangeableType<boolean>,\n private basePath: SourceType<string>,\n private currentPage: SourceChangeableType<string>,\n private display: RouteDisplayType,\n private pageTransport: PrivateType<RoutePageTransportType>,\n ) {}\n\n public routes(routes: RouteDocument[]) {\n const defaultRoute = routes.find((route) => route.default);\n const all = new SourceAll<{\n basePath: string;\n currentPage: string;\n }>();\n value(this.basePath, new Patron(all.guestKey(\"basePath\")));\n value(this.currentPage, new Patron(all.guestKey(\"currentPage\")));\n\n all.value(\n new Patron(({ basePath, currentPage }) => {\n const urlWithoutBasePath = currentPage.replace(basePath, \"\");\n const routeMatchedToAlias = routes.find(\n (route) =>\n route.aliases &&\n (route.aliases.includes(currentPage) ||\n route.aliases.includes(urlWithoutBasePath)),\n );\n\n if (routeMatchedToAlias) {\n const correctUrl = basePath + routeMatchedToAlias.url;\n\n if (correctUrl !== currentPage) {\n give(correctUrl, this.currentPage);\n return;\n }\n }\n\n let route = routes.find((route) => {\n if (route.url.indexOf(\"*\") >= 0) {\n const regexp = new RegExp(\n route.url.replaceAll(\"*\", \".*\").replaceAll(\"/\", \"/\"),\n );\n return regexp.test(urlWithoutBasePath);\n }\n return route.url.replaceAll(\"*\", \"\") === urlWithoutBasePath;\n });\n\n if (!route && defaultRoute) {\n route = defaultRoute;\n }\n\n if (route) {\n const basePathWithoutHash = basePath\n .replace(\"/#\", \"\")\n .replace(\"#\", \"\")\n .replace(/[^/]+\\.html$/, \"\");\n give(true, this.loading);\n this.pageTransport\n .get(basePathWithoutHash, route.template)\n .content((templateContent) => {\n this.display.display(templateContent);\n route.page.mounted();\n give(false, this.loading);\n });\n } else {\n throw new Error(\"No matching route in Navigation\");\n }\n }),\n );\n }\n}\n","export interface RouteDisplayType {\n display(content: string): void;\n}\n\n/**\n * Renders content on selector\n * @deprecated move to web api\n */\nexport class RouteDisplay implements RouteDisplayType {\n public constructor(private selector: string) {}\n\n public display(content: string): void {\n const contentEl = document.querySelector(this.selector);\n if (contentEl) {\n contentEl.innerHTML = content;\n }\n }\n}\n","import { GuestType, SourceChangeable, SourceChangeableType } from \"silentium\";\n\n/**\n * @deprecated move to web api\n */\nexport class CurrentPage implements SourceChangeableType<string> {\n private source: SourceChangeable<string>;\n\n public constructor() {\n const correctUrl = location.href.replace(location.origin, \"\");\n this.source = new SourceChangeable(correctUrl);\n }\n\n public give(value: string): this {\n this.source.give(value);\n return this;\n }\n\n public value(guest: GuestType<string>) {\n this.source.value(guest);\n return guest;\n }\n\n public pool() {\n return this.source.pool();\n }\n}\n","import {\n GuestType,\n Patron,\n SourceChangeable,\n SourceChangeableType,\n} from \"silentium\";\n\ntype InputValue = number | string;\n\n/**\n * @deprecated move to web api\n */\nexport class Input implements SourceChangeableType<InputValue> {\n public constructor(\n private source: SourceChangeable<InputValue>,\n selector: string,\n ) {\n const el = document.querySelector(selector) as HTMLInputElement;\n this.source.value(\n new Patron((value) => {\n el.value = String(value);\n }),\n );\n el.addEventListener(\"keyup\", () => {\n this.give(el.value);\n });\n el.addEventListener(\"change\", () => {\n this.give(el.value);\n });\n }\n\n public value(guest: GuestType<InputValue>) {\n this.source.value(guest);\n return this;\n }\n\n public give(value: InputValue) {\n this.source.give(value);\n return this;\n }\n\n public pool() {\n return this.source.pool();\n }\n}\n","import { GuestObjectType } from \"silentium\";\n\n/**\n * @deprecated move to web api\n */\nexport class Visible implements GuestObjectType<boolean> {\n public constructor(private selector: string) {}\n\n public give(isVisible: boolean): this {\n const el = document.querySelector(this.selector) as HTMLElement;\n if (el) {\n el.style.display = isVisible ? \"block\" : \"none\";\n }\n return this;\n }\n}\n","import { GuestObjectType } from \"silentium\";\n\n/**\n * @deprecated Move to web api\n */\nexport class Text implements GuestObjectType {\n public constructor(private selector: string) {}\n\n public give(value: unknown) {\n const element = document.querySelector(this.selector) as HTMLElement;\n if (element) {\n element.innerText = String(value);\n }\n return this;\n }\n}\n","import { GuestObjectType, SourceType, value } from \"silentium\";\n\n/**\n * @deprecated move to web api\n */\nexport class Link {\n public constructor(\n private linkSource: GuestObjectType<string>,\n private basePath: SourceType<string>,\n ) {}\n\n public watchClick(selector: string, subselector?: string) {\n const wrapperEl = document.querySelectorAll(selector);\n if (wrapperEl.length) {\n wrapperEl.forEach((theElement) => {\n theElement.addEventListener(\"click\", (e) => {\n if (subselector) {\n theElement\n .querySelectorAll(subselector)\n .forEach((theSubElement) => {\n if (\n e?.target === theSubElement ||\n e?.currentTarget === theSubElement\n ) {\n this.handleClick({\n preventDefault: e.preventDefault.bind(e),\n target: theSubElement,\n } as unknown as Event);\n }\n });\n } else {\n this.handleClick(e);\n }\n });\n });\n } else {\n throw new Error(`Link wrapper not found for selector ${selector}`);\n }\n }\n\n private handleClick(e: Event) {\n let href = (e?.target as HTMLElement)?.getAttribute(\"href\");\n if (!href) {\n href = (e?.currentTarget as HTMLElement)?.getAttribute(\"href\");\n }\n if (href && href.indexOf(\"http\") !== 0) {\n e.preventDefault();\n value(this.basePath, (basePath) => {\n this.linkSource.give(basePath + href);\n });\n }\n }\n}\n","import {\n give,\n SourceAll,\n SourceObjectType,\n GuestCast,\n GuestType,\n} from \"silentium\";\n\ntype SourceDetailType = {\n source: SourceObjectType<any>;\n placeholder: string;\n};\n\n/**\n * @deprecated use https://kosukhin.github.io/patron-web-api/#/dom/element\n */\nexport class ComputedElement {\n public constructor(\n private sources: SourceDetailType[],\n private selectorTemplate: string,\n ) {}\n\n public element(guest: GuestType<HTMLElement>) {\n const chain = new SourceAll();\n this.sources.forEach((source) => {\n source.source.value(\n new GuestCast(guest as GuestType, chain.guestKey(source.placeholder)),\n );\n });\n\n chain.value(\n new GuestCast(\n guest as GuestType,\n (placeholders: Record<string, string>) => {\n let selectorTemplate = this.selectorTemplate;\n\n Object.entries(placeholders).map((entry) => {\n selectorTemplate = selectorTemplate.replaceAll(entry[0], entry[1]);\n });\n\n const element = document.querySelector(\n selectorTemplate,\n ) as HTMLElement;\n if (element) {\n give(element, guest);\n }\n },\n ),\n );\n }\n}\n","import { GuestObjectType, PatronOnce, 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 *\n * @deprecated heavily related to web api needs refactoring\n */\nexport class GroupActiveClass implements GuestObjectType<HTMLElement> {\n public constructor(\n private activeClass: string,\n private groupSelector: string,\n private document: SourceType<Document>,\n ) {}\n\n public give(element: HTMLElement): this {\n value(\n this.document,\n new PatronOnce((document) => {\n document.querySelectorAll(this.groupSelector).forEach((el) => {\n el.classList.remove(this.activeClass);\n });\n element.classList.add(this.activeClass);\n }),\n );\n return this;\n }\n}\n","import {\n Source,\n SourceAll,\n GuestCast,\n Patron,\n PrivateClass,\n SourceChangeable,\n give,\n sourceOf,\n} from \"silentium\";\nimport { HistoryNewPage, HistoryPoppedPage } from \"silentium-web-api\";\nimport { ComputedElement, GroupActiveClass, Link, Visible } from \"../controls\";\nimport { CurrentPage } from \"../navigation/CurrentPage\";\nimport { Navigation } from \"../navigation/Navigation\";\nimport { PageFetchTransport } from \"../navigation/PageFetchTransport\";\nimport { RouteDisplay } from \"../navigation/RouteDisplay\";\n\ntype Route = {\n url: string;\n template: string;\n aliases: string[];\n page: any;\n};\n\nexport class Router {\n public constructor(\n private loaderSelector: string,\n private navigationResultSelector: string,\n private menuSelector: string,\n ) {}\n\n public routes(\n routes: Route[],\n currentPage: any,\n basePathSource: any,\n afterPageLoaded?: () => void,\n ) {\n if (!currentPage) {\n currentPage = new CurrentPage();\n }\n currentPage.value(new Patron(new HistoryNewPage()));\n\n const [basePath] = location.href.replace(location.origin, \"\").split(\"#\");\n if (!basePathSource) {\n basePathSource = new SourceChangeable(\n `${basePath}#`.replace(\"index.html\", \"\").replace(\"//\", \"/\"),\n );\n }\n\n const pageLoading = new SourceChangeable(false);\n pageLoading.value(new Patron(new Visible(this.loaderSelector)));\n\n const historyPoppedPage = new HistoryPoppedPage(currentPage);\n historyPoppedPage.watchPop();\n\n const navigation = new Navigation(\n pageLoading,\n basePathSource,\n currentPage,\n new RouteDisplay(this.navigationResultSelector),\n new PrivateClass(PageFetchTransport),\n );\n navigation.routes(routes);\n\n const link = new Link(currentPage, basePathSource);\n link.watchClick(this.menuSelector);\n\n const urlChain = new SourceAll<any>();\n basePathSource.value(new Patron(urlChain.guestKey(\"basePath\")));\n currentPage.value(new Patron(urlChain.guestKey(\"page\")));\n const url = new Source((guest) => {\n urlChain.value(\n new GuestCast(guest, ({ basePath, page }) => {\n give(page.replace(basePath, \"\"), guest);\n }),\n );\n });\n\n const activeLink = new ComputedElement(\n [{ source: url, placeholder: \"{url}\" }],\n `${this.menuSelector} a[href=\"{url}\"]`,\n );\n activeLink.element(\n new Patron(\n new GroupActiveClass(\n \"active\",\n `${this.menuSelector} a`,\n sourceOf(document),\n ),\n ),\n );\n\n pageLoading.value(\n new Patron((isInLoading) => {\n if (isInLoading) {\n return;\n }\n\n if (afterPageLoaded) {\n afterPageLoaded();\n }\n\n const divDestination = document.querySelector(\n this.navigationResultSelector,\n );\n if (divDestination) {\n // Оживляем script тэги\n divDestination.querySelectorAll(\"script\").forEach((x) => {\n const sc = document.createElement(\"script\");\n sc.setAttribute(\"type\", \"module\");\n sc.appendChild(document.createTextNode(x.innerText));\n divDestination.appendChild(sc);\n });\n }\n }),\n );\n }\n}\n","import { RoutePageType } from \"../navigation\";\n\n/**\n * @deprecated Move to web api\n */\nexport class Page implements RoutePageType {\n public constructor(private title: string) {}\n\n public mounted() {\n document.title = this.title;\n }\n}\n","import { RoutePageType } from \"../navigation\";\n\n/**\n * @deprecated not needed\n */\nexport class EntryPointPage implements RoutePageType {\n public constructor(\n private title: string,\n private entryPointUrl: string,\n ) {}\n\n public mounted() {\n document.title = this.title;\n import(this.entryPointUrl).then((module) => {\n if (module.main) {\n module.main();\n }\n });\n }\n}\n","import {\n give,\n GuestCast,\n GuestObjectType,\n GuestType,\n Patron,\n PatronOnce,\n SourceAll,\n SourceObjectType,\n SourceType,\n SourceChangeable,\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 class Dirty<T extends object>\n implements SourceObjectType<Partial<T>>, GuestObjectType<T>\n{\n private comparingSource = new SourceChangeable<T>();\n private all = new SourceAll<{ comparing: T | null; base: T }>();\n\n public constructor(\n baseEntitySource: SourceType<T>,\n private alwaysKeep: string[] = [],\n private excludeKeys: string[] = [],\n becomePatronAuto = false,\n ) {\n this.comparingSource.value(new Patron(this.all.guestKey(\"comparing\")));\n value(baseEntitySource, new Patron(this.all.guestKey(\"base\")));\n\n if (becomePatronAuto) {\n value(baseEntitySource, new PatronOnce(this));\n }\n }\n\n public give(value: T): this {\n give(JSON.parse(JSON.stringify(value)), this.comparingSource);\n return this;\n }\n\n public value(guest: GuestType<Partial<T>>): unknown {\n this.all.value(\n new 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 (this.alwaysKeep.includes(key)) {\n return true;\n }\n if (this.excludeKeys.includes(key)) {\n return false;\n }\n return value !== (base as any)[key];\n }),\n ) as T,\n guest,\n );\n }),\n );\n\n return this;\n }\n}\n","import {\n GuestCast,\n GuestType,\n SourceObjectType,\n SourceType,\n SourceChangeable,\n value,\n} from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/behaviors/loading\n */\nexport class Loading implements SourceObjectType<boolean> {\n private loadingSource = new SourceChangeable<boolean>();\n\n public constructor(\n private loadingStartSource: SourceType<unknown>,\n private loadingFinishSource: SourceType<unknown>,\n ) {}\n\n public value(guest: GuestType<boolean>) {\n value(\n this.loadingStartSource,\n new GuestCast(guest, () => {\n this.loadingSource.give(true);\n }),\n );\n value(\n this.loadingFinishSource,\n new GuestCast(guest, () => {\n this.loadingSource.give(false);\n }),\n );\n this.loadingSource.value(guest);\n return this;\n }\n}\n","export class Touched {}\n","import {\n give,\n GuestCast,\n GuestType,\n SourceAll,\n SourceObjectType,\n SourceType,\n value,\n} from \"silentium\";\n\nexport class Path<T extends Record<string, unknown>, K extends string>\n implements SourceObjectType<T[K]>\n{\n public constructor(\n private baseSource: SourceType<T>,\n private keyType: SourceType<K>,\n ) {}\n\n public value(guest: GuestType<T[K]>) {\n const all = new SourceAll<{ base: T; key: K }>([\"base\", \"key\"]);\n value(this.baseSource, new GuestCast(guest, all.guestKey(\"base\")));\n value(this.keyType, new GuestCast(guest, all.guestKey(\"key\")));\n all.value(\n new GuestCast(guest, ({ 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], guest);\n }\n }),\n );\n return this;\n }\n}\n","import {\n GuestType,\n Patron,\n SourceObjectType,\n SourceType,\n SourceChangeable,\n value,\n} from \"silentium\";\n\n/**\n * https://silentium-lab.github.io/silentium-components/#/structures/hash-table\n */\nexport class HashTable implements SourceObjectType<Record<string, unknown>> {\n private source = new SourceChangeable<Record<string, unknown>>({});\n\n public constructor(baseSource: SourceType<[string, unknown]>) {\n value(\n baseSource,\n new Patron(([key, value]) => {\n this.source.value((lastRecord) => {\n lastRecord[key] = value;\n });\n }),\n );\n }\n\n public value(guest: GuestType<Record<string, unknown>>) {\n value(this.source, guest);\n return this;\n }\n}\n"],"names":["give","SourceAll","value","Patron","route","__publicField","SourceChangeable","GuestCast","PatronOnce","HistoryNewPage","HistoryPoppedPage","PrivateClass","Source","basePath","sourceOf"],"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"],"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"],"names":["value","sourceAll","patron","sourceOf","give","guestCast","patronOnce","subSourceMany","sourceFiltered","subSource"],"mappings":"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"}
@@ -1,213 +1,31 @@
1
1
  import * as silentium from 'silentium';
2
- import { GuestType, SourceChangeableType, SourceType, PrivateType, SourceChangeable, GuestObjectType, SourceObjectType } from 'silentium';
3
- import { RoutePageTransportType as RoutePageTransportType$1 } from 'src/navigation/PageFetchTransport';
4
- import { RouteDisplayType as RouteDisplayType$1 } from 'src/navigation/RouteDisplay';
5
- import { RoutePageType as RoutePageType$1 } from 'src/navigation/RoutePageType';
6
-
7
- interface RoutePageTransportType {
8
- content(guest: GuestType<string>): void;
9
- }
10
- /**
11
- * Not needed anymore same thing in web api existed
12
- * @deprecated
13
- */
14
- declare class PageFetchTransport implements RoutePageTransportType {
15
- private basePath;
16
- private template;
17
- constructor(basePath: string, template: string);
18
- content(guest: GuestType<string>): void;
19
- }
20
-
21
- interface RouteDocument {
22
- url: string;
23
- template: string;
24
- aliases?: string[];
25
- page: RoutePageType$1;
26
- default?: boolean;
27
- }
28
- declare class Navigation {
29
- private loading;
30
- private basePath;
31
- private currentPage;
32
- private display;
33
- private pageTransport;
34
- constructor(loading: SourceChangeableType<boolean>, basePath: SourceType<string>, currentPage: SourceChangeableType<string>, display: RouteDisplayType$1, pageTransport: PrivateType<RoutePageTransportType$1>);
35
- routes(routes: RouteDocument[]): void;
36
- }
37
-
38
- interface RouteDisplayType {
39
- display(content: string): void;
40
- }
41
- /**
42
- * Renders content on selector
43
- * @deprecated move to web api
44
- */
45
- declare class RouteDisplay implements RouteDisplayType {
46
- private selector;
47
- constructor(selector: string);
48
- display(content: string): void;
49
- }
50
-
51
- interface RoutePageType {
52
- mounted(): void;
53
- }
54
-
55
- /**
56
- * @deprecated move to web api
57
- */
58
- declare class CurrentPage implements SourceChangeableType<string> {
59
- private source;
60
- constructor();
61
- give(value: string): this;
62
- value(guest: GuestType<string>): GuestType<string>;
63
- pool(): silentium.PatronPool<unknown>;
64
- }
65
-
66
- type Route = {
67
- url: string;
68
- template: string;
69
- aliases: string[];
70
- page: any;
71
- };
72
- declare class Router {
73
- private loaderSelector;
74
- private navigationResultSelector;
75
- private menuSelector;
76
- constructor(loaderSelector: string, navigationResultSelector: string, menuSelector: string);
77
- routes(routes: Route[], currentPage: any, basePathSource: any, afterPageLoaded?: () => void): void;
78
- }
79
-
80
- type InputValue = number | string;
81
- /**
82
- * @deprecated move to web api
83
- */
84
- declare class Input implements SourceChangeableType<InputValue> {
85
- private source;
86
- constructor(source: SourceChangeable<InputValue>, selector: string);
87
- value(guest: GuestType<InputValue>): this;
88
- give(value: InputValue): this;
89
- pool(): silentium.PatronPool<unknown>;
90
- }
91
-
92
- /**
93
- * @deprecated move to web api
94
- */
95
- declare class Visible implements GuestObjectType<boolean> {
96
- private selector;
97
- constructor(selector: string);
98
- give(isVisible: boolean): this;
99
- }
100
-
101
- /**
102
- * @deprecated Move to web api
103
- */
104
- declare class Text implements GuestObjectType {
105
- private selector;
106
- constructor(selector: string);
107
- give(value: unknown): this;
108
- }
109
-
110
- /**
111
- * @deprecated move to web api
112
- */
113
- declare class Link {
114
- private linkSource;
115
- private basePath;
116
- constructor(linkSource: GuestObjectType<string>, basePath: SourceType<string>);
117
- watchClick(selector: string, subselector?: string): void;
118
- private handleClick;
119
- }
120
-
121
- type SourceDetailType = {
122
- source: SourceObjectType<any>;
123
- placeholder: string;
124
- };
125
- /**
126
- * @deprecated use https://kosukhin.github.io/patron-web-api/#/dom/element
127
- */
128
- declare class ComputedElement {
129
- private sources;
130
- private selectorTemplate;
131
- constructor(sources: SourceDetailType[], selectorTemplate: string);
132
- element(guest: GuestType<HTMLElement>): void;
133
- }
2
+ import { SourceType, SourceChangeableType, GuestType } from 'silentium';
134
3
 
135
4
  /**
136
5
  * Sets activeClass to one element of group
137
6
  * and resets activeClass on other group elements
138
7
  * suitable for menu active class
139
- *
140
- * @deprecated heavily related to web api needs refactoring
141
- */
142
- declare class GroupActiveClass implements GuestObjectType<HTMLElement> {
143
- private activeClass;
144
- private groupSelector;
145
- private document;
146
- constructor(activeClass: string, groupSelector: string, document: SourceType<Document>);
147
- give(element: HTMLElement): this;
148
- }
149
-
150
- /**
151
- * @deprecated Move to web api
152
- */
153
- declare class Page implements RoutePageType {
154
- private title;
155
- constructor(title: string);
156
- mounted(): void;
157
- }
158
-
159
- /**
160
- * @deprecated not needed
161
8
  */
162
- declare class EntryPointPage implements RoutePageType {
163
- private title;
164
- private entryPointUrl;
165
- constructor(title: string, entryPointUrl: string);
166
- mounted(): void;
167
- }
9
+ declare const groupActiveClass: (activeClassSrc: SourceType<string>, activeElementSrc: SourceType<HTMLElement>, groupElementsSrc: SourceType<HTMLElement[]>) => SourceType<HTMLElement[]>;
168
10
 
169
11
  /**
170
12
  * Takes source and remember it first value
171
13
  * returns new record, what will contain only fields what was changed
172
14
  */
173
- declare class Dirty<T extends object> implements SourceObjectType<Partial<T>>, GuestObjectType<T> {
174
- private alwaysKeep;
175
- private excludeKeys;
176
- private comparingSource;
177
- private all;
178
- constructor(baseEntitySource: SourceType<T>, alwaysKeep?: string[], excludeKeys?: string[], becomePatronAuto?: boolean);
179
- give(value: T): this;
180
- value(guest: GuestType<Partial<T>>): unknown;
181
- }
15
+ declare const dirty: <T extends object>(baseEntitySource: SourceType<T>, becomePatronAuto?: boolean, alwaysKeep?: string[], excludeKeys?: string[]) => SourceChangeableType<Partial<T>>;
182
16
 
183
17
  /**
184
18
  * https://silentium-lab.github.io/silentium-components/#/behaviors/loading
185
19
  */
186
- declare class Loading implements SourceObjectType<boolean> {
187
- private loadingStartSource;
188
- private loadingFinishSource;
189
- private loadingSource;
190
- constructor(loadingStartSource: SourceType<unknown>, loadingFinishSource: SourceType<unknown>);
191
- value(guest: GuestType<boolean>): this;
192
- }
20
+ declare const loading: (loadingStartSource: SourceType<unknown>, loadingFinishSource: SourceType<unknown>) => silentium.SourceExecutorType<boolean>;
193
21
 
194
- declare class Touched {
195
- }
22
+ declare const path: <T extends Record<string, unknown>, K extends string>(baseSrc: SourceType<T>, keySrc: SourceType<K>) => silentium.SourceExecutorType<T[K]>;
196
23
 
197
- declare class Path<T extends Record<string, unknown>, K extends string> implements SourceObjectType<T[K]> {
198
- private baseSource;
199
- private keyType;
200
- constructor(baseSource: SourceType<T>, keyType: SourceType<K>);
201
- value(guest: GuestType<T[K]>): this;
202
- }
24
+ declare const deadline: <T>(error: GuestType<Error>, baseSrc: SourceType<T>, timeoutSrc: SourceType<number>) => (g: GuestType<T>) => void;
203
25
 
204
26
  /**
205
27
  * https://silentium-lab.github.io/silentium-components/#/structures/hash-table
206
28
  */
207
- declare class HashTable implements SourceObjectType<Record<string, unknown>> {
208
- private source;
209
- constructor(baseSource: SourceType<[string, unknown]>);
210
- value(guest: GuestType<Record<string, unknown>>): this;
211
- }
29
+ declare const hashTable: (baseSource: SourceType<[string, unknown]>) => silentium.SourceExecutorType<Record<string, unknown>>;
212
30
 
213
- export { ComputedElement, CurrentPage, Dirty, EntryPointPage, GroupActiveClass, HashTable, Input, Link, Loading, Navigation, Page, PageFetchTransport, Path, RouteDisplay, type RouteDisplayType, type RouteDocument, type RoutePageTransportType, type RoutePageType, Router, Text, Touched, Visible };
31
+ export { deadline, dirty, groupActiveClass, hashTable, loading, path };