taon-ui 21.0.39 → 21.0.40

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/VERIFIED-BUILD-DATA.jsonc +5 -0
  2. package/browser/fesm2022/taon-ui-browser.mjs +1 -1
  3. package/browser/fesm2022/taon-ui-browser.mjs.map +1 -1
  4. package/browser/package.json +1 -1
  5. package/browser/types/taon-ui-browser.d.ts +1 -1
  6. package/browser-prod/fesm2022/taon-ui-browser-prod.mjs +1 -1
  7. package/browser-prod/fesm2022/taon-ui-browser-prod.mjs.map +1 -1
  8. package/browser-prod/package.json +1 -1
  9. package/browser-prod/types/taon-ui-browser-prod.d.ts +1 -1
  10. package/lib/build-info._auto-generated_.d.ts +1 -1
  11. package/lib/build-info._auto-generated_.js +1 -1
  12. package/lib/layouts/taon-bootstrap-navbar/index.js +2 -2
  13. package/lib/package.json +1 -1
  14. package/lib/ui/directives/index.js +2 -2
  15. package/lib/ui/index.js +2 -2
  16. package/lib/ui/taon-github-fork-me-corner/index.js +2 -2
  17. package/lib/ui/taon-github-fork-me-ribbon/index.js +2 -2
  18. package/lib/ui/taon-iframe-sync/index.js +2 -2
  19. package/lib/ui/taon-progress-bar/index.js +2 -2
  20. package/lib/ui/taon-session-passcode/index.js +2 -2
  21. package/lib/ui/taon-table/index.js +2 -2
  22. package/lib-prod/build-info._auto-generated_.d.ts +1 -1
  23. package/lib-prod/build-info._auto-generated_.js +1 -1
  24. package/lib-prod/layouts/taon-bootstrap-navbar/index.d.ts +1 -1
  25. package/lib-prod/layouts/taon-bootstrap-navbar/index.js +1 -1
  26. package/lib-prod/package.json +1 -1
  27. package/lib-prod/ui/directives/index.d.ts +1 -1
  28. package/lib-prod/ui/directives/index.js +1 -1
  29. package/lib-prod/ui/index.d.ts +1 -1
  30. package/lib-prod/ui/index.js +1 -1
  31. package/lib-prod/ui/taon-github-fork-me-corner/index.d.ts +1 -1
  32. package/lib-prod/ui/taon-github-fork-me-corner/index.js +1 -1
  33. package/lib-prod/ui/taon-github-fork-me-ribbon/index.d.ts +1 -1
  34. package/lib-prod/ui/taon-github-fork-me-ribbon/index.js +1 -1
  35. package/lib-prod/ui/taon-iframe-sync/index.d.ts +1 -1
  36. package/lib-prod/ui/taon-iframe-sync/index.js +1 -1
  37. package/lib-prod/ui/taon-progress-bar/index.d.ts +1 -1
  38. package/lib-prod/ui/taon-progress-bar/index.js +1 -1
  39. package/lib-prod/ui/taon-session-passcode/index.d.ts +1 -1
  40. package/lib-prod/ui/taon-session-passcode/index.js +1 -1
  41. package/lib-prod/ui/taon-table/index.d.ts +1 -1
  42. package/lib-prod/ui/taon-table/index.js +1 -1
  43. package/package.json +1 -1
  44. package/websql/fesm2022/taon-ui-websql.mjs +1 -1
  45. package/websql/fesm2022/taon-ui-websql.mjs.map +1 -1
  46. package/websql/package.json +1 -1
  47. package/websql/types/taon-ui-websql.d.ts +1 -1
  48. package/websql-prod/fesm2022/taon-ui-websql-prod.mjs +1 -1
  49. package/websql-prod/fesm2022/taon-ui-websql-prod.mjs.map +1 -1
  50. package/websql-prod/package.json +1 -1
  51. package/websql-prod/types/taon-ui-websql-prod.d.ts +1 -1
