silentium-components 0.0.3 → 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.
- package/CHANGELOG.md +19 -0
- package/dist/silentium-components.cjs +32 -6
- package/dist/silentium-components.cjs.map +1 -1
- package/dist/silentium-components.d.ts +15 -8
- package/dist/silentium-components.js +33 -8
- package/dist/silentium-components.js.map +1 -1
- package/dist/silentium-components.min.js +1 -1
- package/dist/silentium-components.min.mjs +1 -1
- package/dist/silentium-components.min.mjs.map +1 -1
- package/dist/silentium-components.mjs +33 -8
- package/dist/silentium-components.mjs.map +1 -1
- package/docs/assets/js/index.mjs +3 -3
- package/docs/build.sh +2 -2
- package/docs/index.html +2 -2
- package/docs/pages/algorithms.html +1 -0
- package/docs/pages/behaviors/dirty.html +4 -4
- package/docs/pages/behaviors/loading.html +6 -6
- package/docs/pages/behaviors/path.html +52 -0
- package/docs/pages/behaviors.html +5 -0
- package/docs/pages/index.html +5 -0
- package/docs/pages/structures/hash-table.html +4 -4
- package/docs/routes.json +1 -1
- package/package.json +3 -3
- package/src/behaviors/Dirty.test.ts +2 -2
- package/src/behaviors/Dirty.ts +2 -2
- package/src/behaviors/Loading.test.ts +3 -3
- package/src/behaviors/Loading.ts +2 -2
- package/src/behaviors/Path.index.test.ts +16 -0
- package/src/behaviors/Path.nested.test.ts +15 -0
- package/src/behaviors/Path.test.ts +12 -0
- package/src/behaviors/Path.ts +38 -0
- package/src/behaviors/index.ts +1 -0
- package/src/controls/Input.ts +8 -3
- package/src/jsdom/JSDomElement.ts +2 -2
- package/src/navigation/CurrentPage.ts +4 -4
- package/src/navigation/Navigation.default.test.ts +7 -6
- package/src/navigation/Navigation.main.test.ts +7 -6
- package/src/navigation/Navigation.ts +3 -3
- package/src/navigation/Navigation.wildcard.test.ts +6 -6
- package/src/navigation/Router.ts +4 -4
- package/src/structures/HashTable.test.ts +2 -2
- package/src/structures/HashTable.ts +2 -2
- package/dist/patron-components.cjs +0 -372
- package/dist/patron-components.cjs.map +0 -1
- package/dist/patron-components.d.ts +0 -158
- package/dist/patron-components.js +0 -358
- package/dist/patron-components.js.map +0 -1
- package/dist/patron-components.min.js +0 -1
- package/dist/patron-components.min.mjs +0 -2
- package/dist/patron-components.min.mjs.map +0 -1
- package/dist/patron-components.mjs +0 -358
- package/dist/patron-components.mjs.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,25 @@
|
|
|
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
|
+
|
|
13
|
+
### [0.0.4](https://github.com/silentium-lab/silentium-components/compare/v0.0.3...v0.0.4) (2025-04-17)
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
### Features
|
|
17
|
+
|
|
18
|
+
* **12-issue:** routes added ([faf32a6](https://github.com/silentium-lab/silentium-components/commit/faf32a6dfdbc09776279c4194ecd9c50a55a256c))
|
|
19
|
+
* **12-issue:** work done on creation Path class ([d7fcd11](https://github.com/silentium-lab/silentium-components/commit/d7fcd11e235a6b00d550124859d4013409fb6b9f))
|
|
20
|
+
* **12-issue:** work on path ([f2a13c4](https://github.com/silentium-lab/silentium-components/commit/f2a13c4a9a2d02807d7e9f1fd58392baa0d63767))
|
|
21
|
+
* **12-issue:** work on path ([98db7c1](https://github.com/silentium-lab/silentium-components/commit/98db7c12388c818abf03f7dfe60c5789d3781019))
|
|
22
|
+
* **main:** fix versions of components ([d1ff4d0](https://github.com/silentium-lab/silentium-components/commit/d1ff4d091a4fc62c16f6bb9e710207be3333e12a))
|
|
23
|
+
|
|
5
24
|
### [0.0.3](https://github.com/silentium-lab/silentium-components/compare/v0.0.2...v0.0.3) (2025-04-16)
|
|
6
25
|
|
|
7
26
|
|
|
@@ -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.
|
|
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.
|
|
270
|
+
basePathSource = new silentium.SourceChangeable(
|
|
271
271
|
`${basePath}#`.replace("index.html", "").replace("//", "/")
|
|
272
272
|
);
|
|
273
273
|
}
|
|
274
|
-
const pageLoading = new silentium.
|
|
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.
|
|
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.
|
|
411
|
+
__publicField$1(this, "loadingSource", new silentium.SourceChangeable());
|
|
412
412
|
}
|
|
413
413
|
value(guest) {
|
|
414
414
|
silentium.value(
|
|
@@ -431,12 +431,37 @@ class Loading {
|
|
|
431
431
|
class Touched {
|
|
432
432
|
}
|
|
433
433
|
|
|
434
|
+
class Path {
|
|
435
|
+
constructor(baseSource, keyType) {
|
|
436
|
+
this.baseSource = baseSource;
|
|
437
|
+
this.keyType = keyType;
|
|
438
|
+
}
|
|
439
|
+
value(guest) {
|
|
440
|
+
const all = new silentium.SourceAll(["base", "key"]);
|
|
441
|
+
silentium.value(this.baseSource, new silentium.GuestCast(guest, all.guestKey("base")));
|
|
442
|
+
silentium.value(this.keyType, new silentium.GuestCast(guest, all.guestKey("key")));
|
|
443
|
+
all.value(
|
|
444
|
+
new silentium.GuestCast(guest, ({ base, key }) => {
|
|
445
|
+
const keyChunks = key.split(".");
|
|
446
|
+
let value2 = base;
|
|
447
|
+
keyChunks.forEach((keyChunk) => {
|
|
448
|
+
value2 = value2[keyChunk];
|
|
449
|
+
});
|
|
450
|
+
if (value2 !== void 0 && value2 !== base) {
|
|
451
|
+
silentium.give(value2, guest);
|
|
452
|
+
}
|
|
453
|
+
})
|
|
454
|
+
);
|
|
455
|
+
return this;
|
|
456
|
+
}
|
|
457
|
+
}
|
|
458
|
+
|
|
434
459
|
var __defProp = Object.defineProperty;
|
|
435
460
|
var __defNormalProp = (obj, key, value2) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value: value2 }) : obj[key] = value2;
|
|
436
461
|
var __publicField = (obj, key, value2) => __defNormalProp(obj, key + "" , value2);
|
|
437
462
|
class HashTable {
|
|
438
463
|
constructor(baseSource) {
|
|
439
|
-
__publicField(this, "source", new silentium.
|
|
464
|
+
__publicField(this, "source", new silentium.SourceChangeable({}));
|
|
440
465
|
silentium.value(
|
|
441
466
|
baseSource,
|
|
442
467
|
new silentium.Patron(([key, value2]) => {
|
|
@@ -464,6 +489,7 @@ exports.Loading = Loading;
|
|
|
464
489
|
exports.Navigation = Navigation;
|
|
465
490
|
exports.Page = Page;
|
|
466
491
|
exports.PageFetchTransport = PageFetchTransport;
|
|
492
|
+
exports.Path = Path;
|
|
467
493
|
exports.RouteDisplay = RouteDisplay;
|
|
468
494
|
exports.Router = Router;
|
|
469
495
|
exports.Text = Text;
|
|
@@ -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/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 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,
|
|
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:
|
|
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
|
|
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<
|
|
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
|
|
84
|
+
declare class Input implements SourceChangeableType<InputValue> {
|
|
85
85
|
private source;
|
|
86
|
-
constructor(source:
|
|
86
|
+
constructor(source: SourceChangeable<InputValue>, selector: string);
|
|
87
87
|
value(guest: GuestType<InputValue>): this;
|
|
88
88
|
give(value: InputValue): this;
|
|
89
|
-
pool(): silentium.PatronPool<
|
|
89
|
+
pool(): silentium.PatronPool<unknown>;
|
|
90
90
|
}
|
|
91
91
|
|
|
92
92
|
/**
|
|
@@ -194,6 +194,13 @@ declare class Loading implements SourceObjectType<boolean> {
|
|
|
194
194
|
declare class Touched {
|
|
195
195
|
}
|
|
196
196
|
|
|
197
|
+
declare class Path<T extends Record<string, unknown>, K extends string> implements SourceObjectType<T[K]> {
|
|
198
|
+
private baseSource;
|
|
199
|
+
private keyType;
|
|
200
|
+
constructor(baseSource: SourceType<T>, keyType: SourceType<K>);
|
|
201
|
+
value(guest: GuestType<T[K]>): this;
|
|
202
|
+
}
|
|
203
|
+
|
|
197
204
|
/**
|
|
198
205
|
* https://silentium-lab.github.io/silentium-components/#/structures/hash-table
|
|
199
206
|
*/
|
|
@@ -203,4 +210,4 @@ declare class HashTable implements SourceObjectType<Record<string, unknown>> {
|
|
|
203
210
|
value(guest: GuestType<Record<string, unknown>>): this;
|
|
204
211
|
}
|
|
205
212
|
|
|
206
|
-
export { ComputedElement, CurrentPage, Dirty, EntryPointPage, GroupActiveClass, HashTable, Input, Link, Loading, Navigation, Page, PageFetchTransport, RouteDisplay, type RouteDisplayType, type RouteDocument, type RoutePageTransportType, type RoutePageType, Router, Text, Touched, Visible };
|
|
213
|
+
export { ComputedElement, CurrentPage, Dirty, EntryPointPage, GroupActiveClass, HashTable, Input, Link, Loading, Navigation, Page, PageFetchTransport, Path, RouteDisplay, type RouteDisplayType, type RouteDocument, type RoutePageTransportType, type RoutePageType, Router, Text, Touched, Visible };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { give, SourceAll, value, Patron,
|
|
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
|
|
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
|
|
268
|
+
basePathSource = new SourceChangeable(
|
|
269
269
|
`${basePath}#`.replace("index.html", "").replace("//", "/")
|
|
270
270
|
);
|
|
271
271
|
}
|
|
272
|
-
const pageLoading = new
|
|
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
|
|
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
|
|
409
|
+
__publicField$1(this, "loadingSource", new SourceChangeable());
|
|
410
410
|
}
|
|
411
411
|
value(guest) {
|
|
412
412
|
value(
|
|
@@ -429,12 +429,37 @@ class Loading {
|
|
|
429
429
|
class Touched {
|
|
430
430
|
}
|
|
431
431
|
|
|
432
|
+
class Path {
|
|
433
|
+
constructor(baseSource, keyType) {
|
|
434
|
+
this.baseSource = baseSource;
|
|
435
|
+
this.keyType = keyType;
|
|
436
|
+
}
|
|
437
|
+
value(guest) {
|
|
438
|
+
const all = new SourceAll(["base", "key"]);
|
|
439
|
+
value(this.baseSource, new GuestCast(guest, all.guestKey("base")));
|
|
440
|
+
value(this.keyType, new GuestCast(guest, all.guestKey("key")));
|
|
441
|
+
all.value(
|
|
442
|
+
new GuestCast(guest, ({ base, key }) => {
|
|
443
|
+
const keyChunks = key.split(".");
|
|
444
|
+
let value2 = base;
|
|
445
|
+
keyChunks.forEach((keyChunk) => {
|
|
446
|
+
value2 = value2[keyChunk];
|
|
447
|
+
});
|
|
448
|
+
if (value2 !== void 0 && value2 !== base) {
|
|
449
|
+
give(value2, guest);
|
|
450
|
+
}
|
|
451
|
+
})
|
|
452
|
+
);
|
|
453
|
+
return this;
|
|
454
|
+
}
|
|
455
|
+
}
|
|
456
|
+
|
|
432
457
|
var __defProp = Object.defineProperty;
|
|
433
458
|
var __defNormalProp = (obj, key, value2) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value: value2 }) : obj[key] = value2;
|
|
434
459
|
var __publicField = (obj, key, value2) => __defNormalProp(obj, key + "" , value2);
|
|
435
460
|
class HashTable {
|
|
436
461
|
constructor(baseSource) {
|
|
437
|
-
__publicField(this, "source", new
|
|
462
|
+
__publicField(this, "source", new SourceChangeable({}));
|
|
438
463
|
value(
|
|
439
464
|
baseSource,
|
|
440
465
|
new Patron(([key, value2]) => {
|
|
@@ -450,5 +475,5 @@ class HashTable {
|
|
|
450
475
|
}
|
|
451
476
|
}
|
|
452
477
|
|
|
453
|
-
export { ComputedElement, CurrentPage, Dirty, EntryPointPage, GroupActiveClass, HashTable, Input, Link, Loading, Navigation, Page, PageFetchTransport, RouteDisplay, Router, Text, Touched, Visible };
|
|
478
|
+
export { ComputedElement, CurrentPage, Dirty, EntryPointPage, GroupActiveClass, HashTable, Input, Link, Loading, Navigation, Page, PageFetchTransport, Path, RouteDisplay, Router, Text, Touched, Visible };
|
|
454
479
|
//# sourceMappingURL=silentium-components.js.map
|
|
@@ -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/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 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":";;;AAUO,MAAM,kBAAqD,CAAA;AAAA,EACzD,WAAA,CACG,UACA,QACR,EAAA;AAFQ,IAAA,IAAA,CAAA,QAAA,GAAA,QAAA;AACA,IAAA,IAAA,CAAA,QAAA,GAAA,QAAA;AAAA;AACP,EAEI,QAAQ,KAAgC,EAAA;AAC7C,IAAM,KAAA,CAAA,IAAA,CAAK,WAAW,GAAM,GAAA,IAAA,CAAK,QAAQ,CACtC,CAAA,IAAA,CAAK,CAAC,MAAW,KAAA;AAChB,MAAA,OAAO,OAAO,IAAK,EAAA;AAAA,KACpB,CAAA,CACA,IAAK,CAAA,CAAC,MAAW,KAAA;AAChB,MAAA,IAAA,CAAK,QAAQ,KAAK,CAAA;AAAA,KACnB,CAAA;AAAA;AAEP;;ACJO,MAAM,UAAW,CAAA;AAAA,EACf,WACG,CAAA,OAAA,EACA,QACA,EAAA,WAAA,EACA,SACA,aACR,EAAA;AALQ,IAAA,IAAA,CAAA,OAAA,GAAA,OAAA;AACA,IAAA,IAAA,CAAA,QAAA,GAAA,QAAA;AACA,IAAA,IAAA,CAAA,WAAA,GAAA,WAAA;AACA,IAAA,IAAA,CAAA,OAAA,GAAA,OAAA;AACA,IAAA,IAAA,CAAA,aAAA,GAAA,aAAA;AAAA;AACP,EAEI,OAAO,MAAyB,EAAA;AACrC,IAAA,MAAM,eAAe,MAAO,CAAA,IAAA,CAAK,CAAC,KAAA,KAAU,MAAM,OAAO,CAAA;AACzD,IAAM,MAAA,GAAA,GAAM,IAAI,SAGb,EAAA;AACH,IAAM,KAAA,CAAA,IAAA,CAAK,UAAU,IAAI,MAAA,CAAO,IAAI,QAAS,CAAA,UAAU,CAAC,CAAC,CAAA;AACzD,IAAM,KAAA,CAAA,IAAA,CAAK,aAAa,IAAI,MAAA,CAAO,IAAI,QAAS,CAAA,aAAa,CAAC,CAAC,CAAA;AAE/D,IAAI,GAAA,CAAA,KAAA;AAAA,MACF,IAAI,MAAO,CAAA,CAAC,EAAE,QAAA,EAAU,aAAkB,KAAA;AACxC,QAAA,MAAM,kBAAqB,GAAA,WAAA,CAAY,OAAQ,CAAA,QAAA,EAAU,EAAE,CAAA;AAC3D,QAAA,MAAM,sBAAsB,MAAO,CAAA,IAAA;AAAA,UACjC,CAACA,MAAAA,KACCA,MAAM,CAAA,OAAA,KACLA,MAAM,CAAA,OAAA,CAAQ,QAAS,CAAA,WAAW,CACjCA,IAAAA,MAAAA,CAAM,OAAQ,CAAA,QAAA,CAAS,kBAAkB,CAAA;AAAA,SAC/C;AAEA,QAAA,IAAI,mBAAqB,EAAA;AACvB,UAAM,MAAA,UAAA,GAAa,WAAW,mBAAoB,CAAA,GAAA;AAElD,UAAA,IAAI,eAAe,WAAa,EAAA;AAC9B,YAAK,IAAA,CAAA,UAAA,EAAY,KAAK,WAAW,CAAA;AACjC,YAAA;AAAA;AACF;AAGF,QAAA,IAAI,KAAQ,GAAA,MAAA,CAAO,IAAK,CAAA,CAACA,MAAU,KAAA;AACjC,UAAA,IAAIA,MAAM,CAAA,GAAA,CAAI,OAAQ,CAAA,GAAG,KAAK,CAAG,EAAA;AAC/B,YAAA,MAAM,SAAS,IAAI,MAAA;AAAA,cACjBA,MAAAA,CAAM,IAAI,UAAW,CAAA,GAAA,EAAK,IAAI,CAAE,CAAA,UAAA,CAAW,KAAK,GAAG;AAAA,aACrD;AACA,YAAO,OAAA,MAAA,CAAO,KAAK,kBAAkB,CAAA;AAAA;AAEvC,UAAA,OAAOA,MAAM,CAAA,GAAA,CAAI,UAAW,CAAA,GAAA,EAAK,EAAE,CAAM,KAAA,kBAAA;AAAA,SAC1C,CAAA;AAED,QAAI,IAAA,CAAC,SAAS,YAAc,EAAA;AAC1B,UAAQ,KAAA,GAAA,YAAA;AAAA;AAGV,QAAA,IAAI,KAAO,EAAA;AACT,UAAA,MAAM,mBAAsB,GAAA,QAAA,CACzB,OAAQ,CAAA,IAAA,EAAM,EAAE,CAAA,CAChB,OAAQ,CAAA,GAAA,EAAK,EAAE,CAAA,CACf,OAAQ,CAAA,cAAA,EAAgB,EAAE,CAAA;AAC7B,UAAK,IAAA,CAAA,IAAA,EAAM,KAAK,OAAO,CAAA;AACvB,UAAK,IAAA,CAAA,aAAA,CACF,IAAI,mBAAqB,EAAA,KAAA,CAAM,QAAQ,CACvC,CAAA,OAAA,CAAQ,CAAC,eAAoB,KAAA;AAC5B,YAAK,IAAA,CAAA,OAAA,CAAQ,QAAQ,eAAe,CAAA;AACpC,YAAA,KAAA,CAAM,KAAK,OAAQ,EAAA;AACnB,YAAK,IAAA,CAAA,KAAA,EAAO,KAAK,OAAO,CAAA;AAAA,WACzB,CAAA;AAAA,SACE,MAAA;AACL,UAAM,MAAA,IAAI,MAAM,iCAAiC,CAAA;AAAA;AACnD,OACD;AAAA,KACH;AAAA;AAEJ;;ACnFO,MAAM,YAAyC,CAAA;AAAA,EAC7C,YAAoB,QAAkB,EAAA;AAAlB,IAAA,IAAA,CAAA,QAAA,GAAA,QAAA;AAAA;AAAmB,EAEvC,QAAQ,OAAuB,EAAA;AACpC,IAAA,MAAM,SAAY,GAAA,QAAA,CAAS,aAAc,CAAA,IAAA,CAAK,QAAQ,CAAA;AACtD,IAAA,IAAI,SAAW,EAAA;AACb,MAAA,SAAA,CAAU,SAAY,GAAA,OAAA;AAAA;AACxB;AAEJ;;;;;ACZO,MAAM,WAAoD,CAAA;AAAA,EAGxD,WAAc,GAAA;AAFrB,IAAQC,eAAA,CAAA,IAAA,EAAA,QAAA,CAAA;AAGN,IAAA,MAAM,aAAa,QAAS,CAAA,IAAA,CAAK,OAAQ,CAAA,QAAA,CAAS,QAAQ,EAAE,CAAA;AAC5D,IAAK,IAAA,CAAA,MAAA,GAAS,IAAI,gBAAA,CAAiB,UAAU,CAAA;AAAA;AAC/C,EAEO,KAAK,KAAqB,EAAA;AAC/B,IAAK,IAAA,CAAA,MAAA,CAAO,KAAK,KAAK,CAAA;AACtB,IAAO,OAAA,IAAA;AAAA;AACT,EAEO,MAAM,KAA0B,EAAA;AACrC,IAAK,IAAA,CAAA,MAAA,CAAO,MAAM,KAAK,CAAA;AACvB,IAAO,OAAA,KAAA;AAAA;AACT,EAEO,IAAO,GAAA;AACZ,IAAO,OAAA,IAAA,CAAK,OAAO,IAAK,EAAA;AAAA;AAE5B;;ACdO,MAAM,KAAkD,CAAA;AAAA,EACtD,WAAA,CACG,QACR,QACA,EAAA;AAFQ,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA;AAGR,IAAM,MAAA,EAAA,GAAK,QAAS,CAAA,aAAA,CAAc,QAAQ,CAAA;AAC1C,IAAA,IAAA,CAAK,MAAO,CAAA,KAAA;AAAA,MACV,IAAI,MAAO,CAAA,CAAC,KAAU,KAAA;AACpB,QAAG,EAAA,CAAA,KAAA,GAAQ,OAAO,KAAK,CAAA;AAAA,OACxB;AAAA,KACH;AACA,IAAG,EAAA,CAAA,gBAAA,CAAiB,SAAS,MAAM;AACjC,MAAK,IAAA,CAAA,IAAA,CAAK,GAAG,KAAK,CAAA;AAAA,KACnB,CAAA;AACD,IAAG,EAAA,CAAA,gBAAA,CAAiB,UAAU,MAAM;AAClC,MAAK,IAAA,CAAA,IAAA,CAAK,GAAG,KAAK,CAAA;AAAA,KACnB,CAAA;AAAA;AACH,EAEO,MAAM,KAA8B,EAAA;AACzC,IAAK,IAAA,CAAA,MAAA,CAAO,MAAM,KAAK,CAAA;AACvB,IAAO,OAAA,IAAA;AAAA;AACT,EAEO,KAAK,KAAmB,EAAA;AAC7B,IAAK,IAAA,CAAA,MAAA,CAAO,KAAK,KAAK,CAAA;AACtB,IAAO,OAAA,IAAA;AAAA;AACT,EAEO,IAAO,GAAA;AACZ,IAAO,OAAA,IAAA,CAAK,OAAO,IAAK,EAAA;AAAA;AAE5B;;ACvCO,MAAM,OAA4C,CAAA;AAAA,EAChD,YAAoB,QAAkB,EAAA;AAAlB,IAAA,IAAA,CAAA,QAAA,GAAA,QAAA;AAAA;AAAmB,EAEvC,KAAK,SAA0B,EAAA;AACpC,IAAA,MAAM,EAAK,GAAA,QAAA,CAAS,aAAc,CAAA,IAAA,CAAK,QAAQ,CAAA;AAC/C,IAAA,IAAI,EAAI,EAAA;AACN,MAAG,EAAA,CAAA,KAAA,CAAM,OAAU,GAAA,SAAA,GAAY,OAAU,GAAA,MAAA;AAAA;AAE3C,IAAO,OAAA,IAAA;AAAA;AAEX;;ACVO,MAAM,IAAgC,CAAA;AAAA,EACpC,YAAoB,QAAkB,EAAA;AAAlB,IAAA,IAAA,CAAA,QAAA,GAAA,QAAA;AAAA;AAAmB,EAEvC,KAAK,KAAgB,EAAA;AAC1B,IAAA,MAAM,OAAU,GAAA,QAAA,CAAS,aAAc,CAAA,IAAA,CAAK,QAAQ,CAAA;AACpD,IAAA,IAAI,OAAS,EAAA;AACX,MAAQ,OAAA,CAAA,SAAA,GAAY,OAAO,KAAK,CAAA;AAAA;AAElC,IAAO,OAAA,IAAA;AAAA;AAEX;;ACVO,MAAM,IAAK,CAAA;AAAA,EACT,WAAA,CACG,YACA,QACR,EAAA;AAFQ,IAAA,IAAA,CAAA,UAAA,GAAA,UAAA;AACA,IAAA,IAAA,CAAA,QAAA,GAAA,QAAA;AAAA;AACP,EAEI,UAAA,CAAW,UAAkB,WAAsB,EAAA;AACxD,IAAM,MAAA,SAAA,GAAY,QAAS,CAAA,gBAAA,CAAiB,QAAQ,CAAA;AACpD,IAAA,IAAI,UAAU,MAAQ,EAAA;AACpB,MAAU,SAAA,CAAA,OAAA,CAAQ,CAAC,UAAe,KAAA;AAChC,QAAW,UAAA,CAAA,gBAAA,CAAiB,OAAS,EAAA,CAAC,CAAM,KAAA;AAC1C,UAAA,IAAI,WAAa,EAAA;AACf,YAAA,UAAA,CACG,gBAAiB,CAAA,WAAW,CAC5B,CAAA,OAAA,CAAQ,CAAC,aAAkB,KAAA;AAC1B,cAAA,IACE,CAAG,EAAA,MAAA,KAAW,aACd,IAAA,CAAA,EAAG,kBAAkB,aACrB,EAAA;AACA,gBAAA,IAAA,CAAK,WAAY,CAAA;AAAA,kBACf,cAAgB,EAAA,CAAA,CAAE,cAAe,CAAA,IAAA,CAAK,CAAC,CAAA;AAAA,kBACvC,MAAQ,EAAA;AAAA,iBACW,CAAA;AAAA;AACvB,aACD,CAAA;AAAA,WACE,MAAA;AACL,YAAA,IAAA,CAAK,YAAY,CAAC,CAAA;AAAA;AACpB,SACD,CAAA;AAAA,OACF,CAAA;AAAA,KACI,MAAA;AACL,MAAA,MAAM,IAAI,KAAA,CAAM,CAAuC,oCAAA,EAAA,QAAQ,CAAE,CAAA,CAAA;AAAA;AACnE;AACF,EAEQ,YAAY,CAAU,EAAA;AAC5B,IAAA,IAAI,IAAQ,GAAA,CAAA,EAAG,MAAwB,EAAA,YAAA,CAAa,MAAM,CAAA;AAC1D,IAAA,IAAI,CAAC,IAAM,EAAA;AACT,MAAQ,IAAA,GAAA,CAAA,EAAG,aAA+B,EAAA,YAAA,CAAa,MAAM,CAAA;AAAA;AAE/D,IAAA,IAAI,IAAQ,IAAA,IAAA,CAAK,OAAQ,CAAA,MAAM,MAAM,CAAG,EAAA;AACtC,MAAA,CAAA,CAAE,cAAe,EAAA;AACjB,MAAM,KAAA,CAAA,IAAA,CAAK,QAAU,EAAA,CAAC,QAAa,KAAA;AACjC,QAAK,IAAA,CAAA,UAAA,CAAW,IAAK,CAAA,QAAA,GAAW,IAAI,CAAA;AAAA,OACrC,CAAA;AAAA;AACH;AAEJ;;ACpCO,MAAM,eAAgB,CAAA;AAAA,EACpB,WAAA,CACG,SACA,gBACR,EAAA;AAFQ,IAAA,IAAA,CAAA,OAAA,GAAA,OAAA;AACA,IAAA,IAAA,CAAA,gBAAA,GAAA,gBAAA;AAAA;AACP,EAEI,QAAQ,KAA+B,EAAA;AAC5C,IAAM,MAAA,KAAA,GAAQ,IAAI,SAAU,EAAA;AAC5B,IAAK,IAAA,CAAA,OAAA,CAAQ,OAAQ,CAAA,CAAC,MAAW,KAAA;AAC/B,MAAA,MAAA,CAAO,MAAO,CAAA,KAAA;AAAA,QACZ,IAAI,SAAU,CAAA,KAAA,EAAoB,MAAM,QAAS,CAAA,MAAA,CAAO,WAAW,CAAC;AAAA,OACtE;AAAA,KACD,CAAA;AAED,IAAM,KAAA,CAAA,KAAA;AAAA,MACJ,IAAI,SAAA;AAAA,QACF,KAAA;AAAA,QACA,CAAC,YAAyC,KAAA;AACxC,UAAA,IAAI,mBAAmB,IAAK,CAAA,gBAAA;AAE5B,UAAA,MAAA,CAAO,OAAQ,CAAA,YAAY,CAAE,CAAA,GAAA,CAAI,CAAC,KAAU,KAAA;AAC1C,YAAA,gBAAA,GAAmB,iBAAiB,UAAW,CAAA,KAAA,CAAM,CAAC,CAAG,EAAA,KAAA,CAAM,CAAC,CAAC,CAAA;AAAA,WAClE,CAAA;AAED,UAAA,MAAM,UAAU,QAAS,CAAA,aAAA;AAAA,YACvB;AAAA,WACF;AACA,UAAA,IAAI,OAAS,EAAA;AACX,YAAA,IAAA,CAAK,SAAS,KAAK,CAAA;AAAA;AACrB;AACF;AACF,KACF;AAAA;AAEJ;;ACzCO,MAAM,gBAAyD,CAAA;AAAA,EAC7D,WAAA,CACG,WACA,EAAA,aAAA,EACA,QACR,EAAA;AAHQ,IAAA,IAAA,CAAA,WAAA,GAAA,WAAA;AACA,IAAA,IAAA,CAAA,aAAA,GAAA,aAAA;AACA,IAAA,IAAA,CAAA,QAAA,GAAA,QAAA;AAAA;AACP,EAEI,KAAK,OAA4B,EAAA;AACtC,IAAA,KAAA;AAAA,MACE,IAAK,CAAA,QAAA;AAAA,MACL,IAAI,UAAW,CAAA,CAAC,QAAa,KAAA;AAC3B,QAAA,QAAA,CAAS,iBAAiB,IAAK,CAAA,aAAa,CAAE,CAAA,OAAA,CAAQ,CAAC,EAAO,KAAA;AAC5D,UAAG,EAAA,CAAA,SAAA,CAAU,MAAO,CAAA,IAAA,CAAK,WAAW,CAAA;AAAA,SACrC,CAAA;AACD,QAAQ,OAAA,CAAA,SAAA,CAAU,GAAI,CAAA,IAAA,CAAK,WAAW,CAAA;AAAA,OACvC;AAAA,KACH;AACA,IAAO,OAAA,IAAA;AAAA;AAEX;;ACJO,MAAM,MAAO,CAAA;AAAA,EACX,WAAA,CACG,cACA,EAAA,wBAAA,EACA,YACR,EAAA;AAHQ,IAAA,IAAA,CAAA,cAAA,GAAA,cAAA;AACA,IAAA,IAAA,CAAA,wBAAA,GAAA,wBAAA;AACA,IAAA,IAAA,CAAA,YAAA,GAAA,YAAA;AAAA;AACP,EAEI,MACL,CAAA,MAAA,EACA,WACA,EAAA,cAAA,EACA,eACA,EAAA;AACA,IAAA,IAAI,CAAC,WAAa,EAAA;AAChB,MAAA,WAAA,GAAc,IAAI,WAAY,EAAA;AAAA;AAEhC,IAAA,WAAA,CAAY,MAAM,IAAI,MAAA,CAAO,IAAI,cAAA,EAAgB,CAAC,CAAA;AAElD,IAAM,MAAA,CAAC,QAAQ,CAAA,GAAI,QAAS,CAAA,IAAA,CAAK,OAAQ,CAAA,QAAA,CAAS,MAAQ,EAAA,EAAE,CAAE,CAAA,KAAA,CAAM,GAAG,CAAA;AACvE,IAAA,IAAI,CAAC,cAAgB,EAAA;AACnB,MAAA,cAAA,GAAiB,IAAI,gBAAA;AAAA,QACnB,CAAA,EAAG,QAAQ,CAAI,CAAA,CAAA,CAAA,OAAA,CAAQ,cAAc,EAAE,CAAA,CAAE,OAAQ,CAAA,IAAA,EAAM,GAAG;AAAA,OAC5D;AAAA;AAGF,IAAM,MAAA,WAAA,GAAc,IAAI,gBAAA,CAAiB,KAAK,CAAA;AAC9C,IAAY,WAAA,CAAA,KAAA,CAAM,IAAI,MAAO,CAAA,IAAI,QAAQ,IAAK,CAAA,cAAc,CAAC,CAAC,CAAA;AAE9D,IAAM,MAAA,iBAAA,GAAoB,IAAI,iBAAA,CAAkB,WAAW,CAAA;AAC3D,IAAA,iBAAA,CAAkB,QAAS,EAAA;AAE3B,IAAA,MAAM,aAAa,IAAI,UAAA;AAAA,MACrB,WAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,IAAI,YAAa,CAAA,IAAA,CAAK,wBAAwB,CAAA;AAAA,MAC9C,IAAI,aAAa,kBAAkB;AAAA,KACrC;AACA,IAAA,UAAA,CAAW,OAAO,MAAM,CAAA;AAExB,IAAA,MAAM,IAAO,GAAA,IAAI,IAAK,CAAA,WAAA,EAAa,cAAc,CAAA;AACjD,IAAK,IAAA,CAAA,UAAA,CAAW,KAAK,YAAY,CAAA;AAEjC,IAAM,MAAA,QAAA,GAAW,IAAI,SAAe,EAAA;AACpC,IAAA,cAAA,CAAe,MAAM,IAAI,MAAA,CAAO,SAAS,QAAS,CAAA,UAAU,CAAC,CAAC,CAAA;AAC9D,IAAA,WAAA,CAAY,MAAM,IAAI,MAAA,CAAO,SAAS,QAAS,CAAA,MAAM,CAAC,CAAC,CAAA;AACvD,IAAA,MAAM,GAAM,GAAA,IAAI,MAAO,CAAA,CAAC,KAAU,KAAA;AAChC,MAAS,QAAA,CAAA,KAAA;AAAA,QACP,IAAI,UAAU,KAAO,EAAA,CAAC,EAAE,QAAAC,EAAAA,SAAAA,EAAU,MAAW,KAAA;AAC3C,UAAA,IAAA,CAAK,IAAK,CAAA,OAAA,CAAQA,SAAU,EAAA,EAAE,GAAG,KAAK,CAAA;AAAA,SACvC;AAAA,OACH;AAAA,KACD,CAAA;AAED,IAAA,MAAM,aAAa,IAAI,eAAA;AAAA,MACrB,CAAC,EAAE,MAAA,EAAQ,GAAK,EAAA,WAAA,EAAa,SAAS,CAAA;AAAA,MACtC,CAAA,EAAG,KAAK,YAAY,CAAA,gBAAA;AAAA,KACtB;AACA,IAAW,UAAA,CAAA,OAAA;AAAA,MACT,IAAI,MAAA;AAAA,QACF,IAAI,gBAAA;AAAA,UACF,QAAA;AAAA,UACA,CAAA,EAAG,KAAK,YAAY,CAAA,EAAA,CAAA;AAAA,UACpB,SAAS,QAAQ;AAAA;AACnB;AACF,KACF;AAEA,IAAY,WAAA,CAAA,KAAA;AAAA,MACV,IAAI,MAAO,CAAA,CAAC,WAAgB,KAAA;AAC1B,QAAA,IAAI,WAAa,EAAA;AACf,UAAA;AAAA;AAGF,QAAA,IAAI,eAAiB,EAAA;AACnB,UAAgB,eAAA,EAAA;AAAA;AAGlB,QAAA,MAAM,iBAAiB,QAAS,CAAA,aAAA;AAAA,UAC9B,IAAK,CAAA;AAAA,SACP;AACA,QAAA,IAAI,cAAgB,EAAA;AAElB,UAAA,cAAA,CAAe,gBAAiB,CAAA,QAAQ,CAAE,CAAA,OAAA,CAAQ,CAAC,CAAM,KAAA;AACvD,YAAM,MAAA,EAAA,GAAK,QAAS,CAAA,aAAA,CAAc,QAAQ,CAAA;AAC1C,YAAG,EAAA,CAAA,YAAA,CAAa,QAAQ,QAAQ,CAAA;AAChC,YAAA,EAAA,CAAG,WAAY,CAAA,QAAA,CAAS,cAAe,CAAA,CAAA,CAAE,SAAS,CAAC,CAAA;AACnD,YAAA,cAAA,CAAe,YAAY,EAAE,CAAA;AAAA,WAC9B,CAAA;AAAA;AACH,OACD;AAAA,KACH;AAAA;AAEJ;;AChHO,MAAM,IAA8B,CAAA;AAAA,EAClC,YAAoB,KAAe,EAAA;AAAf,IAAA,IAAA,CAAA,KAAA,GAAA,KAAA;AAAA;AAAgB,EAEpC,OAAU,GAAA;AACf,IAAA,QAAA,CAAS,QAAQ,IAAK,CAAA,KAAA;AAAA;AAE1B;;ACNO,MAAM,cAAwC,CAAA;AAAA,EAC5C,WAAA,CACG,OACA,aACR,EAAA;AAFQ,IAAA,IAAA,CAAA,KAAA,GAAA,KAAA;AACA,IAAA,IAAA,CAAA,aAAA,GAAA,aAAA;AAAA;AACP,EAEI,OAAU,GAAA;AACf,IAAA,QAAA,CAAS,QAAQ,IAAK,CAAA,KAAA;AACtB,IAAA,OAAO,IAAK,CAAA,aAAA,CAAA,CAAe,IAAK,CAAA,CAAC,MAAW,KAAA;AAC1C,MAAA,IAAI,OAAO,IAAM,EAAA;AACf,QAAA,MAAA,CAAO,IAAK,EAAA;AAAA;AACd,KACD,CAAA;AAAA;AAEL;;;;;ACDO,MAAM,KAEb,CAAA;AAAA,EAIS,WAAA,CACL,kBACQ,UAAuB,GAAA,IACvB,WAAwB,GAAA,EAChC,EAAA,gBAAA,GAAmB,KACnB,EAAA;AAHQ,IAAA,IAAA,CAAA,UAAA,GAAA,UAAA;AACA,IAAA,IAAA,CAAA,WAAA,GAAA,WAAA;AANV,IAAQD,eAAA,CAAA,IAAA,EAAA,iBAAA,EAAkB,IAAI,gBAAoB,EAAA,CAAA;AAClD,IAAQA,eAAA,CAAA,IAAA,EAAA,KAAA,EAAM,IAAI,SAA4C,EAAA,CAAA;AAQ5D,IAAK,IAAA,CAAA,eAAA,CAAgB,MAAM,IAAI,MAAA,CAAO,KAAK,GAAI,CAAA,QAAA,CAAS,WAAW,CAAC,CAAC,CAAA;AACrE,IAAM,KAAA,CAAA,gBAAA,EAAkB,IAAI,MAAO,CAAA,IAAA,CAAK,IAAI,QAAS,CAAA,MAAM,CAAC,CAAC,CAAA;AAE7D,IAAA,IAAI,gBAAkB,EAAA;AACpB,MAAA,KAAA,CAAM,gBAAkB,EAAA,IAAI,UAAW,CAAA,IAAI,CAAC,CAAA;AAAA;AAC9C;AACF,EAEO,KAAKE,MAAgB,EAAA;AAC1B,IAAK,IAAA,CAAA,IAAA,CAAK,MAAM,IAAK,CAAA,SAAA,CAAUA,MAAK,CAAC,CAAA,EAAG,KAAK,eAAe,CAAA;AAC5D,IAAO,OAAA,IAAA;AAAA;AACT,EAEO,MAAM,KAAuC,EAAA;AAClD,IAAA,IAAA,CAAK,GAAI,CAAA,KAAA;AAAA,MACP,IAAI,SAAU,CAAA,KAAA,EAAO,CAAC,EAAE,SAAA,EAAW,MAAW,KAAA;AAC5C,QAAA,IAAI,CAAC,SAAW,EAAA;AACd,UAAA;AAAA;AAGF,QAAA,IAAA;AAAA,UACE,MAAO,CAAA,WAAA;AAAA,YACL,MAAA,CAAO,QAAQ,SAAS,CAAA,CAAE,OAAO,CAAC,CAAC,GAAKA,EAAAA,MAAK,CAAM,KAAA;AACjD,cAAA,IAAI,IAAK,CAAA,UAAA,CAAW,QAAS,CAAA,GAAG,CAAG,EAAA;AACjC,gBAAO,OAAA,IAAA;AAAA;AAET,cAAA,IAAI,IAAK,CAAA,WAAA,CAAY,QAAS,CAAA,GAAG,CAAG,EAAA;AAClC,gBAAO,OAAA,KAAA;AAAA;AAET,cAAOA,OAAAA,MAAAA,KAAW,KAAa,GAAG,CAAA;AAAA,aACnC;AAAA,WACH;AAAA,UACA;AAAA,SACF;AAAA,OACD;AAAA,KACH;AAEA,IAAO,OAAA,IAAA;AAAA;AAEX;;;;;ACzDO,MAAM,OAA6C,CAAA;AAAA,EAGjD,WAAA,CACG,oBACA,mBACR,EAAA;AAFQ,IAAA,IAAA,CAAA,kBAAA,GAAA,kBAAA;AACA,IAAA,IAAA,CAAA,mBAAA,GAAA,mBAAA;AAJV,IAAQF,eAAA,CAAA,IAAA,EAAA,eAAA,EAAgB,IAAI,gBAA0B,EAAA,CAAA;AAAA;AAKnD,EAEI,MAAM,KAA2B,EAAA;AACtC,IAAA,KAAA;AAAA,MACE,IAAK,CAAA,kBAAA;AAAA,MACL,IAAI,SAAU,CAAA,KAAA,EAAO,MAAM;AACzB,QAAK,IAAA,CAAA,aAAA,CAAc,KAAK,IAAI,CAAA;AAAA,OAC7B;AAAA,KACH;AACA,IAAA,KAAA;AAAA,MACE,IAAK,CAAA,mBAAA;AAAA,MACL,IAAI,SAAU,CAAA,KAAA,EAAO,MAAM;AACzB,QAAK,IAAA,CAAA,aAAA,CAAc,KAAK,KAAK,CAAA;AAAA,OAC9B;AAAA,KACH;AACA,IAAK,IAAA,CAAA,aAAA,CAAc,MAAM,KAAK,CAAA;AAC9B,IAAO,OAAA,IAAA;AAAA;AAEX;;ACpCO,MAAM,OAAQ,CAAA;AAAC;;ACUf,MAAM,IAEb,CAAA;AAAA,EACS,WAAA,CACG,YACA,OACR,EAAA;AAFQ,IAAA,IAAA,CAAA,UAAA,GAAA,UAAA;AACA,IAAA,IAAA,CAAA,OAAA,GAAA,OAAA;AAAA;AACP,EAEI,MAAM,KAAwB,EAAA;AACnC,IAAA,MAAM,MAAM,IAAI,SAAA,CAA+B,CAAC,MAAA,EAAQ,KAAK,CAAC,CAAA;AAC9D,IAAM,KAAA,CAAA,IAAA,CAAK,YAAY,IAAI,SAAA,CAAU,OAAO,GAAI,CAAA,QAAA,CAAS,MAAM,CAAC,CAAC,CAAA;AACjE,IAAM,KAAA,CAAA,IAAA,CAAK,SAAS,IAAI,SAAA,CAAU,OAAO,GAAI,CAAA,QAAA,CAAS,KAAK,CAAC,CAAC,CAAA;AAC7D,IAAI,GAAA,CAAA,KAAA;AAAA,MACF,IAAI,SAAU,CAAA,KAAA,EAAO,CAAC,EAAE,IAAA,EAAM,KAAU,KAAA;AACtC,QAAM,MAAA,SAAA,GAAY,GAAI,CAAA,KAAA,CAAM,GAAG,CAAA;AAC/B,QAAA,IAAIE,MAAiB,GAAA,IAAA;AACrB,QAAU,SAAA,CAAA,OAAA,CAAQ,CAAC,QAAa,KAAA;AAC9B,UAAAA,MAAAA,GAASA,OAAY,QAAQ,CAAA;AAAA,SAC9B,CAAA;AAED,QAAIA,IAAAA,MAAAA,KAAU,MAAaA,IAAAA,MAAAA,KAAU,IAAM,EAAA;AACzC,UAAA,IAAA,CAAKA,QAAe,KAAK,CAAA;AAAA;AAC3B,OACD;AAAA,KACH;AACA,IAAO,OAAA,IAAA;AAAA;AAEX;;;;;ACzBO,MAAM,SAA+D,CAAA;AAAA,EAGnE,YAAY,UAA2C,EAAA;AAF9D,IAAA,aAAA,CAAA,IAAA,EAAQ,QAAS,EAAA,IAAI,gBAA0C,CAAA,EAAE,CAAA,CAAA;AAG/D,IAAA,KAAA;AAAA,MACE,UAAA;AAAA,MACA,IAAI,MAAO,CAAA,CAAC,CAAC,GAAA,EAAKA,MAAK,CAAM,KAAA;AAC3B,QAAK,IAAA,CAAA,MAAA,CAAO,KAAM,CAAA,CAAC,UAAe,KAAA;AAChC,UAAA,UAAA,CAAW,GAAG,CAAIA,GAAAA,MAAAA;AAAA,SACnB,CAAA;AAAA,OACF;AAAA,KACH;AAAA;AACF,EAEO,MAAM,KAA2C,EAAA;AACtD,IAAM,KAAA,CAAA,IAAA,CAAK,QAAQ,KAAK,CAAA;AACxB,IAAO,OAAA,IAAA;AAAA;AAEX;;;;"}
|