{"version":3,"file":"patron-web-api.cjs","sources":["../src/history-api/HistoryPoppedPage.ts","../src/history-api/HistoryNewPage.ts","../src/fetch/Fetched.ts","../src/dom/Element.ts","../src/dom/Attribute.ts","../src/dom/StyleInstalled.ts","../src/console/Log.ts"],"sourcesContent":["import { give, GuestType } from \"patron-oop\";\n\nexport class HistoryPoppedPage {\n  public constructor(private pageSource: GuestType<string>) {}\n\n  public watchPop() {\n    window.addEventListener(\"popstate\", (event) => {\n      const { state } = event;\n      if (state?.url) {\n        give(state.url, this.pageSource);\n      }\n    });\n  }\n}\n","import { GuestObjectType } from \"patron-oop\";\n\nexport class HistoryNewPage implements GuestObjectType<string> {\n  public give(url: string) {\n    const correctUrl = location.href.replace(location.origin, \"\");\n    if (url === correctUrl) {\n      return this;\n    }\n    history.pushState(\n      {\n        url,\n        date: Date.now(),\n      },\n      \"Loading...\",\n      url,\n    );\n    return this;\n  }\n}\n","import { Guest, SourceWithPool } from \"patron-oop\";\n\ninterface FetchRequestType extends RequestInit {\n  url: string;\n  asJson: boolean;\n}\n\n/**\n * Wrapper around FetchAPI\n * https://kosukhin.github.io/patron-web-api/#/fetch/fetched\n */\nexport class Fetched<T> {\n  private source = new SourceWithPool<T>();\n\n  public constructor(private errors: Guest<Error>) {}\n\n  public do() {\n    return new Guest<FetchRequestType>((request) => {\n      fetch(request.url, request)\n        .then((resp) => {\n          if (!resp.ok) {\n            return Promise.reject(new Error(\"Error of status \" + resp.status));\n          }\n          if (request.asJson) {\n            return resp.json();\n          }\n          return resp.text();\n        })\n        .then((content) => {\n          this.source.give(content);\n        })\n        .catch((e) => {\n          this.errors.give(e);\n        });\n    });\n  }\n\n  public result() {\n    return this.source;\n  }\n}\n","import {\n  give,\n  GuestCast,\n  GuestType,\n  SourceObjectType,\n  SourceType,\n  value,\n} from \"patron-oop\";\n\nexport class Element implements SourceObjectType<HTMLElement> {\n  public constructor(private selector: SourceType<string>) {}\n\n  public value(guest: GuestType<HTMLElement>) {\n    value(\n      this.selector,\n      new GuestCast(guest, (selectorContent) => {\n        const element = document.querySelector(selectorContent);\n        if (element) {\n          give(element as HTMLElement, guest);\n        } else {\n          const targetNode = document.body;\n          const config = { childList: true, subtree: true };\n\n          const observer = new MutationObserver((mutationsList) => {\n            for (const mutation of mutationsList) {\n              if (mutation.type === \"childList\") {\n                const element = document.querySelector(selectorContent);\n                if (element) {\n                  give(element as HTMLElement, guest);\n                  observer.disconnect();\n                  break;\n                }\n              }\n            }\n          });\n\n          observer.observe(targetNode, config);\n        }\n      }),\n    );\n\n    return this;\n  }\n}\n","import {\n  give,\n  GuestCast,\n  GuestType,\n  SourceObjectType,\n  SourceType,\n  value,\n} from \"patron-oop\";\n\nexport class Attribute implements SourceObjectType<string> {\n  public constructor(\n    private element: SourceType<HTMLElement>,\n    private attrName: string,\n    private defaultValue: string = \"\",\n  ) {}\n\n  public value(guest: GuestType<string>) {\n    value(\n      this.element,\n      new GuestCast(guest, (el) => {\n        give(el.getAttribute(this.attrName) || this.defaultValue, guest);\n      }),\n    );\n    return this;\n  }\n}\n","import { GuestObjectType } from \"patron-oop\";\n\nexport class StyleInstalled implements GuestObjectType<string> {\n  public give(value: string): this {\n    const styleEl = document.createElement(\"style\");\n    styleEl.textContent = value;\n    document.head.appendChild(styleEl);\n    return this;\n  }\n}\n","import { GuestObjectType } from \"patron-oop\";\n\nexport class Log implements GuestObjectType<unknown> {\n  public constructor(private title: string = \"\") {}\n\n  public introduction(): \"guest\" | \"patron\" {\n    return \"patron\";\n  }\n\n  public give(value: unknown): this {\n    console.log(\"LOG: \", this.title, value);\n    return this;\n  }\n}\n"],"names":["give","SourceWithPool","Guest","value","GuestCast","element"],"mappings":"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"}