silentium-components 0.0.4 → 0.0.5

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 (42) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/dist/silentium-components.cjs +6 -6
  3. package/dist/silentium-components.cjs.map +1 -1
  4. package/dist/silentium-components.d.ts +7 -7
  5. package/dist/silentium-components.js +7 -7
  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 +7 -7
  11. package/dist/silentium-components.mjs.map +1 -1
  12. package/docs/assets/js/index.mjs +3 -3
  13. package/docs/build.sh +1 -1
  14. package/docs/index.html +1 -1
  15. package/docs/pages/behaviors/dirty.html +4 -4
  16. package/docs/pages/behaviors/loading.html +6 -6
  17. package/docs/pages/structures/hash-table.html +4 -4
  18. package/package.json +3 -3
  19. package/src/behaviors/Dirty.test.ts +2 -2
  20. package/src/behaviors/Dirty.ts +2 -2
  21. package/src/behaviors/Loading.test.ts +3 -3
  22. package/src/behaviors/Loading.ts +2 -2
  23. package/src/controls/Input.ts +8 -3
  24. package/src/jsdom/JSDomElement.ts +2 -2
  25. package/src/navigation/CurrentPage.ts +4 -4
  26. package/src/navigation/Navigation.default.test.ts +7 -6
  27. package/src/navigation/Navigation.main.test.ts +7 -6
  28. package/src/navigation/Navigation.ts +3 -3
  29. package/src/navigation/Navigation.wildcard.test.ts +6 -6
  30. package/src/navigation/Router.ts +4 -4
  31. package/src/structures/HashTable.test.ts +2 -2
  32. package/src/structures/HashTable.ts +2 -2
  33. package/dist/patron-components.cjs +0 -372
  34. package/dist/patron-components.cjs.map +0 -1
  35. package/dist/patron-components.d.ts +0 -158
  36. package/dist/patron-components.js +0 -358
  37. package/dist/patron-components.js.map +0 -1
  38. package/dist/patron-components.min.js +0 -1
  39. package/dist/patron-components.min.mjs +0 -2
  40. package/dist/patron-components.min.mjs.map +0 -1
  41. package/dist/patron-components.mjs +0 -358
  42. package/dist/patron-components.mjs.map +0 -1
package/CHANGELOG.md CHANGED
@@ -2,6 +2,14 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4
4
 
