taon-ui 21.0.67 → 21.0.68
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/VERIFIED-BUILD-DATA.jsonc +3 -3
- package/browser/fesm2022/taon-ui-browser.mjs +7 -4
- package/browser/fesm2022/taon-ui-browser.mjs.map +1 -1
- package/browser/package.json +1 -1
- package/browser/types/taon-ui-browser.d.ts +5 -3
- package/browser-prod/fesm2022/taon-ui-browser-prod.mjs +7 -4
- package/browser-prod/fesm2022/taon-ui-browser-prod.mjs.map +1 -1
- package/browser-prod/package.json +1 -1
- package/browser-prod/types/taon-ui-browser-prod.d.ts +5 -3
- package/lib/build-info._auto-generated_.d.ts +1 -1
- package/lib/build-info._auto-generated_.js +1 -1
- package/lib/layouts/taon-bootstrap-navbar/index.js +2 -2
- package/lib/package.json +1 -1
- package/lib/ui/anonymize-text/index.js +2 -2
- package/lib/ui/directives/index.js +2 -2
- package/lib/ui/index.js +2 -2
- package/lib/ui/taon-github-fork-me-corner/index.js +2 -2
- package/lib/ui/taon-github-fork-me-ribbon/index.js +2 -2
- package/lib/ui/taon-iframe-sync/index.js +2 -2
- package/lib/ui/taon-lang-selector/index.js +2 -2
- package/lib/ui/taon-progress-bar/index.js +2 -2
- package/lib/ui/taon-progress-bar/taon-progress-bar.component.d.ts +4 -1
- package/lib/ui/taon-session-passcode/index.js +2 -2
- package/lib/ui/taon-settings/index.js +2 -2
- package/lib/ui/taon-slide-content/index.js +2 -2
- package/lib-esm/lib/build-info._auto-generated_.d.ts +1 -1
- package/lib-esm/lib/build-info._auto-generated_.js +1 -1
- package/lib-esm/lib/layouts/taon-bootstrap-navbar/index.d.ts +1 -1
- package/lib-esm/lib/layouts/taon-bootstrap-navbar/index.js +1 -1
- package/lib-esm/lib/ui/anonymize-text/index.d.ts +1 -1
- package/lib-esm/lib/ui/anonymize-text/index.js +1 -1
- package/lib-esm/lib/ui/directives/index.d.ts +1 -1
- package/lib-esm/lib/ui/directives/index.js +1 -1
- package/lib-esm/lib/ui/index.d.ts +1 -1
- package/lib-esm/lib/ui/index.js +1 -1
- package/lib-esm/lib/ui/taon-github-fork-me-corner/index.d.ts +1 -1
- package/lib-esm/lib/ui/taon-github-fork-me-corner/index.js +1 -1
- package/lib-esm/lib/ui/taon-github-fork-me-ribbon/index.d.ts +1 -1
- package/lib-esm/lib/ui/taon-github-fork-me-ribbon/index.js +1 -1
- package/lib-esm/lib/ui/taon-iframe-sync/index.d.ts +1 -1
- package/lib-esm/lib/ui/taon-iframe-sync/index.js +1 -1
- package/lib-esm/lib/ui/taon-lang-selector/index.d.ts +1 -1
- package/lib-esm/lib/ui/taon-lang-selector/index.js +1 -1
- package/lib-esm/lib/ui/taon-progress-bar/index.d.ts +1 -1
- package/lib-esm/lib/ui/taon-progress-bar/index.js +1 -1
- package/lib-esm/lib/ui/taon-session-passcode/index.d.ts +1 -1
- package/lib-esm/lib/ui/taon-session-passcode/index.js +1 -1
- package/lib-esm/lib/ui/taon-settings/index.d.ts +1 -1
- package/lib-esm/lib/ui/taon-settings/index.js +1 -1
- package/lib-esm/lib/ui/taon-slide-content/index.d.ts +1 -1
- package/lib-esm/lib/ui/taon-slide-content/index.js +1 -1
- package/lib-prod/build-info._auto-generated_.d.ts +1 -1
- package/lib-prod/build-info._auto-generated_.js +1 -1
- package/lib-prod/layouts/taon-bootstrap-navbar/index.d.ts +1 -1
- package/lib-prod/layouts/taon-bootstrap-navbar/index.js +1 -1
- package/lib-prod/package.json +1 -1
- package/lib-prod/ui/anonymize-text/index.d.ts +1 -1
- package/lib-prod/ui/anonymize-text/index.js +1 -1
- package/lib-prod/ui/directives/index.d.ts +1 -1
- package/lib-prod/ui/directives/index.js +1 -1
- package/lib-prod/ui/index.d.ts +1 -1
- package/lib-prod/ui/index.js +1 -1
- package/lib-prod/ui/taon-github-fork-me-corner/index.d.ts +1 -1
- package/lib-prod/ui/taon-github-fork-me-corner/index.js +1 -1
- package/lib-prod/ui/taon-github-fork-me-ribbon/index.d.ts +1 -1
- package/lib-prod/ui/taon-github-fork-me-ribbon/index.js +1 -1
- package/lib-prod/ui/taon-iframe-sync/index.d.ts +1 -1
- package/lib-prod/ui/taon-iframe-sync/index.js +1 -1
- package/lib-prod/ui/taon-lang-selector/index.d.ts +1 -1
- package/lib-prod/ui/taon-lang-selector/index.js +1 -1
- package/lib-prod/ui/taon-progress-bar/index.d.ts +1 -1
- package/lib-prod/ui/taon-progress-bar/index.js +1 -1
- package/lib-prod/ui/taon-session-passcode/index.d.ts +1 -1
- package/lib-prod/ui/taon-session-passcode/index.js +1 -1
- package/lib-prod/ui/taon-settings/index.d.ts +1 -1
- package/lib-prod/ui/taon-settings/index.js +1 -1
- package/lib-prod/ui/taon-slide-content/index.d.ts +1 -1
- package/lib-prod/ui/taon-slide-content/index.js +1 -1
- package/package.json +1 -1
- package/websql/fesm2022/taon-ui-websql.mjs +7 -4
- package/websql/fesm2022/taon-ui-websql.mjs.map +1 -1
- package/websql/package.json +1 -1
- package/websql/types/taon-ui-websql.d.ts +5 -3
- package/websql-prod/fesm2022/taon-ui-websql-prod.mjs +7 -4
- package/websql-prod/fesm2022/taon-ui-websql-prod.mjs.map +1 -1
- package/websql-prod/package.json +1 -1
- package/websql-prod/types/taon-ui-websql-prod.d.ts +5 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taon-ui-browser.mjs","sources":["../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/build-info._auto-generated_.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/my-organization-proj.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/start-cli.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/layouts/taon-bootstrap-navbar/taon-bootstrap-navbar.component.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/layouts/taon-bootstrap-navbar/taon-bootstrap-navbar.component.html","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/anonymize-text/anonymize-text.directive.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/directives/safe.pipe.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/directives/taon-inject-html.directive.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/directives/taon-long-press.directive.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/directives/view-mode.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-auth/google-auth.service.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-auth/microsoft-auth.service.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-auth/session.service.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-auth/auth-dialog.component.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-auth/auth-dialog.component.html","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-auth/auth-button.component.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-auth/auth-button.component.html","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-auth/auth.guard.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-github-fork-me-corner/taon-github-fork-me-corner.component.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-github-fork-me-corner/taon-github-fork-me-corner.component.html","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-github-fork-me-corner/taon-github-fork-me-corner.module.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-github-fork-me-ribbon/taon-github-fork-me-ribbon.component.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-github-fork-me-ribbon/taon-github-fork-me-ribbon.component.html","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-github-fork-me-ribbon/taon-github-fork-me-ribbon.module.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-iframe-sync/taon-iframe-sync.component.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-kv-authorization/taon-kv-authorization.component.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-kv-authorization/taon-kv-authorization.component.html","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-lang-selector/taon-lang-selector.component.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-lang-selector/taon-lang-selector.component.html","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-not-found/taon-not-found.component.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-not-found/taon-not-found.component.html","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-progress-bar/taon-progress-bar.component.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-progress-bar/taon-progress-bar.component.html","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-progress-bar/taon-progress-bar.module.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-rumble/taon-rumble.component.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-rumble/taon-rumble.component.html","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-session-passcode/taon-session-passcode.component.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-session-passcode/taon-session-passcode.component.html","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-theme/taon-theme.service.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-settings/taon-settings.component.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-settings/taon-settings.component.html","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-simple-layout/taon-simple-layout.component.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-simple-layout/taon-simple-layout.component.html","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-slide-content/taon-slide-content-child.component.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-slide-content/taon-slide-content.component.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-slide-content/taon-slide-content.component.html","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-stripe-buy-button/taon-stripe-buy-button.component.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-stripe-buy-button/taon-stripe-buy-button.component.html","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-theme/taon-theme.component.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-theme/taon-theme.component.html","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-youtube-video/taon-youtube.utils.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-youtube-video/taon-youtube-video.component.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-youtube-video/taon-youtube-video.component.html","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-auth/i18n/taon-auth.translation.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-kv-authorization/i18n/taon-kv-authorization.translation.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-lang-selector/i18n/taon-lang-selector.translation.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-settings/i18n/taon-settings.translation.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-stripe-buy-button/i18n/taon-stripe-buy-button.translation.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-theme/i18n/taon-theme.translation.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/index._auto-generated_.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/index.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/taon-ui-browser.ts"],"sourcesContent":["// THIS FILE IS GENERATED - DO NOT MODIFY\n/**\n * Autogenerated by current cli tool\n */\nexport const BUILD_FRAMEWORK_CLI_NAME = 'tnp';\n/**\n * This value can be change in taon.jsonc (appId)\n */\nexport const APP_ID = 'com.domain.example.taon-ui';\n/**\n * Autogenerated by current cli tool\n */\nexport const BUILD_BASE_HREF = '';\n/**\n * This value can be change in taon.jsonc (overrideNpmName)\n */\nexport const PROJECT_NPM_NAME = 'taon-ui';\n/**\n * Taon version from you project taon.json\n */\nexport const CURRENT_PACKAGE_TAON_VERSION = 'v21';\n/**\n * Autogenerated by current cli tool. Use *tnp release* to bump version.\n */\nexport const CURRENT_PACKAGE_VERSION = '21.0.67';\n\n\n\n\n\n// THIS FILE IS GENERATED - DO NOT MODIFY\n ","export function myOrgProj() {}\n","//#region tnp-helpers cli template\n// import { Helpers, BaseCommandLineFeature } from 'tnp-helpers/src';\n// import { BaseProject, BaseStartConfig } from 'tnp-helpers/src'; // @backend\n\n// class $Version extends BaseCommandLineFeature<{}> {\n// public _() {\n// console.log(`Hello world from cli`);\n// this._exit();\n// }\n// }\n//#endregion\n\n/**\n *\n * @param argsv process.argsv\n * @param filename needed if you want ipc communicaiton\n */\nexport async function startCli(argsv: string[], filename: string): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n}\n\nexport default startCli;\n","//#region imports\nimport { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n HostBinding,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\nimport { NgbCollapseModule } from '@ng-bootstrap/ng-bootstrap';\nimport { BsModalService, BsModalRef, ModalModule } from 'ngx-bootstrap/modal';\nimport { Subscription } from 'rxjs';\n//#endregion\n\n@Component({\n selector: 'taon-bootstrap-navbar',\n templateUrl: './taon-bootstrap-navbar.component.html',\n styleUrls: ['./taon-bootstrap-navbar.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, NgbCollapseModule, ModalModule],\n standalone: true,\n})\nexport class TaonBootstrapNavbarComponent implements OnInit {\n // @HostBinding('style.minHeight.px') @Input() height: number = 100;\n // @Output() taonBootstrapNavbarDataChanged = new EventEmitter();\n @Input() isLoggedIn: boolean = false;\n\n @Input() isCollapsed: boolean = false;\n\n ngOnInit(): void {}\n}\n","<nav class=\"navbar navbar-expand-lg\">\n <div class=\"container-fluid\">\n <a\n class=\"navbar-brand\"\n routerLink=\"/home\"\n routerLinkActive=\"active\">\n Home</a\n >\n <button\n class=\"navbar-toggler\"\n type=\"button\"\n (click)=\"isCollapsed = !isCollapsed\">\n <span class=\"navbar-toggler-icon\"></span>\n </button>\n\n <div\n [ngbCollapse]=\"isCollapsed\"\n class=\"navbar-collapse\">\n <ul class=\"navbar-nav ms-auto\">\n <li class=\"nav-item\">\n <a\n class=\"nav-link\"\n routerLink=\"/about\"\n routerLinkActive=\"active\"\n >O szkole</a\n >\n </li>\n <li class=\"nav-item\">\n <a\n class=\"nav-link\"\n routerLink=\"/courses\"\n routerLinkActive=\"active\"\n >Kursy</a\n >\n </li>\n <li class=\"nav-item\">\n <a\n class=\"nav-link\"\n routerLink=\"/opinions\"\n routerLinkActive=\"active\"\n >Opinie</a\n >\n </li>\n <li class=\"nav-item\">\n <a\n class=\"nav-link\"\n routerLink=\"/instructors\"\n routerLinkActive=\"active\"\n >Lektorzy</a\n >\n </li>\n <li class=\"nav-item\">\n <a\n class=\"nav-link\"\n routerLink=\"/contact\"\n routerLinkActive=\"active\"\n >Kontakt</a\n >\n </li>\n <ng-container *ngIf=\"isLoggedIn\">\n <li class=\"nav-item\">\n <a\n class=\"nav-link\"\n routerLink=\"/test\"\n routerLinkActive=\"active\"\n ><b>Test plasujący</b></a\n >\n </li>\n <li class=\"nav-item\">\n <a\n class=\"nav-link\"\n routerLink=\"/grammar\"\n routerLinkActive=\"active\"\n >Gramatyka</a\n >\n </li>\n <li class=\"nav-item\">\n <a\n class=\"nav-link\"\n routerLink=\"/vocabulary\"\n routerLinkActive=\"active\"\n >Słownictwo</a\n >\n </li>\n <li class=\"nav-item\">\n <a\n class=\"nav-link\"\n routerLink=\"/reading\"\n routerLinkActive=\"active\"\n >Czytanie</a\n >\n </li>\n <li class=\"nav-item\">\n <a\n class=\"nav-link\"\n routerLink=\"/movies\"\n routerLinkActive=\"active\"\n >Wideo</a\n >\n </li>\n <li class=\"nav-item\">\n <a\n class=\"nav-link\"\n routerLink=\"/curiosities\"\n routerLinkActive=\"active\"\n >Ciekawostki</a\n >\n </li>\n <li class=\"nav-item\">\n <a\n class=\"nav-link\"\n routerLink=\"/logout\"\n routerLinkActive=\"active\"\n >Wyloguj</a\n >\n </li>\n <li class=\"nav-item\">\n <a\n class=\"nav-link\"\n routerLink=\"/profile\"\n routerLinkActive=\"active\"\n >Profil</a\n >\n </li>\n <li class=\"nav-item\">\n <a\n class=\"nav-link\"\n routerLink=\"/admin\"\n routerLinkActive=\"active\"\n >Admin</a\n >\n </li>\n </ng-container>\n <ng-container *ngIf=\"!isLoggedIn\">\n <li class=\"nav-item\">\n <a\n class=\"nav-link\"\n href=\"javascript:void(0)\"\n (click)=\"modalLoginRegister()\">\n <span class=\"glyphicon glyphicon-hand-right\"></span> Rejestracja /\n <span class=\"glyphicon glyphicon-user\"></span> Logowanie\n </a>\n </li>\n </ng-container>\n </ul>\n </div>\n </div>\n</nav>\n<ng-content />\n","import { Directive, ElementRef, HostListener, inject, Input, OnInit } from '@angular/core';\n\n@Directive({\n selector: '[anonymizeText]',\n standalone: true,\n})\nexport class AnonymizeTextDirective implements OnInit {\n private el = inject(ElementRef<HTMLElement>);\n\n private encodedValue = '';\n private revealed = false;\n\n @Input() anonymizeText?: string;\n\n ngOnInit(): void {\n const original = this.anonymizeText || this.el.nativeElement.textContent || '';\n\n this.encodedValue = btoa(unescape(encodeURIComponent(original.trim())));\n\n this.el.nativeElement.textContent = this.maskText(original);\n this.el.nativeElement.style.cursor = 'pointer';\n this.el.nativeElement.title = 'Click to reveal';\n }\n\n @HostListener('click')\n toggle(): void {\n this.revealed = !this.revealed;\n\n const decoded = decodeURIComponent(escape(atob(this.encodedValue)));\n\n this.el.nativeElement.textContent = this.revealed\n ? decoded\n : this.maskText(decoded);\n }\n\n private maskText(value: string): string {\n return value.replace(/[a-zA-Z0-9]+/g, part => {\n if (part.length <= 2) return part;\n if (part.length === 3) return `${part[0]}*${part[2]}`;\n\n return `${part.slice(0, 2)}${'*'.repeat(part.length - 3)}${part.at(-1)}`;\n });\n }\n}\n","//#region imports\nimport { Pipe, PipeTransform } from '@angular/core';\nimport {\n DomSanitizer,\n SafeHtml,\n SafeStyle,\n SafeScript,\n SafeUrl,\n SafeResourceUrl,\n} from '@angular/platform-browser';\n//#endregion\n\n@Pipe({\n name: 'safe',\n standalone: true,\n})\nexport class SafePipe implements PipeTransform {\n constructor(protected sanitizer: DomSanitizer) {}\n\n public transform(\n value: any,\n type: string,\n ): SafeHtml | SafeStyle | SafeScript | SafeUrl | SafeResourceUrl {\n switch (type) {\n case 'html':\n return this.sanitizer.bypassSecurityTrustHtml(value);\n case 'style':\n return this.sanitizer.bypassSecurityTrustStyle(value);\n case 'script':\n return this.sanitizer.bypassSecurityTrustScript(value);\n case 'url':\n return this.sanitizer.bypassSecurityTrustUrl(value);\n case 'resourceUrl':\n return this.sanitizer.bypassSecurityTrustResourceUrl(value);\n default:\n throw new Error(`Invalid safe type specified: ${type}`);\n }\n }\n}\n","//#region imports\nimport { Directive, ElementRef, Input } from '@angular/core';\n//#endregion\n\n@Directive({\n selector: '[taonInjectHTML]',\n standalone: true,\n})\nexport class TaonInjectHTMLDirective {\n @Input() set taonInjectHTML(content: string) {\n this.host.nativeElement.innerHTML = content;\n }\n\n constructor(private host: ElementRef) {}\n}\n","//#region imports\nimport {\n Directive,\n Input,\n Output,\n EventEmitter,\n HostBinding,\n HostListener,\n} from '@angular/core';\nimport { Log, Level } from 'ng2-logger/browser';\nimport { _ } from 'tnp-core/browser';\n//#endregion\n\nconst log = Log.create(`[taon-helpers] long-press`, Level.WARN, Level.ERROR);\n\n@Directive({\n selector: '[taonLongPress]',\n standalone: true,\n})\nexport class TaonLongPress {\n @Input() pressDuration: number = 1000;\n\n @Output() onLongPress: EventEmitter<any> = new EventEmitter();\n\n @Output() onLongPressing: EventEmitter<any> = new EventEmitter();\n\n @Output() onLongPressEnd: EventEmitter<any> = new EventEmitter();\n\n private pressing: boolean;\n\n private longPressing: boolean;\n\n private timeout: any;\n\n private mouseX: number = 0;\n\n private mouseY: number = 0;\n\n @HostBinding('class.press')\n get press() {\n return this.pressing;\n }\n\n @HostBinding('class.longpress')\n get longPress() {\n return this.longPressing;\n }\n\n allowTrigger = false;\n\n triggerEnd = _.debounce(() => {\n this.endPress();\n }, 500);\n\n @HostListener('mousedown', ['$event'])\n onMouseDown(event) {\n // don't do right/middle clicks\n log.d(`MOUSE DOWN `);\n\n if (event.which !== 1) return;\n this.allowTrigger = true;\n\n this.mouseX = event.clientX;\n this.mouseY = event.clientY;\n\n this.pressing = true;\n this.longPressing = false;\n\n this.timeout = setTimeout(() => {\n if (this.allowTrigger) {\n this.longPressing = true;\n log.d(`long pressing start pressDuration:${this.pressDuration} `);\n this.onLongPress.emit(event);\n this.loop(event);\n }\n }, this.pressDuration);\n\n this.loop(event);\n }\n\n @HostListener('mousemove', ['$event'])\n onMouseMove(event) {\n if (this.pressing && !this.longPressing) {\n const xThres = event.clientX - this.mouseX > 10;\n const yThres = event.clientY - this.mouseY > 10;\n if (xThres || yThres) {\n this.endPress();\n }\n }\n }\n\n loop(event) {\n if (this.longPressing) {\n this.timeout = setTimeout(() => {\n log.d(`emil longpressing`);\n this.triggerEnd();\n this.onLongPressing.emit(event);\n this.loop(event);\n }, 50);\n }\n }\n\n endPress(emit = true) {\n this.allowTrigger = false;\n clearTimeout(this.timeout);\n this.longPressing = false;\n this.pressing = false;\n if (emit) {\n log.d(`EMIT END`);\n this.onLongPressEnd.emit(true);\n } else {\n log.d(`NOT EMIT END`);\n }\n }\n\n @HostListener('mouseup')\n onMouseUp() {\n this.endPress(false);\n }\n}\n","export enum ViewMode {\n Add = 'Add',\n Edit = 'Edit',\n Preview = 'Preview',\n}\n","import { Injectable, NgZone } from '@angular/core';\nimport { Observable } from 'rxjs';\n\ninterface Window {\n google?: any;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class GoogleAuthService {\n constructor(private zone: NgZone) {}\n\n loadScript(): Promise<void> {\n return new Promise((resolve, reject) => {\n if ((window as Window).google?.accounts?.id) {\n resolve();\n return;\n }\n\n const script = document.createElement('script');\n script.src = 'https://accounts.google.com/gsi/client';\n script.async = true;\n script.defer = true;\n script.onload = () => resolve();\n script.onerror = () => reject();\n document.head.appendChild(script);\n });\n }\n\n renderButton(\n container: HTMLElement,\n clientId: string,\n width: number,\n ): Observable<any> {\n return new Observable(subscriber => {\n this.loadScript().then(() => {\n const google = (window as Window).google;\n\n google.accounts.id.initialize({\n client_id: clientId,\n auto_select: false,\n callback: (response: any) => {\n this.zone.run(() => {\n const payload = this.decodeJwt(response.credential);\n subscriber.next(payload);\n });\n },\n });\n\n google.accounts.id.disableAutoSelect();\n google.accounts.id.renderButton(container, {\n theme: 'outline',\n size: 'large',\n width,\n type: 'standard',\n });\n });\n });\n }\n\n private decodeJwt(token: string): any {\n const base64Url = token.split('.')[1];\n const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');\n const jsonPayload = decodeURIComponent(\n atob(base64)\n .split('')\n .map(c => '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2))\n .join(''),\n );\n return JSON.parse(jsonPayload);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class MicrosoftAuthService {\n login(clientId: string): Observable<any> {\n return new Observable(subscriber => {\n const redirectUri = window.location.origin;\n const nonce = crypto.randomUUID();\n\n const url =\n 'https://login.microsoftonline.com/consumers/oauth2/v2.0/authorize' +\n `?client_id=${clientId}` +\n `&response_type=id_token` +\n `&redirect_uri=${encodeURIComponent(redirectUri)}` +\n `&scope=openid profile email` +\n `&response_mode=fragment` +\n `&prompt=login` +\n `&nonce=${nonce}`;\n\n const popup = window.open(url, 'microsoft-login', 'width=500,height=600');\n\n if (!popup) {\n subscriber.error('Popup blocked');\n return;\n }\n\n const timer = setInterval(() => {\n try {\n if (popup.closed) {\n clearInterval(timer);\n subscriber.complete();\n return;\n }\n\n const popupUrl = popup.location.href;\n\n // Wait until redirect happens back to our domain\n if (!popupUrl.startsWith(redirectUri)) return;\n\n const hash = popup.location.hash;\n if (!hash) return;\n\n const params = new URLSearchParams(hash.substring(1));\n const idToken = params.get('id_token');\n\n if (idToken) {\n clearInterval(timer);\n popup.close();\n\n const payload = this.decodeJwt(idToken);\n\n subscriber.next({\n email: payload.email || payload.preferred_username,\n name: payload.name,\n picture: undefined,\n });\n\n subscriber.complete();\n }\n } catch {\n // Cross-origin access throws until redirect returns to our domain\n }\n }, 300);\n });\n }\n\n private decodeJwt(token: string): any {\n const base64Url = token.split('.')[1];\n const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');\n\n const jsonPayload = decodeURIComponent(\n atob(base64)\n .split('')\n .map(c => '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2))\n .join(''),\n );\n\n return JSON.parse(jsonPayload);\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { BehaviorSubject, distinctUntilChanged, map, shareReplay } from 'rxjs';\n\nimport { MicrosoftAuthService } from './microsoft-auth.service';\n\nexport interface SessionState {\n isLoggedIn: boolean;\n email?: string;\n emailVerified?: boolean;\n displayName?: string;\n pictureUrl?: string;\n}\n\nconst STORAGE_KEY = 'auth_session_v1';\n\n@Injectable({ providedIn: 'root' })\nexport class SessionService {\n microsoftLogin = inject(MicrosoftAuthService);\n\n private readonly state$ = new BehaviorSubject<SessionState>(this.load());\n\n data$ = this.state$.asObservable();\n\n readonly isLoggedIn$ = this.state$.pipe(\n map(s => !!s.isLoggedIn),\n distinctUntilChanged(),\n shareReplay({ bufferSize: 1, refCount: true }),\n );\n\n readonly emailConfirmed$ = this.state$.pipe(\n map(s => !!s.emailVerified),\n distinctUntilChanged(),\n shareReplay({ bufferSize: 1, refCount: true }),\n );\n\n readonly email$ = this.state$.pipe(\n map(s => s.email ?? ''),\n distinctUntilChanged(),\n shareReplay({ bufferSize: 1, refCount: true }),\n );\n\n get snapshot(): SessionState {\n return this.state$.value;\n }\n\n loginWithGoogle(data: {\n email: string;\n emailVerified: boolean;\n displayName?: string;\n pictureUrl?: string;\n }) {\n const next: SessionState = {\n isLoggedIn: true,\n email: data.email,\n emailVerified: data.emailVerified,\n displayName: data.displayName,\n pictureUrl: data.pictureUrl,\n };\n\n this.state$.next(next);\n localStorage.setItem(STORAGE_KEY, JSON.stringify(next));\n }\n\n logout() {\n const next: SessionState = { isLoggedIn: false };\n this.state$.next(next);\n localStorage.setItem(STORAGE_KEY, JSON.stringify(next));\n }\n\n private load(): SessionState {\n try {\n const raw = localStorage.getItem(STORAGE_KEY);\n if (!raw) return { isLoggedIn: false };\n return JSON.parse(raw);\n } catch {\n return { isLoggedIn: false };\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Input,\n ViewChild,\n inject,\n ChangeDetectorRef,\n OnInit,\n} from '@angular/core';\nimport {\n FormControl,\n FormGroup,\n FormsModule,\n ReactiveFormsModule,\n Validators,\n} from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { ThemePalette } from '@angular/material/core';\nimport { MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MtxLoaderModule, MtxLoaderType } from '@ng-matero/extensions/loader';\nimport {\n Translation,\n Translatable,\n TranslateDirective,\n} from '@taon-dev/i18n/browser';\nimport { PrimeIcons } from 'primeng/api';\nimport { ButtonModule } from 'primeng/button';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { Taon } from 'taon/browser';\nimport { _ } from 'tnp-core/browser';\n\nimport { GoogleAuthService } from './google-auth.service';\nimport { MicrosoftAuthService } from './microsoft-auth.service';\nimport { SessionService } from './session.service';\n\n//#endregion\n\nconst t = Translation.for('src/lib/ui/taon-auth/auth-dialog.component.ts', {\"src/lib/ui/taon-auth/auth-dialog.component.html\":{\"en-US\":async () => (await import('./i18n/auth-dialog.component.html.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/auth-dialog.component.html.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/auth-dialog.component.html.de-DE.i18n.data')).default}} as any);\n\n@Component({\n selector: 'app-auth-dialog',\n standalone: true,\n imports: [\n CommonModule,\n MatDialogModule,\n MatButtonModule,\n MatIconModule,\n MatDividerModule,\n MatInputModule,\n MatFormFieldModule,\n MatProgressSpinnerModule,\n MatProgressBarModule,\n MtxLoaderModule,\n ButtonModule,\n InputTextModule,\n ReactiveFormsModule,\n FormsModule,\n TranslateDirective,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './auth-dialog.component.html',\n styleUrl: './auth-dialog.component.scss',\n})\nexport class AuthDialogComponent\n implements AfterViewInit, OnInit, Translatable\n{\n t = t.for(this);\n\n cdr = inject(ChangeDetectorRef);\n\n emailRegex = /^[a-zA-Z0-9._%+-]+@(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,}$/;\n\n form = new FormGroup({\n email: new FormControl('', [\n Validators.required,\n Validators.pattern(this.emailRegex),\n ]),\n });\n\n @Input() googleClientId?: string;\n\n @Input() microsoftClientId?: string;\n\n @ViewChild('emailLoginBtn', { static: true })\n emailLoginBtn!: ElementRef<HTMLDivElement>;\n\n @ViewChild('googleBtn', { static: true })\n googleBtn!: ElementRef<HTMLDivElement>;\n\n diableLoginByEmail = !(window.location.hostname === 'localhost');\n\n private readonly dialogRef = inject(MatDialogRef<AuthDialogComponent>);\n\n private readonly googleAuth = inject(GoogleAuthService);\n\n private readonly microsoftAuth = inject(MicrosoftAuthService);\n\n private readonly session = inject(SessionService);\n\n googleButtonLoaded = false;\n\n close(): void {\n this.dialogRef.close();\n }\n\n loginWithMicrosoft(): void {\n if (!this.microsoftClientId) {\n console.warn('Microsoft client id missing [microsoftClientId]');\n return;\n }\n this.microsoftAuth.login(this.microsoftClientId).subscribe(profile => {\n if (!profile?.email) return;\n\n this.session.loginWithGoogle({\n email: profile.email,\n emailVerified: true,\n displayName: profile.name,\n pictureUrl: profile.picture,\n });\n\n this.dialogRef.close();\n });\n }\n\n loginByEmail(): void {\n this.form.markAllAsTouched();\n this.form.updateValueAndValidity();\n if (this.form.invalid) {\n return;\n }\n\n const displayName = _.startCase(\n (this.form.value.email || '').split('@')[0],\n );\n\n this.session.loginWithGoogle({\n email: this.form.value.email,\n emailVerified: true,\n displayName,\n });\n this.dialogRef.close();\n }\n\n ngOnInit(): void {\n if (this.diableLoginByEmail) {\n this.form.controls.email.disable();\n }\n }\n\n ngAfterViewInit(): void {\n if (!this.googleClientId) {\n console.warn('Google client id missing [googleClientId]');\n return;\n }\n\n this.dialogRef.afterOpened().subscribe(() => {\n setTimeout(() => {\n const el: HTMLElement = this.emailLoginBtn.nativeElement;\n const width = Math.floor(el.getBoundingClientRect().width);\n\n this.googleAuth\n .renderButton(\n this.googleBtn.nativeElement,\n this.googleClientId,\n width,\n )\n .subscribe(payload => {\n const email = payload.email;\n const verified = !!payload.email_verified;\n this.googleButtonLoaded = true;\n this.cdr.markForCheck();\n\n if (email && verified) {\n this.session.loginWithGoogle({\n email,\n emailVerified: verified,\n displayName: payload.name,\n pictureUrl: payload.picture,\n });\n this.dialogRef.close();\n }\n });\n });\n });\n }\n}\n","<div class=\"absolute top-2 right-2\">\n <button\n mat-icon-button\n aria-label=\"Close dialog\"\n (click)=\"close()\">\n <mat-icon>close</mat-icon>\n </button>\n</div>\n<div class=\"auth-dialog p-5\">\n <h4\n class=\"mb-3\"\n translate [translate-t]=\"t\">\n Login or Register\n </h4>\n\n <div\n class=\"w-full pt-3\"\n #emailLoginBtn>\n <form\n [formGroup]=\"form\"\n (ngSubmit)=\"loginByEmail()\"\n class=\"w-full\">\n <mat-form-field\n appearance=\"outline\"\n class=\"w-full email-field\">\n <mat-label *ngIf=\"!diableLoginByEmail\">Email</mat-label>\n\n <input\n matInput\n formControlName=\"email\"\n class=\"pl-1\"\n type=\"email\"\n [placeholder]=\"\n diableLoginByEmail ? t.gettext('Login by email (disabled)') : ''\n \" />\n\n <button\n mat-icon-button\n [disabled]=\"diableLoginByEmail\"\n matSuffix\n color=\"primary\">\n <mat-icon>mail</mat-icon>\n </button>\n <mat-error\n *ngIf=\"\n form.get('email')?.hasError('pattern') && form.get('email')?.touched\n \"\n translate [translate-t]=\"t\" [translate-t]=\"t\">\n Please enter a valid email address\n </mat-error>\n\n <mat-error\n *ngIf=\"\n form.get('email')?.hasError('required') &&\n form.get('email')?.touched\n \">\n {{ t.gettext('Email is') }} <strong translate [translate-t]=\"t\">required</strong>\n </mat-error>\n </mat-form-field>\n </form>\n\n <div class=\"divider\">\n <span translate [translate-t]=\"t\">or</span>\n </div>\n\n <!-- GOOGLE BUTTON -->\n <div\n #googleBtn\n class=\"google-container\">\n <span\n *ngIf=\"!googleButtonLoaded\"\n class=\"text-300 p-2\"\n translate\n [translate-t]=\"t\" [translate-t]=\"t\">loading google button..</span\n >\n <mat-progress-bar\n *ngIf=\"!googleButtonLoaded\"\n mode=\"indeterminate\"\n class=\"auth-progress\" />\n </div>\n\n <!-- MICROSOFT BUTTON -->\n <div\n *ngIf=\"microsoftClientId\"\n #microsoftBtn\n class=\"microsoft-container\">\n <button\n mat-stroked-button\n color=\"primary\"\n class=\"w-full microsoft-btn\"\n (click)=\"loginWithMicrosoft()\">\n <mat-icon class=\"mr-2\">login</mat-icon>\n {{ t.gettext('Continue with Microsoft') }}\n </button>\n </div>\n </div>\n\n <br />\n\n <div class=\"flex justify-content-end\">\n <button\n mat-button\n mat-dialog-close>\n {{ t.gettext('Cancel') }}\n </button>\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, inject, OnInit } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { Router } from '@angular/router';\nimport { ButtonModule } from 'primeng/button';\nimport { _ } from 'tnp-core/browser';\n\nimport { AuthDialogComponent } from './auth-dialog.component';\nimport { SessionService } from './session.service';\n\n@Component({\n selector: 'taon-auth-button',\n standalone: true,\n imports: [CommonModule, MatButtonModule, ButtonModule, MatIconModule],\n templateUrl: './auth-button.component.html',\n styleUrl: './auth-button.component.scss',\n})\nexport class AuthButtonComponent implements OnInit {\n @Input({ required: true }) linkToDashboard!: string;\n\n @Input() googleClientId?: string;\n\n @Input() microsoftClientId?: string;\n\n @Input() displayDashboardButton: boolean;\n\n readonly session = inject(SessionService);\n\n private readonly dialog = inject(MatDialog);\n\n private readonly router = inject(Router);\n\n openLogin() {\n const instance = this.dialog.open(AuthDialogComponent, {\n width: '410px',\n data: null,\n }).componentInstance;\n instance.googleClientId = this.googleClientId;\n instance.microsoftClientId = this.microsoftClientId;\n }\n\n goDashboard() {\n if (this.linkToDashboard) {\n this.router.navigateByUrl(this.linkToDashboard);\n }\n }\n\n logout() {\n this.session.logout();\n }\n\n ngOnInit(): void {\n if (!this.microsoftClientId) {\n console.warn('[taon-auth-button] Microsoft client id missing [microsoftClientId]');\n }\n if (!this.googleClientId) {\n console.warn('[taon-auth-button] Google client id missing [googleClientId]');\n }\n //Called after the constructor, initializing input properties, and the first call to ngOnChanges.\n //Add 'implements OnInit' to the class.\n // console.log('this.displayDashboardButton', this.displayDashboardButton);\n this.displayDashboardButton = _.isBoolean(this.displayDashboardButton)\n ? this.displayDashboardButton\n : true;\n }\n}\n","<div class=\"flex align-items-center gap-2\">\n <ng-container *ngIf=\"(session.isLoggedIn$ | async) === false; else loggedIn\">\n <button\n mat-button\n (click)=\"openLogin()\">\n Login\n </button>\n </ng-container>\n\n <ng-template #loggedIn>\n <button\n *ngIf=\"displayDashboardButton\"\n mat-button\n color=\"primary\"\n class=\"auth-btn\"\n (click)=\"goDashboard()\">\n <mat-icon>dashboard</mat-icon>\n Dashboard\n </button>\n\n <button\n mat-button\n class=\"ml-2\"\n (click)=\"logout()\">\n Logout ({{ (session.data$ | async)?.displayName }})\n </button>\n </ng-template>\n</div>\n","import { Injectable } from '@angular/core';\nimport { CanActivate, Router, UrlTree } from '@angular/router';\nimport { Observable, map, take } from 'rxjs';\n\nimport { SessionService } from './session.service';\n\n@Injectable({ providedIn: 'root' })\nexport class AuthGuard implements CanActivate {\n constructor(\n private readonly session: SessionService,\n private readonly router: Router,\n ) {}\n\n canActivate(): Observable<boolean | UrlTree> {\n return this.session.isLoggedIn$.pipe(\n take(1),\n map(isLoggedIn => {\n if (isLoggedIn) {\n return true;\n }\n\n // redirect to home or login page\n return this.router.parseUrl('/');\n }),\n );\n }\n}\n","//#region imports\nimport {\n Component,\n EventEmitter,\n HostBinding,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n//#endregion\n\n@Component({\n selector: 'taon-github-fork-me-corner',\n templateUrl: './taon-github-fork-me-corner.component.html',\n styleUrls: ['./taon-github-fork-me-corner.component.scss'],\n standalone: false,\n})\nexport class TaonGithubForkMeCornerComponent {\n @Input() url: string = 'https://github.com';\n}\n","<a\n href=\"{{ url }}\"\n class=\"github-corner\"\n aria-label=\"View source on GitHub\"\n ><svg\n width=\"80\"\n height=\"80\"\n viewBox=\"0 0 250 250\"\n style=\"\n fill: #151513;\n color: #fff;\n position: absolute;\n top: 0;\n border: 0;\n right: 0;\n \"\n aria-hidden=\"true\">\n <path d=\"M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z\"></path>\n <path\n d=\"M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2\"\n fill=\"currentColor\"\n style=\"transform-origin: 130px 106px\"\n class=\"octo-arm\"></path>\n <path\n d=\"M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z\"\n fill=\"currentColor\"\n class=\"octo-body\"></path>\n </svg>\n</a>\n","//#region imports\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { TaonGithubForkMeCornerComponent } from './taon-github-fork-me-corner.component';\n//#endregion\n\n@NgModule({\n imports: [CommonModule],\n exports: [TaonGithubForkMeCornerComponent],\n declarations: [TaonGithubForkMeCornerComponent],\n providers: [],\n})\nexport class TaonGithubForkMeCornerModule {}\n","//#region imports\nimport {\n Component,\n EventEmitter,\n HostBinding,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n//#endregion\n\n@Component({\n selector: 'taon-github-fork-me-ribbon',\n templateUrl: './taon-github-fork-me-ribbon.component.html',\n styleUrls: ['./taon-github-fork-me-ribbon.component.scss'],\n standalone: false,\n})\nexport class TaonGithubForkMeRibbonComponent {\n @Input() url: string = 'https://github.com';\n}\n","<a href=\"{{ url }}\"\n ><img\n decoding=\"async\"\n loading=\"lazy\"\n width=\"149\"\n height=\"149\"\n src=\"data:image/webp;base64,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\"\n class=\"attachment-full size-full\"\n alt=\"Fork me on GitHub\"\n data-recalc-dims=\"1\"\n/></a>\n","//#region imports\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { TaonGithubForkMeRibbonComponent } from './taon-github-fork-me-ribbon.component';\n//#endregion\n\n@NgModule({\n imports: [CommonModule],\n declarations: [TaonGithubForkMeRibbonComponent],\n exports: [TaonGithubForkMeRibbonComponent],\n})\nexport class TaonGithubForkMeRibbonModule {}\n","//#region imports\n// iframe-sync.component.ts\nimport { NgIf } from '@angular/common';\nimport {\n Component,\n Input,\n OnInit,\n OnDestroy,\n ViewChild,\n ElementRef,\n AfterViewInit,\n ChangeDetectionStrategy,\n inject,\n} from '@angular/core';\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\nimport { ActivatedRoute, Router, NavigationEnd } from '@angular/router';\nimport { debounce } from 'lodash';\nimport { Level, Log } from 'ng2-logger/browser';\nimport { Subject } from 'rxjs';\nimport { filter, takeUntil, distinctUntilChanged } from 'rxjs/operators';\n//#endregion\n\n// taon-iframe-sync.component.ts\n@Component({\n selector: 'taon-iframe-sync',\n template: `\n <!-- Hidden by default, shown only when ready -->\n <iframe\n #iframe\n [src]=\"safeSrc\"\n [style.display]=\"isReady ? 'block' : 'none'\"\n [style.visibility]=\"isReady ? 'visible' : 'hidden'\"\n [style.opacity]=\"isReady ? '1' : '0'\"\n frameborder=\"0\"\n style=\"width:100%; height:100%; border:none; transition: opacity 0.2s ease;\"\n (load)=\"onIframeLoad()\"\n allow=\"clipboard-write\"></iframe>\n\n <!-- Optional: nice loading placeholder -->\n <div\n *ngIf=\"!isReady\"\n class=\"iframe-loading-placeholder\"\n [style.background]=\"loaderBackgroundColor\">\n <div class=\"spinner\"></div>\n <p>Loading documentation...</p>\n </div>\n `,\n styles: [\n `\n :host {\n display: block;\n width: 100%;\n height: 100%;\n position: relative;\n }\n .iframe-loading-placeholder {\n position: absolute;\n inset: 0;\n background: var(--md-primary-fg-color--light);\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 16px;\n color: var(--text-color, #666);\n font-family: system-ui, sans-serif;\n }\n .spinner {\n width: 40px;\n height: 40px;\n border: 4px solid #f3f3f3;\n border-top: 4px solid #3498db;\n border-radius: 50%;\n animation: spin 1s linear infinite;\n }\n @keyframes spin {\n to {\n transform: rotate(360deg);\n }\n }\n `,\n ],\n standalone: true,\n imports: [NgIf],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TaonIframeSyncComponent implements AfterViewInit, OnDestroy {\n @Input() loaderBackgroundColor = 'white';\n\n private destroy$ = new Subject<void>();\n\n private iframeWin: Window | null = null;\n\n // This is the key: iframe stays hidden until first correct page is confirmed loaded\n isReady = false;\n\n private hasInitialSync = false;\n\n @ViewChild('iframe') iframeRef!: ElementRef<HTMLIFrameElement>;\n\n // ... same inputs as before\n #src!: string;\n\n @Input({ required: true }) set iframeSrc(v: string) {\n this.#src = v.trim();\n this.safeSrc = this.sanitizer.bypassSecurityTrustResourceUrl(this.#src);\n }\n\n get iframeSrc() {\n return this.#src;\n }\n\n @Input() queryParamKey = 'internalIframePath';\n\n @Input() initialPath: string | null = null;\n\n @Input() targetOrigin?: string;\n\n safeSrc!: SafeResourceUrl;\n\n private router = inject(Router);\n\n private route = inject(ActivatedRoute);\n\n private sanitizer = inject(DomSanitizer);\n\n ngAfterViewInit() {\n this.setupSync();\n window.addEventListener('message', this.handleIframeMessage);\n }\n\n private setupSync() {\n this.route.queryParamMap\n .pipe(\n distinctUntilChanged(\n (a, b) => a.get(this.queryParamKey) === b.get(this.queryParamKey),\n ),\n takeUntil(this.destroy$),\n )\n .subscribe(() => this.sendNavigateIfReady());\n\n this.router.events\n .pipe(\n filter((e): e is NavigationEnd => e instanceof NavigationEnd),\n takeUntil(this.destroy$),\n )\n .subscribe(() => this.sendNavigateIfReady());\n }\n\n onIframeLoad() {\n this.iframeWin = this.iframeRef?.nativeElement?.contentWindow;\n\n // Send the correct path — iframe will load it\n this.sendNavigateIfReady();\n\n // The real magic: wait for iframe to confirm it loaded the right page\n // (we'll enhance the iframe script to send a \"READY\" message)\n }\n\n private sendNavigateIfReady() {\n if (\n !this.iframeWin ||\n !this.isValidUrl(this.iframeSrc) ||\n this.hasInitialSync\n )\n return;\n\n const path =\n this.route.snapshot.queryParamMap.get(this.queryParamKey) ??\n this.initialPath ??\n '/';\n\n const origin = this.targetOrigin ?? this.getSafeOrigin(this.iframeSrc);\n\n this.iframeWin.postMessage({ type: 'NAVIGATE', path }, origin);\n this.hasInitialSync = true;\n }\n\n // ────── Safe URL helpers ──────\n private isValidUrl(string: string): boolean {\n if (!string) return false;\n try {\n new URL(string, window.location.origin);\n return true;\n } catch {\n return false;\n }\n }\n\n private getSafeOrigin(src: string): string {\n if (!src) return window.location.origin;\n\n try {\n // Full URL\n if (src.startsWith('http')) {\n return new URL(src).origin;\n }\n\n // Relative path\n if (src.startsWith('/')) {\n return window.location.origin;\n }\n\n // Protocol-relative\n if (src.startsWith('//')) {\n return new URL(src, window.location.origin).origin;\n }\n\n // Just return current origin for anything else\n return window.location.origin;\n } catch {\n return window.location.origin;\n }\n }\n\n // This is called when iframe confirms: \"Yes, I loaded the correct page!\"\n private handleIframeMessage = (event: MessageEvent) => {\n const expected = this.targetOrigin ?? this.getSafeOrigin(this.iframeSrc);\n if (event.origin !== expected) return;\n\n // NEW: iframe tells us when it's truly ready\n if (event.data?.type === 'IFRAME_READY') {\n this.isReady = true; // NOW show the iframe!\n return;\n }\n\n if (event.data?.type === 'IFRAME_PATH_UPDATE') {\n const path = event.data.path || '/';\n this.router.navigate([], {\n queryParams: { [this.queryParamKey]: path === '/' ? null : path },\n queryParamsHandling: 'merge',\n replaceUrl: true,\n });\n }\n };\n\n // ... rest of helpers (isValidUrl, getSafeOrigin) same as before\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n window.removeEventListener('message', this.handleIframeMessage);\n }\n}\n","//#region import\nimport { CommonModule } from '@angular/common';\nimport {\n Component,\n Input,\n Output,\n EventEmitter,\n OnInit,\n signal,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n inject,\n SimpleChanges,\n OnChanges,\n} from '@angular/core';\nimport { TaonStripeCloudflareWorker } from '@taon-dev/api-workers/browser';\nimport { Translation, TranslateDirective } from '@taon-dev/i18n/browser';\nimport { Taon } from 'taon/browser';\n\nimport { TaonKvAuthorizationProduct } from './taon-kv-authorization.models';\n//#endregion\n\nconst t = Translation.for('src/lib/ui/taon-kv-authorization/taon-kv-authorization.component.ts', {\"src/lib/ui/taon-kv-authorization/taon-kv-authorization.component.html\":{\"en-US\":async () => (await import('./i18n/taon-kv-authorization.component.html.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-kv-authorization.component.html.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-kv-authorization.component.html.de-DE.i18n.data')).default},\"src/lib/ui/taon-kv-authorization/taon-kv-authorization.component.ts\":{\"en-US\":async () => (await import('./i18n/taon-kv-authorization.component.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-kv-authorization.component.ts.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-kv-authorization.component.ts.de-DE.i18n.data')).default}} as any, {\n // debug: true,\n});\n\n@Component({\n selector: 'taon-kv-authorization',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, TranslateDirective],\n templateUrl: './taon-kv-authorization.component.html',\n})\nexport class TaonKvAuthorizationComponent implements OnInit, OnChanges {\n t = t.for(this);\n\n infoMsg = t.signal.gettext('Loading authorization info...');\n\n // asd = t.signal.gettext('You purchased');\n\n cdr = inject(ChangeDetectorRef);\n\n @Input({ required: true }) email!: string;\n\n @Input({ required: true }) url!: string;\n\n @Input({ required: true }) products: TaonKvAuthorizationProduct[] = [];\n\n @Output() authorizedProducts = new EventEmitter<\n TaonKvAuthorizationProduct[]\n >();\n\n protected loading = signal(true);\n\n protected authorizedProductsData = signal<TaonKvAuthorizationProduct[]>([]);\n\n protected authorizationCheckingInProgress = false;\n\n ngOnInit(): void {\n this.products = this.products ? this.products : [];\n this.checkIfProducstsAuthorized();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n //Called before any other lifecycle hook. Use it to inject dependencies, but avoid any serious work here.\n //Add '${implements OnChanges}' to the class.\n this.checkIfProducstsAuthorized();\n }\n\n public async checkIfProducstsAuthorized(): Promise<void> {\n if (\n this.authorizationCheckingInProgress ||\n !this.products ||\n this.products.length === 0\n ) {\n return;\n }\n this.authorizationCheckingInProgress = true;\n const worker = new TaonStripeCloudflareWorker(this.url);\n\n const results: TaonKvAuthorizationProduct[] = [];\n\n for (const product of this.products) {\n try {\n const authorized = await worker.checkAccess({\n clientEmail: this.email,\n productId: product.stripeProductId,\n });\n\n results.push({\n ...product,\n authorized,\n });\n this.cdr.markForCheck();\n } catch {\n results.push({\n ...product,\n authorized: false,\n });\n this.cdr.markForCheck();\n }\n }\n\n this.authorizedProductsData.set(results);\n this.loading.set(false);\n\n this.authorizedProducts.emit(results);\n this.authorizationCheckingInProgress = false;\n this.cdr.markForCheck();\n }\n\n protected authorizedCount(): number {\n return this.authorizedProductsData().filter(p => p.authorized).length;\n }\n}\n","<div class=\"taon-kv-authorization\">\n <div *ngIf=\"loading()\">{{ infoMsg() }}</div>\n\n <div *ngIf=\"!loading()\">\n <div\n *ngIf=\"authorizedCount() === 0\"\n translate [translate-t]=\"t\" [translate-t]=\"t\">\n You did not purchase any products\n </div>\n\n <div *ngIf=\"authorizedCount() > 0\">\n <span translate [translate-t]=\"t\">You purchased </span> {{ authorizedCount() }}\n <span translate [translate-t]=\"t\">product(s)</span>\n </div>\n </div>\n</div>\n","//#region imports\nimport { AsyncPipe, JsonPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport {\n Translatable,\n TranslateDirective,\n TranslateService,\n Translation,\n} from '@taon-dev/i18n/browser';\nimport { map, of, startWith, Subscription, tap, withLatestFrom } from 'rxjs';\nimport { Taon } from 'taon/browser';\nimport { UtilsI18n } from 'tnp-core/browser';\n//#endregion\n\nconst t = Translation.for('src/lib/ui/taon-lang-selector/taon-lang-selector.component.ts', {\"src/lib/ui/taon-lang-selector/taon-lang-selector.component.html\":{\"en-US\":async () => (await import('./i18n/taon-lang-selector.component.html.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-lang-selector.component.html.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-lang-selector.component.html.de-DE.i18n.data')).default}} as any);\n\n@Component({\n selector: 'taon-lang-selector',\n templateUrl: './taon-lang-selector.component.html',\n styleUrls: ['./taon-lang-selector.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AsyncPipe, TranslateDirective, JsonPipe],\n})\nexport class TaonLangSelectorComponent implements Translatable {\n t = t.for(this);\n\n private translateService = inject(TranslateService);\n\n readonly availableLangs$ = this.translateService.manager.availableLangs$.pipe(\n // tap(availableLangs => {\n // console.log({ availableLangs });\n // }),\n );\n\n currentLang: UtilsI18n.CommonLocaleCode = 'en-US';\n readonly currentGlobalLanguage$ =\n this.translateService.manager.currentGlobalLanguage$.pipe(\n withLatestFrom(this.availableLangs$),\n map(([currentGlobalLanguage, availableLangs]) => {\n return availableLangs.find(c => c.code === currentGlobalLanguage)?.code;\n }),\n tap(currentGlobalLanguage => {\n this.currentLang = currentGlobalLanguage;\n }),\n );\n\n readonly isDisabled$ = this.availableLangs$.pipe(map(c => c.length <= 1));\n\n constructor() {}\n\n sub = new Subscription();\n ngOnInit(): void {\n //Called after the constructor, initializing input properties, and the first call to ngOnChanges.\n //Add 'implements OnInit' to the class.\n this.sub.add(this.currentGlobalLanguage$.subscribe());\n }\n\n ngOnDestroy(): void {\n //Called once, before the instance is destroyed.\n //Add 'implements OnDestroy' to the class.\n this.sub.unsubscribe();\n }\n\n async changeLanguage(event: Event): Promise<void> {\n const select = event.target as HTMLSelectElement;\n await this.translateService.changeGlobalLang(\n select.value as UtilsI18n.CommonLocaleCode,\n );\n }\n}\n","<label class=\"taon-lang-selector\">\n <span class=\"taon-lang-selector__label\">\n {{\n t.gettext('Select Language') +\n ' ' +\n ((isDisabled$ | async) ? t.gettext('(disabled)') : '')\n }}\n </span>\n\n <!-- currentLang = {{ currentLang | json }} -->\n\n <select\n class=\"taon-lang-selector__select\"\n [value]=\"currentLang\"\n [disabled]=\"isDisabled$ | async\"\n (change)=\"changeLanguage($event)\">\n @for (lang of availableLangs$ | async; track lang.code) {\n <option\n [value]=\"lang.code\"\n [selected]=\"lang.code === currentLang\">\n {{ lang.label }}\n </option>\n }\n </select>\n</label>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { RouterLink } from '@angular/router';\n\n@Component({\n selector: 'taon-not-found',\n standalone: true,\n imports: [RouterLink],\n templateUrl: './taon-not-found.component.html',\n styleUrls: ['./taon-not-found.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TaonNotFoundComponent {}\n","<div class=\"flex align-items-center justify-content-center min-h-screen px-3\">\n <div\n class=\"text-center surface-card p-5 border-round shadow-2 w-full\"\n style=\"max-width: 600px\">\n <h1 class=\"text-6xl font-bold mb-3 text-red-500\">404</h1>\n\n <h2 class=\"text-2xl mb-3\">Page not found</h2>\n\n <p class=\"text-color-secondary mb-4\">\n The page you are looking for does not exist or has been moved.\n </p>\n\n <a\n routerLink=\"/\"\n class=\"p-button p-component no-underline\">\n <span class=\"p-button-label text-primary no-underline\">Go to Home</span>\n </a>\n\n <br />\n <br />\n <br />\n\n <h4\n class=\"flex flex-row align-content-center justify-content-center align-items-center\">\n <img\n height=\"20px\"\n src=\"assets/assets-for/taon-ui/assets/shared/taon-small-logo-for-not-found.png\"\n alt=\"\" />\n\n <span class=\"p-2 text-gray-200\"\n >Powered by\n <a\n class=\"text-gray-200\"\n href=\"https://taon.dev\">\n Taon.Dev\n </a></span\n >\n </h4>\n </div>\n</div>\n","//#region imports\nimport {\n Component,\n EventEmitter,\n HostBinding,\n Input,\n OnInit,\n Output,\n ViewChild,\n OnDestroy,\n AfterViewInit,\n} from '@angular/core';\nimport { Observable, Subject, Subscription } from 'rxjs';\nimport { Taon } from 'taon/browser';\nimport { axios } from 'tnp-core/browser';\nimport { _ } from 'tnp-core/browser';\n//#endregion\n\n// import {\n// NgProgressConfig,\n// NgProgressModule,\n// NgProgressRef,\n// } from 'ngx-progressbar';\n// import { Models } from 'tnp-models';\n// import type { TaonAdmin } from '../taon-admin-mode-configuration';\n\nconst calculatePercentage = (loaded, total) => Math.floor(loaded * 1.0) / total;\ndeclare const ENV: any;\n\n@Component({\n selector: 'taon-progress-bar',\n templateUrl: './taon-progress-bar.component.html',\n styleUrls: ['./taon-progress-bar.component.scss'],\n standalone: false,\n})\nexport class TaonProgressBarComponent\n implements OnInit, OnDestroy, AfterViewInit\n{\n @ViewChild('labProgress') labProgress: any; // NgProgressRef;\n\n @Input() isDesktop: boolean;\n\n admin: any;\n\n handlers: Subscription[] = [];\n // options: NgProgressConfig = _.merge(\n // {\n // min: 8,\n // max: 100,\n // speed: 200,\n // trickleSpeed: 300,\n // debounceTime: 0,\n // ease: 'linear',\n // spinnerPosition: 'right',\n // direction: 'ltr+',\n // color: 'gray',\n // fixed: true,\n // meteor: true,\n // spinner: true,\n // thick: false,\n // },\n // _.get(ENV, `plugins['ngx-progressbar']`),\n // );\n\n constructor() {}\n\n ngOnInit() {}\n\n ngOnDestroy(): void {\n this.handlers.forEach(h => h.unsubscribe());\n }\n\n ngAfterViewInit(): void {\n // this.labProgress.set(20)\n this.loadProgressBar(void 0, axios);\n }\n\n loadProgressBar(config, instance = axios) {\n // let requestsCounter = 0;\n // const setupStartProgress = () => {\n // instance.interceptors.request.use(config => {\n // requestsCounter++;\n // this.labProgress.start();\n // return config;\n // });\n // };\n // const setupUpdateProgress = () => {\n // const update = e => {\n // // NProgress.inc(calculatePercentage(e.loaded, e.total))\n // const percentage = calculatePercentage(e.loaded, e.total) * 100;\n // // console.log(`loaded: ${e.loaded}, total: ${e.total} , pecent: ${percentage}`)\n // this.labProgress.inc(percentage);\n // };\n // instance.defaults.onDownloadProgress = update;\n // instance.defaults.onUploadProgress = update;\n // };\n // const setupStopProgress = () => {\n // const responseFunc = response => {\n // if (--requestsCounter === 0) {\n // this.labProgress.complete();\n // // NProgress.done()\n // }\n // return response;\n // };\n // const errorFunc = error => {\n // if (--requestsCounter === 0) {\n // this.labProgress.complete();\n // // NProgress.done()\n // }\n // return Promise.reject(error);\n // };\n // instance.interceptors.response.use(responseFunc, errorFunc);\n // };\n // setupStartProgress();\n // setupUpdateProgress();\n // setupStopProgress();\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n }\n}\n","<!-- <ng-progress\n #labProgress\n id=\"lab\"\n [meteor]=\"options.meteor\"\n [color]=\"options.color\"\n [min]=\"options.min\"\n [max]=\"options.max\"\n [speed]=\"options.speed\"\n [spinner]=\"\n options.spinner &&\n (!admin.adminPanelIsOpen ||\n (admin.adminPanelIsOpen && (admin.draggablePopupMode || !isDesktop)))\n \"\n [spinnerPosition]=\"options.spinnerPosition\"\n [direction]=\"options.direction\"\n [trickleSpeed]=\"options.trickleSpeed\"\n [debounceTime]=\"options.debounceTime\"\n [ease]=\"options.ease\"\n [thick]=\"options.thick\"\n [fixed]=\"options.fixed\">\n</ng-progress>\n(started)=\"onProgressStarted()\"\n (completed)=\"onProgressCompleted()\" -->\n","//#region imports\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { TaonProgressBarComponent } from './taon-progress-bar.component';\n//#endregion\n\n// import { NgProgressConfig, NgProgressModule } from 'ngx-progressbar';\n\n@NgModule({\n imports: [\n CommonModule,\n // NgProgressModule.withConfig({})\n ],\n declarations: [TaonProgressBarComponent],\n exports: [TaonProgressBarComponent],\n})\nexport class TaonProgressBarModule {}\n","import { NgIf } from '@angular/common';\nimport {\n Component,\n Input,\n Output,\n EventEmitter,\n computed,\n inject,\n} from '@angular/core';\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\n\nexport type TaonRumbleState =\n | 'preview-picture'\n | 'preview-picture-locked'\n | 'video-preview-open'\n | 'video-preview-private';\n\n@Component({\n selector: 'taon-rumble',\n standalone: true,\n imports: [NgIf],\n templateUrl: './taon-rumble.component.html',\n styleUrls: ['./taon-rumble.component.scss'],\n})\nexport class TaonRumbleComponent {\n sanitizer = inject(DomSanitizer);\n\n @Input({\n required: true,\n })\n title!: string;\n\n @Input({\n required: true,\n })\n clipId!: string;\n\n @Input({\n required: true,\n })\n picturePreviewUrl!: string;\n\n @Input() state: TaonRumbleState = 'video-preview-open';\n\n @Output() paddlockClicked = new EventEmitter<void>();\n\n @Output() previewClicked = new EventEmitter<void>();\n\n // get embedUrl(): string {\n // return `https://rumble.com/embed/${this.clipId}`;\n // }\n\n embedUrl = computed<SafeResourceUrl>(() =>\n this.sanitizer.bypassSecurityTrustResourceUrl(\n `https://rumble.com/embed/${this.clipId}`,\n ),\n );\n\n onPreviewClick() {\n this.previewClicked.emit();\n }\n\n onPadlockClick(event: MouseEvent) {\n event.stopPropagation();\n this.paddlockClicked.emit();\n }\n\n isPreview() {\n return (\n this.state === 'preview-picture' ||\n this.state === 'preview-picture-locked'\n );\n }\n\n isLocked() {\n return this.state === 'preview-picture-locked';\n }\n\n isVideoOpen() {\n return this.state === 'video-preview-open';\n }\n\n isPrivate() {\n return this.state === 'video-preview-private';\n }\n}\n","<div class=\"taon-rumble\">\n <!-- PREVIEW MODE -->\n <div\n *ngIf=\"isPreview()\"\n class=\"preview\"\n (click)=\"onPreviewClick()\">\n <img\n class=\"preview-img\"\n [src]=\"picturePreviewUrl\"\n [alt]=\"title\" />\n\n <div class=\"title\">\n {{ title }}\n </div>\n\n <!-- PLAY BUTTON -->\n <div class=\"play-button\">▶</div>\n\n <!-- LOCK -->\n <div\n *ngIf=\"isLocked()\"\n class=\"lock\"\n (click)=\"onPadlockClick($event)\">\n 🔒\n </div>\n </div>\n\n <!-- VIDEO OPEN -->\n <div\n *ngIf=\"isVideoOpen()\"\n class=\"video\">\n <iframe\n class=\"rumble-frame\"\n [src]=\"embedUrl()\"\n frameborder=\"0\"\n allowfullscreen>\n </iframe>\n </div>\n\n <!-- PRIVATE VIDEO -->\n <div\n *ngIf=\"isPrivate()\"\n class=\"private\">\n <div class=\"private-box\">🔒 Private video</div>\n </div>\n</div>\n","//#region imports\nimport { CommonModule } from '@angular/common';\nimport {\n ChangeDetectorRef,\n Component,\n DestroyRef,\n ElementRef,\n HostBinding,\n Input,\n OnInit,\n Self,\n inject,\n AfterViewInit,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n FormControl,\n FormGroup,\n FormsModule,\n ReactiveFormsModule,\n} from '@angular/forms';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { PasswordModule } from 'primeng/password';\nimport { interval, take, tap } from 'rxjs';\nimport { TaonStor } from 'taon-storage/browser';\n//#endregion\n\nexport interface TaonSessionPasscodeModel {\n passcode: string;\n}\n\nexport type TaonSessionPasscodeForm = {\n [prop in keyof TaonSessionPasscodeModel]: FormControl<\n TaonSessionPasscodeModel[prop]\n >;\n};\n\n@Component({\n selector: 'taon-session-passcode',\n templateUrl: './taon-session-passcode.component.html',\n styleUrls: ['./taon-session-passcode.component.scss'],\n standalone: true,\n imports: [PasswordModule, CommonModule, ReactiveFormsModule, FormsModule],\n})\nexport class TaonSessionPasscodeComponent implements OnInit, AfterViewInit {\n destroyRef = inject(DestroyRef);\n\n @Input({\n required: true,\n })\n public passcode: string;\n\n @Input() public message: string;\n\n public safeMessage: SafeHtml;\n\n private lastPasscode = TaonStor.inLocalstorage(\n {\n defaultValue: '',\n keyOrPath: 'lastPasscode',\n },\n TaonSessionPasscodeComponent,\n );\n\n @HostBinding('style.display') public display = 'none';\n\n public form: FormGroup<TaonSessionPasscodeForm> =\n new FormGroup<TaonSessionPasscodeForm>({\n passcode: new FormControl(),\n });\n\n constructor(\n @Self() private element: ElementRef<HTMLElement>,\n private domSanitizer: DomSanitizer,\n private cdr: ChangeDetectorRef,\n ) {}\n\n async ngOnInit() {\n if (!this.message) {\n this.message = `\n This website is only for testing purpose. Please type passcode bellow to see content.\n\n `;\n }\n this.safeMessage = this.domSanitizer.bypassSecurityTrustHtml(this.message);\n await this.lastPasscode.ready();\n\n if (this.lastPasscode()?.toString() === this.passcode?.toString()) {\n this.hide();\n } else {\n this.show();\n this.focus();\n }\n this.cdr.markForCheck();\n\n interval(1000)\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n tap(() => {\n this.focus();\n this.cdr.markForCheck();\n }),\n )\n .subscribe();\n }\n\n submit({ passcode }: Partial<TaonSessionPasscodeModel>) {\n if (this.isPasscodeOK(passcode || '')) {\n this.hide();\n } else {\n this.clear();\n }\n }\n\n private isPasscodeOK(passcode: string) {\n this.lastPasscode.set(passcode.toString());\n return this.passcode.toString() === passcode;\n }\n\n ngAfterViewInit(): void {}\n\n public focus(): void {\n this.element.nativeElement.querySelector('input')?.focus();\n }\n\n hide() {\n this.display = 'none';\n }\n\n show() {\n this.display = 'block';\n }\n\n clear() {\n this.form.controls.passcode.setValue('');\n }\n\n onKeyup(event: KeyboardEvent & { target: { value: string } }) {\n if (this.isPasscodeOK(event.target.value || '')) {\n this.hide();\n return;\n }\n const key = event.keyCode || event.charCode;\n if (key === 8 || key === 46 || this.lastPasscode()?.length > 5) {\n this.clear();\n }\n }\n}\n","<form\n [formGroup]=\"form\"\n content=\"notranslate\"\n autocomplete=\"off\"\n (click)=\"focus()\"\n (ngSubmit)=\"submit(form.value)\"\n class=\"flex flex-col items-center w-full h-full\">\n <div class=\"flex content-center w-full justify-center mt-8\">\n <p\n class=\"p-3 max-w-[400px] min-h-[100px]\"\n [innerHtml]=\"safeMessage\"></p>\n </div>\n\n <input\n type=\"password\"\n class=\"text-5xl md:text-8xl pointer-events-none\"\n #taonpasscode\n (keyup)=\"onKeyup($event)\"\n formControlName=\"passcode\" />\n</form>\n","import { isPlatformBrowser } from '@angular/common';\nimport { Injectable, signal, effect, inject, PLATFORM_ID } from '@angular/core';\n\nexport enum TaonThemeMode {\n AUTO = 'auto',\n LIGHT = 'light',\n DARK = 'dark',\n}\n\n@Injectable({ providedIn: 'root' })\nexport class TaonThemeService {\n private readonly TAON_THEME_KEY = 'taon-theme-mode';\n\n private platformId = inject(PLATFORM_ID);\n\n private isBrowser = isPlatformBrowser(this.platformId);\n\n private mediaQuery: MediaQueryList | null = null;\n\n public pernamentMode = false;\n\n mode = signal<TaonThemeMode>(TaonThemeMode.AUTO);\n\n isDark = signal<boolean>(false);\n\n constructor() {\n if (!this.isBrowser) return;\n\n this.mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');\n\n // Load saved mode\n const saved = localStorage.getItem(\n this.TAON_THEME_KEY,\n ) as TaonThemeMode | null;\n if (saved) {\n this.mode.set(saved);\n }\n\n // React to system changes\n this.mediaQuery.addEventListener('change', e => {\n if (this.pernamentMode) {\n return;\n }\n if (this.mode() === TaonThemeMode.AUTO) {\n this.apply(e.matches);\n }\n });\n\n // React to mode changes\n effect(() => {\n const currentMode = this.mode();\n localStorage.setItem(this.TAON_THEME_KEY, currentMode);\n\n const dark =\n currentMode === TaonThemeMode.AUTO\n ? (this.mediaQuery?.matches ?? false)\n : currentMode === TaonThemeMode.DARK;\n\n this.apply(dark);\n });\n }\n\n private apply(dark: boolean): void {\n this.isDark.set(dark);\n\n const root = document.documentElement;\n root.classList.toggle('dark-taon-theme', dark);\n root.classList.toggle('light-taon-theme', !dark);\n }\n\n setMode(mode: TaonThemeMode, options?: { pernamentMode?: boolean }): void {\n options = options || {};\n this.pernamentMode = options.pernamentMode ?? false;\n this.mode.set(mode);\n }\n\n toogleAuto(auto: boolean): void {\n if (auto) {\n this.mode.set(TaonThemeMode.AUTO);\n } else {\n this.mode.set(TaonThemeMode.LIGHT);\n }\n }\n\n setDark(yes: boolean): void {\n if (yes) {\n this.mode.set(TaonThemeMode.DARK);\n } else {\n this.mode.set(TaonThemeMode.LIGHT);\n }\n }\n\n toggle(): void {\n this.setMode(this.isDark() ? TaonThemeMode.LIGHT : TaonThemeMode.DARK);\n }\n\n isAuto(): boolean {\n return this.mode() === TaonThemeMode.AUTO;\n }\n}\n","//#region imports\nimport { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { RouterOutlet } from '@angular/router';\nimport {\n Translatable,\n TranslateDirective,\n TranslateService,\n Translation,\n} from '@taon-dev/i18n/browser';\nimport { Taon } from 'taon/browser';\n\nimport { TaonLangSelectorComponent } from '../taon-lang-selector/taon-lang-selector.component';\nimport {\n TaonThemeMode,\n TaonThemeService,\n} from '../taon-theme/taon-theme.service';\n\n//#endregion\n\nconst t = Translation.for('src/lib/ui/taon-settings/taon-settings.component.ts', {\"src/lib/ui/taon-settings/taon-settings.component.html\":{\"en-US\":async () => (await import('./i18n/taon-settings.component.html.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-settings.component.html.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-settings.component.html.de-DE.i18n.data')).default}} as any);\n\n@Component({\n selector: 'taon-settings',\n templateUrl: './taon-settings.component.html',\n styleUrls: ['./taon-settings.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n AsyncPipe,\n RouterOutlet,\n TaonLangSelectorComponent,\n MatSlideToggleModule,\n MatIconModule,\n MatButtonModule,\n MatDialogModule,\n TranslateDirective,\n ],\n})\nexport class TaonSettingsComponent implements Translatable {\n t = t.for(this);\n\n TaonThemeMode = TaonThemeMode;\n\n private readonly dialogRef = inject(MatDialogRef<TaonSettingsComponent>);\n\n close(): void {\n this.dialogRef.close();\n }\n\n taonTheme = inject(TaonThemeService);\n}\n","<div class=\"absolute top-2 right-2\">\n <button\n mat-icon-button\n aria-label=\"Close dialog\"\n (click)=\"close()\">\n <mat-icon>close</mat-icon>\n </button>\n</div>\n<div class=\"p-4\">\n <h3 class=\"bold\" translate [translate-t]=\"t\">Language Settings</h3>\n <taon-lang-selector />\n\n <br />\n <hr />\n <br />\n <h3 class=\"bold\">\n {{ t.gettext('Theme settings') }}\n {{ taonTheme.pernamentMode ? t.gettext(\"Settings can't ba changed\") : '' }}\n </h3>\n\n <mat-slide-toggle\n class=\"p-2\"\n [checked]=\"taonTheme.isAuto()\"\n [disabled]=\"taonTheme.pernamentMode\"\n (change)=\"taonTheme.toogleAuto($event.checked)\">\n {{ t.gettext('Sync colors with system') }}\n </mat-slide-toggle>\n\n <mat-slide-toggle\n class=\"p-2\"\n [checked]=\"taonTheme.isDark()\"\n [disabled]=\"taonTheme.isAuto() || taonTheme.pernamentMode\"\n (change)=\"taonTheme.setDark($event.checked)\">\n {{ t.gettext('Dark mode') }}\n </mat-slide-toggle>\n</div>\n","//#region imports\nimport { AsyncPipe, JsonPipe } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n inject,\n Input,\n input,\n signal,\n} from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatDialog, MatDialogModule } from '@angular/material/dialog';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatListModule } from '@angular/material/list';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { Router, RouterModule, RouterOutlet } from '@angular/router';\n\nimport { TaonSettingsComponent } from '../taon-settings/taon-settings.component';\nimport { TaonThemeService } from '../taon-theme/taon-theme.service';\n\nimport { TaonSimpleLayoutNavItem } from './taon-simple-layout.model';\n//#endregion\n\n@Component({\n selector: 'taon-simple-layout',\n templateUrl: './taon-simple-layout.component.html',\n styleUrls: ['./taon-simple-layout.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n RouterOutlet,\n AsyncPipe,\n MatCardModule,\n MatIconModule,\n MatDividerModule,\n MatButtonModule,\n MatListModule,\n MatTabsModule,\n RouterModule,\n MatDialogModule,\n JsonPipe,\n TaonSettingsComponent,\n ],\n})\nexport class TaonSimpleLayoutComponent {\n protected router = inject(Router);\n\n protected dialog = inject(MatDialog);\n\n protected theme = inject(TaonThemeService);\n\n @Input() hideThemeSettings: boolean;\n\n @Input() hideHeader: boolean;\n\n navItems = input<TaonSimpleLayoutNavItem[]>();\n\n protected readonly mobileMenuOpen = signal(false);\n\n navigateToMobile(item: TaonSimpleLayoutNavItem): void {\n this.mobileMenuOpen.set(false);\n this.navigateTo(item);\n }\n\n protected openSettingsFromMobileMenu(): void {\n this.mobileMenuOpen.set(false);\n this.openDialog(200, 200);\n }\n\n navigateTo(item: TaonSimpleLayoutNavItem): void {\n const primarySegments = item.path.split('/').filter(Boolean);\n\n this.router.navigate([\n {\n outlets: {\n primary: primarySegments,\n },\n },\n ]);\n }\n\n openDialog(\n enterAnimationDuration: string | number,\n exitAnimationDuration: string | number,\n ): void {\n this.dialog.open(TaonSettingsComponent, {\n width: '400px',\n enterAnimationDuration,\n exitAnimationDuration,\n });\n }\n}\n","@if (!hideHeader) {\n <header class=\"relative z-10 flex w-full flex-row items-center shadow-md\">\n <!-- LEFT: projected header/logo -->\n <div class=\"flex shrink-0 items-center\">\n <ng-content select=\"[header]\"></ng-content>\n </div>\n\n <!-- DESKTOP NAVIGATION -->\n @if (navItems()?.length > 0) {\n <nav\n class=\"desktop-navigation shrink-0\"\n mat-tab-nav-bar\n [tabPanel]=\"tabPanel\">\n @for (item of navItems(); track item.path) {\n <a\n mat-tab-link\n href=\"javascript:void(0)\"\n [style.text-decoration]=\"\n (activePath === item.path && !forceShowBaseRootApp) ||\n ('/' === item.path && forceShowBaseRootApp)\n ? 'underline'\n : 'none'\n \"\n (click)=\"navigateTo(item)\">\n @if (item.path === '/') {\n <mat-icon fontIcon=\"home\"></mat-icon>\n } @else {\n {{ item.label }}\n }\n </a>\n }\n </nav>\n }\n\n <!-- spacer -->\n <div class=\"flex-1\"></div>\n\n <!-- DESKTOP BUTTONS -->\n <div class=\"flex shrink-0 flex-row items-center\">\n <ng-content select=\"[buttons]\"></ng-content>\n\n @if (!hideThemeSettings) {\n <button\n class=\"mr-2\"\n (click)=\"openDialog(200, 200)\"\n mat-icon-button>\n <mat-icon>settings</mat-icon>\n </button>\n }\n </div>\n\n <!-- MOBILE MENU BUTTON -->\n <div class=\"mobile-menu relative\">\n <button\n mat-icon-button\n type=\"button\"\n (click)=\"mobileMenuOpen.set(!mobileMenuOpen())\">\n <mat-icon>\n {{ mobileMenuOpen() ? 'close' : 'menu' }}\n </mat-icon>\n </button>\n\n @if (mobileMenuOpen()) {\n <div\n class=\"absolute right-2 top-full z-[1000] mt-1 min-w-52 overflow-hidden rounded-md border border-gray-200 bg-white shadow-lg\">\n @for (item of navItems() ?? []; track item.path) {\n <button\n mat-button\n class=\"!flex !w-full !justify-start !rounded-none\"\n (click)=\"navigateToMobile(item)\">\n @if (item.path === '/') {\n <mat-icon class=\"mr-2\">home</mat-icon>\n }\n\n {{ item.label }}\n </button>\n }\n\n @if (!hideThemeSettings) {\n <div class=\"border-t border-gray-200\">\n <button\n mat-button\n class=\"!flex !w-full !justify-start !rounded-none\"\n (click)=\"openSettingsFromMobileMenu()\">\n <mat-icon class=\"mr-2\">settings</mat-icon>\n Settings\n </button>\n </div>\n }\n </div>\n }\n </div>\n </header>\n}\n\n<mat-tab-nav-panel\n #tabPanel\n class=\"pt-2\">\n <div class=\"projected-wrapper\">\n <ng-content></ng-content>\n </div>\n\n <div class=\"fallback-message\">\n Please add your component inside\n <br />\n\n <pre>\n <code class=\"block bg-gray-100\">\n <taon-simple-layout class="p-4">\n <header\n header\n class="flex">\n\n <img\n class="rounded"\n src="assets/assets-for/taon-ui/assets/images/pluszka-logo.png"\n height="50px" />\n\n </header>\n\n <br />\n\n <h3 class="text-blue-200">\n Welcome to hamster store.\n </h3>\n\n <h3 class="text-blue-300">\n Buy cheap hamster videos for free!\n </h3>\n\n <h3 class="text-blue-300">\n Subscribe more hamsters video daily!\n </h3>\n\n <ng-container buttons>\n <button\n mat-button\n class="flex items-center">\n Hello friend!\n </button>\n </ng-container>\n\n </taon-simple-layout>\n </code>\n </pre>\n </div>\n</mat-tab-nav-panel>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n selector: 'taon-slide-content-child',\n standalone: true,\n template: ` <ng-content></ng-content> `,\n styles: `\n :host {\n display: block;\n flex: 0 0 100%;\n width: 100%;\n min-width: 0;\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TaonSlideContentContentChildComponent {\n @Input({ required: true })\n assignToState!: unknown;\n}\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n Input,\n QueryList,\n signal,\n} from '@angular/core';\n\nimport { TaonSlideContentContentChildComponent } from './taon-slide-content-child.component';\n\n@Component({\n selector: 'taon-slide-content',\n standalone: true,\n imports: [],\n templateUrl: './taon-slide-content.component.html',\n styleUrl: './taon-slide-content.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TaonSlideContentComponent implements AfterContentInit {\n @ContentChildren(TaonSlideContentContentChildComponent)\n private slides!: QueryList<TaonSlideContentContentChildComponent>;\n\n /**\n * Defines which state transitions should be animated.\n *\n * Example:\n * LOGIN -> ENTER_PASSWORD = animated\n * ENTER_PASSWORD -> LOGIN = instant\n */\n @Input()\n whenAllowedAnimationMap?: Map<unknown, unknown[]>;\n\n private readonly activeIndex = signal(0);\n\n private readonly currentState = signal<unknown>(undefined);\n\n readonly shouldAnimate = signal(false);\n\n readonly transform = () => `translateX(-${this.activeIndex() * 100}%)`;\n\n ngAfterContentInit(): void {\n const firstSlide = this.slides.first;\n\n if (firstSlide) {\n this.currentState.set(firstSlide.assignToState);\n }\n }\n\n public goTo(state: unknown): void {\n const slides = this.slides.toArray();\n\n const index = slides.findIndex(slide => slide.assignToState === state);\n\n if (index === -1) {\n console.warn(\n '[TaonSlideContentSlideComponent] Unknown slide state:',\n state,\n );\n return;\n }\n\n const previousState = this.currentState();\n\n this.shouldAnimate.set(this.isAnimationAllowed(previousState, state));\n\n this.currentState.set(state);\n this.activeIndex.set(index);\n }\n\n private isAnimationAllowed(fromState: unknown, toState: unknown): boolean {\n if (!this.whenAllowedAnimationMap) {\n return true;\n }\n\n return (\n this.whenAllowedAnimationMap.get(fromState)?.includes(toState) ?? false\n );\n }\n}\n","<div\n class=\"slide-track\"\n [class.animate]=\"shouldAnimate()\"\n [style.transform]=\"transform()\">\n <ng-content></ng-content>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { TaonStripeCloudflareWorker } from '@taon-dev/api-workers/browser';\nimport {\n Translation,\n Translatable,\n TranslateDirective,\n TranslatePipe,\n} from '@taon-dev/i18n/browser';\nimport { Taon } from 'taon/browser';\nimport { TaonLangSelectorComponent } from '../../index';\nimport { _ } from 'tnp-core/browser';\n\nconst t = Translation.for('src/lib/ui/taon-stripe-buy-button/taon-stripe-buy-button.component.ts', {\"src/lib/ui/taon-stripe-buy-button/taon-stripe-buy-button.component.ts\":{\"en-US\":async () => (await import('./i18n/taon-stripe-buy-button.component.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-stripe-buy-button.component.ts.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-stripe-buy-button.component.ts.de-DE.i18n.data')).default}} as any,{\n // debug: true\n});\n\n@Component({\n selector: 'taon-stripe-buy-button',\n imports: [CommonModule, MatButtonModule],\n templateUrl: './taon-stripe-buy-button.component.html',\n})\nexport class TaonStripeBuyButtonComponent implements OnInit, Translatable {\n t = t.for(this);\n /**\n * Stripe price id (NOT product id)\n * example: price_1Qabc123456\n */\n @Input({ required: true }) priceId!: string;\n\n @Input({ required: true }) productId!: string;\n\n @Input() promotionPreviousPrice!: string;\n\n /**\n * Cloudflare worker url that creates checkout session\n * example: https://super-73d1b.darekf77.workers.dev\n */\n @Input({ required: true }) workerUrl!: string;\n\n /**\n * email of logged user\n * (used later for KV authorization)\n */\n @Input({ required: true }) email!: string;\n\n @Input() successUrl: string;\n\n @Input() cancelUrl: string;\n\n /**\n * optional label for buy button\n */\n label = this.t.signal.gettext('Buy now');\n\n loading = false;\n\n ngOnInit(): void {\n //Called after the constructor, initializing input properties, and the first call to ngOnChanges.\n //Add 'implements OnInit' to the class.\n this.successUrl = _.isString(this.successUrl)\n ? this.successUrl\n : `${location.href.split('?')[0]}?success=true&productId=${this.productId}`;\n this.cancelUrl = _.isString(this.cancelUrl)\n ? this.cancelUrl\n : `${location.href.split('?')[0]}?cancel=true`;\n // console.log({successUrl:this.successUrl})\n // console.log({cancelUrl:this.cancelUrl})\n }\n\n async buy(): Promise<void> {\n if (!this.priceId || !this.workerUrl || !this.email) {\n console.error('Missing stripe parameters');\n return;\n }\n\n this.loading = true;\n\n try {\n const resp = await fetch(\n `${this.workerUrl}${TaonStripeCloudflareWorker.HOOK_CREATE_STRIPE_SESSION}`,\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n priceId: this.priceId,\n email: this.email,\n success_url: this.successUrl,\n cancel_url: this.cancelUrl,\n }),\n },\n );\n\n const data = await resp.json();\n\n if (data?.url) {\n window.location.href = data.url;\n } else {\n console.error('Stripe checkout url missing', data);\n }\n } catch (err) {\n console.error('Stripe checkout error', err);\n } finally {\n this.loading = false;\n }\n }\n}\n","<button\n type=\"button\"\n matButton=\"filled\"\n (click)=\"buy()\"\n [disabled]=\"loading\">\n <span *ngIf=\"!loading\">\n {{ label() }}\n </span>\n <span\n class=\"line-through absolute bg-red-500 p-1 rounded-xl whitespace-nowrap ml-2\"\n *ngIf=\"promotionPreviousPrice\">\n {{ promotionPreviousPrice }}\n </span>\n\n <span *ngIf=\"loading\"> Redirecting to Stripe... </span>\n</button>\n","//#region imports\nimport { Component, inject } from '@angular/core';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\n\nimport { TaonThemeMode, TaonThemeService } from './taon-theme.service';\nimport { MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\n\nimport {\n Translatable,\n TranslateDirective,\n TranslateService,\n Translation,\n} from '@taon-dev/i18n/browser';\nimport { Taon } from 'taon/browser';\n//#endregion\n\nconst t = Translation.for('src/lib/ui/taon-theme/taon-theme.component.ts', {\"src/lib/ui/taon-theme/taon-theme.component.html\":{\"en-US\":async () => (await import('./i18n/taon-theme.component.html.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-theme.component.html.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-theme.component.html.de-DE.i18n.data')).default}} as any);\n\n/**\n * @deprecated use TaonSettings\n */\n@Component({\n selector: 'taon-theme',\n imports: [\n MatSlideToggleModule,\n MatIconModule,\n MatButtonModule,\n MatDialogModule,\n TranslateDirective,\n ],\n templateUrl: './taon-theme.component.html',\n})\nexport class TaonThemeComponent implements Translatable {\n t = t.for(this);\n\n TaonThemeMode = TaonThemeMode;\n\n private readonly dialogRef = inject(MatDialogRef<TaonThemeComponent>);\n\n close(): void {\n this.dialogRef.close();\n }\n\n taonTheme = inject(TaonThemeService);\n}\n","<div class=\"absolute top-2 right-2\">\n <button\n mat-icon-button\n aria-label=\"Close dialog\"\n (click)=\"close()\">\n <mat-icon>close</mat-icon>\n </button>\n</div>\n<div class=\"p-4\">\n <h3 class=\"bold\">\n {{ t.gettext('Theme settings') }}\n {{ taonTheme.pernamentMode ? t.gettext(\"Settings can't ba changed\") : '' }}\n </h3>\n\n <mat-slide-toggle\n class=\"p-2\"\n [checked]=\"taonTheme.isAuto()\"\n [disabled]=\"taonTheme.pernamentMode\"\n (change)=\"taonTheme.toogleAuto($event.checked)\">\n {{ t.gettext('Sync colors with system') }}\n </mat-slide-toggle>\n\n <mat-slide-toggle\n class=\"p-2\"\n [checked]=\"taonTheme.isDark()\"\n [disabled]=\"taonTheme.isAuto() || taonTheme.pernamentMode\"\n (change)=\"taonTheme.setDark($event.checked)\">\n {{ t.gettext('Dark mode') }}\n </mat-slide-toggle>\n</div>\n","export namespace TaonYouTubeUtils {\n // declare global {\n // interface Window {\n // YT: any;\n // onYouTubeIframeAPIReady: () => void;\n // }\n // }\n\n export function loadYoutubeApi(): Promise<void> {\n return new Promise(resolve => {\n // @ts-ignore\n if (window.YT && window.YT.Player) {\n resolve();\n return;\n }\n\n const tag = document.createElement('script');\n tag.src = 'https://www.youtube.com/iframe_api';\n document.body.appendChild(tag);\n\n // @ts-ignore\n window.onYouTubeIframeAPIReady = () => {\n resolve();\n };\n });\n }\n\n export async function getVidesIdsOfPlaylist(\n ytplaylistId: string,\n ): Promise<string[]> {\n const url = `https://www.youtube.com/playlist?list=${encodeURIComponent(ytplaylistId)}`;\n\n const response = await fetch(url, {\n headers: {\n 'accept-language': 'en-US,en;q=0.9',\n },\n });\n\n if (!response.ok) {\n throw new Error(\n `Failed to fetch playlist page: ${response.status} ${response.statusText}`,\n );\n }\n\n const html = await response.text();\n\n const matches = [...html.matchAll(/\"videoId\":\"([a-zA-Z0-9_-]{11})\"/g)];\n const ids = matches.map(match => match[1]);\n\n return [...new Set(ids)];\n }\n\n export function extractPlaylistId(input: string): string {\n if (!input.includes('http')) {\n return input.split('&')[0].trim();\n }\n\n const url = new URL(input);\n return (url.searchParams.get('list') || '').trim();\n }\n}\n","//#region imports\n\nimport { NgIf, NgStyle, CommonModule } from '@angular/common';\nimport {\n Component,\n Input,\n Output,\n EventEmitter,\n ChangeDetectionStrategy,\n computed,\n signal,\n OnChanges,\n AfterViewInit,\n ViewChild,\n ElementRef,\n effect,\n ChangeDetectorRef,\n inject,\n OnInit,\n OnDestroy,\n} from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\n\nimport { TaonYoutubeState } from './taon-youtube.models';\nimport { TaonYouTubeUtils } from './taon-youtube.utils';\n//#endregion\n\n@Component({\n selector: 'taon-youtube-video',\n standalone: true,\n imports: [NgIf, NgStyle, MatIconModule, CommonModule],\n templateUrl: './taon-youtube-video.component.html',\n styleUrls: ['./taon-youtube-video.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TaonYoutubeVideoComponent\n implements OnChanges, AfterViewInit, OnInit, OnDestroy\n{\n //#region fields & getters\n @Input({ required: true }) videoId!: string;\n\n @Input() title?: string;\n\n @Input() height?: string;\n\n @Input() state: TaonYoutubeState = 'preview-picture';\n\n @Output() paddlockClicked = new EventEmitter<void>();\n\n @Output() previewClicked = new EventEmitter<void>();\n\n @ViewChild('ytFrame') iframeRef?: ElementRef<HTMLIFrameElement>;\n\n /**\n * > controls=0\tHides bottom control bar\n * > modestbranding=1\tReduces YouTube logo\n * > rel=0\tDisables related videos from other channels\n * > disablekb=1\tDisables keyboard controls\n * > fs=0\tDisables fullscreen button\n * > playsinline=1\tPrevents fullscreen auto behavior on iOS\n */\n embedUrl = computed<SafeResourceUrl>(() =>\n this.sanitizer.bypassSecurityTrustResourceUrl(\n `https://www.youtube.com/embed/${this.videoIdSignal()}` +\n `?enablejsapi=1` +\n `&autoplay=1` +\n `&playsinline=1` +\n `&rel=0` +\n `&origin=${encodeURIComponent(window.location.origin)}`,\n ),\n );\n\n private readonly PS = {\n UNSTARTED: -1,\n ENDED: 0,\n PLAYING: 1,\n PAUSED: 2,\n BUFFERING: 3,\n CUED: 5,\n };\n\n currentVideoState: keyof typeof this.PS;\n\n videoActivated = signal(false);\n\n isInViewport = signal(false);\n\n // previewImage = computed(\n // () =>\n // `https://img.youtube.com/vi/${this.videoIdSignal()}/maxresdefault.jpg`,\n // );\n\n previewImage = computed(\n () => `https://img.youtube.com/vi/${this.videoIdSignal()}/0.jpg`,\n );\n\n cdr = inject(ChangeDetectorRef);\n\n allowedToBeDisplayedVideoOveraly = signal(true);\n\n // @ViewChild('playerContainer') playerContainer!: ElementRef;\n\n private player!: any;\n\n private readonly el = inject(ElementRef<HTMLElement>);\n\n private observer?: IntersectionObserver;\n\n private videoIdSignal = signal<string>('');\n\n get containerStyle() {\n return this.height ? { height: this.height } : null;\n }\n\n get displayTitle() {\n return this.title;\n }\n //#endregion\n\n constructor(private sanitizer: DomSanitizer) {\n effect(() => {});\n }\n\n //#region methods / right click\n onRightClick(event) {\n // console.log(event);\n event.preventDefault();\n event.stopPropagation();\n }\n //#endregion\n\n //#region methods / on thumbnail error\n onThumbnailError(event: Event): void {\n const img = event.target as HTMLImageElement;\n\n const fallback = `https://img.youtube.com/vi/${this.videoIdSignal()}/hqdefault.jpg`;\n\n if (img.src !== fallback) {\n img.src = fallback;\n }\n }\n //#endregion\n\n //#region methods / clicked\n clicked(event) {\n event.stopPropagation();\n this.allowedToBeDisplayedVideoOveraly.set(false);\n this.cdr.detectChanges();\n // setTimeout(() => {\n // this.allowedToBeDisplayedVideoOveraly.set(true);\n // this.cdr.detectChanges();\n // }, 200);\n }\n //#endregion\n\n //#region methods / restart\n restart() {\n this.postCommand('seekTo', [0, true]); // go to 0 seconds\n this.postCommand('playVideo');\n }\n //#endregion\n\n //#region on init\n ngOnInit(): void {\n //Called after the constructor, initializing input properties, and the first call to ngOnChanges.\n //Add 'implements OnInit' to the class.\n }\n //#endregion\n\n //#region on destroy\n ngOnDestroy(): void {\n this.observer?.disconnect();\n }\n //#endregion\n\n //#region after view init\n async ngAfterViewInit() {\n // this.observer = new IntersectionObserver(\n // entries => {\n // // console.log({ entries });\n // const entry = entries[0];\n\n // if (entry.isIntersecting) {\n // this.isInViewport.set(true);\n\n // // We don't need to watch this component anymore.\n // this.observer?.disconnect();\n // }\n // },\n // {\n // root: null,\n // rootMargin: '150px',\n // threshold: 0.01,\n // },\n // );\n // this.observer.observe(this.el.nativeElement);\n\n if (this.state !== 'video-preview-private') {\n return;\n }\n await TaonYouTubeUtils.loadYoutubeApi();\n\n // @ts-ignore\n this.player = new window.YT.Player(this.iframeRef.nativeElement, {\n videoId: this.videoId,\n playerVars: {\n origin: window.location.origin,\n },\n events: {\n onStateChange: (event: any) => {\n this.handleStateChange(event.data);\n },\n },\n });\n }\n //#endregion\n\n //#region handle state change\n private handleStateChange(state: number) {\n // @ts-ignore\n // const YT = window.YT;\n // // @ts-ignore\n // console.log({ state, plauerstate: YT.PlayerState });\n // this.currentVideoState = Object.keys(this.PS).find(\n // c => this.PS[c] === state,\n // ) as any;\n // console.log('currentVideoState', this.currentVideoState);\n }\n //#endregion\n\n //#region on ng changes\n ngOnChanges() {\n this.videoIdSignal.set(this.videoId);\n }\n //#endregion\n\n //#region on lock click\n onLockClick(event: MouseEvent) {\n event.stopPropagation();\n this.paddlockClicked.emit();\n }\n //#endregion\n\n //#region on preview click\n onPreviewClick(): void {\n if (this.state === 'preview-picture-locked') {\n return;\n }\n\n this.videoActivated.set(true);\n this.previewClicked.emit();\n }\n //#endregion\n\n //#region play\n play() {\n this.postCommand('playVideo');\n }\n //#endregion\n\n //#region pause\n pause() {\n this.postCommand('pauseVideo');\n }\n //#endregion\n\n //#region private methods\n private postCommand(command: string, args: any[] = []) {\n const iframe = this.iframeRef?.nativeElement;\n if (!iframe) return;\n\n iframe.contentWindow?.postMessage(\n JSON.stringify({\n event: 'command',\n func: command,\n args: args,\n }),\n 'https://www.youtube.com',\n );\n }\n //#endregion\n}\n","<div\n class=\"yt-container\"\n [ngClass]=\"state\"\n [ngStyle]=\"containerStyle\">\n <!-- THUMBNAIL -->\n <div\n *ngIf=\"!videoActivated()\"\n class=\"yt-preview\"\n (click)=\"onPreviewClick()\">\n <!-- @if (isInViewport()) { -->\n <img\n class=\"yt-media\"\n [src]=\"previewImage()\"\n [alt]=\"displayTitle || 'YouTube video'\"\n decoding=\"async\"\n draggable=\"false\"\n (error)=\"onThumbnailError($event)\" />\n <!-- } -->\n\n <!-- PLAY -->\n <div\n *ngIf=\"state !== 'preview-picture-locked'\"\n class=\"yt-play-button\">\n <mat-icon>play_arrow</mat-icon>\n </div>\n\n <!-- LOCK -->\n <div\n *ngIf=\"state === 'preview-picture-locked'\"\n class=\"yt-overlay yt-lock\"\n (click)=\"onLockClick($event)\">\n <mat-icon>lock</mat-icon>\n </div>\n </div>\n\n <!-- ACTUAL YOUTUBE PLAYER -->\n <iframe\n #ytFrame\n *ngIf=\"videoActivated()\"\n class=\"yt-media\"\n [src]=\"embedUrl()\"\n frameborder=\"0\"\n allow=\"autoplay; encrypted-media; picture-in-picture; web-share\"\n allowfullscreen>\n </iframe>\n\n <!-- PRIVATE OVERLAY -->\n <div\n *ngIf=\"\n videoActivated() &&\n state === 'video-preview-private' &&\n allowedToBeDisplayedVideoOveraly()\n \"\n class=\"yt-overlay-video\"\n (contextmenu)=\"onRightClick($event)\"\n (dblclick)=\"clicked($event)\"\n (click)=\"clicked($event)\">\n <h1 class=\"text-center\">\n Thanks for buying<br />\n this video\n </h1>\n </div>\n</div>\n\n<div\n class=\"yt-title\"\n *ngIf=\"displayTitle\">\n {{ displayTitle }}\n</div>\n","// THIS FILE IS GENERATED - DO NOT MODIFY\nimport { CoreModels } from 'tnp-core/browser';\n\n// join interface type here\nimport { EnUsTraslationOverrideSrcLibUiTaonAuthAuthDialogComponentHtml } from './auth-dialog.component.html.en-US.i18n.data';\nimport { PlPlTraslationOverrideSrcLibUiTaonAuthAuthDialogComponentHtml } from './auth-dialog.component.html.pl-PL.i18n.data';\nimport { DeDeTraslationOverrideSrcLibUiTaonAuthAuthDialogComponentHtml } from './auth-dialog.component.html.de-DE.i18n.data';;\nexport type TaonAuthOverride = CoreModels.DeepPartial<EnUsTraslationOverrideSrcLibUiTaonAuthAuthDialogComponentHtml \n| PlPlTraslationOverrideSrcLibUiTaonAuthAuthDialogComponentHtml \n| DeDeTraslationOverrideSrcLibUiTaonAuthAuthDialogComponentHtml>;\n\n // THIS FILE IS GENERATED - DO NOT MODIFY\n ","// THIS FILE IS GENERATED - DO NOT MODIFY\nimport { CoreModels } from 'tnp-core/browser';\n\n// join interface type here\nimport { EnUsTraslationOverrideSrcLibUiTaonKvAuthorizationTaonKvAuthorizationComponentHtml } from './taon-kv-authorization.component.html.en-US.i18n.data';\nimport { PlPlTraslationOverrideSrcLibUiTaonKvAuthorizationTaonKvAuthorizationComponentHtml } from './taon-kv-authorization.component.html.pl-PL.i18n.data';\nimport { DeDeTraslationOverrideSrcLibUiTaonKvAuthorizationTaonKvAuthorizationComponentHtml } from './taon-kv-authorization.component.html.de-DE.i18n.data';\nimport { EnUsTraslationOverrideSrcLibUiTaonKvAuthorizationTaonKvAuthorizationComponentTs } from './taon-kv-authorization.component.ts.en-US.i18n.data';\nimport { PlPlTraslationOverrideSrcLibUiTaonKvAuthorizationTaonKvAuthorizationComponentTs } from './taon-kv-authorization.component.ts.pl-PL.i18n.data';\nimport { DeDeTraslationOverrideSrcLibUiTaonKvAuthorizationTaonKvAuthorizationComponentTs } from './taon-kv-authorization.component.ts.de-DE.i18n.data';;\nexport type TaonKvAuthorizationOverride = CoreModels.DeepPartial<EnUsTraslationOverrideSrcLibUiTaonKvAuthorizationTaonKvAuthorizationComponentHtml \n| PlPlTraslationOverrideSrcLibUiTaonKvAuthorizationTaonKvAuthorizationComponentHtml \n| DeDeTraslationOverrideSrcLibUiTaonKvAuthorizationTaonKvAuthorizationComponentHtml \n| EnUsTraslationOverrideSrcLibUiTaonKvAuthorizationTaonKvAuthorizationComponentTs \n| PlPlTraslationOverrideSrcLibUiTaonKvAuthorizationTaonKvAuthorizationComponentTs \n| DeDeTraslationOverrideSrcLibUiTaonKvAuthorizationTaonKvAuthorizationComponentTs>;\n\n // THIS FILE IS GENERATED - DO NOT MODIFY\n ","// THIS FILE IS GENERATED - DO NOT MODIFY\nimport { CoreModels } from 'tnp-core/browser';\n\n// join interface type here\nimport { EnUsTraslationOverrideSrcLibUiTaonLangSelectorTaonLangSelectorComponentHtml } from './taon-lang-selector.component.html.en-US.i18n.data';\nimport { PlPlTraslationOverrideSrcLibUiTaonLangSelectorTaonLangSelectorComponentHtml } from './taon-lang-selector.component.html.pl-PL.i18n.data';\nimport { DeDeTraslationOverrideSrcLibUiTaonLangSelectorTaonLangSelectorComponentHtml } from './taon-lang-selector.component.html.de-DE.i18n.data';;\nexport type TaonLangSelectorOverride = CoreModels.DeepPartial<EnUsTraslationOverrideSrcLibUiTaonLangSelectorTaonLangSelectorComponentHtml \n| PlPlTraslationOverrideSrcLibUiTaonLangSelectorTaonLangSelectorComponentHtml \n| DeDeTraslationOverrideSrcLibUiTaonLangSelectorTaonLangSelectorComponentHtml>;\n\n // THIS FILE IS GENERATED - DO NOT MODIFY\n ","// THIS FILE IS GENERATED - DO NOT MODIFY\nimport { CoreModels } from 'tnp-core/browser';\n\n// join interface type here\nimport { EnUsTraslationOverrideSrcLibUiTaonSettingsTaonSettingsComponentHtml } from './taon-settings.component.html.en-US.i18n.data';\nimport { PlPlTraslationOverrideSrcLibUiTaonSettingsTaonSettingsComponentHtml } from './taon-settings.component.html.pl-PL.i18n.data';\nimport { DeDeTraslationOverrideSrcLibUiTaonSettingsTaonSettingsComponentHtml } from './taon-settings.component.html.de-DE.i18n.data';;\nexport type TaonSettingsOverride = CoreModels.DeepPartial<EnUsTraslationOverrideSrcLibUiTaonSettingsTaonSettingsComponentHtml \n| PlPlTraslationOverrideSrcLibUiTaonSettingsTaonSettingsComponentHtml \n| DeDeTraslationOverrideSrcLibUiTaonSettingsTaonSettingsComponentHtml>;\n\n // THIS FILE IS GENERATED - DO NOT MODIFY\n ","// THIS FILE IS GENERATED - DO NOT MODIFY\nimport { CoreModels } from 'tnp-core/browser';\n\n// join interface type here\nimport { EnUsTraslationOverrideSrcLibUiTaonStripeBuyButtonTaonStripeBuyButtonComponentTs } from './taon-stripe-buy-button.component.ts.en-US.i18n.data';\nimport { PlPlTraslationOverrideSrcLibUiTaonStripeBuyButtonTaonStripeBuyButtonComponentTs } from './taon-stripe-buy-button.component.ts.pl-PL.i18n.data';\nimport { DeDeTraslationOverrideSrcLibUiTaonStripeBuyButtonTaonStripeBuyButtonComponentTs } from './taon-stripe-buy-button.component.ts.de-DE.i18n.data';;\nexport type TaonStripeBuyButtonOverride = CoreModels.DeepPartial<EnUsTraslationOverrideSrcLibUiTaonStripeBuyButtonTaonStripeBuyButtonComponentTs \n| PlPlTraslationOverrideSrcLibUiTaonStripeBuyButtonTaonStripeBuyButtonComponentTs \n| DeDeTraslationOverrideSrcLibUiTaonStripeBuyButtonTaonStripeBuyButtonComponentTs>;\n\n // THIS FILE IS GENERATED - DO NOT MODIFY\n ","// THIS FILE IS GENERATED - DO NOT MODIFY\nimport { CoreModels } from 'tnp-core/browser';\n\n// join interface type here\nimport { EnUsTraslationOverrideSrcLibUiTaonThemeTaonThemeComponentHtml } from './taon-theme.component.html.en-US.i18n.data';\nimport { PlPlTraslationOverrideSrcLibUiTaonThemeTaonThemeComponentHtml } from './taon-theme.component.html.pl-PL.i18n.data';\nimport { DeDeTraslationOverrideSrcLibUiTaonThemeTaonThemeComponentHtml } from './taon-theme.component.html.de-DE.i18n.data';;\nexport type TaonThemeOverride = CoreModels.DeepPartial<EnUsTraslationOverrideSrcLibUiTaonThemeTaonThemeComponentHtml \n| PlPlTraslationOverrideSrcLibUiTaonThemeTaonThemeComponentHtml \n| DeDeTraslationOverrideSrcLibUiTaonThemeTaonThemeComponentHtml>;\n\n // THIS FILE IS GENERATED - DO NOT MODIFY\n ","// @ts-nocheck\n// This file is auto-generated during init process. Do not modify.\n// This disable this auto generate file.\n// set property \"shouldGenerateAutogenIndexFile: false\" \n// in taon.jsonc of your project. \nexport * from './build-info._auto-generated_'; \nexport * from './my-organization-proj'; \nexport * from './start-cli'; \nexport * from './taon.models'; \nexport * from './layouts/taon-bootstrap-navbar/taon-bootstrap-navbar.component'; // @browser\nexport * from './ui/anonymize-text/anonymize-text.directive'; // @browser\nexport * from './ui/anonymize-text/anonymize-text.models'; \nexport * from './ui/directives/safe.pipe'; // @browser\nexport * from './ui/directives/taon-inject-html.directive'; // @browser\nexport * from './ui/directives/taon-long-press.directive'; // @browser\nexport * from './ui/directives/view-mode'; \nexport * from './ui/taon-auth/auth-button.component'; // @browser\nexport * from './ui/taon-auth/auth-dialog.component'; // @browser\nexport * from './ui/taon-auth/auth.guard'; // @browser\nexport * from './ui/taon-auth/google-auth.service'; // @browser\nexport * from './ui/taon-auth/microsoft-auth.service'; // @browser\nexport * from './ui/taon-auth/session.service'; // @browser\nexport * from './ui/taon-github-fork-me-corner/taon-github-fork-me-corner.component'; // @browser\nexport * from './ui/taon-github-fork-me-corner/taon-github-fork-me-corner.module'; // @browser\nexport * from './ui/taon-github-fork-me-ribbon/taon-github-fork-me-ribbon.component'; // @browser\nexport * from './ui/taon-github-fork-me-ribbon/taon-github-fork-me-ribbon.module'; // @browser\nexport * from './ui/taon-iframe-sync/taon-iframe-sync.component'; // @browser\nexport * from './ui/taon-kv-authorization/taon-kv-authorization.component'; // @browser\nexport * from './ui/taon-kv-authorization/taon-kv-authorization.models'; \nexport * from './ui/taon-lang-selector/taon-lang-selector.component'; // @browser\nexport * from './ui/taon-not-found/taon-not-found.component'; // @browser\nexport * from './ui/taon-progress-bar/taon-progress-bar.component'; // @browser\nexport * from './ui/taon-progress-bar/taon-progress-bar.module'; // @browser\nexport * from './ui/taon-rumble/taon-rumble.component'; // @browser\nexport * from './ui/taon-session-passcode/taon-session-passcode.component'; // @browser\nexport * from './ui/taon-settings/taon-settings.component'; // @browser\nexport * from './ui/taon-settings/taon-settings.models'; \nexport * from './ui/taon-simple-layout/taon-simple-layout.component'; // @browser\nexport * from './ui/taon-simple-layout/taon-simple-layout.model'; \nexport * from './ui/taon-slide-content/taon-slide-content-child.component'; // @browser\nexport * from './ui/taon-slide-content/taon-slide-content.component'; // @browser\nexport * from './ui/taon-slide-content/taon-slide-content.models'; \nexport * from './ui/taon-stripe-buy-button/taon-stripe-buy-button.component'; // @browser\nexport * from './ui/taon-theme/taon-theme.component'; // @browser\nexport * from './ui/taon-theme/taon-theme.service'; // @browser\nexport * from './ui/taon-youtube-video/taon-youtube-video.component'; // @browser\nexport * from './ui/taon-youtube-video/taon-youtube.models'; \nexport * from './ui/taon-youtube-video/taon-youtube.utils'; \nexport * from './ui/taon-auth/i18n/taon-auth.translation'; \nexport * from './ui/taon-kv-authorization/i18n/taon-kv-authorization.translation'; \nexport * from './ui/taon-lang-selector/i18n/taon-lang-selector.translation'; \nexport * from './ui/taon-settings/i18n/taon-settings.translation'; \nexport * from './ui/taon-stripe-buy-button/i18n/taon-stripe-buy-button.translation'; \nexport * from './ui/taon-theme/i18n/taon-theme.translation'; ","export * from './index._auto-generated_';\nexport default {};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","t","i2","i3","i4","i1.SessionService","distinctUntilChanged"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"taon-ui-browser.mjs","sources":["../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/build-info._auto-generated_.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/my-organization-proj.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/start-cli.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/layouts/taon-bootstrap-navbar/taon-bootstrap-navbar.component.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/layouts/taon-bootstrap-navbar/taon-bootstrap-navbar.component.html","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/anonymize-text/anonymize-text.directive.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/directives/safe.pipe.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/directives/taon-inject-html.directive.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/directives/taon-long-press.directive.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/directives/view-mode.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-auth/google-auth.service.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-auth/microsoft-auth.service.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-auth/session.service.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-auth/auth-dialog.component.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-auth/auth-dialog.component.html","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-auth/auth-button.component.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-auth/auth-button.component.html","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-auth/auth.guard.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-github-fork-me-corner/taon-github-fork-me-corner.component.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-github-fork-me-corner/taon-github-fork-me-corner.component.html","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-github-fork-me-corner/taon-github-fork-me-corner.module.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-github-fork-me-ribbon/taon-github-fork-me-ribbon.component.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-github-fork-me-ribbon/taon-github-fork-me-ribbon.component.html","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-github-fork-me-ribbon/taon-github-fork-me-ribbon.module.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-iframe-sync/taon-iframe-sync.component.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-kv-authorization/taon-kv-authorization.component.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-kv-authorization/taon-kv-authorization.component.html","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-lang-selector/taon-lang-selector.component.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-lang-selector/taon-lang-selector.component.html","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-not-found/taon-not-found.component.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-not-found/taon-not-found.component.html","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-progress-bar/taon-progress-bar.component.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-progress-bar/taon-progress-bar.component.html","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-progress-bar/taon-progress-bar.module.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-rumble/taon-rumble.component.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-rumble/taon-rumble.component.html","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-session-passcode/taon-session-passcode.component.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-session-passcode/taon-session-passcode.component.html","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-theme/taon-theme.service.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-settings/taon-settings.component.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-settings/taon-settings.component.html","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-simple-layout/taon-simple-layout.component.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-simple-layout/taon-simple-layout.component.html","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-slide-content/taon-slide-content-child.component.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-slide-content/taon-slide-content.component.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-slide-content/taon-slide-content.component.html","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-stripe-buy-button/taon-stripe-buy-button.component.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-stripe-buy-button/taon-stripe-buy-button.component.html","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-theme/taon-theme.component.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-theme/taon-theme.component.html","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-youtube-video/taon-youtube.utils.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-youtube-video/taon-youtube-video.component.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-youtube-video/taon-youtube-video.component.html","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-auth/i18n/taon-auth.translation.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-kv-authorization/i18n/taon-kv-authorization.translation.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-lang-selector/i18n/taon-lang-selector.translation.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-settings/i18n/taon-settings.translation.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-stripe-buy-button/i18n/taon-stripe-buy-button.translation.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-theme/i18n/taon-theme.translation.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/index._auto-generated_.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/index.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/taon-ui-browser.ts"],"sourcesContent":["// THIS FILE IS GENERATED - DO NOT MODIFY\n/**\n * Autogenerated by current cli tool\n */\nexport const BUILD_FRAMEWORK_CLI_NAME = 'tnp';\n/**\n * This value can be change in taon.jsonc (appId)\n */\nexport const APP_ID = 'com.domain.example.taon-ui';\n/**\n * Autogenerated by current cli tool\n */\nexport const BUILD_BASE_HREF = '';\n/**\n * This value can be change in taon.jsonc (overrideNpmName)\n */\nexport const PROJECT_NPM_NAME = 'taon-ui';\n/**\n * Taon version from you project taon.json\n */\nexport const CURRENT_PACKAGE_TAON_VERSION = 'v21';\n/**\n * Autogenerated by current cli tool. Use *tnp release* to bump version.\n */\nexport const CURRENT_PACKAGE_VERSION = '21.0.68';\n\n\n\n\n\n// THIS FILE IS GENERATED - DO NOT MODIFY\n ","export function myOrgProj() {}\n","//#region tnp-helpers cli template\n// import { Helpers, BaseCommandLineFeature } from 'tnp-helpers/src';\n// import { BaseProject, BaseStartConfig } from 'tnp-helpers/src'; // @backend\n\n// class $Version extends BaseCommandLineFeature<{}> {\n// public _() {\n// console.log(`Hello world from cli`);\n// this._exit();\n// }\n// }\n//#endregion\n\n/**\n *\n * @param argsv process.argsv\n * @param filename needed if you want ipc communicaiton\n */\nexport async function startCli(argsv: string[], filename: string): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n}\n\nexport default startCli;\n","//#region imports\nimport { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n HostBinding,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\nimport { NgbCollapseModule } from '@ng-bootstrap/ng-bootstrap';\nimport { BsModalService, BsModalRef, ModalModule } from 'ngx-bootstrap/modal';\nimport { Subscription } from 'rxjs';\n//#endregion\n\n@Component({\n selector: 'taon-bootstrap-navbar',\n templateUrl: './taon-bootstrap-navbar.component.html',\n styleUrls: ['./taon-bootstrap-navbar.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, NgbCollapseModule, ModalModule],\n standalone: true,\n})\nexport class TaonBootstrapNavbarComponent implements OnInit {\n // @HostBinding('style.minHeight.px') @Input() height: number = 100;\n // @Output() taonBootstrapNavbarDataChanged = new EventEmitter();\n @Input() isLoggedIn: boolean = false;\n\n @Input() isCollapsed: boolean = false;\n\n ngOnInit(): void {}\n}\n","<nav class=\"navbar navbar-expand-lg\">\n <div class=\"container-fluid\">\n <a\n class=\"navbar-brand\"\n routerLink=\"/home\"\n routerLinkActive=\"active\">\n Home</a\n >\n <button\n class=\"navbar-toggler\"\n type=\"button\"\n (click)=\"isCollapsed = !isCollapsed\">\n <span class=\"navbar-toggler-icon\"></span>\n </button>\n\n <div\n [ngbCollapse]=\"isCollapsed\"\n class=\"navbar-collapse\">\n <ul class=\"navbar-nav ms-auto\">\n <li class=\"nav-item\">\n <a\n class=\"nav-link\"\n routerLink=\"/about\"\n routerLinkActive=\"active\"\n >O szkole</a\n >\n </li>\n <li class=\"nav-item\">\n <a\n class=\"nav-link\"\n routerLink=\"/courses\"\n routerLinkActive=\"active\"\n >Kursy</a\n >\n </li>\n <li class=\"nav-item\">\n <a\n class=\"nav-link\"\n routerLink=\"/opinions\"\n routerLinkActive=\"active\"\n >Opinie</a\n >\n </li>\n <li class=\"nav-item\">\n <a\n class=\"nav-link\"\n routerLink=\"/instructors\"\n routerLinkActive=\"active\"\n >Lektorzy</a\n >\n </li>\n <li class=\"nav-item\">\n <a\n class=\"nav-link\"\n routerLink=\"/contact\"\n routerLinkActive=\"active\"\n >Kontakt</a\n >\n </li>\n <ng-container *ngIf=\"isLoggedIn\">\n <li class=\"nav-item\">\n <a\n class=\"nav-link\"\n routerLink=\"/test\"\n routerLinkActive=\"active\"\n ><b>Test plasujący</b></a\n >\n </li>\n <li class=\"nav-item\">\n <a\n class=\"nav-link\"\n routerLink=\"/grammar\"\n routerLinkActive=\"active\"\n >Gramatyka</a\n >\n </li>\n <li class=\"nav-item\">\n <a\n class=\"nav-link\"\n routerLink=\"/vocabulary\"\n routerLinkActive=\"active\"\n >Słownictwo</a\n >\n </li>\n <li class=\"nav-item\">\n <a\n class=\"nav-link\"\n routerLink=\"/reading\"\n routerLinkActive=\"active\"\n >Czytanie</a\n >\n </li>\n <li class=\"nav-item\">\n <a\n class=\"nav-link\"\n routerLink=\"/movies\"\n routerLinkActive=\"active\"\n >Wideo</a\n >\n </li>\n <li class=\"nav-item\">\n <a\n class=\"nav-link\"\n routerLink=\"/curiosities\"\n routerLinkActive=\"active\"\n >Ciekawostki</a\n >\n </li>\n <li class=\"nav-item\">\n <a\n class=\"nav-link\"\n routerLink=\"/logout\"\n routerLinkActive=\"active\"\n >Wyloguj</a\n >\n </li>\n <li class=\"nav-item\">\n <a\n class=\"nav-link\"\n routerLink=\"/profile\"\n routerLinkActive=\"active\"\n >Profil</a\n >\n </li>\n <li class=\"nav-item\">\n <a\n class=\"nav-link\"\n routerLink=\"/admin\"\n routerLinkActive=\"active\"\n >Admin</a\n >\n </li>\n </ng-container>\n <ng-container *ngIf=\"!isLoggedIn\">\n <li class=\"nav-item\">\n <a\n class=\"nav-link\"\n href=\"javascript:void(0)\"\n (click)=\"modalLoginRegister()\">\n <span class=\"glyphicon glyphicon-hand-right\"></span> Rejestracja /\n <span class=\"glyphicon glyphicon-user\"></span> Logowanie\n </a>\n </li>\n </ng-container>\n </ul>\n </div>\n </div>\n</nav>\n<ng-content />\n","import { Directive, ElementRef, HostListener, inject, Input, OnInit } from '@angular/core';\n\n@Directive({\n selector: '[anonymizeText]',\n standalone: true,\n})\nexport class AnonymizeTextDirective implements OnInit {\n private el = inject(ElementRef<HTMLElement>);\n\n private encodedValue = '';\n private revealed = false;\n\n @Input() anonymizeText?: string;\n\n ngOnInit(): void {\n const original = this.anonymizeText || this.el.nativeElement.textContent || '';\n\n this.encodedValue = btoa(unescape(encodeURIComponent(original.trim())));\n\n this.el.nativeElement.textContent = this.maskText(original);\n this.el.nativeElement.style.cursor = 'pointer';\n this.el.nativeElement.title = 'Click to reveal';\n }\n\n @HostListener('click')\n toggle(): void {\n this.revealed = !this.revealed;\n\n const decoded = decodeURIComponent(escape(atob(this.encodedValue)));\n\n this.el.nativeElement.textContent = this.revealed\n ? decoded\n : this.maskText(decoded);\n }\n\n private maskText(value: string): string {\n return value.replace(/[a-zA-Z0-9]+/g, part => {\n if (part.length <= 2) return part;\n if (part.length === 3) return `${part[0]}*${part[2]}`;\n\n return `${part.slice(0, 2)}${'*'.repeat(part.length - 3)}${part.at(-1)}`;\n });\n }\n}\n","//#region imports\nimport { Pipe, PipeTransform } from '@angular/core';\nimport {\n DomSanitizer,\n SafeHtml,\n SafeStyle,\n SafeScript,\n SafeUrl,\n SafeResourceUrl,\n} from '@angular/platform-browser';\n//#endregion\n\n@Pipe({\n name: 'safe',\n standalone: true,\n})\nexport class SafePipe implements PipeTransform {\n constructor(protected sanitizer: DomSanitizer) {}\n\n public transform(\n value: any,\n type: string,\n ): SafeHtml | SafeStyle | SafeScript | SafeUrl | SafeResourceUrl {\n switch (type) {\n case 'html':\n return this.sanitizer.bypassSecurityTrustHtml(value);\n case 'style':\n return this.sanitizer.bypassSecurityTrustStyle(value);\n case 'script':\n return this.sanitizer.bypassSecurityTrustScript(value);\n case 'url':\n return this.sanitizer.bypassSecurityTrustUrl(value);\n case 'resourceUrl':\n return this.sanitizer.bypassSecurityTrustResourceUrl(value);\n default:\n throw new Error(`Invalid safe type specified: ${type}`);\n }\n }\n}\n","//#region imports\nimport { Directive, ElementRef, Input } from '@angular/core';\n//#endregion\n\n@Directive({\n selector: '[taonInjectHTML]',\n standalone: true,\n})\nexport class TaonInjectHTMLDirective {\n @Input() set taonInjectHTML(content: string) {\n this.host.nativeElement.innerHTML = content;\n }\n\n constructor(private host: ElementRef) {}\n}\n","//#region imports\nimport {\n Directive,\n Input,\n Output,\n EventEmitter,\n HostBinding,\n HostListener,\n} from '@angular/core';\nimport { Log, Level } from 'ng2-logger/browser';\nimport { _ } from 'tnp-core/browser';\n//#endregion\n\nconst log = Log.create(`[taon-helpers] long-press`, Level.WARN, Level.ERROR);\n\n@Directive({\n selector: '[taonLongPress]',\n standalone: true,\n})\nexport class TaonLongPress {\n @Input() pressDuration: number = 1000;\n\n @Output() onLongPress: EventEmitter<any> = new EventEmitter();\n\n @Output() onLongPressing: EventEmitter<any> = new EventEmitter();\n\n @Output() onLongPressEnd: EventEmitter<any> = new EventEmitter();\n\n private pressing: boolean;\n\n private longPressing: boolean;\n\n private timeout: any;\n\n private mouseX: number = 0;\n\n private mouseY: number = 0;\n\n @HostBinding('class.press')\n get press() {\n return this.pressing;\n }\n\n @HostBinding('class.longpress')\n get longPress() {\n return this.longPressing;\n }\n\n allowTrigger = false;\n\n triggerEnd = _.debounce(() => {\n this.endPress();\n }, 500);\n\n @HostListener('mousedown', ['$event'])\n onMouseDown(event) {\n // don't do right/middle clicks\n log.d(`MOUSE DOWN `);\n\n if (event.which !== 1) return;\n this.allowTrigger = true;\n\n this.mouseX = event.clientX;\n this.mouseY = event.clientY;\n\n this.pressing = true;\n this.longPressing = false;\n\n this.timeout = setTimeout(() => {\n if (this.allowTrigger) {\n this.longPressing = true;\n log.d(`long pressing start pressDuration:${this.pressDuration} `);\n this.onLongPress.emit(event);\n this.loop(event);\n }\n }, this.pressDuration);\n\n this.loop(event);\n }\n\n @HostListener('mousemove', ['$event'])\n onMouseMove(event) {\n if (this.pressing && !this.longPressing) {\n const xThres = event.clientX - this.mouseX > 10;\n const yThres = event.clientY - this.mouseY > 10;\n if (xThres || yThres) {\n this.endPress();\n }\n }\n }\n\n loop(event) {\n if (this.longPressing) {\n this.timeout = setTimeout(() => {\n log.d(`emil longpressing`);\n this.triggerEnd();\n this.onLongPressing.emit(event);\n this.loop(event);\n }, 50);\n }\n }\n\n endPress(emit = true) {\n this.allowTrigger = false;\n clearTimeout(this.timeout);\n this.longPressing = false;\n this.pressing = false;\n if (emit) {\n log.d(`EMIT END`);\n this.onLongPressEnd.emit(true);\n } else {\n log.d(`NOT EMIT END`);\n }\n }\n\n @HostListener('mouseup')\n onMouseUp() {\n this.endPress(false);\n }\n}\n","export enum ViewMode {\n Add = 'Add',\n Edit = 'Edit',\n Preview = 'Preview',\n}\n","import { Injectable, NgZone } from '@angular/core';\nimport { Observable } from 'rxjs';\n\ninterface Window {\n google?: any;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class GoogleAuthService {\n constructor(private zone: NgZone) {}\n\n loadScript(): Promise<void> {\n return new Promise((resolve, reject) => {\n if ((window as Window).google?.accounts?.id) {\n resolve();\n return;\n }\n\n const script = document.createElement('script');\n script.src = 'https://accounts.google.com/gsi/client';\n script.async = true;\n script.defer = true;\n script.onload = () => resolve();\n script.onerror = () => reject();\n document.head.appendChild(script);\n });\n }\n\n renderButton(\n container: HTMLElement,\n clientId: string,\n width: number,\n ): Observable<any> {\n return new Observable(subscriber => {\n this.loadScript().then(() => {\n const google = (window as Window).google;\n\n google.accounts.id.initialize({\n client_id: clientId,\n auto_select: false,\n callback: (response: any) => {\n this.zone.run(() => {\n const payload = this.decodeJwt(response.credential);\n subscriber.next(payload);\n });\n },\n });\n\n google.accounts.id.disableAutoSelect();\n google.accounts.id.renderButton(container, {\n theme: 'outline',\n size: 'large',\n width,\n type: 'standard',\n });\n });\n });\n }\n\n private decodeJwt(token: string): any {\n const base64Url = token.split('.')[1];\n const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');\n const jsonPayload = decodeURIComponent(\n atob(base64)\n .split('')\n .map(c => '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2))\n .join(''),\n );\n return JSON.parse(jsonPayload);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class MicrosoftAuthService {\n login(clientId: string): Observable<any> {\n return new Observable(subscriber => {\n const redirectUri = window.location.origin;\n const nonce = crypto.randomUUID();\n\n const url =\n 'https://login.microsoftonline.com/consumers/oauth2/v2.0/authorize' +\n `?client_id=${clientId}` +\n `&response_type=id_token` +\n `&redirect_uri=${encodeURIComponent(redirectUri)}` +\n `&scope=openid profile email` +\n `&response_mode=fragment` +\n `&prompt=login` +\n `&nonce=${nonce}`;\n\n const popup = window.open(url, 'microsoft-login', 'width=500,height=600');\n\n if (!popup) {\n subscriber.error('Popup blocked');\n return;\n }\n\n const timer = setInterval(() => {\n try {\n if (popup.closed) {\n clearInterval(timer);\n subscriber.complete();\n return;\n }\n\n const popupUrl = popup.location.href;\n\n // Wait until redirect happens back to our domain\n if (!popupUrl.startsWith(redirectUri)) return;\n\n const hash = popup.location.hash;\n if (!hash) return;\n\n const params = new URLSearchParams(hash.substring(1));\n const idToken = params.get('id_token');\n\n if (idToken) {\n clearInterval(timer);\n popup.close();\n\n const payload = this.decodeJwt(idToken);\n\n subscriber.next({\n email: payload.email || payload.preferred_username,\n name: payload.name,\n picture: undefined,\n });\n\n subscriber.complete();\n }\n } catch {\n // Cross-origin access throws until redirect returns to our domain\n }\n }, 300);\n });\n }\n\n private decodeJwt(token: string): any {\n const base64Url = token.split('.')[1];\n const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');\n\n const jsonPayload = decodeURIComponent(\n atob(base64)\n .split('')\n .map(c => '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2))\n .join(''),\n );\n\n return JSON.parse(jsonPayload);\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { BehaviorSubject, distinctUntilChanged, map, shareReplay } from 'rxjs';\n\nimport { MicrosoftAuthService } from './microsoft-auth.service';\n\nexport interface SessionState {\n isLoggedIn: boolean;\n email?: string;\n emailVerified?: boolean;\n displayName?: string;\n pictureUrl?: string;\n}\n\nconst STORAGE_KEY = 'auth_session_v1';\n\n@Injectable({ providedIn: 'root' })\nexport class SessionService {\n microsoftLogin = inject(MicrosoftAuthService);\n\n private readonly state$ = new BehaviorSubject<SessionState>(this.load());\n\n data$ = this.state$.asObservable();\n\n readonly isLoggedIn$ = this.state$.pipe(\n map(s => !!s.isLoggedIn),\n distinctUntilChanged(),\n shareReplay({ bufferSize: 1, refCount: true }),\n );\n\n readonly emailConfirmed$ = this.state$.pipe(\n map(s => !!s.emailVerified),\n distinctUntilChanged(),\n shareReplay({ bufferSize: 1, refCount: true }),\n );\n\n readonly email$ = this.state$.pipe(\n map(s => s.email ?? ''),\n distinctUntilChanged(),\n shareReplay({ bufferSize: 1, refCount: true }),\n );\n\n get snapshot(): SessionState {\n return this.state$.value;\n }\n\n loginWithGoogle(data: {\n email: string;\n emailVerified: boolean;\n displayName?: string;\n pictureUrl?: string;\n }) {\n const next: SessionState = {\n isLoggedIn: true,\n email: data.email,\n emailVerified: data.emailVerified,\n displayName: data.displayName,\n pictureUrl: data.pictureUrl,\n };\n\n this.state$.next(next);\n localStorage.setItem(STORAGE_KEY, JSON.stringify(next));\n }\n\n logout() {\n const next: SessionState = { isLoggedIn: false };\n this.state$.next(next);\n localStorage.setItem(STORAGE_KEY, JSON.stringify(next));\n }\n\n private load(): SessionState {\n try {\n const raw = localStorage.getItem(STORAGE_KEY);\n if (!raw) return { isLoggedIn: false };\n return JSON.parse(raw);\n } catch {\n return { isLoggedIn: false };\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Input,\n ViewChild,\n inject,\n ChangeDetectorRef,\n OnInit,\n} from '@angular/core';\nimport {\n FormControl,\n FormGroup,\n FormsModule,\n ReactiveFormsModule,\n Validators,\n} from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { ThemePalette } from '@angular/material/core';\nimport { MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MtxLoaderModule, MtxLoaderType } from '@ng-matero/extensions/loader';\nimport {\n Translation,\n Translatable,\n TranslateDirective,\n} from '@taon-dev/i18n/browser';\nimport { PrimeIcons } from 'primeng/api';\nimport { ButtonModule } from 'primeng/button';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { Taon } from 'taon/browser';\nimport { _ } from 'tnp-core/browser';\n\nimport { GoogleAuthService } from './google-auth.service';\nimport { MicrosoftAuthService } from './microsoft-auth.service';\nimport { SessionService } from './session.service';\n\n//#endregion\n\nconst t = Translation.for('src/lib/ui/taon-auth/auth-dialog.component.ts', {\"src/lib/ui/taon-auth/auth-dialog.component.html\":{\"en-US\":async () => (await import('./i18n/auth-dialog.component.html.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/auth-dialog.component.html.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/auth-dialog.component.html.de-DE.i18n.data')).default}} as any);\n\n@Component({\n selector: 'app-auth-dialog',\n standalone: true,\n imports: [\n CommonModule,\n MatDialogModule,\n MatButtonModule,\n MatIconModule,\n MatDividerModule,\n MatInputModule,\n MatFormFieldModule,\n MatProgressSpinnerModule,\n MatProgressBarModule,\n MtxLoaderModule,\n ButtonModule,\n InputTextModule,\n ReactiveFormsModule,\n FormsModule,\n TranslateDirective,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './auth-dialog.component.html',\n styleUrl: './auth-dialog.component.scss',\n})\nexport class AuthDialogComponent\n implements AfterViewInit, OnInit, Translatable\n{\n t = t.for(this);\n\n cdr = inject(ChangeDetectorRef);\n\n emailRegex = /^[a-zA-Z0-9._%+-]+@(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,}$/;\n\n form = new FormGroup({\n email: new FormControl('', [\n Validators.required,\n Validators.pattern(this.emailRegex),\n ]),\n });\n\n @Input() googleClientId?: string;\n\n @Input() microsoftClientId?: string;\n\n @ViewChild('emailLoginBtn', { static: true })\n emailLoginBtn!: ElementRef<HTMLDivElement>;\n\n @ViewChild('googleBtn', { static: true })\n googleBtn!: ElementRef<HTMLDivElement>;\n\n diableLoginByEmail = !(window.location.hostname === 'localhost');\n\n private readonly dialogRef = inject(MatDialogRef<AuthDialogComponent>);\n\n private readonly googleAuth = inject(GoogleAuthService);\n\n private readonly microsoftAuth = inject(MicrosoftAuthService);\n\n private readonly session = inject(SessionService);\n\n googleButtonLoaded = false;\n\n close(): void {\n this.dialogRef.close();\n }\n\n loginWithMicrosoft(): void {\n if (!this.microsoftClientId) {\n console.warn('Microsoft client id missing [microsoftClientId]');\n return;\n }\n this.microsoftAuth.login(this.microsoftClientId).subscribe(profile => {\n if (!profile?.email) return;\n\n this.session.loginWithGoogle({\n email: profile.email,\n emailVerified: true,\n displayName: profile.name,\n pictureUrl: profile.picture,\n });\n\n this.dialogRef.close();\n });\n }\n\n loginByEmail(): void {\n this.form.markAllAsTouched();\n this.form.updateValueAndValidity();\n if (this.form.invalid) {\n return;\n }\n\n const displayName = _.startCase(\n (this.form.value.email || '').split('@')[0],\n );\n\n this.session.loginWithGoogle({\n email: this.form.value.email,\n emailVerified: true,\n displayName,\n });\n this.dialogRef.close();\n }\n\n ngOnInit(): void {\n if (this.diableLoginByEmail) {\n this.form.controls.email.disable();\n }\n }\n\n ngAfterViewInit(): void {\n if (!this.googleClientId) {\n console.warn('Google client id missing [googleClientId]');\n return;\n }\n\n this.dialogRef.afterOpened().subscribe(() => {\n setTimeout(() => {\n const el: HTMLElement = this.emailLoginBtn.nativeElement;\n const width = Math.floor(el.getBoundingClientRect().width);\n\n this.googleAuth\n .renderButton(\n this.googleBtn.nativeElement,\n this.googleClientId,\n width,\n )\n .subscribe(payload => {\n const email = payload.email;\n const verified = !!payload.email_verified;\n this.googleButtonLoaded = true;\n this.cdr.markForCheck();\n\n if (email && verified) {\n this.session.loginWithGoogle({\n email,\n emailVerified: verified,\n displayName: payload.name,\n pictureUrl: payload.picture,\n });\n this.dialogRef.close();\n }\n });\n });\n });\n }\n}\n","<div class=\"absolute top-2 right-2\">\n <button\n mat-icon-button\n aria-label=\"Close dialog\"\n (click)=\"close()\">\n <mat-icon>close</mat-icon>\n </button>\n</div>\n<div class=\"auth-dialog p-5\">\n <h4\n class=\"mb-3\"\n translate [translate-t]=\"t\">\n Login or Register\n </h4>\n\n <div\n class=\"w-full pt-3\"\n #emailLoginBtn>\n <form\n [formGroup]=\"form\"\n (ngSubmit)=\"loginByEmail()\"\n class=\"w-full\">\n <mat-form-field\n appearance=\"outline\"\n class=\"w-full email-field\">\n <mat-label *ngIf=\"!diableLoginByEmail\">Email</mat-label>\n\n <input\n matInput\n formControlName=\"email\"\n class=\"pl-1\"\n type=\"email\"\n [placeholder]=\"\n diableLoginByEmail ? t.gettext('Login by email (disabled)') : ''\n \" />\n\n <button\n mat-icon-button\n [disabled]=\"diableLoginByEmail\"\n matSuffix\n color=\"primary\">\n <mat-icon>mail</mat-icon>\n </button>\n <mat-error\n *ngIf=\"\n form.get('email')?.hasError('pattern') && form.get('email')?.touched\n \"\n translate [translate-t]=\"t\" [translate-t]=\"t\">\n Please enter a valid email address\n </mat-error>\n\n <mat-error\n *ngIf=\"\n form.get('email')?.hasError('required') &&\n form.get('email')?.touched\n \">\n {{ t.gettext('Email is') }} <strong translate [translate-t]=\"t\">required</strong>\n </mat-error>\n </mat-form-field>\n </form>\n\n <div class=\"divider\">\n <span translate [translate-t]=\"t\">or</span>\n </div>\n\n <!-- GOOGLE BUTTON -->\n <div\n #googleBtn\n class=\"google-container\">\n <span\n *ngIf=\"!googleButtonLoaded\"\n class=\"text-300 p-2\"\n translate\n [translate-t]=\"t\" [translate-t]=\"t\">loading google button..</span\n >\n <mat-progress-bar\n *ngIf=\"!googleButtonLoaded\"\n mode=\"indeterminate\"\n class=\"auth-progress\" />\n </div>\n\n <!-- MICROSOFT BUTTON -->\n <div\n *ngIf=\"microsoftClientId\"\n #microsoftBtn\n class=\"microsoft-container\">\n <button\n mat-stroked-button\n color=\"primary\"\n class=\"w-full microsoft-btn\"\n (click)=\"loginWithMicrosoft()\">\n <mat-icon class=\"mr-2\">login</mat-icon>\n {{ t.gettext('Continue with Microsoft') }}\n </button>\n </div>\n </div>\n\n <br />\n\n <div class=\"flex justify-content-end\">\n <button\n mat-button\n mat-dialog-close>\n {{ t.gettext('Cancel') }}\n </button>\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, inject, OnInit } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { Router } from '@angular/router';\nimport { ButtonModule } from 'primeng/button';\nimport { _ } from 'tnp-core/browser';\n\nimport { AuthDialogComponent } from './auth-dialog.component';\nimport { SessionService } from './session.service';\n\n@Component({\n selector: 'taon-auth-button',\n standalone: true,\n imports: [CommonModule, MatButtonModule, ButtonModule, MatIconModule],\n templateUrl: './auth-button.component.html',\n styleUrl: './auth-button.component.scss',\n})\nexport class AuthButtonComponent implements OnInit {\n @Input({ required: true }) linkToDashboard!: string;\n\n @Input() googleClientId?: string;\n\n @Input() microsoftClientId?: string;\n\n @Input() displayDashboardButton: boolean;\n\n readonly session = inject(SessionService);\n\n private readonly dialog = inject(MatDialog);\n\n private readonly router = inject(Router);\n\n openLogin() {\n const instance = this.dialog.open(AuthDialogComponent, {\n width: '410px',\n data: null,\n }).componentInstance;\n instance.googleClientId = this.googleClientId;\n instance.microsoftClientId = this.microsoftClientId;\n }\n\n goDashboard() {\n if (this.linkToDashboard) {\n this.router.navigateByUrl(this.linkToDashboard);\n }\n }\n\n logout() {\n this.session.logout();\n }\n\n ngOnInit(): void {\n if (!this.microsoftClientId) {\n console.warn('[taon-auth-button] Microsoft client id missing [microsoftClientId]');\n }\n if (!this.googleClientId) {\n console.warn('[taon-auth-button] Google client id missing [googleClientId]');\n }\n //Called after the constructor, initializing input properties, and the first call to ngOnChanges.\n //Add 'implements OnInit' to the class.\n // console.log('this.displayDashboardButton', this.displayDashboardButton);\n this.displayDashboardButton = _.isBoolean(this.displayDashboardButton)\n ? this.displayDashboardButton\n : true;\n }\n}\n","<div class=\"flex align-items-center gap-2\">\n <ng-container *ngIf=\"(session.isLoggedIn$ | async) === false; else loggedIn\">\n <button\n mat-button\n (click)=\"openLogin()\">\n Login\n </button>\n </ng-container>\n\n <ng-template #loggedIn>\n <button\n *ngIf=\"displayDashboardButton\"\n mat-button\n color=\"primary\"\n class=\"auth-btn\"\n (click)=\"goDashboard()\">\n <mat-icon>dashboard</mat-icon>\n Dashboard\n </button>\n\n <button\n mat-button\n class=\"ml-2\"\n (click)=\"logout()\">\n Logout ({{ (session.data$ | async)?.displayName }})\n </button>\n </ng-template>\n</div>\n","import { Injectable } from '@angular/core';\nimport { CanActivate, Router, UrlTree } from '@angular/router';\nimport { Observable, map, take } from 'rxjs';\n\nimport { SessionService } from './session.service';\n\n@Injectable({ providedIn: 'root' })\nexport class AuthGuard implements CanActivate {\n constructor(\n private readonly session: SessionService,\n private readonly router: Router,\n ) {}\n\n canActivate(): Observable<boolean | UrlTree> {\n return this.session.isLoggedIn$.pipe(\n take(1),\n map(isLoggedIn => {\n if (isLoggedIn) {\n return true;\n }\n\n // redirect to home or login page\n return this.router.parseUrl('/');\n }),\n );\n }\n}\n","//#region imports\nimport {\n Component,\n EventEmitter,\n HostBinding,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n//#endregion\n\n@Component({\n selector: 'taon-github-fork-me-corner',\n templateUrl: './taon-github-fork-me-corner.component.html',\n styleUrls: ['./taon-github-fork-me-corner.component.scss'],\n standalone: false,\n})\nexport class TaonGithubForkMeCornerComponent {\n @Input() url: string = 'https://github.com';\n}\n","<a\n href=\"{{ url }}\"\n class=\"github-corner\"\n aria-label=\"View source on GitHub\"\n ><svg\n width=\"80\"\n height=\"80\"\n viewBox=\"0 0 250 250\"\n style=\"\n fill: #151513;\n color: #fff;\n position: absolute;\n top: 0;\n border: 0;\n right: 0;\n \"\n aria-hidden=\"true\">\n <path d=\"M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z\"></path>\n <path\n d=\"M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2\"\n fill=\"currentColor\"\n style=\"transform-origin: 130px 106px\"\n class=\"octo-arm\"></path>\n <path\n d=\"M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z\"\n fill=\"currentColor\"\n class=\"octo-body\"></path>\n </svg>\n</a>\n","//#region imports\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { TaonGithubForkMeCornerComponent } from './taon-github-fork-me-corner.component';\n//#endregion\n\n@NgModule({\n imports: [CommonModule],\n exports: [TaonGithubForkMeCornerComponent],\n declarations: [TaonGithubForkMeCornerComponent],\n providers: [],\n})\nexport class TaonGithubForkMeCornerModule {}\n","//#region imports\nimport {\n Component,\n EventEmitter,\n HostBinding,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n//#endregion\n\n@Component({\n selector: 'taon-github-fork-me-ribbon',\n templateUrl: './taon-github-fork-me-ribbon.component.html',\n styleUrls: ['./taon-github-fork-me-ribbon.component.scss'],\n standalone: false,\n})\nexport class TaonGithubForkMeRibbonComponent {\n @Input() url: string = 'https://github.com';\n}\n","<a href=\"{{ url }}\"\n ><img\n decoding=\"async\"\n loading=\"lazy\"\n width=\"149\"\n height=\"149\"\n src=\"data:image/webp;base64,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\"\n class=\"attachment-full size-full\"\n alt=\"Fork me on GitHub\"\n data-recalc-dims=\"1\"\n/></a>\n","//#region imports\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { TaonGithubForkMeRibbonComponent } from './taon-github-fork-me-ribbon.component';\n//#endregion\n\n@NgModule({\n imports: [CommonModule],\n declarations: [TaonGithubForkMeRibbonComponent],\n exports: [TaonGithubForkMeRibbonComponent],\n})\nexport class TaonGithubForkMeRibbonModule {}\n","//#region imports\n// iframe-sync.component.ts\nimport { NgIf } from '@angular/common';\nimport {\n Component,\n Input,\n OnInit,\n OnDestroy,\n ViewChild,\n ElementRef,\n AfterViewInit,\n ChangeDetectionStrategy,\n inject,\n} from '@angular/core';\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\nimport { ActivatedRoute, Router, NavigationEnd } from '@angular/router';\nimport { debounce } from 'lodash';\nimport { Level, Log } from 'ng2-logger/browser';\nimport { Subject } from 'rxjs';\nimport { filter, takeUntil, distinctUntilChanged } from 'rxjs/operators';\n//#endregion\n\n// taon-iframe-sync.component.ts\n@Component({\n selector: 'taon-iframe-sync',\n template: `\n <!-- Hidden by default, shown only when ready -->\n <iframe\n #iframe\n [src]=\"safeSrc\"\n [style.display]=\"isReady ? 'block' : 'none'\"\n [style.visibility]=\"isReady ? 'visible' : 'hidden'\"\n [style.opacity]=\"isReady ? '1' : '0'\"\n frameborder=\"0\"\n style=\"width:100%; height:100%; border:none; transition: opacity 0.2s ease;\"\n (load)=\"onIframeLoad()\"\n allow=\"clipboard-write\"></iframe>\n\n <!-- Optional: nice loading placeholder -->\n <div\n *ngIf=\"!isReady\"\n class=\"iframe-loading-placeholder\"\n [style.background]=\"loaderBackgroundColor\">\n <div class=\"spinner\"></div>\n <p>Loading documentation...</p>\n </div>\n `,\n styles: [\n `\n :host {\n display: block;\n width: 100%;\n height: 100%;\n position: relative;\n }\n .iframe-loading-placeholder {\n position: absolute;\n inset: 0;\n background: var(--md-primary-fg-color--light);\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 16px;\n color: var(--text-color, #666);\n font-family: system-ui, sans-serif;\n }\n .spinner {\n width: 40px;\n height: 40px;\n border: 4px solid #f3f3f3;\n border-top: 4px solid #3498db;\n border-radius: 50%;\n animation: spin 1s linear infinite;\n }\n @keyframes spin {\n to {\n transform: rotate(360deg);\n }\n }\n `,\n ],\n standalone: true,\n imports: [NgIf],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TaonIframeSyncComponent implements AfterViewInit, OnDestroy {\n @Input() loaderBackgroundColor = 'white';\n\n private destroy$ = new Subject<void>();\n\n private iframeWin: Window | null = null;\n\n // This is the key: iframe stays hidden until first correct page is confirmed loaded\n isReady = false;\n\n private hasInitialSync = false;\n\n @ViewChild('iframe') iframeRef!: ElementRef<HTMLIFrameElement>;\n\n // ... same inputs as before\n #src!: string;\n\n @Input({ required: true }) set iframeSrc(v: string) {\n this.#src = v.trim();\n this.safeSrc = this.sanitizer.bypassSecurityTrustResourceUrl(this.#src);\n }\n\n get iframeSrc() {\n return this.#src;\n }\n\n @Input() queryParamKey = 'internalIframePath';\n\n @Input() initialPath: string | null = null;\n\n @Input() targetOrigin?: string;\n\n safeSrc!: SafeResourceUrl;\n\n private router = inject(Router);\n\n private route = inject(ActivatedRoute);\n\n private sanitizer = inject(DomSanitizer);\n\n ngAfterViewInit() {\n this.setupSync();\n window.addEventListener('message', this.handleIframeMessage);\n }\n\n private setupSync() {\n this.route.queryParamMap\n .pipe(\n distinctUntilChanged(\n (a, b) => a.get(this.queryParamKey) === b.get(this.queryParamKey),\n ),\n takeUntil(this.destroy$),\n )\n .subscribe(() => this.sendNavigateIfReady());\n\n this.router.events\n .pipe(\n filter((e): e is NavigationEnd => e instanceof NavigationEnd),\n takeUntil(this.destroy$),\n )\n .subscribe(() => this.sendNavigateIfReady());\n }\n\n onIframeLoad() {\n this.iframeWin = this.iframeRef?.nativeElement?.contentWindow;\n\n // Send the correct path — iframe will load it\n this.sendNavigateIfReady();\n\n // The real magic: wait for iframe to confirm it loaded the right page\n // (we'll enhance the iframe script to send a \"READY\" message)\n }\n\n private sendNavigateIfReady() {\n if (\n !this.iframeWin ||\n !this.isValidUrl(this.iframeSrc) ||\n this.hasInitialSync\n )\n return;\n\n const path =\n this.route.snapshot.queryParamMap.get(this.queryParamKey) ??\n this.initialPath ??\n '/';\n\n const origin = this.targetOrigin ?? this.getSafeOrigin(this.iframeSrc);\n\n this.iframeWin.postMessage({ type: 'NAVIGATE', path }, origin);\n this.hasInitialSync = true;\n }\n\n // ────── Safe URL helpers ──────\n private isValidUrl(string: string): boolean {\n if (!string) return false;\n try {\n new URL(string, window.location.origin);\n return true;\n } catch {\n return false;\n }\n }\n\n private getSafeOrigin(src: string): string {\n if (!src) return window.location.origin;\n\n try {\n // Full URL\n if (src.startsWith('http')) {\n return new URL(src).origin;\n }\n\n // Relative path\n if (src.startsWith('/')) {\n return window.location.origin;\n }\n\n // Protocol-relative\n if (src.startsWith('//')) {\n return new URL(src, window.location.origin).origin;\n }\n\n // Just return current origin for anything else\n return window.location.origin;\n } catch {\n return window.location.origin;\n }\n }\n\n // This is called when iframe confirms: \"Yes, I loaded the correct page!\"\n private handleIframeMessage = (event: MessageEvent) => {\n const expected = this.targetOrigin ?? this.getSafeOrigin(this.iframeSrc);\n if (event.origin !== expected) return;\n\n // NEW: iframe tells us when it's truly ready\n if (event.data?.type === 'IFRAME_READY') {\n this.isReady = true; // NOW show the iframe!\n return;\n }\n\n if (event.data?.type === 'IFRAME_PATH_UPDATE') {\n const path = event.data.path || '/';\n this.router.navigate([], {\n queryParams: { [this.queryParamKey]: path === '/' ? null : path },\n queryParamsHandling: 'merge',\n replaceUrl: true,\n });\n }\n };\n\n // ... rest of helpers (isValidUrl, getSafeOrigin) same as before\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n window.removeEventListener('message', this.handleIframeMessage);\n }\n}\n","//#region import\nimport { CommonModule } from '@angular/common';\nimport {\n Component,\n Input,\n Output,\n EventEmitter,\n OnInit,\n signal,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n inject,\n SimpleChanges,\n OnChanges,\n} from '@angular/core';\nimport { TaonStripeCloudflareWorker } from '@taon-dev/api-workers/browser';\nimport { Translation, TranslateDirective } from '@taon-dev/i18n/browser';\nimport { Taon } from 'taon/browser';\n\nimport { TaonKvAuthorizationProduct } from './taon-kv-authorization.models';\n//#endregion\n\nconst t = Translation.for('src/lib/ui/taon-kv-authorization/taon-kv-authorization.component.ts', {\"src/lib/ui/taon-kv-authorization/taon-kv-authorization.component.html\":{\"en-US\":async () => (await import('./i18n/taon-kv-authorization.component.html.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-kv-authorization.component.html.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-kv-authorization.component.html.de-DE.i18n.data')).default},\"src/lib/ui/taon-kv-authorization/taon-kv-authorization.component.ts\":{\"en-US\":async () => (await import('./i18n/taon-kv-authorization.component.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-kv-authorization.component.ts.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-kv-authorization.component.ts.de-DE.i18n.data')).default}} as any, {\n // debug: true,\n});\n\n@Component({\n selector: 'taon-kv-authorization',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, TranslateDirective],\n templateUrl: './taon-kv-authorization.component.html',\n})\nexport class TaonKvAuthorizationComponent implements OnInit, OnChanges {\n t = t.for(this);\n\n infoMsg = t.signal.gettext('Loading authorization info...');\n\n // asd = t.signal.gettext('You purchased');\n\n cdr = inject(ChangeDetectorRef);\n\n @Input({ required: true }) email!: string;\n\n @Input({ required: true }) url!: string;\n\n @Input({ required: true }) products: TaonKvAuthorizationProduct[] = [];\n\n @Output() authorizedProducts = new EventEmitter<\n TaonKvAuthorizationProduct[]\n >();\n\n protected loading = signal(true);\n\n protected authorizedProductsData = signal<TaonKvAuthorizationProduct[]>([]);\n\n protected authorizationCheckingInProgress = false;\n\n ngOnInit(): void {\n this.products = this.products ? this.products : [];\n this.checkIfProducstsAuthorized();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n //Called before any other lifecycle hook. Use it to inject dependencies, but avoid any serious work here.\n //Add '${implements OnChanges}' to the class.\n this.checkIfProducstsAuthorized();\n }\n\n public async checkIfProducstsAuthorized(): Promise<void> {\n if (\n this.authorizationCheckingInProgress ||\n !this.products ||\n this.products.length === 0\n ) {\n return;\n }\n this.authorizationCheckingInProgress = true;\n const worker = new TaonStripeCloudflareWorker(this.url);\n\n const results: TaonKvAuthorizationProduct[] = [];\n\n for (const product of this.products) {\n try {\n const authorized = await worker.checkAccess({\n clientEmail: this.email,\n productId: product.stripeProductId,\n });\n\n results.push({\n ...product,\n authorized,\n });\n this.cdr.markForCheck();\n } catch {\n results.push({\n ...product,\n authorized: false,\n });\n this.cdr.markForCheck();\n }\n }\n\n this.authorizedProductsData.set(results);\n this.loading.set(false);\n\n this.authorizedProducts.emit(results);\n this.authorizationCheckingInProgress = false;\n this.cdr.markForCheck();\n }\n\n protected authorizedCount(): number {\n return this.authorizedProductsData().filter(p => p.authorized).length;\n }\n}\n","<div class=\"taon-kv-authorization\">\n <div *ngIf=\"loading()\">{{ infoMsg() }}</div>\n\n <div *ngIf=\"!loading()\">\n <div\n *ngIf=\"authorizedCount() === 0\"\n translate [translate-t]=\"t\" [translate-t]=\"t\">\n You did not purchase any products\n </div>\n\n <div *ngIf=\"authorizedCount() > 0\">\n <span translate [translate-t]=\"t\">You purchased </span> {{ authorizedCount() }}\n <span translate [translate-t]=\"t\">product(s)</span>\n </div>\n </div>\n</div>\n","//#region imports\nimport { AsyncPipe, JsonPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport {\n Translatable,\n TranslateDirective,\n TranslateService,\n Translation,\n} from '@taon-dev/i18n/browser';\nimport { map, of, startWith, Subscription, tap, withLatestFrom } from 'rxjs';\nimport { Taon } from 'taon/browser';\nimport { UtilsI18n } from 'tnp-core/browser';\n//#endregion\n\nconst t = Translation.for('src/lib/ui/taon-lang-selector/taon-lang-selector.component.ts', {\"src/lib/ui/taon-lang-selector/taon-lang-selector.component.html\":{\"en-US\":async () => (await import('./i18n/taon-lang-selector.component.html.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-lang-selector.component.html.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-lang-selector.component.html.de-DE.i18n.data')).default}} as any);\n\n@Component({\n selector: 'taon-lang-selector',\n templateUrl: './taon-lang-selector.component.html',\n styleUrls: ['./taon-lang-selector.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AsyncPipe, TranslateDirective, JsonPipe],\n})\nexport class TaonLangSelectorComponent implements Translatable {\n t = t.for(this);\n\n private translateService = inject(TranslateService);\n\n readonly availableLangs$ = this.translateService.manager.availableLangs$.pipe(\n // tap(availableLangs => {\n // console.log({ availableLangs });\n // }),\n );\n\n currentLang: UtilsI18n.CommonLocaleCode = 'en-US';\n readonly currentGlobalLanguage$ =\n this.translateService.manager.currentGlobalLanguage$.pipe(\n withLatestFrom(this.availableLangs$),\n map(([currentGlobalLanguage, availableLangs]) => {\n return availableLangs.find(c => c.code === currentGlobalLanguage)?.code;\n }),\n tap(currentGlobalLanguage => {\n this.currentLang = currentGlobalLanguage;\n }),\n );\n\n readonly isDisabled$ = this.availableLangs$.pipe(map(c => c.length <= 1));\n\n constructor() {}\n\n sub = new Subscription();\n ngOnInit(): void {\n //Called after the constructor, initializing input properties, and the first call to ngOnChanges.\n //Add 'implements OnInit' to the class.\n this.sub.add(this.currentGlobalLanguage$.subscribe());\n }\n\n ngOnDestroy(): void {\n //Called once, before the instance is destroyed.\n //Add 'implements OnDestroy' to the class.\n this.sub.unsubscribe();\n }\n\n async changeLanguage(event: Event): Promise<void> {\n const select = event.target as HTMLSelectElement;\n await this.translateService.changeGlobalLang(\n select.value as UtilsI18n.CommonLocaleCode,\n );\n }\n}\n","<label class=\"taon-lang-selector\">\n <span class=\"taon-lang-selector__label\">\n {{\n t.gettext('Select Language') +\n ' ' +\n ((isDisabled$ | async) ? t.gettext('(disabled)') : '')\n }}\n </span>\n\n <!-- currentLang = {{ currentLang | json }} -->\n\n <select\n class=\"taon-lang-selector__select\"\n [value]=\"currentLang\"\n [disabled]=\"isDisabled$ | async\"\n (change)=\"changeLanguage($event)\">\n @for (lang of availableLangs$ | async; track lang.code) {\n <option\n [value]=\"lang.code\"\n [selected]=\"lang.code === currentLang\">\n {{ lang.label }}\n </option>\n }\n </select>\n</label>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { RouterLink } from '@angular/router';\n\n@Component({\n selector: 'taon-not-found',\n standalone: true,\n imports: [RouterLink],\n templateUrl: './taon-not-found.component.html',\n styleUrls: ['./taon-not-found.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TaonNotFoundComponent {}\n","<div class=\"flex align-items-center justify-content-center min-h-screen px-3\">\n <div\n class=\"text-center surface-card p-5 border-round shadow-2 w-full\"\n style=\"max-width: 600px\">\n <h1 class=\"text-6xl font-bold mb-3 text-red-500\">404</h1>\n\n <h2 class=\"text-2xl mb-3\">Page not found</h2>\n\n <p class=\"text-color-secondary mb-4\">\n The page you are looking for does not exist or has been moved.\n </p>\n\n <a\n routerLink=\"/\"\n class=\"p-button p-component no-underline\">\n <span class=\"p-button-label text-primary no-underline\">Go to Home</span>\n </a>\n\n <br />\n <br />\n <br />\n\n <h4\n class=\"flex flex-row align-content-center justify-content-center align-items-center\">\n <img\n height=\"20px\"\n src=\"assets/assets-for/taon-ui/assets/shared/taon-small-logo-for-not-found.png\"\n alt=\"\" />\n\n <span class=\"p-2 text-gray-200\"\n >Powered by\n <a\n class=\"text-gray-200\"\n href=\"https://taon.dev\">\n Taon.Dev\n </a></span\n >\n </h4>\n </div>\n</div>\n","//#region imports\nimport {\n Component,\n EventEmitter,\n HostBinding,\n Input,\n OnInit,\n Output,\n ViewChild,\n OnDestroy,\n AfterViewInit,\n} from '@angular/core';\nimport { Observable, Subject, Subscription } from 'rxjs';\nimport { Taon } from 'taon/browser';\nimport { _ } from 'tnp-core/browser';\n//#endregion\n\n// import {\n// NgProgressConfig,\n// NgProgressModule,\n// NgProgressRef,\n// } from 'ngx-progressbar';\n// import { Models } from 'tnp-models';\n// import type { TaonAdmin } from '../taon-admin-mode-configuration';\n\nconst calculatePercentage = (loaded, total) => Math.floor(loaded * 1.0) / total;\ndeclare const ENV: any;\n\n/**\n * @deprecated\n */\n@Component({\n selector: 'taon-progress-bar',\n templateUrl: './taon-progress-bar.component.html',\n styleUrls: ['./taon-progress-bar.component.scss'],\n standalone: false,\n})\nexport class TaonProgressBarComponent\n implements OnInit, OnDestroy, AfterViewInit\n{\n @ViewChild('labProgress') labProgress: any; // NgProgressRef;\n\n @Input() isDesktop: boolean;\n\n admin: any;\n\n handlers: Subscription[] = [];\n // options: NgProgressConfig = _.merge(\n // {\n // min: 8,\n // max: 100,\n // speed: 200,\n // trickleSpeed: 300,\n // debounceTime: 0,\n // ease: 'linear',\n // spinnerPosition: 'right',\n // direction: 'ltr+',\n // color: 'gray',\n // fixed: true,\n // meteor: true,\n // spinner: true,\n // thick: false,\n // },\n // _.get(ENV, `plugins['ngx-progressbar']`),\n // );\n\n constructor() {}\n\n ngOnInit() {}\n\n ngOnDestroy(): void {\n this.handlers.forEach(h => h.unsubscribe());\n }\n\n ngAfterViewInit(): void {\n // this.labProgress.set(20)\n // this.loadProgressBar(void 0);\n }\n\n loadProgressBar(config) {\n // let requestsCounter = 0;\n // const setupStartProgress = () => {\n // instance.interceptors.request.use(config => {\n // requestsCounter++;\n // this.labProgress.start();\n // return config;\n // });\n // };\n // const setupUpdateProgress = () => {\n // const update = e => {\n // // NProgress.inc(calculatePercentage(e.loaded, e.total))\n // const percentage = calculatePercentage(e.loaded, e.total) * 100;\n // // console.log(`loaded: ${e.loaded}, total: ${e.total} , pecent: ${percentage}`)\n // this.labProgress.inc(percentage);\n // };\n // instance.defaults.onDownloadProgress = update;\n // instance.defaults.onUploadProgress = update;\n // };\n // const setupStopProgress = () => {\n // const responseFunc = response => {\n // if (--requestsCounter === 0) {\n // this.labProgress.complete();\n // // NProgress.done()\n // }\n // return response;\n // };\n // const errorFunc = error => {\n // if (--requestsCounter === 0) {\n // this.labProgress.complete();\n // // NProgress.done()\n // }\n // return Promise.reject(error);\n // };\n // instance.interceptors.response.use(responseFunc, errorFunc);\n // };\n // setupStartProgress();\n // setupUpdateProgress();\n // setupStopProgress();\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n }\n}\n","<!-- <ng-progress\n #labProgress\n id=\"lab\"\n [meteor]=\"options.meteor\"\n [color]=\"options.color\"\n [min]=\"options.min\"\n [max]=\"options.max\"\n [speed]=\"options.speed\"\n [spinner]=\"\n options.spinner &&\n (!admin.adminPanelIsOpen ||\n (admin.adminPanelIsOpen && (admin.draggablePopupMode || !isDesktop)))\n \"\n [spinnerPosition]=\"options.spinnerPosition\"\n [direction]=\"options.direction\"\n [trickleSpeed]=\"options.trickleSpeed\"\n [debounceTime]=\"options.debounceTime\"\n [ease]=\"options.ease\"\n [thick]=\"options.thick\"\n [fixed]=\"options.fixed\">\n</ng-progress>\n(started)=\"onProgressStarted()\"\n (completed)=\"onProgressCompleted()\" -->\n","//#region imports\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { TaonProgressBarComponent } from './taon-progress-bar.component';\n//#endregion\n\n// import { NgProgressConfig, NgProgressModule } from 'ngx-progressbar';\n\n@NgModule({\n imports: [\n CommonModule,\n // NgProgressModule.withConfig({})\n ],\n declarations: [TaonProgressBarComponent],\n exports: [TaonProgressBarComponent],\n})\nexport class TaonProgressBarModule {}\n","import { NgIf } from '@angular/common';\nimport {\n Component,\n Input,\n Output,\n EventEmitter,\n computed,\n inject,\n} from '@angular/core';\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\n\nexport type TaonRumbleState =\n | 'preview-picture'\n | 'preview-picture-locked'\n | 'video-preview-open'\n | 'video-preview-private';\n\n@Component({\n selector: 'taon-rumble',\n standalone: true,\n imports: [NgIf],\n templateUrl: './taon-rumble.component.html',\n styleUrls: ['./taon-rumble.component.scss'],\n})\nexport class TaonRumbleComponent {\n sanitizer = inject(DomSanitizer);\n\n @Input({\n required: true,\n })\n title!: string;\n\n @Input({\n required: true,\n })\n clipId!: string;\n\n @Input({\n required: true,\n })\n picturePreviewUrl!: string;\n\n @Input() state: TaonRumbleState = 'video-preview-open';\n\n @Output() paddlockClicked = new EventEmitter<void>();\n\n @Output() previewClicked = new EventEmitter<void>();\n\n // get embedUrl(): string {\n // return `https://rumble.com/embed/${this.clipId}`;\n // }\n\n embedUrl = computed<SafeResourceUrl>(() =>\n this.sanitizer.bypassSecurityTrustResourceUrl(\n `https://rumble.com/embed/${this.clipId}`,\n ),\n );\n\n onPreviewClick() {\n this.previewClicked.emit();\n }\n\n onPadlockClick(event: MouseEvent) {\n event.stopPropagation();\n this.paddlockClicked.emit();\n }\n\n isPreview() {\n return (\n this.state === 'preview-picture' ||\n this.state === 'preview-picture-locked'\n );\n }\n\n isLocked() {\n return this.state === 'preview-picture-locked';\n }\n\n isVideoOpen() {\n return this.state === 'video-preview-open';\n }\n\n isPrivate() {\n return this.state === 'video-preview-private';\n }\n}\n","<div class=\"taon-rumble\">\n <!-- PREVIEW MODE -->\n <div\n *ngIf=\"isPreview()\"\n class=\"preview\"\n (click)=\"onPreviewClick()\">\n <img\n class=\"preview-img\"\n [src]=\"picturePreviewUrl\"\n [alt]=\"title\" />\n\n <div class=\"title\">\n {{ title }}\n </div>\n\n <!-- PLAY BUTTON -->\n <div class=\"play-button\">▶</div>\n\n <!-- LOCK -->\n <div\n *ngIf=\"isLocked()\"\n class=\"lock\"\n (click)=\"onPadlockClick($event)\">\n 🔒\n </div>\n </div>\n\n <!-- VIDEO OPEN -->\n <div\n *ngIf=\"isVideoOpen()\"\n class=\"video\">\n <iframe\n class=\"rumble-frame\"\n [src]=\"embedUrl()\"\n frameborder=\"0\"\n allowfullscreen>\n </iframe>\n </div>\n\n <!-- PRIVATE VIDEO -->\n <div\n *ngIf=\"isPrivate()\"\n class=\"private\">\n <div class=\"private-box\">🔒 Private video</div>\n </div>\n</div>\n","//#region imports\nimport { CommonModule } from '@angular/common';\nimport {\n ChangeDetectorRef,\n Component,\n DestroyRef,\n ElementRef,\n HostBinding,\n Input,\n OnInit,\n Self,\n inject,\n AfterViewInit,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n FormControl,\n FormGroup,\n FormsModule,\n ReactiveFormsModule,\n} from '@angular/forms';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { PasswordModule } from 'primeng/password';\nimport { interval, take, tap } from 'rxjs';\nimport { TaonStor } from 'taon-storage/browser';\n//#endregion\n\nexport interface TaonSessionPasscodeModel {\n passcode: string;\n}\n\nexport type TaonSessionPasscodeForm = {\n [prop in keyof TaonSessionPasscodeModel]: FormControl<\n TaonSessionPasscodeModel[prop]\n >;\n};\n\n@Component({\n selector: 'taon-session-passcode',\n templateUrl: './taon-session-passcode.component.html',\n styleUrls: ['./taon-session-passcode.component.scss'],\n standalone: true,\n imports: [PasswordModule, CommonModule, ReactiveFormsModule, FormsModule],\n})\nexport class TaonSessionPasscodeComponent implements OnInit, AfterViewInit {\n destroyRef = inject(DestroyRef);\n\n @Input({\n required: true,\n })\n public passcode: string;\n\n @Input() public message: string;\n\n public safeMessage: SafeHtml;\n\n private lastPasscode = TaonStor.inLocalstorage(\n {\n defaultValue: '',\n keyOrPath: 'lastPasscode',\n },\n TaonSessionPasscodeComponent,\n );\n\n @HostBinding('style.display') public display = 'none';\n\n public form: FormGroup<TaonSessionPasscodeForm> =\n new FormGroup<TaonSessionPasscodeForm>({\n passcode: new FormControl(),\n });\n\n constructor(\n @Self() private element: ElementRef<HTMLElement>,\n private domSanitizer: DomSanitizer,\n private cdr: ChangeDetectorRef,\n ) {}\n\n async ngOnInit() {\n if (!this.message) {\n this.message = `\n This website is only for testing purpose. Please type passcode bellow to see content.\n\n `;\n }\n this.safeMessage = this.domSanitizer.bypassSecurityTrustHtml(this.message);\n await this.lastPasscode.ready();\n\n if (this.lastPasscode()?.toString() === this.passcode?.toString()) {\n this.hide();\n } else {\n this.show();\n this.focus();\n }\n this.cdr.markForCheck();\n\n interval(1000)\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n tap(() => {\n this.focus();\n this.cdr.markForCheck();\n }),\n )\n .subscribe();\n }\n\n submit({ passcode }: Partial<TaonSessionPasscodeModel>) {\n if (this.isPasscodeOK(passcode || '')) {\n this.hide();\n } else {\n this.clear();\n }\n }\n\n private isPasscodeOK(passcode: string) {\n this.lastPasscode.set(passcode.toString());\n return this.passcode.toString() === passcode;\n }\n\n ngAfterViewInit(): void {}\n\n public focus(): void {\n this.element.nativeElement.querySelector('input')?.focus();\n }\n\n hide() {\n this.display = 'none';\n }\n\n show() {\n this.display = 'block';\n }\n\n clear() {\n this.form.controls.passcode.setValue('');\n }\n\n onKeyup(event: KeyboardEvent & { target: { value: string } }) {\n if (this.isPasscodeOK(event.target.value || '')) {\n this.hide();\n return;\n }\n const key = event.keyCode || event.charCode;\n if (key === 8 || key === 46 || this.lastPasscode()?.length > 5) {\n this.clear();\n }\n }\n}\n","<form\n [formGroup]=\"form\"\n content=\"notranslate\"\n autocomplete=\"off\"\n (click)=\"focus()\"\n (ngSubmit)=\"submit(form.value)\"\n class=\"flex flex-col items-center w-full h-full\">\n <div class=\"flex content-center w-full justify-center mt-8\">\n <p\n class=\"p-3 max-w-[400px] min-h-[100px]\"\n [innerHtml]=\"safeMessage\"></p>\n </div>\n\n <input\n type=\"password\"\n class=\"text-5xl md:text-8xl pointer-events-none\"\n #taonpasscode\n (keyup)=\"onKeyup($event)\"\n formControlName=\"passcode\" />\n</form>\n","import { isPlatformBrowser } from '@angular/common';\nimport { Injectable, signal, effect, inject, PLATFORM_ID } from '@angular/core';\n\nexport enum TaonThemeMode {\n AUTO = 'auto',\n LIGHT = 'light',\n DARK = 'dark',\n}\n\n@Injectable({ providedIn: 'root' })\nexport class TaonThemeService {\n private readonly TAON_THEME_KEY = 'taon-theme-mode';\n\n private platformId = inject(PLATFORM_ID);\n\n private isBrowser = isPlatformBrowser(this.platformId);\n\n private mediaQuery: MediaQueryList | null = null;\n\n public pernamentMode = false;\n\n mode = signal<TaonThemeMode>(TaonThemeMode.AUTO);\n\n isDark = signal<boolean>(false);\n\n constructor() {\n if (!this.isBrowser) return;\n\n this.mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');\n\n // Load saved mode\n const saved = localStorage.getItem(\n this.TAON_THEME_KEY,\n ) as TaonThemeMode | null;\n if (saved) {\n this.mode.set(saved);\n }\n\n // React to system changes\n this.mediaQuery.addEventListener('change', e => {\n if (this.pernamentMode) {\n return;\n }\n if (this.mode() === TaonThemeMode.AUTO) {\n this.apply(e.matches);\n }\n });\n\n // React to mode changes\n effect(() => {\n const currentMode = this.mode();\n localStorage.setItem(this.TAON_THEME_KEY, currentMode);\n\n const dark =\n currentMode === TaonThemeMode.AUTO\n ? (this.mediaQuery?.matches ?? false)\n : currentMode === TaonThemeMode.DARK;\n\n this.apply(dark);\n });\n }\n\n private apply(dark: boolean): void {\n this.isDark.set(dark);\n\n const root = document.documentElement;\n root.classList.toggle('dark-taon-theme', dark);\n root.classList.toggle('light-taon-theme', !dark);\n }\n\n setMode(mode: TaonThemeMode, options?: { pernamentMode?: boolean }): void {\n options = options || {};\n this.pernamentMode = options.pernamentMode ?? false;\n this.mode.set(mode);\n }\n\n toogleAuto(auto: boolean): void {\n if (auto) {\n this.mode.set(TaonThemeMode.AUTO);\n } else {\n this.mode.set(TaonThemeMode.LIGHT);\n }\n }\n\n setDark(yes: boolean): void {\n if (yes) {\n this.mode.set(TaonThemeMode.DARK);\n } else {\n this.mode.set(TaonThemeMode.LIGHT);\n }\n }\n\n toggle(): void {\n this.setMode(this.isDark() ? TaonThemeMode.LIGHT : TaonThemeMode.DARK);\n }\n\n isAuto(): boolean {\n return this.mode() === TaonThemeMode.AUTO;\n }\n}\n","//#region imports\nimport { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { RouterOutlet } from '@angular/router';\nimport {\n Translatable,\n TranslateDirective,\n TranslateService,\n Translation,\n} from '@taon-dev/i18n/browser';\nimport { Taon } from 'taon/browser';\n\nimport { TaonLangSelectorComponent } from '../taon-lang-selector/taon-lang-selector.component';\nimport {\n TaonThemeMode,\n TaonThemeService,\n} from '../taon-theme/taon-theme.service';\n\n//#endregion\n\nconst t = Translation.for('src/lib/ui/taon-settings/taon-settings.component.ts', {\"src/lib/ui/taon-settings/taon-settings.component.html\":{\"en-US\":async () => (await import('./i18n/taon-settings.component.html.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-settings.component.html.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-settings.component.html.de-DE.i18n.data')).default}} as any);\n\n@Component({\n selector: 'taon-settings',\n templateUrl: './taon-settings.component.html',\n styleUrls: ['./taon-settings.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n AsyncPipe,\n RouterOutlet,\n TaonLangSelectorComponent,\n MatSlideToggleModule,\n MatIconModule,\n MatButtonModule,\n MatDialogModule,\n TranslateDirective,\n ],\n})\nexport class TaonSettingsComponent implements Translatable {\n t = t.for(this);\n\n TaonThemeMode = TaonThemeMode;\n\n private readonly dialogRef = inject(MatDialogRef<TaonSettingsComponent>);\n\n close(): void {\n this.dialogRef.close();\n }\n\n taonTheme = inject(TaonThemeService);\n}\n","<div class=\"absolute top-2 right-2\">\n <button\n mat-icon-button\n aria-label=\"Close dialog\"\n (click)=\"close()\">\n <mat-icon>close</mat-icon>\n </button>\n</div>\n<div class=\"p-4\">\n <h3 class=\"bold\" translate [translate-t]=\"t\">Language Settings</h3>\n <taon-lang-selector />\n\n <br />\n <hr />\n <br />\n <h3 class=\"bold\">\n {{ t.gettext('Theme settings') }}\n {{ taonTheme.pernamentMode ? t.gettext(\"Settings can't ba changed\") : '' }}\n </h3>\n\n <mat-slide-toggle\n class=\"p-2\"\n [checked]=\"taonTheme.isAuto()\"\n [disabled]=\"taonTheme.pernamentMode\"\n (change)=\"taonTheme.toogleAuto($event.checked)\">\n {{ t.gettext('Sync colors with system') }}\n </mat-slide-toggle>\n\n <mat-slide-toggle\n class=\"p-2\"\n [checked]=\"taonTheme.isDark()\"\n [disabled]=\"taonTheme.isAuto() || taonTheme.pernamentMode\"\n (change)=\"taonTheme.setDark($event.checked)\">\n {{ t.gettext('Dark mode') }}\n </mat-slide-toggle>\n</div>\n","//#region imports\nimport { AsyncPipe, JsonPipe } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n inject,\n Input,\n input,\n signal,\n} from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatDialog, MatDialogModule } from '@angular/material/dialog';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatListModule } from '@angular/material/list';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { Router, RouterModule, RouterOutlet } from '@angular/router';\n\nimport { TaonSettingsComponent } from '../taon-settings/taon-settings.component';\nimport { TaonThemeService } from '../taon-theme/taon-theme.service';\n\nimport { TaonSimpleLayoutNavItem } from './taon-simple-layout.model';\n//#endregion\n\n@Component({\n selector: 'taon-simple-layout',\n templateUrl: './taon-simple-layout.component.html',\n styleUrls: ['./taon-simple-layout.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n RouterOutlet,\n AsyncPipe,\n MatCardModule,\n MatIconModule,\n MatDividerModule,\n MatButtonModule,\n MatListModule,\n MatTabsModule,\n RouterModule,\n MatDialogModule,\n JsonPipe,\n TaonSettingsComponent,\n ],\n})\nexport class TaonSimpleLayoutComponent {\n protected router = inject(Router);\n\n protected dialog = inject(MatDialog);\n\n protected theme = inject(TaonThemeService);\n\n @Input() hideThemeSettings: boolean;\n\n @Input() hideHeader: boolean;\n\n navItems = input<TaonSimpleLayoutNavItem[]>();\n\n protected readonly mobileMenuOpen = signal(false);\n\n navigateToMobile(item: TaonSimpleLayoutNavItem): void {\n this.mobileMenuOpen.set(false);\n this.navigateTo(item);\n }\n\n protected openSettingsFromMobileMenu(): void {\n this.mobileMenuOpen.set(false);\n this.openDialog(200, 200);\n }\n\n navigateTo(item: TaonSimpleLayoutNavItem): void {\n const primarySegments = item.path.split('/').filter(Boolean);\n\n this.router.navigate([\n {\n outlets: {\n primary: primarySegments,\n },\n },\n ]);\n }\n\n openDialog(\n enterAnimationDuration: string | number,\n exitAnimationDuration: string | number,\n ): void {\n this.dialog.open(TaonSettingsComponent, {\n width: '400px',\n enterAnimationDuration,\n exitAnimationDuration,\n });\n }\n}\n","@if (!hideHeader) {\n <header class=\"relative z-10 flex w-full flex-row items-center shadow-md\">\n <!-- LEFT: projected header/logo -->\n <div class=\"flex shrink-0 items-center\">\n <ng-content select=\"[header]\"></ng-content>\n </div>\n\n <!-- DESKTOP NAVIGATION -->\n @if (navItems()?.length > 0) {\n <nav\n class=\"desktop-navigation shrink-0\"\n mat-tab-nav-bar\n [tabPanel]=\"tabPanel\">\n @for (item of navItems(); track item.path) {\n <a\n mat-tab-link\n href=\"javascript:void(0)\"\n [style.text-decoration]=\"\n (activePath === item.path && !forceShowBaseRootApp) ||\n ('/' === item.path && forceShowBaseRootApp)\n ? 'underline'\n : 'none'\n \"\n (click)=\"navigateTo(item)\">\n @if (item.path === '/') {\n <mat-icon fontIcon=\"home\"></mat-icon>\n } @else {\n {{ item.label }}\n }\n </a>\n }\n </nav>\n }\n\n <!-- spacer -->\n <div class=\"flex-1\"></div>\n\n <!-- DESKTOP BUTTONS -->\n <div class=\"flex shrink-0 flex-row items-center\">\n <ng-content select=\"[buttons]\"></ng-content>\n\n @if (!hideThemeSettings) {\n <button\n class=\"mr-2\"\n (click)=\"openDialog(200, 200)\"\n mat-icon-button>\n <mat-icon>settings</mat-icon>\n </button>\n }\n </div>\n\n <!-- MOBILE MENU BUTTON -->\n <div class=\"mobile-menu relative\">\n <button\n mat-icon-button\n type=\"button\"\n (click)=\"mobileMenuOpen.set(!mobileMenuOpen())\">\n <mat-icon>\n {{ mobileMenuOpen() ? 'close' : 'menu' }}\n </mat-icon>\n </button>\n\n @if (mobileMenuOpen()) {\n <div\n class=\"absolute right-2 top-full z-[1000] mt-1 min-w-52 overflow-hidden rounded-md border border-gray-200 bg-white shadow-lg\">\n @for (item of navItems() ?? []; track item.path) {\n <button\n mat-button\n class=\"!flex !w-full !justify-start !rounded-none\"\n (click)=\"navigateToMobile(item)\">\n @if (item.path === '/') {\n <mat-icon class=\"mr-2\">home</mat-icon>\n }\n\n {{ item.label }}\n </button>\n }\n\n @if (!hideThemeSettings) {\n <div class=\"border-t border-gray-200\">\n <button\n mat-button\n class=\"!flex !w-full !justify-start !rounded-none\"\n (click)=\"openSettingsFromMobileMenu()\">\n <mat-icon class=\"mr-2\">settings</mat-icon>\n Settings\n </button>\n </div>\n }\n </div>\n }\n </div>\n </header>\n}\n\n<mat-tab-nav-panel\n #tabPanel\n class=\"pt-2\">\n <div class=\"projected-wrapper\">\n <ng-content></ng-content>\n </div>\n\n <div class=\"fallback-message\">\n Please add your component inside\n <br />\n\n <pre>\n <code class=\"block bg-gray-100\">\n <taon-simple-layout class="p-4">\n <header\n header\n class="flex">\n\n <img\n class="rounded"\n src="assets/assets-for/taon-ui/assets/images/pluszka-logo.png"\n height="50px" />\n\n </header>\n\n <br />\n\n <h3 class="text-blue-200">\n Welcome to hamster store.\n </h3>\n\n <h3 class="text-blue-300">\n Buy cheap hamster videos for free!\n </h3>\n\n <h3 class="text-blue-300">\n Subscribe more hamsters video daily!\n </h3>\n\n <ng-container buttons>\n <button\n mat-button\n class="flex items-center">\n Hello friend!\n </button>\n </ng-container>\n\n </taon-simple-layout>\n </code>\n </pre>\n </div>\n</mat-tab-nav-panel>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n selector: 'taon-slide-content-child',\n standalone: true,\n template: ` <ng-content></ng-content> `,\n styles: `\n :host {\n display: block;\n flex: 0 0 100%;\n width: 100%;\n min-width: 0;\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TaonSlideContentContentChildComponent {\n @Input({ required: true })\n assignToState!: unknown;\n}\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n Input,\n QueryList,\n signal,\n} from '@angular/core';\n\nimport { TaonSlideContentContentChildComponent } from './taon-slide-content-child.component';\n\n@Component({\n selector: 'taon-slide-content',\n standalone: true,\n imports: [],\n templateUrl: './taon-slide-content.component.html',\n styleUrl: './taon-slide-content.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TaonSlideContentComponent implements AfterContentInit {\n @ContentChildren(TaonSlideContentContentChildComponent)\n private slides!: QueryList<TaonSlideContentContentChildComponent>;\n\n /**\n * Defines which state transitions should be animated.\n *\n * Example:\n * LOGIN -> ENTER_PASSWORD = animated\n * ENTER_PASSWORD -> LOGIN = instant\n */\n @Input()\n whenAllowedAnimationMap?: Map<unknown, unknown[]>;\n\n private readonly activeIndex = signal(0);\n\n private readonly currentState = signal<unknown>(undefined);\n\n readonly shouldAnimate = signal(false);\n\n readonly transform = () => `translateX(-${this.activeIndex() * 100}%)`;\n\n ngAfterContentInit(): void {\n const firstSlide = this.slides.first;\n\n if (firstSlide) {\n this.currentState.set(firstSlide.assignToState);\n }\n }\n\n public goTo(state: unknown): void {\n const slides = this.slides.toArray();\n\n const index = slides.findIndex(slide => slide.assignToState === state);\n\n if (index === -1) {\n console.warn(\n '[TaonSlideContentSlideComponent] Unknown slide state:',\n state,\n );\n return;\n }\n\n const previousState = this.currentState();\n\n this.shouldAnimate.set(this.isAnimationAllowed(previousState, state));\n\n this.currentState.set(state);\n this.activeIndex.set(index);\n }\n\n private isAnimationAllowed(fromState: unknown, toState: unknown): boolean {\n if (!this.whenAllowedAnimationMap) {\n return true;\n }\n\n return (\n this.whenAllowedAnimationMap.get(fromState)?.includes(toState) ?? false\n );\n }\n}\n","<div\n class=\"slide-track\"\n [class.animate]=\"shouldAnimate()\"\n [style.transform]=\"transform()\">\n <ng-content></ng-content>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { TaonStripeCloudflareWorker } from '@taon-dev/api-workers/browser';\nimport {\n Translation,\n Translatable,\n TranslateDirective,\n TranslatePipe,\n} from '@taon-dev/i18n/browser';\nimport { Taon } from 'taon/browser';\nimport { TaonLangSelectorComponent } from '../../index';\nimport { _ } from 'tnp-core/browser';\n\nconst t = Translation.for('src/lib/ui/taon-stripe-buy-button/taon-stripe-buy-button.component.ts', {\"src/lib/ui/taon-stripe-buy-button/taon-stripe-buy-button.component.ts\":{\"en-US\":async () => (await import('./i18n/taon-stripe-buy-button.component.ts.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-stripe-buy-button.component.ts.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-stripe-buy-button.component.ts.de-DE.i18n.data')).default}} as any,{\n // debug: true\n});\n\n@Component({\n selector: 'taon-stripe-buy-button',\n imports: [CommonModule, MatButtonModule],\n templateUrl: './taon-stripe-buy-button.component.html',\n})\nexport class TaonStripeBuyButtonComponent implements OnInit, Translatable {\n t = t.for(this);\n /**\n * Stripe price id (NOT product id)\n * example: price_1Qabc123456\n */\n @Input({ required: true }) priceId!: string;\n\n @Input({ required: true }) productId!: string;\n\n @Input() promotionPreviousPrice!: string;\n\n /**\n * Cloudflare worker url that creates checkout session\n * example: https://super-73d1b.darekf77.workers.dev\n */\n @Input({ required: true }) workerUrl!: string;\n\n /**\n * email of logged user\n * (used later for KV authorization)\n */\n @Input({ required: true }) email!: string;\n\n @Input() successUrl: string;\n\n @Input() cancelUrl: string;\n\n /**\n * optional label for buy button\n */\n label = this.t.signal.gettext('Buy now');\n\n loading = false;\n\n ngOnInit(): void {\n //Called after the constructor, initializing input properties, and the first call to ngOnChanges.\n //Add 'implements OnInit' to the class.\n this.successUrl = _.isString(this.successUrl)\n ? this.successUrl\n : `${location.href.split('?')[0]}?success=true&productId=${this.productId}`;\n this.cancelUrl = _.isString(this.cancelUrl)\n ? this.cancelUrl\n : `${location.href.split('?')[0]}?cancel=true`;\n // console.log({successUrl:this.successUrl})\n // console.log({cancelUrl:this.cancelUrl})\n }\n\n async buy(): Promise<void> {\n if (!this.priceId || !this.workerUrl || !this.email) {\n console.error('Missing stripe parameters');\n return;\n }\n\n this.loading = true;\n\n try {\n const resp = await fetch(\n `${this.workerUrl}${TaonStripeCloudflareWorker.HOOK_CREATE_STRIPE_SESSION}`,\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n priceId: this.priceId,\n email: this.email,\n success_url: this.successUrl,\n cancel_url: this.cancelUrl,\n }),\n },\n );\n\n const data = await resp.json();\n\n if (data?.url) {\n window.location.href = data.url;\n } else {\n console.error('Stripe checkout url missing', data);\n }\n } catch (err) {\n console.error('Stripe checkout error', err);\n } finally {\n this.loading = false;\n }\n }\n}\n","<button\n type=\"button\"\n matButton=\"filled\"\n (click)=\"buy()\"\n [disabled]=\"loading\">\n <span *ngIf=\"!loading\">\n {{ label() }}\n </span>\n <span\n class=\"line-through absolute bg-red-500 p-1 rounded-xl whitespace-nowrap ml-2\"\n *ngIf=\"promotionPreviousPrice\">\n {{ promotionPreviousPrice }}\n </span>\n\n <span *ngIf=\"loading\"> Redirecting to Stripe... </span>\n</button>\n","//#region imports\nimport { Component, inject } from '@angular/core';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\n\nimport { TaonThemeMode, TaonThemeService } from './taon-theme.service';\nimport { MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\n\nimport {\n Translatable,\n TranslateDirective,\n TranslateService,\n Translation,\n} from '@taon-dev/i18n/browser';\nimport { Taon } from 'taon/browser';\n//#endregion\n\nconst t = Translation.for('src/lib/ui/taon-theme/taon-theme.component.ts', {\"src/lib/ui/taon-theme/taon-theme.component.html\":{\"en-US\":async () => (await import('./i18n/taon-theme.component.html.en-US.i18n.data')).default,\"pl-PL\":async () => (await import('./i18n/taon-theme.component.html.pl-PL.i18n.data')).default,\"de-DE\":async () => (await import('./i18n/taon-theme.component.html.de-DE.i18n.data')).default}} as any);\n\n/**\n * @deprecated use TaonSettings\n */\n@Component({\n selector: 'taon-theme',\n imports: [\n MatSlideToggleModule,\n MatIconModule,\n MatButtonModule,\n MatDialogModule,\n TranslateDirective,\n ],\n templateUrl: './taon-theme.component.html',\n})\nexport class TaonThemeComponent implements Translatable {\n t = t.for(this);\n\n TaonThemeMode = TaonThemeMode;\n\n private readonly dialogRef = inject(MatDialogRef<TaonThemeComponent>);\n\n close(): void {\n this.dialogRef.close();\n }\n\n taonTheme = inject(TaonThemeService);\n}\n","<div class=\"absolute top-2 right-2\">\n <button\n mat-icon-button\n aria-label=\"Close dialog\"\n (click)=\"close()\">\n <mat-icon>close</mat-icon>\n </button>\n</div>\n<div class=\"p-4\">\n <h3 class=\"bold\">\n {{ t.gettext('Theme settings') }}\n {{ taonTheme.pernamentMode ? t.gettext(\"Settings can't ba changed\") : '' }}\n </h3>\n\n <mat-slide-toggle\n class=\"p-2\"\n [checked]=\"taonTheme.isAuto()\"\n [disabled]=\"taonTheme.pernamentMode\"\n (change)=\"taonTheme.toogleAuto($event.checked)\">\n {{ t.gettext('Sync colors with system') }}\n </mat-slide-toggle>\n\n <mat-slide-toggle\n class=\"p-2\"\n [checked]=\"taonTheme.isDark()\"\n [disabled]=\"taonTheme.isAuto() || taonTheme.pernamentMode\"\n (change)=\"taonTheme.setDark($event.checked)\">\n {{ t.gettext('Dark mode') }}\n </mat-slide-toggle>\n</div>\n","export namespace TaonYouTubeUtils {\n // declare global {\n // interface Window {\n // YT: any;\n // onYouTubeIframeAPIReady: () => void;\n // }\n // }\n\n export function loadYoutubeApi(): Promise<void> {\n return new Promise(resolve => {\n // @ts-ignore\n if (window.YT && window.YT.Player) {\n resolve();\n return;\n }\n\n const tag = document.createElement('script');\n tag.src = 'https://www.youtube.com/iframe_api';\n document.body.appendChild(tag);\n\n // @ts-ignore\n window.onYouTubeIframeAPIReady = () => {\n resolve();\n };\n });\n }\n\n export async function getVidesIdsOfPlaylist(\n ytplaylistId: string,\n ): Promise<string[]> {\n const url = `https://www.youtube.com/playlist?list=${encodeURIComponent(ytplaylistId)}`;\n\n const response = await fetch(url, {\n headers: {\n 'accept-language': 'en-US,en;q=0.9',\n },\n });\n\n if (!response.ok) {\n throw new Error(\n `Failed to fetch playlist page: ${response.status} ${response.statusText}`,\n );\n }\n\n const html = await response.text();\n\n const matches = [...html.matchAll(/\"videoId\":\"([a-zA-Z0-9_-]{11})\"/g)];\n const ids = matches.map(match => match[1]);\n\n return [...new Set(ids)];\n }\n\n export function extractPlaylistId(input: string): string {\n if (!input.includes('http')) {\n return input.split('&')[0].trim();\n }\n\n const url = new URL(input);\n return (url.searchParams.get('list') || '').trim();\n }\n}\n","//#region imports\n\nimport { NgIf, NgStyle, CommonModule } from '@angular/common';\nimport {\n Component,\n Input,\n Output,\n EventEmitter,\n ChangeDetectionStrategy,\n computed,\n signal,\n OnChanges,\n AfterViewInit,\n ViewChild,\n ElementRef,\n effect,\n ChangeDetectorRef,\n inject,\n OnInit,\n OnDestroy,\n} from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\n\nimport { TaonYoutubeState } from './taon-youtube.models';\nimport { TaonYouTubeUtils } from './taon-youtube.utils';\n//#endregion\n\n@Component({\n selector: 'taon-youtube-video',\n standalone: true,\n imports: [NgIf, NgStyle, MatIconModule, CommonModule],\n templateUrl: './taon-youtube-video.component.html',\n styleUrls: ['./taon-youtube-video.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TaonYoutubeVideoComponent\n implements OnChanges, AfterViewInit, OnInit, OnDestroy\n{\n //#region fields & getters\n @Input({ required: true }) videoId!: string;\n\n @Input() title?: string;\n\n @Input() height?: string;\n\n @Input() state: TaonYoutubeState = 'preview-picture';\n\n @Output() paddlockClicked = new EventEmitter<void>();\n\n @Output() previewClicked = new EventEmitter<void>();\n\n @ViewChild('ytFrame') iframeRef?: ElementRef<HTMLIFrameElement>;\n\n /**\n * > controls=0\tHides bottom control bar\n * > modestbranding=1\tReduces YouTube logo\n * > rel=0\tDisables related videos from other channels\n * > disablekb=1\tDisables keyboard controls\n * > fs=0\tDisables fullscreen button\n * > playsinline=1\tPrevents fullscreen auto behavior on iOS\n */\n embedUrl = computed<SafeResourceUrl>(() =>\n this.sanitizer.bypassSecurityTrustResourceUrl(\n `https://www.youtube.com/embed/${this.videoIdSignal()}` +\n `?enablejsapi=1` +\n `&autoplay=1` +\n `&playsinline=1` +\n `&rel=0` +\n `&origin=${encodeURIComponent(window.location.origin)}`,\n ),\n );\n\n private readonly PS = {\n UNSTARTED: -1,\n ENDED: 0,\n PLAYING: 1,\n PAUSED: 2,\n BUFFERING: 3,\n CUED: 5,\n };\n\n currentVideoState: keyof typeof this.PS;\n\n videoActivated = signal(false);\n\n isInViewport = signal(false);\n\n // previewImage = computed(\n // () =>\n // `https://img.youtube.com/vi/${this.videoIdSignal()}/maxresdefault.jpg`,\n // );\n\n previewImage = computed(\n () => `https://img.youtube.com/vi/${this.videoIdSignal()}/0.jpg`,\n );\n\n cdr = inject(ChangeDetectorRef);\n\n allowedToBeDisplayedVideoOveraly = signal(true);\n\n // @ViewChild('playerContainer') playerContainer!: ElementRef;\n\n private player!: any;\n\n private readonly el = inject(ElementRef<HTMLElement>);\n\n private observer?: IntersectionObserver;\n\n private videoIdSignal = signal<string>('');\n\n get containerStyle() {\n return this.height ? { height: this.height } : null;\n }\n\n get displayTitle() {\n return this.title;\n }\n //#endregion\n\n constructor(private sanitizer: DomSanitizer) {\n effect(() => {});\n }\n\n //#region methods / right click\n onRightClick(event) {\n // console.log(event);\n event.preventDefault();\n event.stopPropagation();\n }\n //#endregion\n\n //#region methods / on thumbnail error\n onThumbnailError(event: Event): void {\n const img = event.target as HTMLImageElement;\n\n const fallback = `https://img.youtube.com/vi/${this.videoIdSignal()}/hqdefault.jpg`;\n\n if (img.src !== fallback) {\n img.src = fallback;\n }\n }\n //#endregion\n\n //#region methods / clicked\n clicked(event) {\n event.stopPropagation();\n this.allowedToBeDisplayedVideoOveraly.set(false);\n this.cdr.detectChanges();\n // setTimeout(() => {\n // this.allowedToBeDisplayedVideoOveraly.set(true);\n // this.cdr.detectChanges();\n // }, 200);\n }\n //#endregion\n\n //#region methods / restart\n restart() {\n this.postCommand('seekTo', [0, true]); // go to 0 seconds\n this.postCommand('playVideo');\n }\n //#endregion\n\n //#region on init\n ngOnInit(): void {\n //Called after the constructor, initializing input properties, and the first call to ngOnChanges.\n //Add 'implements OnInit' to the class.\n }\n //#endregion\n\n //#region on destroy\n ngOnDestroy(): void {\n this.observer?.disconnect();\n }\n //#endregion\n\n //#region after view init\n async ngAfterViewInit() {\n // this.observer = new IntersectionObserver(\n // entries => {\n // // console.log({ entries });\n // const entry = entries[0];\n\n // if (entry.isIntersecting) {\n // this.isInViewport.set(true);\n\n // // We don't need to watch this component anymore.\n // this.observer?.disconnect();\n // }\n // },\n // {\n // root: null,\n // rootMargin: '150px',\n // threshold: 0.01,\n // },\n // );\n // this.observer.observe(this.el.nativeElement);\n\n if (this.state !== 'video-preview-private') {\n return;\n }\n await TaonYouTubeUtils.loadYoutubeApi();\n\n // @ts-ignore\n this.player = new window.YT.Player(this.iframeRef.nativeElement, {\n videoId: this.videoId,\n playerVars: {\n origin: window.location.origin,\n },\n events: {\n onStateChange: (event: any) => {\n this.handleStateChange(event.data);\n },\n },\n });\n }\n //#endregion\n\n //#region handle state change\n private handleStateChange(state: number) {\n // @ts-ignore\n // const YT = window.YT;\n // // @ts-ignore\n // console.log({ state, plauerstate: YT.PlayerState });\n // this.currentVideoState = Object.keys(this.PS).find(\n // c => this.PS[c] === state,\n // ) as any;\n // console.log('currentVideoState', this.currentVideoState);\n }\n //#endregion\n\n //#region on ng changes\n ngOnChanges() {\n this.videoIdSignal.set(this.videoId);\n }\n //#endregion\n\n //#region on lock click\n onLockClick(event: MouseEvent) {\n event.stopPropagation();\n this.paddlockClicked.emit();\n }\n //#endregion\n\n //#region on preview click\n onPreviewClick(): void {\n if (this.state === 'preview-picture-locked') {\n return;\n }\n\n this.videoActivated.set(true);\n this.previewClicked.emit();\n }\n //#endregion\n\n //#region play\n play() {\n this.postCommand('playVideo');\n }\n //#endregion\n\n //#region pause\n pause() {\n this.postCommand('pauseVideo');\n }\n //#endregion\n\n //#region private methods\n private postCommand(command: string, args: any[] = []) {\n const iframe = this.iframeRef?.nativeElement;\n if (!iframe) return;\n\n iframe.contentWindow?.postMessage(\n JSON.stringify({\n event: 'command',\n func: command,\n args: args,\n }),\n 'https://www.youtube.com',\n );\n }\n //#endregion\n}\n","<div\n class=\"yt-container\"\n [ngClass]=\"state\"\n [ngStyle]=\"containerStyle\">\n <!-- THUMBNAIL -->\n <div\n *ngIf=\"!videoActivated()\"\n class=\"yt-preview\"\n (click)=\"onPreviewClick()\">\n <!-- @if (isInViewport()) { -->\n <img\n class=\"yt-media\"\n [src]=\"previewImage()\"\n [alt]=\"displayTitle || 'YouTube video'\"\n decoding=\"async\"\n draggable=\"false\"\n (error)=\"onThumbnailError($event)\" />\n <!-- } -->\n\n <!-- PLAY -->\n <div\n *ngIf=\"state !== 'preview-picture-locked'\"\n class=\"yt-play-button\">\n <mat-icon>play_arrow</mat-icon>\n </div>\n\n <!-- LOCK -->\n <div\n *ngIf=\"state === 'preview-picture-locked'\"\n class=\"yt-overlay yt-lock\"\n (click)=\"onLockClick($event)\">\n <mat-icon>lock</mat-icon>\n </div>\n </div>\n\n <!-- ACTUAL YOUTUBE PLAYER -->\n <iframe\n #ytFrame\n *ngIf=\"videoActivated()\"\n class=\"yt-media\"\n [src]=\"embedUrl()\"\n frameborder=\"0\"\n allow=\"autoplay; encrypted-media; picture-in-picture; web-share\"\n allowfullscreen>\n </iframe>\n\n <!-- PRIVATE OVERLAY -->\n <div\n *ngIf=\"\n videoActivated() &&\n state === 'video-preview-private' &&\n allowedToBeDisplayedVideoOveraly()\n \"\n class=\"yt-overlay-video\"\n (contextmenu)=\"onRightClick($event)\"\n (dblclick)=\"clicked($event)\"\n (click)=\"clicked($event)\">\n <h1 class=\"text-center\">\n Thanks for buying<br />\n this video\n </h1>\n </div>\n</div>\n\n<div\n class=\"yt-title\"\n *ngIf=\"displayTitle\">\n {{ displayTitle }}\n</div>\n","// THIS FILE IS GENERATED - DO NOT MODIFY\nimport { CoreModels } from 'tnp-core/browser';\n\n// join interface type here\nimport { EnUsTraslationOverrideSrcLibUiTaonAuthAuthDialogComponentHtml } from './auth-dialog.component.html.en-US.i18n.data';\nimport { PlPlTraslationOverrideSrcLibUiTaonAuthAuthDialogComponentHtml } from './auth-dialog.component.html.pl-PL.i18n.data';\nimport { DeDeTraslationOverrideSrcLibUiTaonAuthAuthDialogComponentHtml } from './auth-dialog.component.html.de-DE.i18n.data';;\nexport type TaonAuthOverride = CoreModels.DeepPartial<EnUsTraslationOverrideSrcLibUiTaonAuthAuthDialogComponentHtml \n| PlPlTraslationOverrideSrcLibUiTaonAuthAuthDialogComponentHtml \n| DeDeTraslationOverrideSrcLibUiTaonAuthAuthDialogComponentHtml>;\n\n // THIS FILE IS GENERATED - DO NOT MODIFY\n ","// THIS FILE IS GENERATED - DO NOT MODIFY\nimport { CoreModels } from 'tnp-core/browser';\n\n// join interface type here\nimport { EnUsTraslationOverrideSrcLibUiTaonKvAuthorizationTaonKvAuthorizationComponentHtml } from './taon-kv-authorization.component.html.en-US.i18n.data';\nimport { PlPlTraslationOverrideSrcLibUiTaonKvAuthorizationTaonKvAuthorizationComponentHtml } from './taon-kv-authorization.component.html.pl-PL.i18n.data';\nimport { DeDeTraslationOverrideSrcLibUiTaonKvAuthorizationTaonKvAuthorizationComponentHtml } from './taon-kv-authorization.component.html.de-DE.i18n.data';\nimport { EnUsTraslationOverrideSrcLibUiTaonKvAuthorizationTaonKvAuthorizationComponentTs } from './taon-kv-authorization.component.ts.en-US.i18n.data';\nimport { PlPlTraslationOverrideSrcLibUiTaonKvAuthorizationTaonKvAuthorizationComponentTs } from './taon-kv-authorization.component.ts.pl-PL.i18n.data';\nimport { DeDeTraslationOverrideSrcLibUiTaonKvAuthorizationTaonKvAuthorizationComponentTs } from './taon-kv-authorization.component.ts.de-DE.i18n.data';;\nexport type TaonKvAuthorizationOverride = CoreModels.DeepPartial<EnUsTraslationOverrideSrcLibUiTaonKvAuthorizationTaonKvAuthorizationComponentHtml \n| PlPlTraslationOverrideSrcLibUiTaonKvAuthorizationTaonKvAuthorizationComponentHtml \n| DeDeTraslationOverrideSrcLibUiTaonKvAuthorizationTaonKvAuthorizationComponentHtml \n| EnUsTraslationOverrideSrcLibUiTaonKvAuthorizationTaonKvAuthorizationComponentTs \n| PlPlTraslationOverrideSrcLibUiTaonKvAuthorizationTaonKvAuthorizationComponentTs \n| DeDeTraslationOverrideSrcLibUiTaonKvAuthorizationTaonKvAuthorizationComponentTs>;\n\n // THIS FILE IS GENERATED - DO NOT MODIFY\n ","// THIS FILE IS GENERATED - DO NOT MODIFY\nimport { CoreModels } from 'tnp-core/browser';\n\n// join interface type here\nimport { EnUsTraslationOverrideSrcLibUiTaonLangSelectorTaonLangSelectorComponentHtml } from './taon-lang-selector.component.html.en-US.i18n.data';\nimport { PlPlTraslationOverrideSrcLibUiTaonLangSelectorTaonLangSelectorComponentHtml } from './taon-lang-selector.component.html.pl-PL.i18n.data';\nimport { DeDeTraslationOverrideSrcLibUiTaonLangSelectorTaonLangSelectorComponentHtml } from './taon-lang-selector.component.html.de-DE.i18n.data';;\nexport type TaonLangSelectorOverride = CoreModels.DeepPartial<EnUsTraslationOverrideSrcLibUiTaonLangSelectorTaonLangSelectorComponentHtml \n| PlPlTraslationOverrideSrcLibUiTaonLangSelectorTaonLangSelectorComponentHtml \n| DeDeTraslationOverrideSrcLibUiTaonLangSelectorTaonLangSelectorComponentHtml>;\n\n // THIS FILE IS GENERATED - DO NOT MODIFY\n ","// THIS FILE IS GENERATED - DO NOT MODIFY\nimport { CoreModels } from 'tnp-core/browser';\n\n// join interface type here\nimport { EnUsTraslationOverrideSrcLibUiTaonSettingsTaonSettingsComponentHtml } from './taon-settings.component.html.en-US.i18n.data';\nimport { PlPlTraslationOverrideSrcLibUiTaonSettingsTaonSettingsComponentHtml } from './taon-settings.component.html.pl-PL.i18n.data';\nimport { DeDeTraslationOverrideSrcLibUiTaonSettingsTaonSettingsComponentHtml } from './taon-settings.component.html.de-DE.i18n.data';;\nexport type TaonSettingsOverride = CoreModels.DeepPartial<EnUsTraslationOverrideSrcLibUiTaonSettingsTaonSettingsComponentHtml \n| PlPlTraslationOverrideSrcLibUiTaonSettingsTaonSettingsComponentHtml \n| DeDeTraslationOverrideSrcLibUiTaonSettingsTaonSettingsComponentHtml>;\n\n // THIS FILE IS GENERATED - DO NOT MODIFY\n ","// THIS FILE IS GENERATED - DO NOT MODIFY\nimport { CoreModels } from 'tnp-core/browser';\n\n// join interface type here\nimport { EnUsTraslationOverrideSrcLibUiTaonStripeBuyButtonTaonStripeBuyButtonComponentTs } from './taon-stripe-buy-button.component.ts.en-US.i18n.data';\nimport { PlPlTraslationOverrideSrcLibUiTaonStripeBuyButtonTaonStripeBuyButtonComponentTs } from './taon-stripe-buy-button.component.ts.pl-PL.i18n.data';\nimport { DeDeTraslationOverrideSrcLibUiTaonStripeBuyButtonTaonStripeBuyButtonComponentTs } from './taon-stripe-buy-button.component.ts.de-DE.i18n.data';;\nexport type TaonStripeBuyButtonOverride = CoreModels.DeepPartial<EnUsTraslationOverrideSrcLibUiTaonStripeBuyButtonTaonStripeBuyButtonComponentTs \n| PlPlTraslationOverrideSrcLibUiTaonStripeBuyButtonTaonStripeBuyButtonComponentTs \n| DeDeTraslationOverrideSrcLibUiTaonStripeBuyButtonTaonStripeBuyButtonComponentTs>;\n\n // THIS FILE IS GENERATED - DO NOT MODIFY\n ","// THIS FILE IS GENERATED - DO NOT MODIFY\nimport { CoreModels } from 'tnp-core/browser';\n\n// join interface type here\nimport { EnUsTraslationOverrideSrcLibUiTaonThemeTaonThemeComponentHtml } from './taon-theme.component.html.en-US.i18n.data';\nimport { PlPlTraslationOverrideSrcLibUiTaonThemeTaonThemeComponentHtml } from './taon-theme.component.html.pl-PL.i18n.data';\nimport { DeDeTraslationOverrideSrcLibUiTaonThemeTaonThemeComponentHtml } from './taon-theme.component.html.de-DE.i18n.data';;\nexport type TaonThemeOverride = CoreModels.DeepPartial<EnUsTraslationOverrideSrcLibUiTaonThemeTaonThemeComponentHtml \n| PlPlTraslationOverrideSrcLibUiTaonThemeTaonThemeComponentHtml \n| DeDeTraslationOverrideSrcLibUiTaonThemeTaonThemeComponentHtml>;\n\n // THIS FILE IS GENERATED - DO NOT MODIFY\n ","// @ts-nocheck\n// This file is auto-generated during init process. Do not modify.\n// This disable this auto generate file.\n// set property \"shouldGenerateAutogenIndexFile: false\" \n// in taon.jsonc of your project. \nexport * from './build-info._auto-generated_'; \nexport * from './my-organization-proj'; \nexport * from './start-cli'; \nexport * from './taon.models'; \nexport * from './layouts/taon-bootstrap-navbar/taon-bootstrap-navbar.component'; // @browser\nexport * from './ui/anonymize-text/anonymize-text.directive'; // @browser\nexport * from './ui/anonymize-text/anonymize-text.models'; \nexport * from './ui/directives/safe.pipe'; // @browser\nexport * from './ui/directives/taon-inject-html.directive'; // @browser\nexport * from './ui/directives/taon-long-press.directive'; // @browser\nexport * from './ui/directives/view-mode'; \nexport * from './ui/taon-auth/auth-button.component'; // @browser\nexport * from './ui/taon-auth/auth-dialog.component'; // @browser\nexport * from './ui/taon-auth/auth.guard'; // @browser\nexport * from './ui/taon-auth/google-auth.service'; // @browser\nexport * from './ui/taon-auth/microsoft-auth.service'; // @browser\nexport * from './ui/taon-auth/session.service'; // @browser\nexport * from './ui/taon-github-fork-me-corner/taon-github-fork-me-corner.component'; // @browser\nexport * from './ui/taon-github-fork-me-corner/taon-github-fork-me-corner.module'; // @browser\nexport * from './ui/taon-github-fork-me-ribbon/taon-github-fork-me-ribbon.component'; // @browser\nexport * from './ui/taon-github-fork-me-ribbon/taon-github-fork-me-ribbon.module'; // @browser\nexport * from './ui/taon-iframe-sync/taon-iframe-sync.component'; // @browser\nexport * from './ui/taon-kv-authorization/taon-kv-authorization.component'; // @browser\nexport * from './ui/taon-kv-authorization/taon-kv-authorization.models'; \nexport * from './ui/taon-lang-selector/taon-lang-selector.component'; // @browser\nexport * from './ui/taon-not-found/taon-not-found.component'; // @browser\nexport * from './ui/taon-progress-bar/taon-progress-bar.component'; // @browser\nexport * from './ui/taon-progress-bar/taon-progress-bar.module'; // @browser\nexport * from './ui/taon-rumble/taon-rumble.component'; // @browser\nexport * from './ui/taon-session-passcode/taon-session-passcode.component'; // @browser\nexport * from './ui/taon-settings/taon-settings.component'; // @browser\nexport * from './ui/taon-settings/taon-settings.models'; \nexport * from './ui/taon-simple-layout/taon-simple-layout.component'; // @browser\nexport * from './ui/taon-simple-layout/taon-simple-layout.model'; \nexport * from './ui/taon-slide-content/taon-slide-content-child.component'; // @browser\nexport * from './ui/taon-slide-content/taon-slide-content.component'; // @browser\nexport * from './ui/taon-slide-content/taon-slide-content.models'; \nexport * from './ui/taon-stripe-buy-button/taon-stripe-buy-button.component'; // @browser\nexport * from './ui/taon-theme/taon-theme.component'; // @browser\nexport * from './ui/taon-theme/taon-theme.service'; // @browser\nexport * from './ui/taon-youtube-video/taon-youtube-video.component'; // @browser\nexport * from './ui/taon-youtube-video/taon-youtube.models'; \nexport * from './ui/taon-youtube-video/taon-youtube.utils'; \nexport * from './ui/taon-auth/i18n/taon-auth.translation'; \nexport * from './ui/taon-kv-authorization/i18n/taon-kv-authorization.translation'; \nexport * from './ui/taon-lang-selector/i18n/taon-lang-selector.translation'; \nexport * from './ui/taon-settings/i18n/taon-settings.translation'; \nexport * from './ui/taon-stripe-buy-button/i18n/taon-stripe-buy-button.translation'; \nexport * from './ui/taon-theme/i18n/taon-theme.translation'; ","export * from './index._auto-generated_';\nexport default {};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","t","i2","i3","i4","i1.SessionService","distinctUntilChanged"],"mappings":"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"}
|