@@ -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/ui/taon-full-material.module.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/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-notifications/taon-notifications.service.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-notifications/taon-notifications.component.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-notifications/taon-notifications.component.html","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-notifications/taon-notifications.models.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-notifications/taon-notifications.module.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-notifications/index.ts","../../../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-progress-bar/index.ts","../../../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-session-passcode/index.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.component.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.component.html","../../../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-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-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-theme/taon-theme.service.ts","../../../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-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-simple-layout/taon-simple-layout.routes.ts","../../../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-table/taon-table.component.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-table/taon-table.component.html","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-table/taon-table.module.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-youtube-video/taon-youtube.utils.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/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.39';\n\n\n\n\n\n// THIS FILE IS GENERATED - DO NOT MODIFY\n ","export function myOrgProj() {}\n","//#region imports\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { CdkStepperModule } from '@angular/cdk/stepper';\nimport { CdkTableModule } from '@angular/cdk/table';\nimport { CdkTreeModule } from '@angular/cdk/tree';\nimport { NgModule } from '@angular/core';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatBadgeModule } from '@angular/material/badge';\nimport { MatBottomSheetModule } from '@angular/material/bottom-sheet';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatNativeDateModule } from '@angular/material/core';\nimport { MatRippleModule } from '@angular/material/core';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatGridListModule } from '@angular/material/grid-list';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatListModule } from '@angular/material/list';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatPaginatorModule } from '@angular/material/paginator';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatSidenavModule } from '@angular/material/sidenav';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { MatSliderModule } from '@angular/material/slider';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { MatSortModule } from '@angular/material/sort';\nimport { MatStepperModule } from '@angular/material/stepper';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatTreeModule } from '@angular/material/tree';\n//#endregion\n\n/**\n * @deprecated too heavy!\n */\n@NgModule({\n exports: [\n A11yModule,\n CdkStepperModule,\n CdkTableModule,\n CdkTreeModule,\n DragDropModule,\n MatAutocompleteModule,\n MatBadgeModule,\n MatBottomSheetModule,\n MatButtonModule,\n MatButtonToggleModule,\n MatCardModule,\n MatCheckboxModule,\n MatChipsModule,\n MatStepperModule,\n MatDatepickerModule,\n MatDialogModule,\n MatDividerModule,\n MatExpansionModule,\n MatGridListModule,\n MatIconModule,\n MatInputModule,\n MatListModule,\n MatMenuModule,\n MatNativeDateModule,\n MatPaginatorModule,\n MatProgressBarModule,\n MatProgressSpinnerModule,\n MatRadioModule,\n MatRippleModule,\n MatSelectModule,\n MatSidenavModule,\n MatSliderModule,\n MatSlideToggleModule,\n MatSnackBarModule,\n MatSortModule,\n MatTableModule,\n MatTabsModule,\n MatToolbarModule,\n MatTooltipModule,\n MatTreeModule,\n ScrollingModule,\n ],\n})\nexport class TaonFullMaterialModule {}","//#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}","<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 />","//#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}","//#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}","//#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}","export enum ViewMode {\n Add = 'Add',\n Edit = 'Edit',\n Preview = 'Preview',\n}","//#region imports\nimport { Injectable } from '@angular/core';\nimport { HotToastService } from '@ngneat/hot-toast';\nimport { _ } from 'tnp-core/browser';\n\nimport {\n TaonNotificationOptions,\n TaonNotificationType,\n} from './taon-notifications.models';\n//#endregion\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TaonNotificationsService {\n constructor(private toast: HotToastService) {}\n\n private options(\n type: TaonNotificationType,\n options: TaonNotificationOptions | string,\n ): TaonNotificationOptions {\n if (_.isString(options)) {\n options = {\n // @ts-ignore\n title: options,\n };\n }\n return options as TaonNotificationOptions;\n }\n\n success(options: TaonNotificationOptions | string) {\n const opt = this.options('success', options);\n return this.toast.success(opt.title);\n }\n\n error(options: TaonNotificationOptions | string) {\n const opt = this.options('error', options);\n return this.toast.error(opt.title);\n }\n\n warn(options: TaonNotificationOptions | string) {\n const opt = this.options('warning', options);\n return this.toast.warning(opt.title);\n }\n\n info(options: TaonNotificationOptions | string) {\n const opt = this.options('info', options);\n return this.toast.info(opt.title);\n }\n}","//#region imports\nimport { Component, OnInit, TemplateRef } from '@angular/core';\nimport { Resource } from 'ng2-rest/browser';\nimport { Subscription } from 'rxjs';\n\nimport { TaonNotificationsService } from './taon-notifications.service';\n//#endregion\n\n@Component({\n selector: 'taon-notifications',\n templateUrl: './taon-notifications.component.html',\n styleUrls: ['./taon-notifications.component.scss'],\n standalone: false,\n})\nexport class TaonNotificationsComponent implements OnInit {\n constructor(private notification: TaonNotificationsService) {}\n\n ngOnInit() {}\n\n init(\n subscribtionsArray: Subscription[],\n template: TemplateRef<any>,\n callback: (dataToTempalte) => any,\n ) {\n subscribtionsArray.push(\n Resource.listenErrors.subscribe(err => {\n this.notification.error(err.msg);\n // subscribtionsArray.push(notify.onTap.subscribe(() => {\n // callback(err);\n // this.modal.open(template);\n // }) as any);\n }) as any,\n );\n }\n}","<!-- <p>\n notyfications works!\n</p> -->","//#region imports\n\nimport { HotToastService } from '@ngneat/hot-toast';\n\nexport class TaonNotificationOptions {\n title: string;\n\n subtitle?: string;\n}\n\nexport type TaonNotificationType = keyof Omit<\n HotToastService,\n 'defaultConfig' | 'observe'\n>;\n//#endregion","//#region imports\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\n\nimport { TaonNotificationsComponent } from './taon-notifications.component';\n\n// import { HotToastModule } from '@ngneat/hot-toast';\n\nimport { TaonNotificationsService } from './taon-notifications.service';\n//#endregion\n\n@NgModule({\n imports: [\n // CommonModule,\n // BrowserAnimationsModule, // required animations module\n // HotToastModule.forRoot({\n // position: 'top-right',\n // }),\n ],\n exports: [TaonNotificationsComponent],\n declarations: [TaonNotificationsComponent],\n providers: [TaonNotificationsService],\n})\nexport class TaonNotificationsModule {}","//#region @browser\nexport * from './taon-notifications.component';\n//#endregion\n\nexport * from './taon-notifications.models';\n\n//#region @browser\nexport * from './taon-notifications.module';\n//#endregion\n\n//#region @browser\nexport * from './taon-notifications.service';\n//#endregion","//#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 axios from 'axios';\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@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}","<!-- <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()\" -->","//#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 {}","//#region @browser\nexport * from './taon-progress-bar.component';\nexport * from './taon-progress-bar.module';\n//#endregion","//#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 // @HostBinding('style.width.px') public width: number;\n // @HostBinding('style.height.px') public height: number;\n @Input() 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 ngOnInit() {\n if (!this.passcode) {\n this.passcode = '123456';\n }\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 // console.log({\n // 'lastPasscode': this.lastPasscode,\n // 'current passcode': this.passcode,\n // 'current message': this.message,\n // })\n // this.width = window.innerWidth;\n // this.height = window.innerHeight;\n this.safeMessage = this.domSanitizer.bypassSecurityTrustHtml(this.message);\n\n if (this.lastPasscode?.toString() === this.passcode?.toString()) {\n this.hide();\n } else {\n this.show();\n this.focus();\n }\n\n interval(1000)\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n tap(() => {\n this.focus();\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}","<form\n [formGroup]=\"form\"\n content=\"notranslate\"\n autocomplete=\"off\"\n (click)=\"focus()\"\n (ngSubmit)=\"submit(form.value)\"\n class=\"flex flex-column align-items-center w-full h-full\">\n <div class=\"flex align-content-center w-full justify-content-center mt-8\">\n <p\n class=\"p-3\"\n style=\"max-width: 400px; min-height: 100px\"\n [innerHtml]=\"safeMessage\"></p>\n </div>\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 <!-- placeholder=\"Enter passcode\" -->\n</form>","//#region @browser\nexport * from './taon-session-passcode.component';\n//#endregion","//#region imports\nimport {\n CdkDrag,\n CdkDragEnd,\n CdkDragMove,\n CdkDragRelease,\n DragDropModule,\n Point,\n} from '@angular/cdk/drag-drop';\nimport {} from '@angular/cdk/drag-drop';\nimport { CommonModule } from '@angular/common';\nimport {\n ChangeDetectorRef,\n Component,\n EventEmitter,\n HostListener,\n Injector,\n Input,\n OnInit,\n Output,\n ViewChild,\n inject,\n AfterViewInit,\n OnDestroy,\n effect,\n signal,\n} from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSidenavModule } from '@angular/material/sidenav';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { NgScrollbarModule } from 'ngx-scrollbar';\nimport { Subject, takeUntil, tap } from 'rxjs';\nimport { StaticColumnsModule } from 'static-columns/browser';\nimport { TaonAdminPanelMode, TaonAdminService, TaonAdminTab } from 'taon/browser';\nimport { TaonStor } from 'taon-storage/browser';\nimport { Helpers, _ } from 'tnp-core/browser';\n\nimport { TaonNotificationsModule } from '../taon-notifications';\nimport { TaonProgressBarModule } from '../taon-progress-bar';\nimport { TaonSessionPasscodeComponent } from '../taon-session-passcode';\n\n//#endregion\n\n@Component({\n //#region component options\n selector: 'taon-admin-mode-configuration',\n templateUrl: './taon-admin-mode-configuration.component.html',\n styleUrls: ['./taon-admin-mode-configuration.component.scss'],\n imports: [\n CommonModule,\n StaticColumnsModule,\n FormsModule,\n NgScrollbarModule,\n TaonProgressBarModule,\n TaonNotificationsModule,\n MatSidenavModule,\n MatButtonModule,\n MatIconModule,\n MatCardModule,\n MatCheckboxModule,\n MatInputModule,\n MatTabsModule,\n ReactiveFormsModule,\n DragDropModule,\n // TaonDbAdminComponent,\n TaonSessionPasscodeComponent,\n ],\n //#endregion\n})\nexport class TaonAdminModeConfigurationComponent\n implements OnInit, AfterViewInit, OnDestroy\n{\n //#region fields & getters\n TaonAdminPanelMode = TaonAdminPanelMode;\n\n $destroy = new Subject();\n\n public readonly cdr = inject(ChangeDetectorRef);\n\n public readonly taonAdminService: TaonAdminService = inject(TaonAdminService);\n\n public isWebSQLMode: boolean = Helpers.getIsWebSQL();\n\n public height: number = 0;\n\n public reloading = signal(false);\n\n @Input() scrollableEnabled = false;\n\n @Input() showPasscode: boolean;\n\n @Input() passcode: string;\n\n @Input() message: string;\n\n public dragPositionX = TaonStor.inLocalstorage(\n {\n defaultValue: 0,\n keyOrPath: 'dragPositionX',\n },\n TaonAdminModeConfigurationComponent,\n );\n\n public dragPositionY = TaonStor.inLocalstorage(\n {\n defaultValue: 0,\n keyOrPath: 'dragPositionY',\n },\n TaonAdminModeConfigurationComponent,\n );\n\n dragPositionZero = { x: 0, y: 0 } as Point;\n\n dragPosition: Point;\n\n public selectedIndex = TaonStor.inLocalstorage(\n {\n defaultValue: 0,\n keyOrPath: 'selectedIndex',\n },\n TaonAdminModeConfigurationComponent,\n );\n\n //#endregion\n\n //#region on init\n async ngOnInit() {\n await TaonStor.awaitAll();\n this.dragPosition = { x: this.dragPositionX(), y: this.dragPositionY() };\n }\n //#endregion\n\n //#region after view init\n ngAfterViewInit(): void {\n //Called after ngAfterContentInit when the component's view has been initialized. Applies to components only.\n //Add 'implements AfterViewInit' to the class.\n setTimeout(() => {\n this.onResize();\n\n // TODO QUICK_FIX for draggble popup proper first index load on tabs\n if (this.taonAdminService.adminPanelMode() !== TaonAdminPanelMode.ICON) {\n this.reloadTabs();\n }\n });\n }\n //#endregion\n\n //#region on destroy\n ngOnDestroy(): void {\n this.$destroy.next(void 0);\n this.$destroy.complete();\n }\n //#endregion\n\n //#region on resize\n @HostListener('window:resize', ['$event'])\n onResize(event?: Event) {\n this.height = window.innerHeight;\n }\n //#endregion\n\n //#region methods\n reloadTabs(): void {\n this.reloading.set(true);\n setTimeout(() => {\n this.reloading.set(false);\n console.log('reloading done');\n });\n }\n\n resetDrag() {\n this.dragPositionX.set(0);\n this.dragPositionY.set(0);\n this.dragPosition = { x: this.dragPositionX(), y: this.dragPositionY() };\n }\n\n moved(c: CdkDragEnd) {\n this.dragPositionX.set(this.dragPositionX() + c.distance.x);\n this.dragPositionY.set(this.dragPositionY() + c.distance.y);\n }\n\n //#endregion\n\n isLink(tab: TaonAdminTab): boolean {\n return typeof tab?.templateOrIframeLink === 'string';\n }\n\n getIfrmeLink(tab: TaonAdminTab): string | undefined {\n if (typeof tab.templateOrIframeLink === 'string') {\n if (tab.templateOrIframeLink?.startsWith('http')) {\n return tab.templateOrIframeLink;\n }\n return `${window.location.origin}${window.location.pathname}${tab.templateOrIframeLink}`;\n }\n }\n}","<!-- #region basic global components -->\n<taon-session-passcode\n *ngIf=\"showPasscode\"\n [passcode]=\"passcode\"\n [message]=\"message\" />\n<!-- <taon-progress-bar [taonAdminService.isDesktop()]=\"taonAdminService.isDesktop()\"></taon-progress-bar> -->\n<!-- <taon-notifications></taon-notifications> -->\n<button\n mat-fab\n class=\"fab-button\"\n color=\"accent\"\n aria-label=\"Taon Admin Mode\"\n *ngIf=\"\n taonAdminService.adminPanelMode() === TaonAdminPanelMode.ICON &&\n taonAdminService.isDesktop() &&\n !taonAdminService.isIframe\n \"\n (click)=\"taonAdminService.adminPanelMode.set(TaonAdminPanelMode.POPUP)\">\n <mat-icon>build</mat-icon>\n</button>\n<!-- #endregion -->\n\n<!-- #region small hidden button -->\n<!-- <button class=\"admin-show-button\"\n *ngIf=\"!taonAdminService.draggablePopupMode && taonAdminService.isDesktop()\"\n (click)=\"toogle()\"> Admin </button> -->\n<!-- #endregion -->\n\n<!-- #region content or content with scrollbar-->\n<ng-template #contentNoScroll>\n <ng-content> </ng-content>\n</ng-template>\n\n<ng-template #content>\n <ng-scrollbar>\n <ng-container [ngTemplateOutlet]=\"contentNoScroll\"></ng-container>\n </ng-scrollbar>\n</ng-template>\n<!-- #endregion-->\n\n<!-- #region admin tabs -->\n<ng-template #adminTabs>\n <!-- #region admin tabs / header -->\n\n <div\n class=\"bg-white taon-header-admin overflow-hidden w-full flex flex-row align-items-center align-content-center justify-content-between\"\n [ngClass]=\"{\n 'block w-full':\n taonAdminService.adminPanelMode() === TaonAdminPanelMode.POPUP,\n }\">\n <img\n class=\"p-2 flex\"\n style=\"height: 45px\"\n src=\"assets/assets-for/taon-ui/assets/shared/logo-header-admin-mode.png\" />\n\n <div class=\"flex flex-row\">\n <button\n style=\"width: 40px\"\n mat-icon-button\n (click)=\"taonAdminService.adminPanelMode.set(TaonAdminPanelMode.NONE)\"\n class=\"\">\n <mat-icon>close</mat-icon>\n </button>\n\n <button\n style=\"width: 40px\"\n mat-icon-button\n (click)=\"taonAdminService.adminPanelMode.set(TaonAdminPanelMode.ICON)\"\n class=\"\">\n <mat-icon>minimize</mat-icon>\n </button>\n\n <button\n *ngIf=\"\n taonAdminService.adminPanelMode() !== TaonAdminPanelMode.FULL_SCREEN\n \"\n mat-icon-button\n (click)=\"\n taonAdminService.adminPanelMode.set(TaonAdminPanelMode.FULL_SCREEN)\n \"\n class=\"\">\n <mat-icon>fullscreen</mat-icon>\n </button>\n\n <button\n style=\"width: 40px\"\n *ngIf=\"\n taonAdminService.adminPanelMode() === TaonAdminPanelMode.FULL_SCREEN\n \"\n mat-icon-button\n (click)=\"taonAdminService.adminPanelMode.set(TaonAdminPanelMode.POPUP)\"\n class=\"\">\n <mat-icon>close_fullscreen</mat-icon>\n </button>\n\n <button\n style=\"width: 40px\"\n *ngIf=\"taonAdminService.adminPanelMode() !== TaonAdminPanelMode.SIDE\"\n mat-icon-button\n (click)=\"taonAdminService.adminPanelMode.set(TaonAdminPanelMode.SIDE)\"\n class=\"\">\n <mat-icon style=\"transform: rotate(180deg)\">login</mat-icon>\n </button>\n\n <button\n style=\"width: 40px\"\n *ngIf=\"\n taonAdminService.adminPanelMode() !== TaonAdminPanelMode.POPUP &&\n taonAdminService.adminPanelMode() !== TaonAdminPanelMode.FULL_SCREEN\n \"\n mat-icon-button\n (click)=\"taonAdminService.adminPanelMode.set(TaonAdminPanelMode.POPUP)\"\n class=\"\">\n <mat-icon>launch</mat-icon>\n </button>\n </div>\n </div>\n <!-- #endregion -->\n\n <div\n class=\"w-full flex flex-row align-items-center\"\n [ngClass]=\"{\n 'block w-full':\n taonAdminService.adminPanelMode() === TaonAdminPanelMode.POPUP,\n }\">\n <div class=\"w-full\">\n <!-- (wheel)=\"scrollTabs($event)\" -->\n <mat-tab-group\n dynamicHeight\n [selectedIndex]=\"selectedIndex()\"\n (selectedIndexChange)=\"selectedIndex.set($event)\">\n <mat-tab label=\"Settings\">\n <section>\n <mat-card>\n <mat-card-header>\n <mat-card-subtitle>WEBSQL MODE</mat-card-subtitle>\n </mat-card-header>\n <mat-card-content>\n <mat-checkbox\n [disabled]=\"!isWebSQLMode\"\n [ngModel]=\"taonAdminService.keepWebsqlDbDataAfterReload()\"\n (change)=\"\n taonAdminService.keepWebsqlDbDataAfterReload.set(\n $event.checked\n )\n \">\n Don't remove data when re-loading\n </mat-checkbox>\n </mat-card-content>\n </mat-card>\n </section>\n <br />\n <taon-db-admin />\n </mat-tab>\n\n @for (\n additonalTab of taonAdminService.additionalTabs();\n track additonalTab.name\n ) {\n <mat-tab [label]=\"additonalTab.name\">\n <section>\n @if (isLink(additonalTab.templateOrIframeLink)) {\n <iframe\n class=\"block w-full\"\n [src]=\"additonalTab.templateOrIframeLink\"\n frameborder=\"0\"\n allowfullscreen>\n </iframe>\n } @else {\n <div class=\"block w-full\">\n <ng-container\n *ngTemplateOutlet=\"\n additonalTab.templateOrIframeLink\n \"></ng-container>\n </div>\n }\n </section>\n <br />\n <taon-db-admin />\n </mat-tab>\n }\n </mat-tab-group>\n </div>\n </div>\n</ng-template>\n<!-- #endregion -->\n\n<!-- #region small/mobile draggable popup windows -->\n<div\n class=\"draggable-popup-mode-window\"\n *ngIf=\"\n taonAdminService.adminPanelMode() === TaonAdminPanelMode.POPUP &&\n !taonAdminService.isIframe &&\n !reloading()\n \"\n cdkDrag\n [cdkDragFreeDragPosition]=\"dragPosition\"\n (cdkDragEnded)=\"moved($event)\">\n <ng-scrollbar>\n <ng-container [ngTemplateOutlet]=\"adminTabs\"></ng-container>\n </ng-scrollbar>\n</div>\n<!-- #endregion -->\n\n<!-- #region fullscreen draggable popup window -->\n<div\n class=\"draggable-popup-mode-window-full\"\n *ngIf=\"\n taonAdminService.adminPanelMode() === TaonAdminPanelMode.FULL_SCREEN &&\n !taonAdminService.isIframe &&\n !reloading()\n \"\n cdkDrag\n [cdkDragFreeDragPosition]=\"dragPositionZero\">\n <ng-container [ngTemplateOutlet]=\"adminTabs\"></ng-container>\n</div>\n<!-- #endregion -->\n\n<!-- #region content in side mode -->\n<!-- <mat-drawer-container (backdropClick)=\"opened = false\" -->\n<!-- [style.height.px]=\"height\" -->\n<mat-drawer-container\n *ngIf=\"\n taonAdminService.adminPanelMode() === TaonAdminPanelMode.SIDE &&\n taonAdminService.isDesktop() &&\n !taonAdminService.isIframe &&\n !reloading()\n \"\n class=\"example-container h-screen\"\n style=\"background-color: transparent\"\n [hasBackdrop]=\"false\">\n <mat-drawer\n #drawer\n style=\"width: 450px\"\n [opened]=\"true\"\n [mode]=\"'side'\">\n <ng-container [ngTemplateOutlet]=\"adminTabs\"></ng-container>\n </mat-drawer>\n <mat-drawer-content style=\"overflow: hidden\">\n <ng-container\n [ngTemplateOutlet]=\"\n scrollableEnabled ? content : contentNoScroll\n \"></ng-container>\n </mat-drawer-content>\n</mat-drawer-container>\n<!-- #endregion -->\n\n<!-- #region content in any other mode than side side mode -->\n<div\n [style.height.px]=\"height\"\n *ngIf=\"\n !(\n taonAdminService.adminPanelMode() === TaonAdminPanelMode.SIDE &&\n taonAdminService.isDesktop() &&\n !taonAdminService.isIframe &&\n !reloading()\n )\n \"\n style=\"width: 100%; display: block\"\n class=\"content\">\n <ng-container\n [ngTemplateOutlet]=\"\n scrollableEnabled ? content : contentNoScroll\n \"></ng-container>\n</div>\n<!-- #endregion -->","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}","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}","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}","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 { PrimeIcons } from 'primeng/api';\nimport { ButtonModule } from 'primeng/button';\nimport { InputTextModule } from 'primeng/inputtext';\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@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 ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './auth-dialog.component.html',\n styleUrl: './auth-dialog.component.scss',\n})\nexport class AuthDialogComponent implements AfterViewInit, OnInit {\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 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}","<div class=\"auth-dialog p-4\">\n <h4 class=\"mb-3\">Login or register</h4>\n\n <div\n class=\"w-full\"\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 ? '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 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 Email is <strong>required</strong>\n </mat-error>\n </mat-form-field>\n </form>\n\n <div class=\"divider\">\n <span>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 >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 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 Cancel\n </button>\n </div>\n</div>","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}","<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>","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}","//#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}","<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>","//#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 {}","//#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}","<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>","//#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 {}","//#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}","import { 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} from '@angular/core';\nimport { TaonStripeCloudflareWorker } from 'tnp-core/browser';\n\nexport interface TaonKvAuthorizationProduct {\n productTitle: string;\n /**\n * ex. YT playlist id\n */\n parentId?: string;\n /**\n * ex. YT id (NOT SAVED INTO AUTHORIZATION DB)\n */\n productId: string;\n /**\n * string with price => real price store in stripe products\n */\n price: string;\n /**\n * example: price_1T8VJBL324234234s36zuh\n */\n stripePriceId?: string; // stripe price\n /**\n * example: prod_U6if12A2S133HNSoQ2r\n * SAVED INTO AUTORIZATION DB\n */\n stripeProductId?: string;\n authorized?: boolean;\n children?: TaonKvAuthorizationProduct[];\n}\n\n@Component({\n selector: 'taon-kv-authorization',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule],\n templateUrl: './taon-kv-authorization.component.html',\n})\nexport class TaonKvAuthorizationComponent implements OnInit {\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}","<div class=\"taon-kv-authorization\">\n <div *ngIf=\"loading()\">Loading authorization info...</div>\n\n <div *ngIf=\"!loading()\">\n <div *ngIf=\"authorizedCount() === 0\">You did not purchase any products</div>\n\n <div *ngIf=\"authorizedCount() > 0\">\n You purchased {{ authorizedCount() }} products\n </div>\n </div>\n</div>\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 {}","<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>","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","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 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(this.TAON_THEME_KEY) 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.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): void {\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}","import { Component, inject } from '@angular/core';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\n\nimport { TaonThemeMode, TaonThemeService } from './taon-theme.service';\n\n@Component({\n selector: 'taon-theme',\n imports: [MatSlideToggleModule],\n templateUrl: './taon-theme.component.html',\n})\nexport class TaonThemeComponent {\n TaonThemeMode = TaonThemeMode;\n\n taonTheme = inject(TaonThemeService);\n}","<div class=\"p-4\">\n <h2>Theme settings</h2>\n\n <mat-slide-toggle\n class=\"p-2\"\n [checked]=\"taonTheme.isAuto()\"\n (change)=\"taonTheme.toogleAuto($event.checked)\">\n 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()\"\n (change)=\"taonTheme.setDark($event.checked)\">\n Dark mode\n </mat-slide-toggle>\n</div>","//#region imports\nimport { AsyncPipe, JsonPipe } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n inject,\n input,\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 { TaonThemeComponent } from '../taon-theme/taon-theme.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 TaonThemeComponent,\n ],\n})\nexport class TaonSimpleLayoutComponent {\n protected router = inject(Router);\n\n protected dialog = inject(MatDialog);\n\n protected theme = inject(TaonThemeService);\n\n navItems = input<TaonSimpleLayoutNavItem[]>();\n\n navigateTo(item: { path: string; label: string }): void {\n this.router.navigateByUrl(item.path);\n }\n\n openDialog(\n enterAnimationDuration: string | number,\n exitAnimationDuration: string | number,\n ): void {\n this.dialog.open(TaonThemeComponent, {\n width: '400px',\n enterAnimationDuration,\n exitAnimationDuration,\n });\n }\n}","<header\n class=\"shadow-1 inline-flex w-full justify-content-end align-items-center flex-row\">\n <div class=\"flex-grow-1 align-items-center justify-content-center flex-row\">\n @if (navItems()?.length > 0) {\n <nav\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\n aria-hidden=\"false\"\n aria-label=\"Example home icon\"\n fontIcon=\"home\"></mat-icon>\n } @else {\n {{ item.label }}\n }\n </a>\n }\n </nav>\n }\n <ng-content select=\"[header]\"></ng-content>\n </div>\n\n <div\n class=\"flex-grow-0 flex align-items-center justify-content-center flex-row\">\n <!-- <taon-theme class=\"right-0\" /> -->\n <ng-content select=\"[buttons]\"></ng-content>\n <button\n class=\"flex mr-2\"\n (click)=\"openDialog(200, 200)\"\n mat-icon-button>\n <mat-icon>settings</mat-icon>\n </button>\n </div>\n</header>\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 <pre>\n <code class=\"surface-100 block\">\n &lt;taon-simple-layout class=&quot;p-4&quot;&gt;\n &lt;header\n header\n class=&quot;flex-item&quot;&gt;\n &lt;img\n class=&quot;border-round&quot;\n src=&quot;assets/assets-for/taon-ui/assets/images/pluszka-logo.png&quot;\n height=&quot;50px&quot; /&gt;\n &lt;/header&gt;\n &lt;br /&gt;\n &lt;h3 class=&quot;text-blue-200&quot;&gt;Welcome to hamster store.&lt;/h3&gt;\n &lt;h3 class=&quot;text-blue-300&quot;&gt;Buy cheap hamster videos for free!&lt;/h3&gt;\n &lt;h3 class=&quot;text-blue-300&quot;&gt;Subscribe more hamsters video daily!&lt;/h3&gt;\n\n &lt;ng-container buttons&gt;\n &lt;button\n mat-button\n class=&quot;flex align-items-center&quot;&gt;\n Hello niga!\n &lt;/button&gt;\n &lt;/ng-container&gt;\n &lt;/taon-simple-layout&gt;\n </code>\n </pre>\n </div>\n</mat-tab-nav-panel>","//#region imports\nimport { Routes } from '@angular/router';\n\nimport { TaonSimpleLayoutComponent } from './taon-simple-layout.component';\n//#endregion\n\nexport const TaonSimpleLayoutRoutes: Routes = [\n {\n path: '',\n component: TaonSimpleLayoutComponent,\n },\n // {\n // path: 'anothermodulepath',\n // loadChildren: () => import('anothermodule')\n // .then(m => m.AnotherLazyModule),\n // },\n];","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { _, TaonStripeCloudflareWorker } from 'tnp-core/browser';\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 {\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 /**\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\n */\n @Input() label = '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}","<button\n type=\"button\"\n matButton=\"filled\"\n (click)=\"buy()\"\n [disabled]=\"loading\">\n <span *ngIf=\"!loading\">\n {{ label }}\n </span>\n\n <span *ngIf=\"loading\"> Redirecting to Stripe... </span>\n</button>\n","//#region imports\nimport {\n Component,\n OnInit,\n Input,\n Output,\n TemplateRef,\n EventEmitter,\n ViewChild,\n ElementRef,\n OnDestroy,\n ChangeDetectorRef,\n inject,\n} from '@angular/core';\nimport { PageEvent } from '@angular/material/paginator';\nimport { MtxGridColumn } from '@ng-matero/extensions/grid';\nimport { Log, Level } from 'ng2-logger/browser';\nimport { getDefaultMappingSingleObjOrClass, getDefaultModel } from 'ng2-rest/browser';\nimport {\n Observable,\n Subscription,\n debounceTime,\n defer,\n distinctUntilChanged,\n fromEvent,\n map,\n share,\n tap,\n} from 'rxjs';\nimport { Symbols as TaonSymbols } from 'taon/browser';\nimport { Taon, TaonBaseCrudController, TaonBaseEntity } from 'taon/browser';\nimport { _ } from 'tnp-core/browser';\nimport { json5 } from 'tnp-core/browser';\nimport { CLASS } from 'typescript-class-helpers/browser';\n//#endregion\n\n//#region constants\nconst log = Log.create(\n 'Table wrapper',\n // levels\n Level.WARN,\n Level.ERROR,\n);\nconst defaultColumns = [\n {\n header: 'ID',\n field: 'id',\n },\n {\n header: 'NAME',\n field: 'name',\n },\n] as MtxGridColumn[];\n//#endregion\n\n@Component({\n //#region component options\n selector: 'taon-table',\n templateUrl: './taon-table.component.html',\n styleUrls: ['./taon-table.component.scss'],\n standalone: false,\n})\nexport class TaonTableComponent implements OnDestroy, OnInit {\n cdr = inject(ChangeDetectorRef);\n\n //#region fields\n @Input() public pageNumber: number = 1;\n\n @Input() public pageSize: number = 5;\n\n @Input() public allowedColumns: string[] = [];\n\n @Input() public expansionTemplate: TemplateRef<any>;\n\n @Input() public rows = _.times(20, id => {\n return {\n id,\n name: `Amazing ${id} row `,\n };\n });\n\n @Input() entityCrudController: TaonBaseCrudController<any>;\n\n @Input() public columns: MtxGridColumn[] = defaultColumns as MtxGridColumn[];\n\n @Input() public pageSizeOptions: number[] = [5, 10, 20];\n\n @Input() public hideSearch: boolean;\n\n @Output() public expansionChange = new EventEmitter();\n\n @Output() public addingItem = new EventEmitter<void>();\n\n @ViewChild('search', { static: true }) search?: ElementRef<HTMLElement>;\n\n private searchInputChange$: Observable<string>;\n\n public expandable: boolean = false;\n\n public showPaginator = true;\n\n public isLoading = false;\n\n public totalElements: number = 100;\n\n private sub: Subscription = new Subscription();\n //#endregion\n\n get entity(): typeof TaonBaseEntity {\n return this.entityCrudController?.entityClassResolveFn();\n }\n\n //#region hooks\n\n //#region hooks / on init\n async ngOnInit() {\n if (!this.hideSearch) {\n this.searchInputChange$ = defer(() =>\n fromEvent<KeyboardEvent>(this.search?.nativeElement as any, 'keyup'),\n ).pipe(\n map(c => c.target['value']),\n debounceTime(500),\n distinctUntilChanged(),\n share(),\n tap(data => {\n console.log({ data });\n }),\n );\n\n this.sub.add(this.searchInputChange$.subscribe());\n }\n\n const entityClass = this.entity;\n if (!!entityClass) {\n this.rows = [];\n }\n this.expandable = !!this.expansionTemplate;\n // this.arrayDataConfig.set.pagination.rowDisplayed(5);\n log.i('this.columns,', this.columns);\n const columnsConfigSameAsDefault = _.isEqual(this.columns, defaultColumns);\n // console.log({\n // columnsConfigSameAsDefault\n // })\n\n if (entityClass && columnsConfigSameAsDefault) {\n const props = Object.keys(getDefaultModel(entityClass as Function));\n log.i('this.crud.entity props', props);\n\n try {\n let columns = props\n .filter(prop =>\n this.allowedColumns.length > 0\n ? this.allowedColumns.includes(prop)\n : true,\n )\n .map(prop => {\n return {\n header: _.upperCase(prop),\n field: prop,\n } as MtxGridColumn;\n });\n\n const extra = this.allowedColumns.filter(f => !props.includes(f));\n columns = [\n ...columns,\n ...extra.map(prop => {\n return {\n header: _.upperCase(prop),\n field: prop,\n } as MtxGridColumn;\n }),\n ];\n\n // console.log({\n // extra\n // });\n\n if (!this.expandable) {\n for (let index = 0; index < columns.length; index++) {\n const col = columns[index];\n delete col.showExpand;\n }\n }\n this.columns = columns;\n } catch (error) {\n console.error(error);\n }\n } else {\n }\n\n if (!this.entity) {\n this.showPaginator = false;\n }\n\n await this.getData();\n }\n //#endregion\n\n //#region hooks / on destroy\n ngOnDestroy(): void {\n this.sub.unsubscribe();\n }\n //#endregion\n\n //#endregion\n\n //#region methods\n\n //#region methods / get next page\n async getNextPage(e: PageEvent) {\n // console.log({\n // e\n // });\n this.pageNumber = e.pageIndex + 1;\n this.pageSize = e.pageSize;\n await this.getData();\n }\n //#endregion\n\n //#region methods / retrive data\n async getData(): Promise<void> {\n if (!this.entity) {\n return;\n }\n this.isLoading = true;\n // console.log('PAGINTION FETCH DATA START!')\n const controller = this.entityCrudController;\n if (controller) {\n const data = await controller.pagination(this.pageNumber, this.pageSize)\n .received;\n\n // console.log('PAGINTION DATA', {\n // data,\n // });\n const totalElements = Number(\n data.headers.get(TaonSymbols.old.X_TOTAL_COUNT),\n );\n const rows = data.body.json;\n // console.log('PAGINTION DATA', {\n // rows,\n // totalElements,\n // });\n this.totalElements = totalElements;\n this.rows = rows.map(d => {\n for (const key in d) {\n if (Object.prototype.hasOwnProperty.call(d, key)) {\n const elem = d[key];\n if (_.isObject(elem)) {\n d[key] = json5.stringify(d[key]);\n }\n }\n }\n // console.log({ d })\n return d;\n });\n }\n this.isLoading = false;\n this.cdr.markForCheck();\n }\n //#endregion\n\n //#region methods / expansion row\n expansionRow(e) {\n this.expansionChange.next(e);\n }\n //#endregion\n\n //#region methods / on table context menu\n onTableContextMenu(e) {\n // if (this.rowHref) {\n // this.router.navigateByUrl(this.rowHref)\n // }\n log.i('context menu event', e);\n }\n //#endregion\n\n //#endregion\n}","<br />\n<columns-container *ngIf=\"!hideSearch\">\n <column grow>\n <mat-form-field class=\"search-input\">\n <input\n matInput\n placeholder=\"Type to search table...\"\n #search />\n </mat-form-field>\n </column>\n <column [width]=\"80\">\n <button\n mat-fab\n [ngClass]=\"{ 'half-opacity': !search.value }\"\n class=\"undo-button\"\n color=\"secondary\"\n (click)=\"search.value = ''\">\n <mat-icon>close </mat-icon>\n </button>\n </column>\n\n <column [width]=\"80\">\n <button\n mat-fab\n (click)=\"addingItem.next()\"\n class=\"undo-button\"\n color=\"primary\">\n <mat-icon>add</mat-icon>\n </button>\n </column>\n</columns-container>\n\n<mtx-grid\n *ngIf=\"rows && columns\"\n [data]=\"rows\"\n [columns]=\"columns\"\n [expandable]=\"expandable\"\n [expansionTemplate]=\"expansionTemplate\"\n (expansionChange)=\"expansionRow($event)\"\n [length]=\"totalElements\"\n\n [pageOnFront]=\"false\"\n [pageIndex]=\"pageNumber - 1\"\n [pageSize]=\"pageSize\"\n [pageSizeOptions]=\"pageSizeOptions\"\n [showPaginator]=\"showPaginator\"\n (page)=\"getNextPage($event)\">\n</mtx-grid>\n\n<!-- [loading]=\"isLoading\" -->","//#region imports\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatButton, MatButtonModule } from '@angular/material/button';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MtxGridModule } from '@ng-matero/extensions/grid';\nimport { StaticColumnsModule } from 'static-columns/browser';\n\nimport { TaonTableComponent } from './taon-table.component';\n//#endregion\n\n@NgModule({\n imports: [\n CommonModule,\n MatSelectModule,\n MtxGridModule,\n MatFormFieldModule,\n MatInputModule,\n StaticColumnsModule,\n MatIconModule,\n MatButtonModule,\n FormsModule,\n ReactiveFormsModule,\n ],\n exports: [TaonTableComponent],\n declarations: [TaonTableComponent],\n})\nexport class TaonTableModule {}","import { 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} from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\n\n// declare global {\n// interface Window {\n// YT: any;\n// onYouTubeIframeAPIReady: () => void;\n// }\n// }\n\nfunction 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\nexport type TaonYoutubeState =\n | 'preview-picture'\n | 'preview-picture-locked'\n | 'video-preview-open'\n | 'video-preview-private';\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 implements OnChanges, AfterViewInit {\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 @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 cdr = inject(ChangeDetectorRef);\n allowedToBeDisplayedVideoOveraly = signal(true);\n\n onRightClick(event) {\n // console.log(event);\n event.preventDefault();\n event.stopPropagation();\n }\n\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\n restart() {\n this.postCommand('seekTo', [0, true]); // go to 0 seconds\n this.postCommand('playVideo');\n }\n\n // @ViewChild('playerContainer') playerContainer!: ElementRef;\n\n private player!: any;\n\n async ngAfterViewInit() {\n if (this.state !== 'video-preview-private') {\n return;\n }\n await 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\n private handleStateChange(state: number) {\n // @ts-ignore\n // const YT = window.YT;\n\n // // @ts-ignore\n // console.log({ state, plauerstate: YT.PlayerState });\n\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\n private videoIdSignal = signal<string>('');\n\n constructor(private sanitizer: DomSanitizer) {\n effect(() => {});\n }\n\n ngOnChanges() {\n this.videoIdSignal.set(this.videoId);\n }\n\n previewImage = computed(\n () => `https://img.youtube.com/vi/${this.videoIdSignal()}/0.jpg`,\n );\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()}?enablejsapi=1` +\n // (this.state === 'video-preview-private' ? `&controls=0` : '') +\n (this.state === 'video-preview-private' ? `&modestbranding=1` : '') +\n (this.state === 'video-preview-private' ? `&rel=0` : '') +\n // (this.state === 'video-preview-private' ? `&fs=0` : '') +\n // (this.state === 'video-preview-private' ? `&rel=0` : '') +\n `&disablekb=1` +\n `&playsinline=1` +\n `&origin=${window.location.origin}`,\n ),\n );\n\n get containerStyle() {\n return this.height ? { height: this.height } : null;\n }\n\n get displayTitle() {\n return this.title;\n }\n\n onLockClick(event: MouseEvent) {\n event.stopPropagation();\n this.paddlockClicked.emit();\n }\n\n onPreviewClick() {\n this.previewClicked.emit();\n }\n\n // private postCommand(command: string) {\n // this.iframeRef?.nativeElement.contentWindow?.postMessage(\n // JSON.stringify({\n // event: 'command',\n // func: command,\n // args: [],\n // }),\n // '*',\n // );\n // }\n\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\n play() {\n this.postCommand('playVideo');\n }\n\n pause() {\n this.postCommand('pauseVideo');\n }\n}","<div\n class=\"yt-container\"\n [ngClass]=\"state\"\n [ngStyle]=\"containerStyle\">\n <!-- PREVIEW IMAGE -->\n <img\n *ngIf=\"state === 'preview-picture' || state === 'preview-picture-locked'\"\n class=\"yt-media\"\n [src]=\"previewImage()\"\n [alt]=\"displayTitle\"\n (click)=\"onPreviewClick()\" />\n\n <!-- VIDEO -->\n <iframe\n #ytFrame\n *ngIf=\"state === 'video-preview-open' || state === 'video-preview-private'\"\n class=\"yt-media\"\n [src]=\"embedUrl()\"\n frameborder=\"0\"\n allowfullscreen>\n </iframe>\n\n <!-- PRIVATE OVERLAY -->\n <div\n (contextmenu)=\"onRightClick($event)\"\n (dblclick)=\"clicked($event)\"\n *ngIf=\"\n state === 'video-preview-private' && allowedToBeDisplayedVideoOveraly()\n \"\n (click)=\"clicked($event)\"\n class=\"yt-overlay-video\">\n <h1 class=\"text-center\" >Thanks for buying <br>this video</h1>\n </div>\n\n <!-- LOCK OVERLAY -->\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<!-- CONTROLS BELOW VIDEO -->\n<!-- <div\n *ngIf=\"state === 'video-preview-private'\"\n class=\"yt-controls\">\n <button\n mat-icon-button\n (click)=\"play()\">\n <mat-icon>play_arrow</mat-icon>\n </button>\n\n <button\n mat-icon-button\n (click)=\"pause()\">\n <mat-icon>pause</mat-icon>\n </button>\n\n <button\n mat-icon-button\n (click)=\"restart()\">\n <mat-icon>replay</mat-icon>\n </button>\n</div> -->\n<div class=\"w-full mb-1\"></div>\n<div\n class=\"yt-title\"\n *ngIf=\"displayTitle\">\n {{ displayTitle }}\n</div>","export namespace TaonYouTubeUtils {\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}","// @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 './taon.models'; \nexport * from './ui/taon-full-material.module'; // @browser\nexport * from './ui/taon.models'; \nexport * from './layouts/taon-bootstrap-navbar/taon-bootstrap-navbar.component'; // @browser\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-admin-mode-configuration/taon-admin-mode-configuration.component'; // @browser\nexport * from './ui/taon-admin-mode-configuration/taon-admin.models'; \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-not-found/taon-not-found.component'; // @browser\nexport * from './ui/taon-notifications/taon-notifications.component'; // @browser\nexport * from './ui/taon-notifications/taon-notifications.models'; \nexport * from './ui/taon-notifications/taon-notifications.module'; // @browser\nexport * from './ui/taon-notifications/taon-notifications.service'; // @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-simple-layout/taon-simple-layout.component'; // @browser\nexport * from './ui/taon-simple-layout/taon-simple-layout.model'; \nexport * from './ui/taon-simple-layout/taon-simple-layout.routes'; // @browser\nexport * from './ui/taon-stripe-buy-button/taon-stripe-buy-button.component'; // @browser\nexport * from './ui/taon-table/taon-table.component'; // @browser\nexport * from './ui/taon-table/taon-table.module'; // @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.utils'; ","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","log","i1.TaonNotificationsService","i2","i5","i9","i3","i4","i6","i1.SessionService","distinctUntilChanged","TaonSymbols"],"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/ui/taon-full-material.module.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/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-notifications/taon-notifications.service.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-notifications/taon-notifications.component.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-notifications/taon-notifications.component.html","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-notifications/taon-notifications.models.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-notifications/taon-notifications.module.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-notifications/index.ts","../../../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-progress-bar/index.ts","../../../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-session-passcode/index.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.component.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.component.html","../../../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-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-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-theme/taon-theme.service.ts","../../../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-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-simple-layout/taon-simple-layout.routes.ts","../../../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-table/taon-table.component.ts","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-table/taon-table.component.html","../../../tmp-libs-for-dist/taon-ui/projects/taon-ui/src/lib/ui/taon-table/taon-table.module.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-youtube-video/taon-youtube.utils.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/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.40';\n\n\n\n\n\n// THIS FILE IS GENERATED - DO NOT MODIFY\n ","export function myOrgProj() {}\n","//#region imports\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { CdkStepperModule } from '@angular/cdk/stepper';\nimport { CdkTableModule } from '@angular/cdk/table';\nimport { CdkTreeModule } from '@angular/cdk/tree';\nimport { NgModule } from '@angular/core';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatBadgeModule } from '@angular/material/badge';\nimport { MatBottomSheetModule } from '@angular/material/bottom-sheet';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatNativeDateModule } from '@angular/material/core';\nimport { MatRippleModule } from '@angular/material/core';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatGridListModule } from '@angular/material/grid-list';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatListModule } from '@angular/material/list';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatPaginatorModule } from '@angular/material/paginator';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatSidenavModule } from '@angular/material/sidenav';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { MatSliderModule } from '@angular/material/slider';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { MatSortModule } from '@angular/material/sort';\nimport { MatStepperModule } from '@angular/material/stepper';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatTreeModule } from '@angular/material/tree';\n//#endregion\n\n/**\n * @deprecated too heavy!\n */\n@NgModule({\n exports: [\n A11yModule,\n CdkStepperModule,\n CdkTableModule,\n CdkTreeModule,\n DragDropModule,\n MatAutocompleteModule,\n MatBadgeModule,\n MatBottomSheetModule,\n MatButtonModule,\n MatButtonToggleModule,\n MatCardModule,\n MatCheckboxModule,\n MatChipsModule,\n MatStepperModule,\n MatDatepickerModule,\n MatDialogModule,\n MatDividerModule,\n MatExpansionModule,\n MatGridListModule,\n MatIconModule,\n MatInputModule,\n MatListModule,\n MatMenuModule,\n MatNativeDateModule,\n MatPaginatorModule,\n MatProgressBarModule,\n MatProgressSpinnerModule,\n MatRadioModule,\n MatRippleModule,\n MatSelectModule,\n MatSidenavModule,\n MatSliderModule,\n MatSlideToggleModule,\n MatSnackBarModule,\n MatSortModule,\n MatTableModule,\n MatTabsModule,\n MatToolbarModule,\n MatTooltipModule,\n MatTreeModule,\n ScrollingModule,\n ],\n})\nexport class TaonFullMaterialModule {}","//#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}","<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 />","//#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}","//#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}","//#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}","export enum ViewMode {\n Add = 'Add',\n Edit = 'Edit',\n Preview = 'Preview',\n}","//#region imports\nimport { Injectable } from '@angular/core';\nimport { HotToastService } from '@ngneat/hot-toast';\nimport { _ } from 'tnp-core/browser';\n\nimport {\n TaonNotificationOptions,\n TaonNotificationType,\n} from './taon-notifications.models';\n//#endregion\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TaonNotificationsService {\n constructor(private toast: HotToastService) {}\n\n private options(\n type: TaonNotificationType,\n options: TaonNotificationOptions | string,\n ): TaonNotificationOptions {\n if (_.isString(options)) {\n options = {\n // @ts-ignore\n title: options,\n };\n }\n return options as TaonNotificationOptions;\n }\n\n success(options: TaonNotificationOptions | string) {\n const opt = this.options('success', options);\n return this.toast.success(opt.title);\n }\n\n error(options: TaonNotificationOptions | string) {\n const opt = this.options('error', options);\n return this.toast.error(opt.title);\n }\n\n warn(options: TaonNotificationOptions | string) {\n const opt = this.options('warning', options);\n return this.toast.warning(opt.title);\n }\n\n info(options: TaonNotificationOptions | string) {\n const opt = this.options('info', options);\n return this.toast.info(opt.title);\n }\n}","//#region imports\nimport { Component, OnInit, TemplateRef } from '@angular/core';\nimport { Resource } from 'ng2-rest/browser';\nimport { Subscription } from 'rxjs';\n\nimport { TaonNotificationsService } from './taon-notifications.service';\n//#endregion\n\n@Component({\n selector: 'taon-notifications',\n templateUrl: './taon-notifications.component.html',\n styleUrls: ['./taon-notifications.component.scss'],\n standalone: false,\n})\nexport class TaonNotificationsComponent implements OnInit {\n constructor(private notification: TaonNotificationsService) {}\n\n ngOnInit() {}\n\n init(\n subscribtionsArray: Subscription[],\n template: TemplateRef<any>,\n callback: (dataToTempalte) => any,\n ) {\n subscribtionsArray.push(\n Resource.listenErrors.subscribe(err => {\n this.notification.error(err.msg);\n // subscribtionsArray.push(notify.onTap.subscribe(() => {\n // callback(err);\n // this.modal.open(template);\n // }) as any);\n }) as any,\n );\n }\n}","<!-- <p>\n notyfications works!\n</p> -->","//#region imports\n\nimport { HotToastService } from '@ngneat/hot-toast';\n\nexport class TaonNotificationOptions {\n title: string;\n\n subtitle?: string;\n}\n\nexport type TaonNotificationType = keyof Omit<\n HotToastService,\n 'defaultConfig' | 'observe'\n>;\n//#endregion","//#region imports\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\n\nimport { TaonNotificationsComponent } from './taon-notifications.component';\n\n// import { HotToastModule } from '@ngneat/hot-toast';\n\nimport { TaonNotificationsService } from './taon-notifications.service';\n//#endregion\n\n@NgModule({\n imports: [\n // CommonModule,\n // BrowserAnimationsModule, // required animations module\n // HotToastModule.forRoot({\n // position: 'top-right',\n // }),\n ],\n exports: [TaonNotificationsComponent],\n declarations: [TaonNotificationsComponent],\n providers: [TaonNotificationsService],\n})\nexport class TaonNotificationsModule {}","//#region @browser\nexport * from './taon-notifications.component';\n//#endregion\n\nexport * from './taon-notifications.models';\n\n//#region @browser\nexport * from './taon-notifications.module';\n//#endregion\n\n//#region @browser\nexport * from './taon-notifications.service';\n//#endregion","//#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 axios from 'axios';\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@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}","<!-- <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()\" -->","//#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 {}","//#region @browser\nexport * from './taon-progress-bar.component';\nexport * from './taon-progress-bar.module';\n//#endregion","//#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 // @HostBinding('style.width.px') public width: number;\n // @HostBinding('style.height.px') public height: number;\n @Input() 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 ngOnInit() {\n if (!this.passcode) {\n this.passcode = '123456';\n }\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 // console.log({\n // 'lastPasscode': this.lastPasscode,\n // 'current passcode': this.passcode,\n // 'current message': this.message,\n // })\n // this.width = window.innerWidth;\n // this.height = window.innerHeight;\n this.safeMessage = this.domSanitizer.bypassSecurityTrustHtml(this.message);\n\n if (this.lastPasscode?.toString() === this.passcode?.toString()) {\n this.hide();\n } else {\n this.show();\n this.focus();\n }\n\n interval(1000)\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n tap(() => {\n this.focus();\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}","<form\n [formGroup]=\"form\"\n content=\"notranslate\"\n autocomplete=\"off\"\n (click)=\"focus()\"\n (ngSubmit)=\"submit(form.value)\"\n class=\"flex flex-column align-items-center w-full h-full\">\n <div class=\"flex align-content-center w-full justify-content-center mt-8\">\n <p\n class=\"p-3\"\n style=\"max-width: 400px; min-height: 100px\"\n [innerHtml]=\"safeMessage\"></p>\n </div>\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 <!-- placeholder=\"Enter passcode\" -->\n</form>","//#region @browser\nexport * from './taon-session-passcode.component';\n//#endregion","//#region imports\nimport {\n CdkDrag,\n CdkDragEnd,\n CdkDragMove,\n CdkDragRelease,\n DragDropModule,\n Point,\n} from '@angular/cdk/drag-drop';\nimport {} from '@angular/cdk/drag-drop';\nimport { CommonModule } from '@angular/common';\nimport {\n ChangeDetectorRef,\n Component,\n EventEmitter,\n HostListener,\n Injector,\n Input,\n OnInit,\n Output,\n ViewChild,\n inject,\n AfterViewInit,\n OnDestroy,\n effect,\n signal,\n} from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSidenavModule } from '@angular/material/sidenav';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { NgScrollbarModule } from 'ngx-scrollbar';\nimport { Subject, takeUntil, tap } from 'rxjs';\nimport { StaticColumnsModule } from 'static-columns/browser';\nimport { TaonAdminPanelMode, TaonAdminService, TaonAdminTab } from 'taon/browser';\nimport { TaonStor } from 'taon-storage/browser';\nimport { Helpers, _ } from 'tnp-core/browser';\n\nimport { TaonNotificationsModule } from '../taon-notifications';\nimport { TaonProgressBarModule } from '../taon-progress-bar';\nimport { TaonSessionPasscodeComponent } from '../taon-session-passcode';\n\n//#endregion\n\n@Component({\n //#region component options\n selector: 'taon-admin-mode-configuration',\n templateUrl: './taon-admin-mode-configuration.component.html',\n styleUrls: ['./taon-admin-mode-configuration.component.scss'],\n imports: [\n CommonModule,\n StaticColumnsModule,\n FormsModule,\n NgScrollbarModule,\n TaonProgressBarModule,\n TaonNotificationsModule,\n MatSidenavModule,\n MatButtonModule,\n MatIconModule,\n MatCardModule,\n MatCheckboxModule,\n MatInputModule,\n MatTabsModule,\n ReactiveFormsModule,\n DragDropModule,\n // TaonDbAdminComponent,\n TaonSessionPasscodeComponent,\n ],\n //#endregion\n})\nexport class TaonAdminModeConfigurationComponent\n implements OnInit, AfterViewInit, OnDestroy\n{\n //#region fields & getters\n TaonAdminPanelMode = TaonAdminPanelMode;\n\n $destroy = new Subject();\n\n public readonly cdr = inject(ChangeDetectorRef);\n\n public readonly taonAdminService: TaonAdminService = inject(TaonAdminService);\n\n public isWebSQLMode: boolean = Helpers.getIsWebSQL();\n\n public height: number = 0;\n\n public reloading = signal(false);\n\n @Input() scrollableEnabled = false;\n\n @Input() showPasscode: boolean;\n\n @Input() passcode: string;\n\n @Input() message: string;\n\n public dragPositionX = TaonStor.inLocalstorage(\n {\n defaultValue: 0,\n keyOrPath: 'dragPositionX',\n },\n TaonAdminModeConfigurationComponent,\n );\n\n public dragPositionY = TaonStor.inLocalstorage(\n {\n defaultValue: 0,\n keyOrPath: 'dragPositionY',\n },\n TaonAdminModeConfigurationComponent,\n );\n\n dragPositionZero = { x: 0, y: 0 } as Point;\n\n dragPosition: Point;\n\n public selectedIndex = TaonStor.inLocalstorage(\n {\n defaultValue: 0,\n keyOrPath: 'selectedIndex',\n },\n TaonAdminModeConfigurationComponent,\n );\n\n //#endregion\n\n //#region on init\n async ngOnInit() {\n await TaonStor.awaitAll();\n this.dragPosition = { x: this.dragPositionX(), y: this.dragPositionY() };\n }\n //#endregion\n\n //#region after view init\n ngAfterViewInit(): void {\n //Called after ngAfterContentInit when the component's view has been initialized. Applies to components only.\n //Add 'implements AfterViewInit' to the class.\n setTimeout(() => {\n this.onResize();\n\n // TODO QUICK_FIX for draggble popup proper first index load on tabs\n if (this.taonAdminService.adminPanelMode() !== TaonAdminPanelMode.ICON) {\n this.reloadTabs();\n }\n });\n }\n //#endregion\n\n //#region on destroy\n ngOnDestroy(): void {\n this.$destroy.next(void 0);\n this.$destroy.complete();\n }\n //#endregion\n\n //#region on resize\n @HostListener('window:resize', ['$event'])\n onResize(event?: Event) {\n this.height = window.innerHeight;\n }\n //#endregion\n\n //#region methods\n reloadTabs(): void {\n this.reloading.set(true);\n setTimeout(() => {\n this.reloading.set(false);\n console.log('reloading done');\n });\n }\n\n resetDrag() {\n this.dragPositionX.set(0);\n this.dragPositionY.set(0);\n this.dragPosition = { x: this.dragPositionX(), y: this.dragPositionY() };\n }\n\n moved(c: CdkDragEnd) {\n this.dragPositionX.set(this.dragPositionX() + c.distance.x);\n this.dragPositionY.set(this.dragPositionY() + c.distance.y);\n }\n\n //#endregion\n\n isLink(tab: TaonAdminTab): boolean {\n return typeof tab?.templateOrIframeLink === 'string';\n }\n\n getIfrmeLink(tab: TaonAdminTab): string | undefined {\n if (typeof tab.templateOrIframeLink === 'string') {\n if (tab.templateOrIframeLink?.startsWith('http')) {\n return tab.templateOrIframeLink;\n }\n return `${window.location.origin}${window.location.pathname}${tab.templateOrIframeLink}`;\n }\n }\n}","<!-- #region basic global components -->\n<taon-session-passcode\n *ngIf=\"showPasscode\"\n [passcode]=\"passcode\"\n [message]=\"message\" />\n<!-- <taon-progress-bar [taonAdminService.isDesktop()]=\"taonAdminService.isDesktop()\"></taon-progress-bar> -->\n<!-- <taon-notifications></taon-notifications> -->\n<button\n mat-fab\n class=\"fab-button\"\n color=\"accent\"\n aria-label=\"Taon Admin Mode\"\n *ngIf=\"\n taonAdminService.adminPanelMode() === TaonAdminPanelMode.ICON &&\n taonAdminService.isDesktop() &&\n !taonAdminService.isIframe\n \"\n (click)=\"taonAdminService.adminPanelMode.set(TaonAdminPanelMode.POPUP)\">\n <mat-icon>build</mat-icon>\n</button>\n<!-- #endregion -->\n\n<!-- #region small hidden button -->\n<!-- <button class=\"admin-show-button\"\n *ngIf=\"!taonAdminService.draggablePopupMode && taonAdminService.isDesktop()\"\n (click)=\"toogle()\"> Admin </button> -->\n<!-- #endregion -->\n\n<!-- #region content or content with scrollbar-->\n<ng-template #contentNoScroll>\n <ng-content> </ng-content>\n</ng-template>\n\n<ng-template #content>\n <ng-scrollbar>\n <ng-container [ngTemplateOutlet]=\"contentNoScroll\"></ng-container>\n </ng-scrollbar>\n</ng-template>\n<!-- #endregion-->\n\n<!-- #region admin tabs -->\n<ng-template #adminTabs>\n <!-- #region admin tabs / header -->\n\n <div\n class=\"bg-white taon-header-admin overflow-hidden w-full flex flex-row align-items-center align-content-center justify-content-between\"\n [ngClass]=\"{\n 'block w-full':\n taonAdminService.adminPanelMode() === TaonAdminPanelMode.POPUP,\n }\">\n <img\n class=\"p-2 flex\"\n style=\"height: 45px\"\n src=\"assets/assets-for/taon-ui/assets/shared/logo-header-admin-mode.png\" />\n\n <div class=\"flex flex-row\">\n <button\n style=\"width: 40px\"\n mat-icon-button\n (click)=\"taonAdminService.adminPanelMode.set(TaonAdminPanelMode.NONE)\"\n class=\"\">\n <mat-icon>close</mat-icon>\n </button>\n\n <button\n style=\"width: 40px\"\n mat-icon-button\n (click)=\"taonAdminService.adminPanelMode.set(TaonAdminPanelMode.ICON)\"\n class=\"\">\n <mat-icon>minimize</mat-icon>\n </button>\n\n <button\n *ngIf=\"\n taonAdminService.adminPanelMode() !== TaonAdminPanelMode.FULL_SCREEN\n \"\n mat-icon-button\n (click)=\"\n taonAdminService.adminPanelMode.set(TaonAdminPanelMode.FULL_SCREEN)\n \"\n class=\"\">\n <mat-icon>fullscreen</mat-icon>\n </button>\n\n <button\n style=\"width: 40px\"\n *ngIf=\"\n taonAdminService.adminPanelMode() === TaonAdminPanelMode.FULL_SCREEN\n \"\n mat-icon-button\n (click)=\"taonAdminService.adminPanelMode.set(TaonAdminPanelMode.POPUP)\"\n class=\"\">\n <mat-icon>close_fullscreen</mat-icon>\n </button>\n\n <button\n style=\"width: 40px\"\n *ngIf=\"taonAdminService.adminPanelMode() !== TaonAdminPanelMode.SIDE\"\n mat-icon-button\n (click)=\"taonAdminService.adminPanelMode.set(TaonAdminPanelMode.SIDE)\"\n class=\"\">\n <mat-icon style=\"transform: rotate(180deg)\">login</mat-icon>\n </button>\n\n <button\n style=\"width: 40px\"\n *ngIf=\"\n taonAdminService.adminPanelMode() !== TaonAdminPanelMode.POPUP &&\n taonAdminService.adminPanelMode() !== TaonAdminPanelMode.FULL_SCREEN\n \"\n mat-icon-button\n (click)=\"taonAdminService.adminPanelMode.set(TaonAdminPanelMode.POPUP)\"\n class=\"\">\n <mat-icon>launch</mat-icon>\n </button>\n </div>\n </div>\n <!-- #endregion -->\n\n <div\n class=\"w-full flex flex-row align-items-center\"\n [ngClass]=\"{\n 'block w-full':\n taonAdminService.adminPanelMode() === TaonAdminPanelMode.POPUP,\n }\">\n <div class=\"w-full\">\n <!-- (wheel)=\"scrollTabs($event)\" -->\n <mat-tab-group\n dynamicHeight\n [selectedIndex]=\"selectedIndex()\"\n (selectedIndexChange)=\"selectedIndex.set($event)\">\n <mat-tab label=\"Settings\">\n <section>\n <mat-card>\n <mat-card-header>\n <mat-card-subtitle>WEBSQL MODE</mat-card-subtitle>\n </mat-card-header>\n <mat-card-content>\n <mat-checkbox\n [disabled]=\"!isWebSQLMode\"\n [ngModel]=\"taonAdminService.keepWebsqlDbDataAfterReload()\"\n (change)=\"\n taonAdminService.keepWebsqlDbDataAfterReload.set(\n $event.checked\n )\n \">\n Don't remove data when re-loading\n </mat-checkbox>\n </mat-card-content>\n </mat-card>\n </section>\n <br />\n <taon-db-admin />\n </mat-tab>\n\n @for (\n additonalTab of taonAdminService.additionalTabs();\n track additonalTab.name\n ) {\n <mat-tab [label]=\"additonalTab.name\">\n <section>\n @if (isLink(additonalTab.templateOrIframeLink)) {\n <iframe\n class=\"block w-full\"\n [src]=\"additonalTab.templateOrIframeLink\"\n frameborder=\"0\"\n allowfullscreen>\n </iframe>\n } @else {\n <div class=\"block w-full\">\n <ng-container\n *ngTemplateOutlet=\"\n additonalTab.templateOrIframeLink\n \"></ng-container>\n </div>\n }\n </section>\n <br />\n <taon-db-admin />\n </mat-tab>\n }\n </mat-tab-group>\n </div>\n </div>\n</ng-template>\n<!-- #endregion -->\n\n<!-- #region small/mobile draggable popup windows -->\n<div\n class=\"draggable-popup-mode-window\"\n *ngIf=\"\n taonAdminService.adminPanelMode() === TaonAdminPanelMode.POPUP &&\n !taonAdminService.isIframe &&\n !reloading()\n \"\n cdkDrag\n [cdkDragFreeDragPosition]=\"dragPosition\"\n (cdkDragEnded)=\"moved($event)\">\n <ng-scrollbar>\n <ng-container [ngTemplateOutlet]=\"adminTabs\"></ng-container>\n </ng-scrollbar>\n</div>\n<!-- #endregion -->\n\n<!-- #region fullscreen draggable popup window -->\n<div\n class=\"draggable-popup-mode-window-full\"\n *ngIf=\"\n taonAdminService.adminPanelMode() === TaonAdminPanelMode.FULL_SCREEN &&\n !taonAdminService.isIframe &&\n !reloading()\n \"\n cdkDrag\n [cdkDragFreeDragPosition]=\"dragPositionZero\">\n <ng-container [ngTemplateOutlet]=\"adminTabs\"></ng-container>\n</div>\n<!-- #endregion -->\n\n<!-- #region content in side mode -->\n<!-- <mat-drawer-container (backdropClick)=\"opened = false\" -->\n<!-- [style.height.px]=\"height\" -->\n<mat-drawer-container\n *ngIf=\"\n taonAdminService.adminPanelMode() === TaonAdminPanelMode.SIDE &&\n taonAdminService.isDesktop() &&\n !taonAdminService.isIframe &&\n !reloading()\n \"\n class=\"example-container h-screen\"\n style=\"background-color: transparent\"\n [hasBackdrop]=\"false\">\n <mat-drawer\n #drawer\n style=\"width: 450px\"\n [opened]=\"true\"\n [mode]=\"'side'\">\n <ng-container [ngTemplateOutlet]=\"adminTabs\"></ng-container>\n </mat-drawer>\n <mat-drawer-content style=\"overflow: hidden\">\n <ng-container\n [ngTemplateOutlet]=\"\n scrollableEnabled ? content : contentNoScroll\n \"></ng-container>\n </mat-drawer-content>\n</mat-drawer-container>\n<!-- #endregion -->\n\n<!-- #region content in any other mode than side side mode -->\n<div\n [style.height.px]=\"height\"\n *ngIf=\"\n !(\n taonAdminService.adminPanelMode() === TaonAdminPanelMode.SIDE &&\n taonAdminService.isDesktop() &&\n !taonAdminService.isIframe &&\n !reloading()\n )\n \"\n style=\"width: 100%; display: block\"\n class=\"content\">\n <ng-container\n [ngTemplateOutlet]=\"\n scrollableEnabled ? content : contentNoScroll\n \"></ng-container>\n</div>\n<!-- #endregion -->","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}","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}","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}","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 { PrimeIcons } from 'primeng/api';\nimport { ButtonModule } from 'primeng/button';\nimport { InputTextModule } from 'primeng/inputtext';\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@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 ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './auth-dialog.component.html',\n styleUrl: './auth-dialog.component.scss',\n})\nexport class AuthDialogComponent implements AfterViewInit, OnInit {\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 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}","<div class=\"auth-dialog p-4\">\n <h4 class=\"mb-3\">Login or register</h4>\n\n <div\n class=\"w-full\"\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 ? '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 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 Email is <strong>required</strong>\n </mat-error>\n </mat-form-field>\n </form>\n\n <div class=\"divider\">\n <span>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 >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 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 Cancel\n </button>\n </div>\n</div>","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}","<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>","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}","//#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}","<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>","//#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 {}","//#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}","<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>","//#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 {}","//#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}","import { 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} from '@angular/core';\nimport { TaonStripeCloudflareWorker } from 'tnp-core/browser';\n\nexport interface TaonKvAuthorizationProduct {\n productTitle: string;\n /**\n * ex. YT playlist id\n */\n parentId?: string;\n /**\n * ex. YT id (NOT SAVED INTO AUTHORIZATION DB)\n */\n productId: string;\n /**\n * string with price => real price store in stripe products\n */\n price: string;\n /**\n * example: price_1T8VJBL324234234s36zuh\n */\n stripePriceId?: string; // stripe price\n /**\n * example: prod_U6if12A2S133HNSoQ2r\n * SAVED INTO AUTORIZATION DB\n */\n stripeProductId?: string;\n authorized?: boolean;\n children?: TaonKvAuthorizationProduct[];\n}\n\n@Component({\n selector: 'taon-kv-authorization',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule],\n templateUrl: './taon-kv-authorization.component.html',\n})\nexport class TaonKvAuthorizationComponent implements OnInit {\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}","<div class=\"taon-kv-authorization\">\n <div *ngIf=\"loading()\">Loading authorization info...</div>\n\n <div *ngIf=\"!loading()\">\n <div *ngIf=\"authorizedCount() === 0\">You did not purchase any products</div>\n\n <div *ngIf=\"authorizedCount() > 0\">\n You purchased {{ authorizedCount() }} products\n </div>\n </div>\n</div>\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 {}","<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>","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","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 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(this.TAON_THEME_KEY) 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.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): void {\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}","import { Component, inject } from '@angular/core';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\n\nimport { TaonThemeMode, TaonThemeService } from './taon-theme.service';\n\n@Component({\n selector: 'taon-theme',\n imports: [MatSlideToggleModule],\n templateUrl: './taon-theme.component.html',\n})\nexport class TaonThemeComponent {\n TaonThemeMode = TaonThemeMode;\n\n taonTheme = inject(TaonThemeService);\n}","<div class=\"p-4\">\n <h2>Theme settings</h2>\n\n <mat-slide-toggle\n class=\"p-2\"\n [checked]=\"taonTheme.isAuto()\"\n (change)=\"taonTheme.toogleAuto($event.checked)\">\n 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()\"\n (change)=\"taonTheme.setDark($event.checked)\">\n Dark mode\n </mat-slide-toggle>\n</div>","//#region imports\nimport { AsyncPipe, JsonPipe } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n inject,\n input,\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 { TaonThemeComponent } from '../taon-theme/taon-theme.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 TaonThemeComponent,\n ],\n})\nexport class TaonSimpleLayoutComponent {\n protected router = inject(Router);\n\n protected dialog = inject(MatDialog);\n\n protected theme = inject(TaonThemeService);\n\n navItems = input<TaonSimpleLayoutNavItem[]>();\n\n navigateTo(item: { path: string; label: string }): void {\n this.router.navigateByUrl(item.path);\n }\n\n openDialog(\n enterAnimationDuration: string | number,\n exitAnimationDuration: string | number,\n ): void {\n this.dialog.open(TaonThemeComponent, {\n width: '400px',\n enterAnimationDuration,\n exitAnimationDuration,\n });\n }\n}","<header\n class=\"shadow-1 inline-flex w-full justify-content-end align-items-center flex-row\">\n <div class=\"flex-grow-1 align-items-center justify-content-center flex-row\">\n @if (navItems()?.length > 0) {\n <nav\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\n aria-hidden=\"false\"\n aria-label=\"Example home icon\"\n fontIcon=\"home\"></mat-icon>\n } @else {\n {{ item.label }}\n }\n </a>\n }\n </nav>\n }\n <ng-content select=\"[header]\"></ng-content>\n </div>\n\n <div\n class=\"flex-grow-0 flex align-items-center justify-content-center flex-row\">\n <!-- <taon-theme class=\"right-0\" /> -->\n <ng-content select=\"[buttons]\"></ng-content>\n <button\n class=\"flex mr-2\"\n (click)=\"openDialog(200, 200)\"\n mat-icon-button>\n <mat-icon>settings</mat-icon>\n </button>\n </div>\n</header>\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 <pre>\n <code class=\"surface-100 block\">\n &lt;taon-simple-layout class=&quot;p-4&quot;&gt;\n &lt;header\n header\n class=&quot;flex-item&quot;&gt;\n &lt;img\n class=&quot;border-round&quot;\n src=&quot;assets/assets-for/taon-ui/assets/images/pluszka-logo.png&quot;\n height=&quot;50px&quot; /&gt;\n &lt;/header&gt;\n &lt;br /&gt;\n &lt;h3 class=&quot;text-blue-200&quot;&gt;Welcome to hamster store.&lt;/h3&gt;\n &lt;h3 class=&quot;text-blue-300&quot;&gt;Buy cheap hamster videos for free!&lt;/h3&gt;\n &lt;h3 class=&quot;text-blue-300&quot;&gt;Subscribe more hamsters video daily!&lt;/h3&gt;\n\n &lt;ng-container buttons&gt;\n &lt;button\n mat-button\n class=&quot;flex align-items-center&quot;&gt;\n Hello niga!\n &lt;/button&gt;\n &lt;/ng-container&gt;\n &lt;/taon-simple-layout&gt;\n </code>\n </pre>\n </div>\n</mat-tab-nav-panel>","//#region imports\nimport { Routes } from '@angular/router';\n\nimport { TaonSimpleLayoutComponent } from './taon-simple-layout.component';\n//#endregion\n\nexport const TaonSimpleLayoutRoutes: Routes = [\n {\n path: '',\n component: TaonSimpleLayoutComponent,\n },\n // {\n // path: 'anothermodulepath',\n // loadChildren: () => import('anothermodule')\n // .then(m => m.AnotherLazyModule),\n // },\n];","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { _, TaonStripeCloudflareWorker } from 'tnp-core/browser';\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 {\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 /**\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\n */\n @Input() label = '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}","<button\n type=\"button\"\n matButton=\"filled\"\n (click)=\"buy()\"\n [disabled]=\"loading\">\n <span *ngIf=\"!loading\">\n {{ label }}\n </span>\n\n <span *ngIf=\"loading\"> Redirecting to Stripe... </span>\n</button>\n","//#region imports\nimport {\n Component,\n OnInit,\n Input,\n Output,\n TemplateRef,\n EventEmitter,\n ViewChild,\n ElementRef,\n OnDestroy,\n ChangeDetectorRef,\n inject,\n} from '@angular/core';\nimport { PageEvent } from '@angular/material/paginator';\nimport { MtxGridColumn } from '@ng-matero/extensions/grid';\nimport { Log, Level } from 'ng2-logger/browser';\nimport { getDefaultMappingSingleObjOrClass, getDefaultModel } from 'ng2-rest/browser';\nimport {\n Observable,\n Subscription,\n debounceTime,\n defer,\n distinctUntilChanged,\n fromEvent,\n map,\n share,\n tap,\n} from 'rxjs';\nimport { Symbols as TaonSymbols } from 'taon/browser';\nimport { Taon, TaonBaseCrudController, TaonBaseEntity } from 'taon/browser';\nimport { _ } from 'tnp-core/browser';\nimport { json5 } from 'tnp-core/browser';\nimport { CLASS } from 'typescript-class-helpers/browser';\n//#endregion\n\n//#region constants\nconst log = Log.create(\n 'Table wrapper',\n // levels\n Level.WARN,\n Level.ERROR,\n);\nconst defaultColumns = [\n {\n header: 'ID',\n field: 'id',\n },\n {\n header: 'NAME',\n field: 'name',\n },\n] as MtxGridColumn[];\n//#endregion\n\n@Component({\n //#region component options\n selector: 'taon-table',\n templateUrl: './taon-table.component.html',\n styleUrls: ['./taon-table.component.scss'],\n standalone: false,\n})\nexport class TaonTableComponent implements OnDestroy, OnInit {\n cdr = inject(ChangeDetectorRef);\n\n //#region fields\n @Input() public pageNumber: number = 1;\n\n @Input() public pageSize: number = 5;\n\n @Input() public allowedColumns: string[] = [];\n\n @Input() public expansionTemplate: TemplateRef<any>;\n\n @Input() public rows = _.times(20, id => {\n return {\n id,\n name: `Amazing ${id} row `,\n };\n });\n\n @Input() entityCrudController: TaonBaseCrudController<any>;\n\n @Input() public columns: MtxGridColumn[] = defaultColumns as MtxGridColumn[];\n\n @Input() public pageSizeOptions: number[] = [5, 10, 20];\n\n @Input() public hideSearch: boolean;\n\n @Output() public expansionChange = new EventEmitter();\n\n @Output() public addingItem = new EventEmitter<void>();\n\n @ViewChild('search', { static: true }) search?: ElementRef<HTMLElement>;\n\n private searchInputChange$: Observable<string>;\n\n public expandable: boolean = false;\n\n public showPaginator = true;\n\n public isLoading = false;\n\n public totalElements: number = 100;\n\n private sub: Subscription = new Subscription();\n //#endregion\n\n get entity(): typeof TaonBaseEntity {\n return this.entityCrudController?.entityClassResolveFn();\n }\n\n //#region hooks\n\n //#region hooks / on init\n async ngOnInit() {\n if (!this.hideSearch) {\n this.searchInputChange$ = defer(() =>\n fromEvent<KeyboardEvent>(this.search?.nativeElement as any, 'keyup'),\n ).pipe(\n map(c => c.target['value']),\n debounceTime(500),\n distinctUntilChanged(),\n share(),\n tap(data => {\n console.log({ data });\n }),\n );\n\n this.sub.add(this.searchInputChange$.subscribe());\n }\n\n const entityClass = this.entity;\n if (!!entityClass) {\n this.rows = [];\n }\n this.expandable = !!this.expansionTemplate;\n // this.arrayDataConfig.set.pagination.rowDisplayed(5);\n log.i('this.columns,', this.columns);\n const columnsConfigSameAsDefault = _.isEqual(this.columns, defaultColumns);\n // console.log({\n // columnsConfigSameAsDefault\n // })\n\n if (entityClass && columnsConfigSameAsDefault) {\n const props = Object.keys(getDefaultModel(entityClass as Function));\n log.i('this.crud.entity props', props);\n\n try {\n let columns = props\n .filter(prop =>\n this.allowedColumns.length > 0\n ? this.allowedColumns.includes(prop)\n : true,\n )\n .map(prop => {\n return {\n header: _.upperCase(prop),\n field: prop,\n } as MtxGridColumn;\n });\n\n const extra = this.allowedColumns.filter(f => !props.includes(f));\n columns = [\n ...columns,\n ...extra.map(prop => {\n return {\n header: _.upperCase(prop),\n field: prop,\n } as MtxGridColumn;\n }),\n ];\n\n // console.log({\n // extra\n // });\n\n if (!this.expandable) {\n for (let index = 0; index < columns.length; index++) {\n const col = columns[index];\n delete col.showExpand;\n }\n }\n this.columns = columns;\n } catch (error) {\n console.error(error);\n }\n } else {\n }\n\n if (!this.entity) {\n this.showPaginator = false;\n }\n\n await this.getData();\n }\n //#endregion\n\n //#region hooks / on destroy\n ngOnDestroy(): void {\n this.sub.unsubscribe();\n }\n //#endregion\n\n //#endregion\n\n //#region methods\n\n //#region methods / get next page\n async getNextPage(e: PageEvent) {\n // console.log({\n // e\n // });\n this.pageNumber = e.pageIndex + 1;\n this.pageSize = e.pageSize;\n await this.getData();\n }\n //#endregion\n\n //#region methods / retrive data\n async getData(): Promise<void> {\n if (!this.entity) {\n return;\n }\n this.isLoading = true;\n // console.log('PAGINTION FETCH DATA START!')\n const controller = this.entityCrudController;\n if (controller) {\n const data = await controller.pagination(this.pageNumber, this.pageSize)\n .received;\n\n // console.log('PAGINTION DATA', {\n // data,\n // });\n const totalElements = Number(\n data.headers.get(TaonSymbols.old.X_TOTAL_COUNT),\n );\n const rows = data.body.json;\n // console.log('PAGINTION DATA', {\n // rows,\n // totalElements,\n // });\n this.totalElements = totalElements;\n this.rows = rows.map(d => {\n for (const key in d) {\n if (Object.prototype.hasOwnProperty.call(d, key)) {\n const elem = d[key];\n if (_.isObject(elem)) {\n d[key] = json5.stringify(d[key]);\n }\n }\n }\n // console.log({ d })\n return d;\n });\n }\n this.isLoading = false;\n this.cdr.markForCheck();\n }\n //#endregion\n\n //#region methods / expansion row\n expansionRow(e) {\n this.expansionChange.next(e);\n }\n //#endregion\n\n //#region methods / on table context menu\n onTableContextMenu(e) {\n // if (this.rowHref) {\n // this.router.navigateByUrl(this.rowHref)\n // }\n log.i('context menu event', e);\n }\n //#endregion\n\n //#endregion\n}","<br />\n<columns-container *ngIf=\"!hideSearch\">\n <column grow>\n <mat-form-field class=\"search-input\">\n <input\n matInput\n placeholder=\"Type to search table...\"\n #search />\n </mat-form-field>\n </column>\n <column [width]=\"80\">\n <button\n mat-fab\n [ngClass]=\"{ 'half-opacity': !search.value }\"\n class=\"undo-button\"\n color=\"secondary\"\n (click)=\"search.value = ''\">\n <mat-icon>close </mat-icon>\n </button>\n </column>\n\n <column [width]=\"80\">\n <button\n mat-fab\n (click)=\"addingItem.next()\"\n class=\"undo-button\"\n color=\"primary\">\n <mat-icon>add</mat-icon>\n </button>\n </column>\n</columns-container>\n\n<mtx-grid\n *ngIf=\"rows && columns\"\n [data]=\"rows\"\n [columns]=\"columns\"\n [expandable]=\"expandable\"\n [expansionTemplate]=\"expansionTemplate\"\n (expansionChange)=\"expansionRow($event)\"\n [length]=\"totalElements\"\n\n [pageOnFront]=\"false\"\n [pageIndex]=\"pageNumber - 1\"\n [pageSize]=\"pageSize\"\n [pageSizeOptions]=\"pageSizeOptions\"\n [showPaginator]=\"showPaginator\"\n (page)=\"getNextPage($event)\">\n</mtx-grid>\n\n<!-- [loading]=\"isLoading\" -->","//#region imports\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatButton, MatButtonModule } from '@angular/material/button';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MtxGridModule } from '@ng-matero/extensions/grid';\nimport { StaticColumnsModule } from 'static-columns/browser';\n\nimport { TaonTableComponent } from './taon-table.component';\n//#endregion\n\n@NgModule({\n imports: [\n CommonModule,\n MatSelectModule,\n MtxGridModule,\n MatFormFieldModule,\n MatInputModule,\n StaticColumnsModule,\n MatIconModule,\n MatButtonModule,\n FormsModule,\n ReactiveFormsModule,\n ],\n exports: [TaonTableComponent],\n declarations: [TaonTableComponent],\n})\nexport class TaonTableModule {}","import { 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} from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\n\n// declare global {\n// interface Window {\n// YT: any;\n// onYouTubeIframeAPIReady: () => void;\n// }\n// }\n\nfunction 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\nexport type TaonYoutubeState =\n | 'preview-picture'\n | 'preview-picture-locked'\n | 'video-preview-open'\n | 'video-preview-private';\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 implements OnChanges, AfterViewInit {\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 @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 cdr = inject(ChangeDetectorRef);\n allowedToBeDisplayedVideoOveraly = signal(true);\n\n onRightClick(event) {\n // console.log(event);\n event.preventDefault();\n event.stopPropagation();\n }\n\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\n restart() {\n this.postCommand('seekTo', [0, true]); // go to 0 seconds\n this.postCommand('playVideo');\n }\n\n // @ViewChild('playerContainer') playerContainer!: ElementRef;\n\n private player!: any;\n\n async ngAfterViewInit() {\n if (this.state !== 'video-preview-private') {\n return;\n }\n await 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\n private handleStateChange(state: number) {\n // @ts-ignore\n // const YT = window.YT;\n\n // // @ts-ignore\n // console.log({ state, plauerstate: YT.PlayerState });\n\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\n private videoIdSignal = signal<string>('');\n\n constructor(private sanitizer: DomSanitizer) {\n effect(() => {});\n }\n\n ngOnChanges() {\n this.videoIdSignal.set(this.videoId);\n }\n\n previewImage = computed(\n () => `https://img.youtube.com/vi/${this.videoIdSignal()}/0.jpg`,\n );\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()}?enablejsapi=1` +\n // (this.state === 'video-preview-private' ? `&controls=0` : '') +\n (this.state === 'video-preview-private' ? `&modestbranding=1` : '') +\n (this.state === 'video-preview-private' ? `&rel=0` : '') +\n // (this.state === 'video-preview-private' ? `&fs=0` : '') +\n // (this.state === 'video-preview-private' ? `&rel=0` : '') +\n `&disablekb=1` +\n `&playsinline=1` +\n `&origin=${window.location.origin}`,\n ),\n );\n\n get containerStyle() {\n return this.height ? { height: this.height } : null;\n }\n\n get displayTitle() {\n return this.title;\n }\n\n onLockClick(event: MouseEvent) {\n event.stopPropagation();\n this.paddlockClicked.emit();\n }\n\n onPreviewClick() {\n this.previewClicked.emit();\n }\n\n // private postCommand(command: string) {\n // this.iframeRef?.nativeElement.contentWindow?.postMessage(\n // JSON.stringify({\n // event: 'command',\n // func: command,\n // args: [],\n // }),\n // '*',\n // );\n // }\n\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\n play() {\n this.postCommand('playVideo');\n }\n\n pause() {\n this.postCommand('pauseVideo');\n }\n}","<div\n class=\"yt-container\"\n [ngClass]=\"state\"\n [ngStyle]=\"containerStyle\">\n <!-- PREVIEW IMAGE -->\n <img\n *ngIf=\"state === 'preview-picture' || state === 'preview-picture-locked'\"\n class=\"yt-media\"\n [src]=\"previewImage()\"\n [alt]=\"displayTitle\"\n (click)=\"onPreviewClick()\" />\n\n <!-- VIDEO -->\n <iframe\n #ytFrame\n *ngIf=\"state === 'video-preview-open' || state === 'video-preview-private'\"\n class=\"yt-media\"\n [src]=\"embedUrl()\"\n frameborder=\"0\"\n allowfullscreen>\n </iframe>\n\n <!-- PRIVATE OVERLAY -->\n <div\n (contextmenu)=\"onRightClick($event)\"\n (dblclick)=\"clicked($event)\"\n *ngIf=\"\n state === 'video-preview-private' && allowedToBeDisplayedVideoOveraly()\n \"\n (click)=\"clicked($event)\"\n class=\"yt-overlay-video\">\n <h1 class=\"text-center\" >Thanks for buying <br>this video</h1>\n </div>\n\n <!-- LOCK OVERLAY -->\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<!-- CONTROLS BELOW VIDEO -->\n<!-- <div\n *ngIf=\"state === 'video-preview-private'\"\n class=\"yt-controls\">\n <button\n mat-icon-button\n (click)=\"play()\">\n <mat-icon>play_arrow</mat-icon>\n </button>\n\n <button\n mat-icon-button\n (click)=\"pause()\">\n <mat-icon>pause</mat-icon>\n </button>\n\n <button\n mat-icon-button\n (click)=\"restart()\">\n <mat-icon>replay</mat-icon>\n </button>\n</div> -->\n<div class=\"w-full mb-1\"></div>\n<div\n class=\"yt-title\"\n *ngIf=\"displayTitle\">\n {{ displayTitle }}\n</div>","export namespace TaonYouTubeUtils {\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}","// @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 './taon.models'; \nexport * from './ui/taon-full-material.module'; // @browser\nexport * from './ui/taon.models'; \nexport * from './layouts/taon-bootstrap-navbar/taon-bootstrap-navbar.component'; // @browser\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-admin-mode-configuration/taon-admin-mode-configuration.component'; // @browser\nexport * from './ui/taon-admin-mode-configuration/taon-admin.models'; \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-not-found/taon-not-found.component'; // @browser\nexport * from './ui/taon-notifications/taon-notifications.component'; // @browser\nexport * from './ui/taon-notifications/taon-notifications.models'; \nexport * from './ui/taon-notifications/taon-notifications.module'; // @browser\nexport * from './ui/taon-notifications/taon-notifications.service'; // @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-simple-layout/taon-simple-layout.component'; // @browser\nexport * from './ui/taon-simple-layout/taon-simple-layout.model'; \nexport * from './ui/taon-simple-layout/taon-simple-layout.routes'; // @browser\nexport * from './ui/taon-stripe-buy-button/taon-stripe-buy-button.component'; // @browser\nexport * from './ui/taon-table/taon-table.component'; // @browser\nexport * from './ui/taon-table/taon-table.module'; // @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.utils'; ","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","log","i1.TaonNotificationsService","i2","i5","i9","i3","i4","i6","i1.SessionService","distinctUntilChanged","TaonSymbols"],"mappings":"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"}