5
+ ### [0.0.5](https://github.com/silentium-lab/silentium-components/compare/v0.0.4...v0.0.5) (2025-04-19)
6
+
7
+
8
+ ### Features
9
+
10
+ * **main:** fix source changeable renaming ([66fe284](https://github.com/silentium-lab/silentium-components/commit/66fe28421a4f6c0331c7eee8470cb2ccedb0c79e))
11
+ * **main:** release ([6f7d7d3](https://github.com/silentium-lab/silentium-components/commit/6f7d7d36590dc7e7fa4d65f3d56e00bc23cd79b3))
12
+
5
13
  ### [0.0.4](https://github.com/silentium-lab/silentium-components/compare/v0.0.3...v0.0.4) (2025-04-17)
6
14
 
7
15
 
@@ -90,7 +90,7 @@ class CurrentPage {
90
90
  constructor() {
91
91
  __publicField$3(this, "source");
92
92
  const correctUrl = location.href.replace(location.origin, "");
93
- this.source = new silentium.SourceWithPool(correctUrl);
93
+ this.source = new silentium.SourceChangeable(correctUrl);
94
94
  }
95
95
  give(value) {
96
96
  this.source.give(value);
@@ -267,11 +267,11 @@ class Router {
267
267
  currentPage.value(new silentium.Patron(new silentiumWebApi.HistoryNewPage()));
268
268
  const [basePath] = location.href.replace(location.origin, "").split("#");
269
269
  if (!basePathSource) {
270
- basePathSource = new silentium.SourceWithPool(
270
+ basePathSource = new silentium.SourceChangeable(
271
271
  `${basePath}#`.replace("index.html", "").replace("//", "/")
272
272
  );
273
273
  }
274
- const pageLoading = new silentium.SourceWithPool(false);
274
+ const pageLoading = new silentium.SourceChangeable(false);
275
275
  pageLoading.value(new silentium.Patron(new Visible(this.loaderSelector)));
276
276
  const historyPoppedPage = new silentiumWebApi.HistoryPoppedPage(currentPage);
277
277
  historyPoppedPage.watchPop();
@@ -363,7 +363,7 @@ class Dirty {
363
363
  constructor(baseEntitySource, alwaysKeep = [], excludeKeys = [], becomePatronAuto = false) {
364
364
  this.alwaysKeep = alwaysKeep;
365
365
  this.excludeKeys = excludeKeys;
366
- __publicField$2(this, "comparingSource", new silentium.SourceWithPool());
366
+ __publicField$2(this, "comparingSource", new silentium.SourceChangeable());
367
367
  __publicField$2(this, "all", new silentium.SourceAll());
368
368
  this.comparingSource.value(new silentium.Patron(this.all.guestKey("comparing")));
369
369
  silentium.value(baseEntitySource, new silentium.Patron(this.all.guestKey("base")));
@@ -408,7 +408,7 @@ class Loading {
408
408
  constructor(loadingStartSource, loadingFinishSource) {
409
409
  this.loadingStartSource = loadingStartSource;
410
410
  this.loadingFinishSource = loadingFinishSource;
411
- __publicField$1(this, "loadingSource", new silentium.SourceWithPool());
411
+ __publicField$1(this, "loadingSource", new silentium.SourceChangeable());
412
412
  }
413
413
  value(guest) {
414
414
  silentium.value(
@@ -461,7 +461,7 @@ var __defNormalProp = (obj, key, value2) => key in obj ? __defProp(obj, key, { e
461
461
  var __publicField = (obj, key, value2) => __defNormalProp(obj, key + "" , value2);
462
462
  class HashTable {
463
463
  constructor(baseSource) {
464
- __publicField(this, "source", new silentium.SourceWithPool({}));
464
+ __publicField(this, "source", new silentium.SourceChangeable({}));
465
465
  silentium.value(
466
466
  baseSource,
467
467
  new silentium.Patron(([key, value2]) => {
@@ -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 SourceWithPoolType,\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: SourceWithPoolType<boolean>,\n private basePath: SourceType<string>,\n private currentPage: SourceWithPoolType<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, SourceWithPool, SourceWithPoolType } from \"silentium\";\n\n/**\n * @deprecated move to web api\n */\nexport class CurrentPage implements SourceWithPoolType<string> {\n private source: SourceWithPoolType<string>;\n\n public constructor() {\n const correctUrl = location.href.replace(location.origin, \"\");\n this.source = new SourceWithPool(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 { GuestType, Patron, SourceWithPoolType } from \"silentium\";\n\ntype InputValue = number | string;\n\n/**\n * @deprecated move to web api\n */\nexport class Input implements SourceWithPoolType<InputValue> {\n public constructor(\n private source: SourceWithPoolType<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 SourceWithPool,\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 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 SourceWithPool(\n `${basePath}#`.replace(\"index.html\", \"\").replace(\"//\", \"/\"),\n );\n }\n\n const pageLoading = new SourceWithPool(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 SourceWithPool,\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 SourceWithPool<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 SourceWithPool,\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 SourceWithPool<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 SourceWithPool,\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 SourceWithPool<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","SourceWithPool","GuestCast","PatronOnce","HistoryNewPage","HistoryPoppedPage","PrivateClass","Source","basePath","sourceOf"],"mappings":"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"}
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,5 +1,5 @@
1
1
  import * as silentium from 'silentium';
2
- import { GuestType, SourceWithPoolType, SourceType, PrivateType, GuestObjectType, SourceObjectType } from 'silentium';
2
+ import { GuestType, SourceChangeableType, SourceType, PrivateType, SourceChangeable, GuestObjectType, SourceObjectType } from 'silentium';
3
3
  import { RoutePageTransportType as RoutePageTransportType$1 } from 'src/navigation/PageFetchTransport';
4
4
  import { RouteDisplayType as RouteDisplayType$1 } from 'src/navigation/RouteDisplay';
5
5
  import { RoutePageType as RoutePageType$1 } from 'src/navigation/RoutePageType';
@@ -31,7 +31,7 @@ declare class Navigation {
31
31
  private currentPage;
32
32
  private display;
33
33
  private pageTransport;
34
- constructor(loading: SourceWithPoolType<boolean>, basePath: SourceType<string>, currentPage: SourceWithPoolType<string>, display: RouteDisplayType$1, pageTransport: PrivateType<RoutePageTransportType$1>);
34
+ constructor(loading: SourceChangeableType<boolean>, basePath: SourceType<string>, currentPage: SourceChangeableType<string>, display: RouteDisplayType$1, pageTransport: PrivateType<RoutePageTransportType$1>);
35
35
  routes(routes: RouteDocument[]): void;
36
36
  }
37
37
 
@@ -55,12 +55,12 @@ interface RoutePageType {
55
55
  /**
56
56
  * @deprecated move to web api
57
57
  */
58
- declare class CurrentPage implements SourceWithPoolType<string> {
58
+ declare class CurrentPage implements SourceChangeableType<string> {
59
59
  private source;
60
60
  constructor();
61
61
  give(value: string): this;
62
62
  value(guest: GuestType<string>): GuestType<string>;
63
- pool(): silentium.PatronPool<string>;
63
+ pool(): silentium.PatronPool<unknown>;
64
64
  }
65
65
 
66
66
  type Route = {
@@ -81,12 +81,12 @@ type InputValue = number | string;
81
81
  /**
82
82
  * @deprecated move to web api
83
83
  */
84
- declare class Input implements SourceWithPoolType<InputValue> {
84
+ declare class Input implements SourceChangeableType<InputValue> {
85
85
  private source;
86
- constructor(source: SourceWithPoolType<InputValue>, selector: string);
86
+ constructor(source: SourceChangeable<InputValue>, selector: string);
87
87
  value(guest: GuestType<InputValue>): this;
88
88
  give(value: InputValue): this;
89
- pool(): silentium.PatronPool<InputValue>;
89
+ pool(): silentium.PatronPool<unknown>;
90
90
  }
91
91
 
92
92
  /**
@@ -1,4 +1,4 @@
1
- import { give, SourceAll, value, Patron, SourceWithPool, GuestCast, PatronOnce, PrivateClass, Source, sourceOf } from 'silentium';
1
+ import { give, SourceAll, value, Patron, SourceChangeable, GuestCast, PatronOnce, PrivateClass, Source, sourceOf } from 'silentium';
2
2
  import { HistoryNewPage, HistoryPoppedPage } from 'silentium-web-api';
3
3
 
4
4
  class PageFetchTransport {
@@ -88,7 +88,7 @@ class CurrentPage {
88
88
  constructor() {
89
89
  __publicField$3(this, "source");
90
90
  const correctUrl = location.href.replace(location.origin, "");
91
- this.source = new SourceWithPool(correctUrl);
91
+ this.source = new SourceChangeable(correctUrl);
92
92
  }
93
93
  give(value) {
94
94
  this.source.give(value);
@@ -265,11 +265,11 @@ class Router {
265
265
  currentPage.value(new Patron(new HistoryNewPage()));
266
266
  const [basePath] = location.href.replace(location.origin, "").split("#");
267
267
  if (!basePathSource) {
268
- basePathSource = new SourceWithPool(
268
+ basePathSource = new SourceChangeable(
269
269
  `${basePath}#`.replace("index.html", "").replace("//", "/")
270
270
  );
271
271
  }
272
- const pageLoading = new SourceWithPool(false);
272
+ const pageLoading = new SourceChangeable(false);
273
273
  pageLoading.value(new Patron(new Visible(this.loaderSelector)));
274
274
  const historyPoppedPage = new HistoryPoppedPage(currentPage);
275
275
  historyPoppedPage.watchPop();
@@ -361,7 +361,7 @@ class Dirty {
361
361
  constructor(baseEntitySource, alwaysKeep = [], excludeKeys = [], becomePatronAuto = false) {
362
362
  this.alwaysKeep = alwaysKeep;
363
363
  this.excludeKeys = excludeKeys;
364
- __publicField$2(this, "comparingSource", new SourceWithPool());
364
+ __publicField$2(this, "comparingSource", new SourceChangeable());
365
365
  __publicField$2(this, "all", new SourceAll());
366
366
  this.comparingSource.value(new Patron(this.all.guestKey("comparing")));
367
367
  value(baseEntitySource, new Patron(this.all.guestKey("base")));
@@ -406,7 +406,7 @@ class Loading {
406
406
  constructor(loadingStartSource, loadingFinishSource) {
407
407
  this.loadingStartSource = loadingStartSource;
408
408
  this.loadingFinishSource = loadingFinishSource;
409
- __publicField$1(this, "loadingSource", new SourceWithPool());
409
+ __publicField$1(this, "loadingSource", new SourceChangeable());
410
410
  }
411
411
  value(guest) {
412
412
  value(
@@ -459,7 +459,7 @@ var __defNormalProp = (obj, key, value2) => key in obj ? __defProp(obj, key, { e
459
459
  var __publicField = (obj, key, value2) => __defNormalProp(obj, key + "" , value2);
460
460
  class HashTable {
461
461
  constructor(baseSource) {
462
- __publicField(this, "source", new SourceWithPool({}));
462
+ __publicField(this, "source", new SourceChangeable({}));
463
463
  value(
464
464
  baseSource,
465
465
  new Patron(([key, value2]) => {
@@ -1 +1 @@
1
- {"version":3,"file":"silentium-components.js","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 SourceWithPoolType,\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: SourceWithPoolType<boolean>,\n private basePath: SourceType<string>,\n private currentPage: SourceWithPoolType<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, SourceWithPool, SourceWithPoolType } from \"silentium\";\n\n/**\n * @deprecated move to web api\n */\nexport class CurrentPage implements SourceWithPoolType<string> {\n private source: SourceWithPoolType<string>;\n\n public constructor() {\n const correctUrl = location.href.replace(location.origin, \"\");\n this.source = new SourceWithPool(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 { GuestType, Patron, SourceWithPoolType } from \"silentium\";\n\ntype InputValue = number | string;\n\n/**\n * @deprecated move to web api\n */\nexport class Input implements SourceWithPoolType<InputValue> {\n public constructor(\n private source: SourceWithPoolType<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 SourceWithPool,\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 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 SourceWithPool(\n `${basePath}#`.replace(\"index.html\", \"\").replace(\"//\", \"/\"),\n );\n }\n\n const pageLoading = new SourceWithPool(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 SourceWithPool,\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 SourceWithPool<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 SourceWithPool,\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 SourceWithPool<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 SourceWithPool,\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 SourceWithPool<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":["route","__publicField","basePath","value"],"mappings":"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"}
1
+ {"version":3,"file":"silentium-components.js","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":["route","__publicField","basePath","value"],"mappings":"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"}
@@ -1 +1 @@
1
- !function(e,t,s){"use strict";class r{constructor(e,t){this.basePath=e,this.template=t}content(e){fetch(this.basePath+"/"+this.template).then((e=>e.text())).then((s=>{t.give(s,e)}))}}class i{constructor(e,t,s,r,i){this.loading=e,this.basePath=t,this.currentPage=s,this.display=r,this.pageTransport=i}routes(e){const s=e.find((e=>e.default)),r=new t.SourceAll;t.value(this.basePath,new t.Patron(r.guestKey("basePath"))),t.value(this.currentPage,new t.Patron(r.guestKey("currentPage"))),r.value(new t.Patron((({basePath:r,currentPage:i})=>{const n=i.replace(r,""),a=e.find((e=>e.aliases&&(e.aliases.includes(i)||e.aliases.includes(n))));if(a){const e=r+a.url;if(e!==i)return void t.give(e,this.currentPage)}let o=e.find((e=>{if(e.url.indexOf("*")>=0){return new RegExp(e.url.replaceAll("*",".*").replaceAll("/","/")).test(n)}return e.url.replaceAll("*","")===n}));if(!o&&s&&(o=s),!o)throw new Error("No matching route in Navigation");{const e=r.replace("/#","").replace("#","").replace(/[^/]+\.html$/,"");t.give(!0,this.loading),this.pageTransport.get(e,o.template).content((e=>{this.display.display(e),o.page.mounted(),t.give(!1,this.loading)}))}})))}}class n{constructor(e){this.selector=e}display(e){const t=document.querySelector(this.selector);t&&(t.innerHTML=e)}}var a=Object.defineProperty,o=(e,t,s)=>((e,t,s)=>t in e?a(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,t+"",s);class l{constructor(){o(this,"source");const e=location.href.replace(location.origin,"");this.source=new t.SourceWithPool(e)}give(e){return this.source.give(e),this}value(e){return this.source.value(e),e}pool(){return this.source.pool()}}class c{constructor(e){this.selector=e}give(e){const t=document.querySelector(this.selector);return t&&(t.style.display=e?"block":"none"),this}}class u{constructor(e,t){this.linkSource=e,this.basePath=t}watchClick(e,t){const s=document.querySelectorAll(e);if(!s.length)throw new Error(`Link wrapper not found for selector ${e}`);s.forEach((e=>{e.addEventListener("click",(s=>{t?e.querySelectorAll(t).forEach((e=>{s?.target!==e&&s?.currentTarget!==e||this.handleClick({preventDefault:s.preventDefault.bind(s),target:e})})):this.handleClick(s)}))}))}handleClick(e){let s=e?.target?.getAttribute("href");s||(s=e?.currentTarget?.getAttribute("href")),s&&0!==s.indexOf("http")&&(e.preventDefault(),t.value(this.basePath,(e=>{this.linkSource.give(e+s)})))}}class h{constructor(e,t){this.sources=e,this.selectorTemplate=t}element(e){const s=new t.SourceAll;this.sources.forEach((r=>{r.source.value(new t.GuestCast(e,s.guestKey(r.placeholder)))})),s.value(new t.GuestCast(e,(s=>{let r=this.selectorTemplate;Object.entries(s).map((e=>{r=r.replaceAll(e[0],e[1])}));const i=document.querySelector(r);i&&t.give(i,e)})))}}class g{constructor(e,t,s){this.activeClass=e,this.groupSelector=t,this.document=s}give(e){return t.value(this.document,new t.PatronOnce((t=>{t.querySelectorAll(this.groupSelector).forEach((e=>{e.classList.remove(this.activeClass)})),e.classList.add(this.activeClass)}))),this}}var v=Object.defineProperty,p=(e,t,s)=>((e,t,s)=>t in e?v(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,"symbol"!=typeof t?t+"":t,s);var d=Object.defineProperty,w=(e,t,s)=>((e,t,s)=>t in e?d(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,t+"",s);var S=Object.defineProperty,m=(e,t,s)=>((e,t,s)=>t in e?S(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,t+"",s);e.ComputedElement=h,e.CurrentPage=l,e.Dirty=class{constructor(e,s=[],r=[],i=!1){this.alwaysKeep=s,this.excludeKeys=r,p(this,"comparingSource",new t.SourceWithPool),p(this,"all",new t.SourceAll),this.comparingSource.value(new t.Patron(this.all.guestKey("comparing"))),t.value(e,new t.Patron(this.all.guestKey("base"))),i&&t.value(e,new t.PatronOnce(this))}give(e){return t.give(JSON.parse(JSON.stringify(e)),this.comparingSource),this}value(e){return this.all.value(new t.GuestCast(e,(({comparing:s,base:r})=>{s&&t.give(Object.fromEntries(Object.entries(s).filter((([e,t])=>!!this.alwaysKeep.includes(e)||!this.excludeKeys.includes(e)&&t!==r[e]))),e)}))),this}},e.EntryPointPage=class{constructor(e,t){this.title=e,this.entryPointUrl=t}mounted(){document.title=this.title,import(this.entryPointUrl).then((e=>{e.main&&e.main()}))}},e.GroupActiveClass=g,e.HashTable=class{constructor(e){m(this,"source",new t.SourceWithPool({})),t.value(e,new t.Patron((([e,t])=>{this.source.value((s=>{s[e]=t}))})))}value(e){return t.value(this.source,e),this}},e.Input=class{constructor(e,s){this.source=e;const r=document.querySelector(s);this.source.value(new t.Patron((e=>{r.value=String(e)}))),r.addEventListener("keyup",(()=>{this.give(r.value)})),r.addEventListener("change",(()=>{this.give(r.value)}))}value(e){return this.source.value(e),this}give(e){return this.source.give(e),this}pool(){return this.source.pool()}},e.Link=u,e.Loading=class{constructor(e,s){this.loadingStartSource=e,this.loadingFinishSource=s,w(this,"loadingSource",new t.SourceWithPool)}value(e){return t.value(this.loadingStartSource,new t.GuestCast(e,(()=>{this.loadingSource.give(!0)}))),t.value(this.loadingFinishSource,new t.GuestCast(e,(()=>{this.loadingSource.give(!1)}))),this.loadingSource.value(e),this}},e.Navigation=i,e.Page=class{constructor(e){this.title=e}mounted(){document.title=this.title}},e.PageFetchTransport=r,e.Path=class{constructor(e,t){this.baseSource=e,this.keyType=t}value(e){const s=new t.SourceAll(["base","key"]);return t.value(this.baseSource,new t.GuestCast(e,s.guestKey("base"))),t.value(this.keyType,new t.GuestCast(e,s.guestKey("key"))),s.value(new t.GuestCast(e,(({base:s,key:r})=>{const i=r.split(".");let n=s;i.forEach((e=>{n=n[e]})),void 0!==n&&n!==s&&t.give(n,e)}))),this}},e.RouteDisplay=n,e.Router=class{constructor(e,t,s){this.loaderSelector=e,this.navigationResultSelector=t,this.menuSelector=s}routes(e,a,o,v){a||(a=new l),a.value(new t.Patron(new s.HistoryNewPage));const[p]=location.href.replace(location.origin,"").split("#");o||(o=new t.SourceWithPool(`${p}#`.replace("index.html","").replace("//","/")));const d=new t.SourceWithPool(!1);d.value(new t.Patron(new c(this.loaderSelector)));new s.HistoryPoppedPage(a).watchPop();new i(d,o,a,new n(this.navigationResultSelector),new t.PrivateClass(r)).routes(e);new u(a,o).watchClick(this.menuSelector);const w=new t.SourceAll;o.value(new t.Patron(w.guestKey("basePath"))),a.value(new t.Patron(w.guestKey("page")));const S=new t.Source((e=>{w.value(new t.GuestCast(e,(({basePath:s,page:r})=>{t.give(r.replace(s,""),e)})))}));new h([{source:S,placeholder:"{url}"}],`${this.menuSelector} a[href="{url}"]`).element(new t.Patron(new g("active",`${this.menuSelector} a`,t.sourceOf(document)))),d.value(new t.Patron((e=>{if(e)return;v&&v();const t=document.querySelector(this.navigationResultSelector);t&&t.querySelectorAll("script").forEach((e=>{const s=document.createElement("script");s.setAttribute("type","module"),s.appendChild(document.createTextNode(e.innerText)),t.appendChild(s)}))})))}},e.Text=class{constructor(e){this.selector=e}give(e){const t=document.querySelector(this.selector);return t&&(t.innerText=String(e)),this}},e.Touched=class{},e.Visible=c}({},silentium,silentiumWebApi);
1
+ !function(e,t,s){"use strict";class r{constructor(e,t){this.basePath=e,this.template=t}content(e){fetch(this.basePath+"/"+this.template).then((e=>e.text())).then((s=>{t.give(s,e)}))}}class a{constructor(e,t,s,r,a){this.loading=e,this.basePath=t,this.currentPage=s,this.display=r,this.pageTransport=a}routes(e){const s=e.find((e=>e.default)),r=new t.SourceAll;t.value(this.basePath,new t.Patron(r.guestKey("basePath"))),t.value(this.currentPage,new t.Patron(r.guestKey("currentPage"))),r.value(new t.Patron((({basePath:r,currentPage:a})=>{const n=a.replace(r,""),i=e.find((e=>e.aliases&&(e.aliases.includes(a)||e.aliases.includes(n))));if(i){const e=r+i.url;if(e!==a)return void t.give(e,this.currentPage)}let l=e.find((e=>{if(e.url.indexOf("*")>=0){return new RegExp(e.url.replaceAll("*",".*").replaceAll("/","/")).test(n)}return e.url.replaceAll("*","")===n}));if(!l&&s&&(l=s),!l)throw new Error("No matching route in Navigation");{const e=r.replace("/#","").replace("#","").replace(/[^/]+\.html$/,"");t.give(!0,this.loading),this.pageTransport.get(e,l.template).content((e=>{this.display.display(e),l.page.mounted(),t.give(!1,this.loading)}))}})))}}class n{constructor(e){this.selector=e}display(e){const t=document.querySelector(this.selector);t&&(t.innerHTML=e)}}var i=Object.defineProperty,l=(e,t,s)=>((e,t,s)=>t in e?i(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,t+"",s);class o{constructor(){l(this,"source");const e=location.href.replace(location.origin,"");this.source=new t.SourceChangeable(e)}give(e){return this.source.give(e),this}value(e){return this.source.value(e),e}pool(){return this.source.pool()}}class c{constructor(e){this.selector=e}give(e){const t=document.querySelector(this.selector);return t&&(t.style.display=e?"block":"none"),this}}class u{constructor(e,t){this.linkSource=e,this.basePath=t}watchClick(e,t){const s=document.querySelectorAll(e);if(!s.length)throw new Error(`Link wrapper not found for selector ${e}`);s.forEach((e=>{e.addEventListener("click",(s=>{t?e.querySelectorAll(t).forEach((e=>{s?.target!==e&&s?.currentTarget!==e||this.handleClick({preventDefault:s.preventDefault.bind(s),target:e})})):this.handleClick(s)}))}))}handleClick(e){let s=e?.target?.getAttribute("href");s||(s=e?.currentTarget?.getAttribute("href")),s&&0!==s.indexOf("http")&&(e.preventDefault(),t.value(this.basePath,(e=>{this.linkSource.give(e+s)})))}}class h{constructor(e,t){this.sources=e,this.selectorTemplate=t}element(e){const s=new t.SourceAll;this.sources.forEach((r=>{r.source.value(new t.GuestCast(e,s.guestKey(r.placeholder)))})),s.value(new t.GuestCast(e,(s=>{let r=this.selectorTemplate;Object.entries(s).map((e=>{r=r.replaceAll(e[0],e[1])}));const a=document.querySelector(r);a&&t.give(a,e)})))}}class g{constructor(e,t,s){this.activeClass=e,this.groupSelector=t,this.document=s}give(e){return t.value(this.document,new t.PatronOnce((t=>{t.querySelectorAll(this.groupSelector).forEach((e=>{e.classList.remove(this.activeClass)})),e.classList.add(this.activeClass)}))),this}}var v=Object.defineProperty,p=(e,t,s)=>((e,t,s)=>t in e?v(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,"symbol"!=typeof t?t+"":t,s);var d=Object.defineProperty,w=(e,t,s)=>((e,t,s)=>t in e?d(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,t+"",s);var S=Object.defineProperty,m=(e,t,s)=>((e,t,s)=>t in e?S(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,t+"",s);e.ComputedElement=h,e.CurrentPage=o,e.Dirty=class{constructor(e,s=[],r=[],a=!1){this.alwaysKeep=s,this.excludeKeys=r,p(this,"comparingSource",new t.SourceChangeable),p(this,"all",new t.SourceAll),this.comparingSource.value(new t.Patron(this.all.guestKey("comparing"))),t.value(e,new t.Patron(this.all.guestKey("base"))),a&&t.value(e,new t.PatronOnce(this))}give(e){return t.give(JSON.parse(JSON.stringify(e)),this.comparingSource),this}value(e){return this.all.value(new t.GuestCast(e,(({comparing:s,base:r})=>{s&&t.give(Object.fromEntries(Object.entries(s).filter((([e,t])=>!!this.alwaysKeep.includes(e)||!this.excludeKeys.includes(e)&&t!==r[e]))),e)}))),this}},e.EntryPointPage=class{constructor(e,t){this.title=e,this.entryPointUrl=t}mounted(){document.title=this.title,import(this.entryPointUrl).then((e=>{e.main&&e.main()}))}},e.GroupActiveClass=g,e.HashTable=class{constructor(e){m(this,"source",new t.SourceChangeable({})),t.value(e,new t.Patron((([e,t])=>{this.source.value((s=>{s[e]=t}))})))}value(e){return t.value(this.source,e),this}},e.Input=class{constructor(e,s){this.source=e;const r=document.querySelector(s);this.source.value(new t.Patron((e=>{r.value=String(e)}))),r.addEventListener("keyup",(()=>{this.give(r.value)})),r.addEventListener("change",(()=>{this.give(r.value)}))}value(e){return this.source.value(e),this}give(e){return this.source.give(e),this}pool(){return this.source.pool()}},e.Link=u,e.Loading=class{constructor(e,s){this.loadingStartSource=e,this.loadingFinishSource=s,w(this,"loadingSource",new t.SourceChangeable)}value(e){return t.value(this.loadingStartSource,new t.GuestCast(e,(()=>{this.loadingSource.give(!0)}))),t.value(this.loadingFinishSource,new t.GuestCast(e,(()=>{this.loadingSource.give(!1)}))),this.loadingSource.value(e),this}},e.Navigation=a,e.Page=class{constructor(e){this.title=e}mounted(){document.title=this.title}},e.PageFetchTransport=r,e.Path=class{constructor(e,t){this.baseSource=e,this.keyType=t}value(e){const s=new t.SourceAll(["base","key"]);return t.value(this.baseSource,new t.GuestCast(e,s.guestKey("base"))),t.value(this.keyType,new t.GuestCast(e,s.guestKey("key"))),s.value(new t.GuestCast(e,(({base:s,key:r})=>{const a=r.split(".");let n=s;a.forEach((e=>{n=n[e]})),void 0!==n&&n!==s&&t.give(n,e)}))),this}},e.RouteDisplay=n,e.Router=class{constructor(e,t,s){this.loaderSelector=e,this.navigationResultSelector=t,this.menuSelector=s}routes(e,i,l,v){i||(i=new o),i.value(new t.Patron(new s.HistoryNewPage));const[p]=location.href.replace(location.origin,"").split("#");l||(l=new t.SourceChangeable(`${p}#`.replace("index.html","").replace("//","/")));const d=new t.SourceChangeable(!1);d.value(new t.Patron(new c(this.loaderSelector)));new s.HistoryPoppedPage(i).watchPop();new a(d,l,i,new n(this.navigationResultSelector),new t.PrivateClass(r)).routes(e);new u(i,l).watchClick(this.menuSelector);const w=new t.SourceAll;l.value(new t.Patron(w.guestKey("basePath"))),i.value(new t.Patron(w.guestKey("page")));const S=new t.Source((e=>{w.value(new t.GuestCast(e,(({basePath:s,page:r})=>{t.give(r.replace(s,""),e)})))}));new h([{source:S,placeholder:"{url}"}],`${this.menuSelector} a[href="{url}"]`).element(new t.Patron(new g("active",`${this.menuSelector} a`,t.sourceOf(document)))),d.value(new t.Patron((e=>{if(e)return;v&&v();const t=document.querySelector(this.navigationResultSelector);t&&t.querySelectorAll("script").forEach((e=>{const s=document.createElement("script");s.setAttribute("type","module"),s.appendChild(document.createTextNode(e.innerText)),t.appendChild(s)}))})))}},e.Text=class{constructor(e){this.selector=e}give(e){const t=document.querySelector(this.selector);return t&&(t.innerText=String(e)),this}},e.Touched=class{},e.Visible=c}({},silentium,silentiumWebApi);
@@ -1,2 +1,2 @@
1
- import{give as e,SourceAll as t,value as s,Patron as r,SourceWithPool as i,GuestCast as n,PatronOnce as l,PrivateClass as c,Source as o,sourceOf as a}from"silentium";import{HistoryNewPage as u,HistoryPoppedPage as h}from"silentium-web-api";class p{constructor(e,t){this.basePath=e,this.template=t}content(t){fetch(this.basePath+"/"+this.template).then((e=>e.text())).then((s=>{e(s,t)}))}}class d{constructor(e,t,s,r,i){this.loading=e,this.basePath=t,this.currentPage=s,this.display=r,this.pageTransport=i}routes(i){const n=i.find((e=>e.default)),l=new t;s(this.basePath,new r(l.guestKey("basePath"))),s(this.currentPage,new r(l.guestKey("currentPage"))),l.value(new r((({basePath:t,currentPage:s})=>{const r=s.replace(t,""),l=i.find((e=>e.aliases&&(e.aliases.includes(s)||e.aliases.includes(r))));if(l){const r=t+l.url;if(r!==s)return void e(r,this.currentPage)}let c=i.find((e=>{if(e.url.indexOf("*")>=0){return new RegExp(e.url.replaceAll("*",".*").replaceAll("/","/")).test(r)}return e.url.replaceAll("*","")===r}));if(!c&&n&&(c=n),!c)throw new Error("No matching route in Navigation");{const s=t.replace("/#","").replace("#","").replace(/[^/]+\.html$/,"");e(!0,this.loading),this.pageTransport.get(s,c.template).content((t=>{this.display.display(t),c.page.mounted(),e(!1,this.loading)}))}})))}}class g{constructor(e){this.selector=e}display(e){const t=document.querySelector(this.selector);t&&(t.innerHTML=e)}}var v=Object.defineProperty,w=(e,t,s)=>((e,t,s)=>t in e?v(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,t+"",s);class m{constructor(){w(this,"source");const e=location.href.replace(location.origin,"");this.source=new i(e)}give(e){return this.source.give(e),this}value(e){return this.source.value(e),e}pool(){return this.source.pool()}}class y{constructor(e,t){this.source=e;const s=document.querySelector(t);this.source.value(new r((e=>{s.value=String(e)}))),s.addEventListener("keyup",(()=>{this.give(s.value)})),s.addEventListener("change",(()=>{this.give(s.value)}))}value(e){return this.source.value(e),this}give(e){return this.source.give(e),this}pool(){return this.source.pool()}}class b{constructor(e){this.selector=e}give(e){const t=document.querySelector(this.selector);return t&&(t.style.display=e?"block":"none"),this}}class f{constructor(e){this.selector=e}give(e){const t=document.querySelector(this.selector);return t&&(t.innerText=String(e)),this}}class S{constructor(e,t){this.linkSource=e,this.basePath=t}watchClick(e,t){const s=document.querySelectorAll(e);if(!s.length)throw new Error(`Link wrapper not found for selector ${e}`);s.forEach((e=>{e.addEventListener("click",(s=>{t?e.querySelectorAll(t).forEach((e=>{s?.target!==e&&s?.currentTarget!==e||this.handleClick({preventDefault:s.preventDefault.bind(s),target:e})})):this.handleClick(s)}))}))}handleClick(e){let t=e?.target?.getAttribute("href");t||(t=e?.currentTarget?.getAttribute("href")),t&&0!==t.indexOf("http")&&(e.preventDefault(),s(this.basePath,(e=>{this.linkSource.give(e+t)})))}}class P{constructor(e,t){this.sources=e,this.selectorTemplate=t}element(s){const r=new t;this.sources.forEach((e=>{e.source.value(new n(s,r.guestKey(e.placeholder)))})),r.value(new n(s,(t=>{let r=this.selectorTemplate;Object.entries(t).map((e=>{r=r.replaceAll(e[0],e[1])}));const i=document.querySelector(r);i&&e(i,s)})))}}class k{constructor(e,t,s){this.activeClass=e,this.groupSelector=t,this.document=s}give(e){return s(this.document,new l((t=>{t.querySelectorAll(this.groupSelector).forEach((e=>{e.classList.remove(this.activeClass)})),e.classList.add(this.activeClass)}))),this}}class E{constructor(e,t,s){this.loaderSelector=e,this.navigationResultSelector=t,this.menuSelector=s}routes(s,l,v,w){l||(l=new m),l.value(new r(new u));const[y]=location.href.replace(location.origin,"").split("#");v||(v=new i(`${y}#`.replace("index.html","").replace("//","/")));const f=new i(!1);f.value(new r(new b(this.loaderSelector)));new h(l).watchPop();new d(f,v,l,new g(this.navigationResultSelector),new c(p)).routes(s);new S(l,v).watchClick(this.menuSelector);const E=new t;v.value(new r(E.guestKey("basePath"))),l.value(new r(E.guestKey("page")));const K=new o((t=>{E.value(new n(t,(({basePath:s,page:r})=>{e(r.replace(s,""),t)})))}));new P([{source:K,placeholder:"{url}"}],`${this.menuSelector} a[href="{url}"]`).element(new r(new k("active",`${this.menuSelector} a`,a(document)))),f.value(new r((e=>{if(e)return;w&&w();const t=document.querySelector(this.navigationResultSelector);t&&t.querySelectorAll("script").forEach((e=>{const s=document.createElement("script");s.setAttribute("type","module"),s.appendChild(document.createTextNode(e.innerText)),t.appendChild(s)}))})))}}class K{constructor(e){this.title=e}mounted(){document.title=this.title}}class T{constructor(e,t){this.title=e,this.entryPointUrl=t}mounted(){document.title=this.title,import(this.entryPointUrl).then((e=>{e.main&&e.main()}))}}var x=Object.defineProperty,A=(e,t,s)=>((e,t,s)=>t in e?x(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,"symbol"!=typeof t?t+"":t,s);class O{constructor(e,n=[],c=[],o=!1){this.alwaysKeep=n,this.excludeKeys=c,A(this,"comparingSource",new i),A(this,"all",new t),this.comparingSource.value(new r(this.all.guestKey("comparing"))),s(e,new r(this.all.guestKey("base"))),o&&s(e,new l(this))}give(t){return e(JSON.parse(JSON.stringify(t)),this.comparingSource),this}value(t){return this.all.value(new n(t,(({comparing:s,base:r})=>{s&&e(Object.fromEntries(Object.entries(s).filter((([e,t])=>!!this.alwaysKeep.includes(e)||!this.excludeKeys.includes(e)&&t!==r[e]))),t)}))),this}}var q=Object.defineProperty,C=(e,t,s)=>((e,t,s)=>t in e?q(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,t+"",s);class j{constructor(e,t){this.loadingStartSource=e,this.loadingFinishSource=t,C(this,"loadingSource",new i)}value(e){return s(this.loadingStartSource,new n(e,(()=>{this.loadingSource.give(!0)}))),s(this.loadingFinishSource,new n(e,(()=>{this.loadingSource.give(!1)}))),this.loadingSource.value(e),this}}class L{}class N{constructor(e,t){this.baseSource=e,this.keyType=t}value(r){const i=new t(["base","key"]);return s(this.baseSource,new n(r,i.guestKey("base"))),s(this.keyType,new n(r,i.guestKey("key"))),i.value(new n(r,(({base:t,key:s})=>{const i=s.split(".");let n=t;i.forEach((e=>{n=n[e]})),void 0!==n&&n!==t&&e(n,r)}))),this}}var $=Object.defineProperty,R=(e,t,s)=>((e,t,s)=>t in e?$(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,t+"",s);class D{constructor(e){R(this,"source",new i({})),s(e,new r((([e,t])=>{this.source.value((s=>{s[e]=t}))})))}value(e){return s(this.source,e),this}}export{P as ComputedElement,m as CurrentPage,O as Dirty,T as EntryPointPage,k as GroupActiveClass,D as HashTable,y as Input,S as Link,j as Loading,d as Navigation,K as Page,p as PageFetchTransport,N as Path,g as RouteDisplay,E as Router,f as Text,L as Touched,b as Visible};
1
+ import{give as e,SourceAll as t,value as s,Patron as r,SourceChangeable as i,GuestCast as n,PatronOnce as l,PrivateClass as c,Source as o,sourceOf as a}from"silentium";import{HistoryNewPage as u,HistoryPoppedPage as h}from"silentium-web-api";class p{constructor(e,t){this.basePath=e,this.template=t}content(t){fetch(this.basePath+"/"+this.template).then((e=>e.text())).then((s=>{e(s,t)}))}}class d{constructor(e,t,s,r,i){this.loading=e,this.basePath=t,this.currentPage=s,this.display=r,this.pageTransport=i}routes(i){const n=i.find((e=>e.default)),l=new t;s(this.basePath,new r(l.guestKey("basePath"))),s(this.currentPage,new r(l.guestKey("currentPage"))),l.value(new r((({basePath:t,currentPage:s})=>{const r=s.replace(t,""),l=i.find((e=>e.aliases&&(e.aliases.includes(s)||e.aliases.includes(r))));if(l){const r=t+l.url;if(r!==s)return void e(r,this.currentPage)}let c=i.find((e=>{if(e.url.indexOf("*")>=0){return new RegExp(e.url.replaceAll("*",".*").replaceAll("/","/")).test(r)}return e.url.replaceAll("*","")===r}));if(!c&&n&&(c=n),!c)throw new Error("No matching route in Navigation");{const s=t.replace("/#","").replace("#","").replace(/[^/]+\.html$/,"");e(!0,this.loading),this.pageTransport.get(s,c.template).content((t=>{this.display.display(t),c.page.mounted(),e(!1,this.loading)}))}})))}}class g{constructor(e){this.selector=e}display(e){const t=document.querySelector(this.selector);t&&(t.innerHTML=e)}}var v=Object.defineProperty,w=(e,t,s)=>((e,t,s)=>t in e?v(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,t+"",s);class m{constructor(){w(this,"source");const e=location.href.replace(location.origin,"");this.source=new i(e)}give(e){return this.source.give(e),this}value(e){return this.source.value(e),e}pool(){return this.source.pool()}}class y{constructor(e,t){this.source=e;const s=document.querySelector(t);this.source.value(new r((e=>{s.value=String(e)}))),s.addEventListener("keyup",(()=>{this.give(s.value)})),s.addEventListener("change",(()=>{this.give(s.value)}))}value(e){return this.source.value(e),this}give(e){return this.source.give(e),this}pool(){return this.source.pool()}}class b{constructor(e){this.selector=e}give(e){const t=document.querySelector(this.selector);return t&&(t.style.display=e?"block":"none"),this}}class f{constructor(e){this.selector=e}give(e){const t=document.querySelector(this.selector);return t&&(t.innerText=String(e)),this}}class S{constructor(e,t){this.linkSource=e,this.basePath=t}watchClick(e,t){const s=document.querySelectorAll(e);if(!s.length)throw new Error(`Link wrapper not found for selector ${e}`);s.forEach((e=>{e.addEventListener("click",(s=>{t?e.querySelectorAll(t).forEach((e=>{s?.target!==e&&s?.currentTarget!==e||this.handleClick({preventDefault:s.preventDefault.bind(s),target:e})})):this.handleClick(s)}))}))}handleClick(e){let t=e?.target?.getAttribute("href");t||(t=e?.currentTarget?.getAttribute("href")),t&&0!==t.indexOf("http")&&(e.preventDefault(),s(this.basePath,(e=>{this.linkSource.give(e+t)})))}}class P{constructor(e,t){this.sources=e,this.selectorTemplate=t}element(s){const r=new t;this.sources.forEach((e=>{e.source.value(new n(s,r.guestKey(e.placeholder)))})),r.value(new n(s,(t=>{let r=this.selectorTemplate;Object.entries(t).map((e=>{r=r.replaceAll(e[0],e[1])}));const i=document.querySelector(r);i&&e(i,s)})))}}class k{constructor(e,t,s){this.activeClass=e,this.groupSelector=t,this.document=s}give(e){return s(this.document,new l((t=>{t.querySelectorAll(this.groupSelector).forEach((e=>{e.classList.remove(this.activeClass)})),e.classList.add(this.activeClass)}))),this}}class E{constructor(e,t,s){this.loaderSelector=e,this.navigationResultSelector=t,this.menuSelector=s}routes(s,l,v,w){l||(l=new m),l.value(new r(new u));const[y]=location.href.replace(location.origin,"").split("#");v||(v=new i(`${y}#`.replace("index.html","").replace("//","/")));const f=new i(!1);f.value(new r(new b(this.loaderSelector)));new h(l).watchPop();new d(f,v,l,new g(this.navigationResultSelector),new c(p)).routes(s);new S(l,v).watchClick(this.menuSelector);const E=new t;v.value(new r(E.guestKey("basePath"))),l.value(new r(E.guestKey("page")));const K=new o((t=>{E.value(new n(t,(({basePath:s,page:r})=>{e(r.replace(s,""),t)})))}));new P([{source:K,placeholder:"{url}"}],`${this.menuSelector} a[href="{url}"]`).element(new r(new k("active",`${this.menuSelector} a`,a(document)))),f.value(new r((e=>{if(e)return;w&&w();const t=document.querySelector(this.navigationResultSelector);t&&t.querySelectorAll("script").forEach((e=>{const s=document.createElement("script");s.setAttribute("type","module"),s.appendChild(document.createTextNode(e.innerText)),t.appendChild(s)}))})))}}class K{constructor(e){this.title=e}mounted(){document.title=this.title}}class T{constructor(e,t){this.title=e,this.entryPointUrl=t}mounted(){document.title=this.title,import(this.entryPointUrl).then((e=>{e.main&&e.main()}))}}var x=Object.defineProperty,A=(e,t,s)=>((e,t,s)=>t in e?x(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,"symbol"!=typeof t?t+"":t,s);class O{constructor(e,n=[],c=[],o=!1){this.alwaysKeep=n,this.excludeKeys=c,A(this,"comparingSource",new i),A(this,"all",new t),this.comparingSource.value(new r(this.all.guestKey("comparing"))),s(e,new r(this.all.guestKey("base"))),o&&s(e,new l(this))}give(t){return e(JSON.parse(JSON.stringify(t)),this.comparingSource),this}value(t){return this.all.value(new n(t,(({comparing:s,base:r})=>{s&&e(Object.fromEntries(Object.entries(s).filter((([e,t])=>!!this.alwaysKeep.includes(e)||!this.excludeKeys.includes(e)&&t!==r[e]))),t)}))),this}}var q=Object.defineProperty,C=(e,t,s)=>((e,t,s)=>t in e?q(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,t+"",s);class j{constructor(e,t){this.loadingStartSource=e,this.loadingFinishSource=t,C(this,"loadingSource",new i)}value(e){return s(this.loadingStartSource,new n(e,(()=>{this.loadingSource.give(!0)}))),s(this.loadingFinishSource,new n(e,(()=>{this.loadingSource.give(!1)}))),this.loadingSource.value(e),this}}class L{}class N{constructor(e,t){this.baseSource=e,this.keyType=t}value(r){const i=new t(["base","key"]);return s(this.baseSource,new n(r,i.guestKey("base"))),s(this.keyType,new n(r,i.guestKey("key"))),i.value(new n(r,(({base:t,key:s})=>{const i=s.split(".");let n=t;i.forEach((e=>{n=n[e]})),void 0!==n&&n!==t&&e(n,r)}))),this}}var $=Object.defineProperty,R=(e,t,s)=>((e,t,s)=>t in e?$(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,t+"",s);class D{constructor(e){R(this,"source",new i({})),s(e,new r((([e,t])=>{this.source.value((s=>{s[e]=t}))})))}value(e){return s(this.source,e),this}}export{P as ComputedElement,m as CurrentPage,O as Dirty,T as EntryPointPage,k as GroupActiveClass,D as HashTable,y as Input,S as Link,j as Loading,d as Navigation,K as Page,p as PageFetchTransport,N as Path,g as RouteDisplay,E as Router,f as Text,L as Touched,b as Visible};
2
2
  //# sourceMappingURL=silentium-components.min.mjs.map