@unipin/angular-applet 21.3.2 → 21.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -2
- package/fesm2022/unipin-angular-applet-accordion.mjs +39 -37
- package/fesm2022/unipin-angular-applet-accordion.mjs.map +1 -1
- package/fesm2022/unipin-angular-applet-alert-dialog.mjs +9 -9
- package/fesm2022/unipin-angular-applet-alert-dialog.mjs.map +1 -1
- package/fesm2022/unipin-angular-applet-alert.mjs +16 -19
- package/fesm2022/unipin-angular-applet-alert.mjs.map +1 -1
- package/fesm2022/unipin-angular-applet-approval.mjs +124 -15
- package/fesm2022/unipin-angular-applet-approval.mjs.map +1 -1
- package/fesm2022/{unipin-angular-applet-audit-audit-modal.component-wPoNvU2r.mjs → unipin-angular-applet-audit-audit-modal.component-DNlMbUda.mjs} +6 -7
- package/fesm2022/unipin-angular-applet-audit-audit-modal.component-DNlMbUda.mjs.map +1 -0
- package/fesm2022/unipin-angular-applet-audit.mjs +14 -14
- package/fesm2022/unipin-angular-applet-audit.mjs.map +1 -1
- package/fesm2022/unipin-angular-applet-auth.mjs +23 -26
- package/fesm2022/unipin-angular-applet-auth.mjs.map +1 -1
- package/fesm2022/unipin-angular-applet-avatar.mjs +6 -7
- package/fesm2022/unipin-angular-applet-avatar.mjs.map +1 -1
- package/fesm2022/unipin-angular-applet-badge.mjs +6 -7
- package/fesm2022/unipin-angular-applet-badge.mjs.map +1 -1
- package/fesm2022/unipin-angular-applet-buttons.mjs +13 -15
- package/fesm2022/unipin-angular-applet-buttons.mjs.map +1 -1
- package/fesm2022/unipin-angular-applet-calendar.mjs +23 -27
- package/fesm2022/unipin-angular-applet-calendar.mjs.map +1 -1
- package/fesm2022/unipin-angular-applet-collapsible.mjs +17 -20
- package/fesm2022/unipin-angular-applet-collapsible.mjs.map +1 -1
- package/fesm2022/unipin-angular-applet-common.mjs +25 -30
- package/fesm2022/unipin-angular-applet-common.mjs.map +1 -1
- package/fesm2022/unipin-angular-applet-containers.mjs +23 -26
- package/fesm2022/unipin-angular-applet-containers.mjs.map +1 -1
- package/fesm2022/unipin-angular-applet-dialog.mjs +64 -70
- package/fesm2022/unipin-angular-applet-dialog.mjs.map +1 -1
- package/fesm2022/unipin-angular-applet-forms.mjs +328 -277
- package/fesm2022/unipin-angular-applet-forms.mjs.map +1 -1
- package/fesm2022/unipin-angular-applet-froala.mjs +10 -11
- package/fesm2022/unipin-angular-applet-froala.mjs.map +1 -1
- package/fesm2022/unipin-angular-applet-grids.mjs +408 -5
- package/fesm2022/unipin-angular-applet-grids.mjs.map +1 -1
- package/fesm2022/unipin-angular-applet-infinite-scroll.mjs +5 -6
- package/fesm2022/unipin-angular-applet-infinite-scroll.mjs.map +1 -1
- package/fesm2022/unipin-angular-applet-json-viewer.mjs +8 -9
- package/fesm2022/unipin-angular-applet-json-viewer.mjs.map +1 -1
- package/fesm2022/unipin-angular-applet-kbd.mjs +5 -6
- package/fesm2022/unipin-angular-applet-kbd.mjs.map +1 -1
- package/fesm2022/unipin-angular-applet-loading-dialog.mjs +8 -9
- package/fesm2022/unipin-angular-applet-loading-dialog.mjs.map +1 -1
- package/fesm2022/unipin-angular-applet-markdown.mjs +24 -22
- package/fesm2022/unipin-angular-applet-markdown.mjs.map +1 -1
- package/fesm2022/unipin-angular-applet-popover.mjs +26 -30
- package/fesm2022/unipin-angular-applet-popover.mjs.map +1 -1
- package/fesm2022/unipin-angular-applet-progress-bar.mjs +8 -9
- package/fesm2022/unipin-angular-applet-progress-bar.mjs.map +1 -1
- package/fesm2022/unipin-angular-applet-skeleton.mjs +5 -6
- package/fesm2022/unipin-angular-applet-skeleton.mjs.map +1 -1
- package/fesm2022/unipin-angular-applet-spinner.mjs +7 -7
- package/fesm2022/unipin-angular-applet-spinner.mjs.map +1 -1
- package/fesm2022/unipin-angular-applet-stepper.mjs +17 -19
- package/fesm2022/unipin-angular-applet-stepper.mjs.map +1 -1
- package/fesm2022/unipin-angular-applet-swipeable.mjs +26 -30
- package/fesm2022/unipin-angular-applet-swipeable.mjs.map +1 -1
- package/fesm2022/unipin-angular-applet-tabs.mjs +22 -25
- package/fesm2022/unipin-angular-applet-tabs.mjs.map +1 -1
- package/fesm2022/unipin-angular-applet-tooltip.mjs +5 -6
- package/fesm2022/unipin-angular-applet-tooltip.mjs.map +1 -1
- package/package.json +5 -2
- package/types/unipin-angular-applet-accordion.d.ts +4 -2
- package/types/unipin-angular-applet-approval.d.ts +42 -11
- package/types/unipin-angular-applet-forms.d.ts +29 -5
- package/types/unipin-angular-applet-grids.d.ts +101 -14
- package/types/unipin-angular-applet-popover.d.ts +3 -3
- package/fesm2022/unipin-angular-applet-audit-audit-modal.component-wPoNvU2r.mjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unipin-angular-applet-common.mjs","sources":["../../../projects/unipin-angular/common/utils/up.util.ts","../../../projects/unipin-angular/common/utils/image-compress/image-compress.util.ts","../../../projects/unipin-angular/common/utils/generate-contrast-color/generate-contrast-color.util.ts","../../../projects/unipin-angular/common/pipes/price/price.pipe.ts","../../../projects/unipin-angular/common/pipes/initial/initial.pipe.ts","../../../projects/unipin-angular/common/pipes/linkify/linkify.pipe.ts","../../../projects/unipin-angular/common/pipes/capitalize/capitalize.pipe.ts","../../../projects/unipin-angular/common/services/country.service.ts","../../../projects/unipin-angular/common/services/currency.service.ts","../../../projects/unipin-angular/common/services/rate-group-code.service.ts","../../../projects/unipin-angular/common/directives/file-drag-n-drop.directive.ts","../../../projects/unipin-angular/common/unipin-angular-applet-common.ts"],"sourcesContent":["import { clsx, type ClassValue } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function up(...inputs: ClassValue[]): string{\n \n return twMerge(\n clsx(inputs)\n );\n}\n","type ImageCompressionOptions = {\n file: File;\n quality?: number;\n maxWidth?: number;\n maxHeight?: number;\n}\n \nexport function compressImage(\n {\n file,\n quality = 0.8,\n maxWidth = 800,\n maxHeight = 800\n }: ImageCompressionOptions\n): Promise<File> {\n \n return new Promise(\n (resolve, reject) => {\n const img = new Image();\n\n img.onload = () => {\n let { width, height } = img;\n \n const widthScale = maxWidth / width;\n const heightScale = maxHeight / height;\n const scale = Math.min(widthScale, heightScale, 1);\n \n const targetWidth = Math.round(width * scale);\n const targetHeight = Math.round(height * scale);\n \n const canvas = document.createElement('canvas');\n canvas.width = targetWidth;\n canvas.height = targetHeight;\n \n const ctx = canvas.getContext('2d');\n if (!ctx) {\n return reject(new Error('Canvas context is not available'));\n }\n ctx.drawImage(img, 0, 0, targetWidth, targetHeight);\n \n canvas.toBlob(\n (blob) => {\n if (!blob) {\n return reject(new Error('Failed To Compress Image'));\n }\n \n const compressedFile = new File(\n [blob], \n file.name.replace(/\\.[^.]+$/, \".jpg\"), \n {\n type: 'image/jpeg',\n }\n );\n resolve(compressedFile);\n },\n 'image/jpeg',\n quality\n );\n };\n \n img.onerror = () => reject(new Error('Failed to load image'));\n img.src = URL.createObjectURL(file);\n }\n );\n}\n","export function generateContrastColor(str: string): { background: string, foreground: string }{\n \n let hash: number = 0;\n for (let i = 0; i < str.length; i++) {\n hash = str.charCodeAt(i) + ((hash << 5) - hash);\n hash = hash & hash;\n }\n\n const r: number = (hash >> 16) & 0xff;\n const g: number = (hash >> 8) & 0xff;\n const b: number = hash & 0xff;\n const background: string = `#${((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1)}`;\n\n const luminance: number = 0.299 * r + 0.587 * g + 0.114 * b;\n const foreground: string = luminance > 186 ? '#000' : '#fff';\n\n return { background, foreground };\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { formatNumber } from '@angular/common';\n\n@Pipe({\n pure: true,\n standalone: true,\n name: 'upPrice'\n})\nexport class UpPricePipe implements PipeTransform {\n \n public transform(value: string, magnifyValue: string | number = 1, format: 'string' | 'number' = 'number'): string | number{\n return formatPrice(+value, +magnifyValue, format);\n }\n}\n\nexport function formatPrice(value: number, magnifyValue: number = 1, format: 'string' | 'number' = 'number'): string | number{\n if (\n !magnifyValue ||\n magnifyValue === 1 ||\n Math.log10(magnifyValue) % 1 !== 0\n ) {\n if (format === 'string') {\n return formatNumber(value, 'en-US', `1.0-0`);\n }\n return value;\n }\n\n const floatPoint = Math.log10(magnifyValue);\n if (format === 'string') {\n return formatNumber(value / magnifyValue, 'en-US', `1.0-${floatPoint}`);\n }\n return +((value / magnifyValue).toFixed(floatPoint));\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n pure: true,\n standalone: true,\n name: 'upInitial'\n})\nexport class UpInitialPipe implements PipeTransform {\n \n public transform(value: string): string{\n return formatInitial(value);\n }\n}\n\nexport function formatInitial(value: string): string{\n if (!value) return '';\n\n const words = value.trim().replace(/\\s+/g, ' ').split(' ');\n if (words.length > 1) {\n return (words[0][0] + words[words.length - 1][0]).toUpperCase();\n }\n return words[0].substring(0, 2).toUpperCase();\n}\n","import { Pipe } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\n@Pipe({\n pure: true,\n standalone: true,\n name: 'upLinkify'\n})\nexport class UpLinkifyPipe {\n\n constructor(\n protected readonly sanitizer: DomSanitizer\n ) { }\n\n public transform(value: any): SafeHtml{\n return formatLinkify(value, this.sanitizer);\n }\n}\n\nexport function formatLinkify(value: string, sanitizer: DomSanitizer): SafeHtml{\n if (!value) return '';\n if (\n !/https?:\\/\\/(www\\.)?[a-zA-Z0-9-]+(\\.[a-zA-Z0-9-]+)+([\\/\\w- .?%&=]*)?/.test(value)\n ) {\n return value;\n }\n\n return sanitizer.bypassSecurityTrustHtml(\n value.replace(\n /(\\b(https?|ftp|file):\\/\\/[-A-Z0-9+&@#\\/%?=~_|!:,.;]*[-A-Z0-9+&@#\\/%=~_|])/ig,\n '<a target=\"_blank\" style=\"word-break: break-all\" href=\"$1\">$1</a>'\n )\n );\n}\n","import { Pipe } from '@angular/core';\n\n@Pipe({\n pure: true,\n standalone: true,\n name: 'upCapitalize',\n})\nexport class UpCapitalizaPipe {\n\n public transform(value: string | string[], onlyFirstWord: boolean = true): string{\n return formatCapitalize(value, onlyFirstWord);\n }\n}\n\n/**\n * A function that create a capitalize word.\n * @param {string | string[]} str - Word that want to be capitalized.\n * @param {boolean} [onlyFirstWord=true] - Determine whether only the first word will be capitalize or not. If the first param is not array, this parameter will be ignored. Default to `true`.\n * @returns {string} Capitalized word string\n */\nexport function formatCapitalize(str: string | string[], onlyFirstWord: boolean = true): string{\n if (!str) return str;\n \n if (typeof str === 'string') {\n str = str.toLowerCase().split(' ');\n }\n\n if (onlyFirstWord) {\n str[0] = str[0].at(0)!.toUpperCase() + str[0].substring(1).toLowerCase();\n } else {\n for (let i = 0; i < str.length; i++) {\n if (!str[i]) {\n continue;\n }\n str[i] = str[i].at(0)!.toUpperCase() + str[i].substring(1).toLowerCase();\n }\n }\n return str.join(' ');\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\nimport { GqlParser, QueryResult } from '@unipin/angular-gql';\nimport { CountryQueryCriteria, CountryResult } from '@unipin/graphql-schema';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CountryService {\n\n constructor(\n protected readonly gql: GqlParser\n ) { }\n\n public query(\n input: CountryQueryCriteria = { page: 0, pageSize: 300, sortBy: 'name', sortDirection: 'asc' }\n ): Observable<QueryResult<{ webConfigMsCountry: CountryResult }>>{\n \n return this.gql.query<{ webConfigMsCountry: CountryResult }>({\n operationName: 'QueryCountry',\n variables: { \n input \n },\n query: `\n query QueryCountry($input: CountryQueryCriteria!) {\n webConfigMsCountry(input: $input) {\n data {\n code\n defaultLangCode\n guid\n langCodes {\n code\n guid\n }\n name\n phoneCodes {\n code\n }\n }\n }\n }\n `,\n }).pipe(\n map(\n (res) => {\n return {\n data: res.data?? null,\n errors: res.errors?? []\n };\n }\n ),\n catchError(\n (err) => {\n return of(\n {\n data: null as any,\n errors: Array.isArray(err)? err : [err]\n }\n );\n }\n )\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\nimport { GqlParser, QueryResult } from '@unipin/angular-gql';\nimport { CurrencyQueryCriteria, CurrencyResult } from '@unipin/graphql-schema';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CurrencyService {\n\n constructor(\n protected readonly gql: GqlParser\n ) { }\n\n public query(\n input: CurrencyQueryCriteria = { \n page: 0, \n pageSize: 300, \n sortBy: 'name', \n sortDirection: 'asc' \n }\n ): Observable<QueryResult<{ webConfigMsCurrency: CurrencyResult }>>{\n \n return this.gql.query<{ webConfigMsCurrency: CurrencyResult }>({\n operationName: 'QueryCurrency',\n variables: { \n input \n },\n query: `\n query QueryCurrency($input: CurrencyQueryCriteria!) {\n webConfigMsCurrency(input: $input) {\n data {\n code\n guid\n magnifyValue\n name\n status\n }\n }\n }\n `,\n }).pipe(\n map(\n (res) => {\n return {\n data: res.data?? null,\n errors: res.errors?? []\n };\n }\n ),\n catchError(\n (err) => {\n return of(\n {\n data: null as any,\n errors: Array.isArray(err)? err : [err]\n }\n );\n }\n )\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\nimport { GqlParser, QueryResult } from '@unipin/angular-gql';\nimport { RateGroupCodeCriteria, RateGroupCodeRs } from '@unipin/graphql-schema';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class RateGroupCodeService {\n\n constructor(\n protected readonly gql: GqlParser\n ) { }\n\n public query(\n input: RateGroupCodeCriteria = { key: '', page: 0, pageSize: 100 }\n ): Observable<QueryResult<{ productMsSearchRateGroupCodes: RateGroupCodeRs }>>{\n\n return this.gql.query<{ productMsSearchRateGroupCodes: RateGroupCodeRs }>({\n operationName: 'QueryRateGroupCode',\n variables: {\n input\n },\n query: `\n query QueryRateGroupCode($input: RateGroupCodeCriteria) {\n productMsSearchRateGroupCodes(input: $input) {\n data\n }\n }\n `,\n }).pipe(\n map(\n (res) => ({\n data: res.data ?? null,\n errors: res.errors ?? []\n })\n ),\n catchError(\n (err) => {\n return of(\n {\n data: null as any,\n errors: Array.isArray(err)? err : [err]\n }\n );\n }\n )\n );\n }\n}\n","import { Directive, HostListener, ElementRef, output, input, OnInit } from '@angular/core';\nimport { ClassValue } from 'clsx';\nimport { up } from '../utils/up.util';\n\n@Directive({\n standalone: true,\n exportAs: 'upFileDragNDrop',\n selector: '[upFileDragNDrop]'\n})\nexport class UpFileDragNDropDirective implements OnInit {\n\n public readonly draggedClass = input<ClassValue>('');\n public readonly fileDropped = output<File>();\n\n protected currentClass!: ClassValue;\n \n constructor(\n protected readonly el: ElementRef\n ) { }\n\n public ngOnInit(): void{\n this.currentClass = this.el.nativeElement.classList.value;\n }\n \n @HostListener('dragover', [ '$event' ]) \n public dragOver(evt: any): void{\n evt.preventDefault();\n evt.stopPropagation();\n\n this.el.nativeElement.classList.value = up(\n this.currentClass,\n this.draggedClass(),\n );\n }\n\n @HostListener('dragleave', [ '$event' ]) \n public leave(evt: any): void{\n evt.preventDefault();\n\n evt.stopPropagation();\n this.el.nativeElement.classList.value = this.currentClass;\n }\n\n @HostListener('drop', [ '$event' ]) \n public drop(evt: any): void{\n evt.preventDefault();\n evt.stopPropagation();\n\n this.el.nativeElement.classList.value = this.currentClass;\n\n const files = evt.dataTransfer.files;\n if (files.length > 0) {\n this.fileDropped.emit(files);\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"unipin-angular-applet-common.mjs","sources":["../../../projects/unipin-angular/common/utils/up.util.ts","../../../projects/unipin-angular/common/utils/image-compress/image-compress.util.ts","../../../projects/unipin-angular/common/utils/generate-contrast-color/generate-contrast-color.util.ts","../../../projects/unipin-angular/common/pipes/price/price.pipe.ts","../../../projects/unipin-angular/common/pipes/initial/initial.pipe.ts","../../../projects/unipin-angular/common/pipes/linkify/linkify.pipe.ts","../../../projects/unipin-angular/common/pipes/capitalize/capitalize.pipe.ts","../../../projects/unipin-angular/common/services/country.service.ts","../../../projects/unipin-angular/common/services/currency.service.ts","../../../projects/unipin-angular/common/services/rate-group-code.service.ts","../../../projects/unipin-angular/common/directives/file-drag-n-drop.directive.ts","../../../projects/unipin-angular/common/unipin-angular-applet-common.ts"],"sourcesContent":["import { clsx, type ClassValue } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function up(...inputs: ClassValue[]): string{\n \n return twMerge(\n clsx(inputs)\n );\n}\n","type ImageCompressionOptions = {\n file: File;\n quality?: number;\n maxWidth?: number;\n maxHeight?: number;\n}\n \nexport function compressImage(\n {\n file,\n quality = 0.8,\n maxWidth = 800,\n maxHeight = 800\n }: ImageCompressionOptions\n): Promise<File> {\n \n return new Promise(\n (resolve, reject) => {\n const img = new Image();\n\n img.onload = () => {\n let { width, height } = img;\n \n const widthScale = maxWidth / width;\n const heightScale = maxHeight / height;\n const scale = Math.min(widthScale, heightScale, 1);\n \n const targetWidth = Math.round(width * scale);\n const targetHeight = Math.round(height * scale);\n \n const canvas = document.createElement('canvas');\n canvas.width = targetWidth;\n canvas.height = targetHeight;\n \n const ctx = canvas.getContext('2d');\n if (!ctx) {\n return reject(new Error('Canvas context is not available'));\n }\n ctx.drawImage(img, 0, 0, targetWidth, targetHeight);\n \n canvas.toBlob(\n (blob) => {\n if (!blob) {\n return reject(new Error('Failed To Compress Image'));\n }\n \n const compressedFile = new File(\n [blob], \n file.name.replace(/\\.[^.]+$/, \".jpg\"), \n {\n type: 'image/jpeg',\n }\n );\n resolve(compressedFile);\n },\n 'image/jpeg',\n quality\n );\n };\n \n img.onerror = () => reject(new Error('Failed to load image'));\n img.src = URL.createObjectURL(file);\n }\n );\n}\n","export function generateContrastColor(str: string): { background: string, foreground: string }{\n \n let hash: number = 0;\n for (let i = 0; i < str.length; i++) {\n hash = str.charCodeAt(i) + ((hash << 5) - hash);\n hash = hash & hash;\n }\n\n const r: number = (hash >> 16) & 0xff;\n const g: number = (hash >> 8) & 0xff;\n const b: number = hash & 0xff;\n const background: string = `#${((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1)}`;\n\n const luminance: number = 0.299 * r + 0.587 * g + 0.114 * b;\n const foreground: string = luminance > 186 ? '#000' : '#fff';\n\n return { background, foreground };\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { formatNumber } from '@angular/common';\n\n\n@Pipe({\n pure: true,\n name: 'upPrice'\n})\nexport class UpPricePipe implements PipeTransform {\n \n public transform(value: string, magnifyValue: string | number = 1, format: 'string' | 'number' = 'number'): string | number{\n return formatPrice(+value, +magnifyValue, format);\n }\n}\n\nexport function formatPrice(value: number, magnifyValue: number = 1, format: 'string' | 'number' = 'number'): string | number{\n if (\n !magnifyValue ||\n magnifyValue === 1 ||\n Math.log10(magnifyValue) % 1 !== 0\n ) {\n if (format === 'string') {\n return formatNumber(value, 'en-US', `1.0-0`);\n }\n return value;\n }\n\n const floatPoint = Math.log10(magnifyValue);\n if (format === 'string') {\n return formatNumber(value / magnifyValue, 'en-US', `1.0-${floatPoint}`);\n }\n return +((value / magnifyValue).toFixed(floatPoint));\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n\n@Pipe({\n pure: true,\n name: 'upInitial'\n})\nexport class UpInitialPipe implements PipeTransform {\n \n public transform(value: string): string{\n return formatInitial(value);\n }\n}\n\nexport function formatInitial(value: string): string{\n if (!value) return '';\n\n const words = value.trim().replace(/\\s+/g, ' ').split(' ');\n if (words.length > 1) {\n return (words[0][0] + words[words.length - 1][0]).toUpperCase();\n }\n return words[0].substring(0, 2).toUpperCase();\n}\n","import { Pipe } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\n\n@Pipe({\n pure: true,\n name: 'upLinkify'\n})\nexport class UpLinkifyPipe {\n\n constructor(\n protected readonly sanitizer: DomSanitizer\n ) { }\n\n public transform(value: any): SafeHtml{\n return formatLinkify(value, this.sanitizer);\n }\n}\n\nexport function formatLinkify(value: string, sanitizer: DomSanitizer): SafeHtml{\n if (!value) return '';\n if (\n !/https?:\\/\\/(www\\.)?[a-zA-Z0-9-]+(\\.[a-zA-Z0-9-]+)+([\\/\\w- .?%&=]*)?/.test(value)\n ) {\n return value;\n }\n\n return sanitizer.bypassSecurityTrustHtml(\n value.replace(\n /(\\b(https?|ftp|file):\\/\\/[-A-Z0-9+&@#\\/%?=~_|!:,.;]*[-A-Z0-9+&@#\\/%=~_|])/ig,\n '<a target=\"_blank\" style=\"word-break: break-all\" href=\"$1\">$1</a>'\n )\n );\n}\n","import { Pipe } from '@angular/core';\n\n\n@Pipe({\n pure: true,\n name: 'upCapitalize',\n})\nexport class UpCapitalizaPipe {\n\n public transform(value: string | string[], onlyFirstWord: boolean = true): string{\n return formatCapitalize(value, onlyFirstWord);\n }\n}\n\n/**\n * A function that create a capitalize word.\n * @param {string | string[]} str - Word that want to be capitalized.\n * @param {boolean} [onlyFirstWord=true] - Determine whether only the first word will be capitalize or not. If the first param is not array, this parameter will be ignored. Default to `true`.\n * @returns {string} Capitalized word string\n */\nexport function formatCapitalize(str: string | string[], onlyFirstWord: boolean = true): string{\n if (!str) return str;\n \n if (typeof str === 'string') {\n str = str.toLowerCase().split(' ');\n }\n\n if (onlyFirstWord) {\n str[0] = str[0].at(0)!.toUpperCase() + str[0].substring(1).toLowerCase();\n } else {\n for (let i = 0; i < str.length; i++) {\n if (!str[i]) {\n continue;\n }\n str[i] = str[i].at(0)!.toUpperCase() + str[i].substring(1).toLowerCase();\n }\n }\n return str.join(' ');\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\nimport { GqlParser, QueryResult } from '@unipin/angular-gql';\nimport { CountryQueryCriteria, CountryResult } from '@unipin/graphql-schema';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CountryService {\n\n constructor(\n protected readonly gql: GqlParser\n ) { }\n\n public query(\n input: CountryQueryCriteria = { page: 0, pageSize: 300, sortBy: 'name', sortDirection: 'asc' }\n ): Observable<QueryResult<{ webConfigMsCountry: CountryResult }>>{\n \n return this.gql.query<{ webConfigMsCountry: CountryResult }>({\n operationName: 'QueryCountry',\n variables: { \n input \n },\n query: `\n query QueryCountry($input: CountryQueryCriteria!) {\n webConfigMsCountry(input: $input) {\n data {\n code\n defaultLangCode\n guid\n langCodes {\n code\n guid\n }\n name\n phoneCodes {\n code\n }\n }\n }\n }\n `,\n }).pipe(\n map(\n (res) => {\n return {\n data: res.data?? null,\n errors: res.errors?? []\n };\n }\n ),\n catchError(\n (err) => {\n return of(\n {\n data: null as any,\n errors: Array.isArray(err)? err : [err]\n }\n );\n }\n )\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\nimport { GqlParser, QueryResult } from '@unipin/angular-gql';\nimport { CurrencyQueryCriteria, CurrencyResult } from '@unipin/graphql-schema';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CurrencyService {\n\n constructor(\n protected readonly gql: GqlParser\n ) { }\n\n public query(\n input: CurrencyQueryCriteria = { \n page: 0, \n pageSize: 300, \n sortBy: 'name', \n sortDirection: 'asc' \n }\n ): Observable<QueryResult<{ webConfigMsCurrency: CurrencyResult }>>{\n \n return this.gql.query<{ webConfigMsCurrency: CurrencyResult }>({\n operationName: 'QueryCurrency',\n variables: { \n input \n },\n query: `\n query QueryCurrency($input: CurrencyQueryCriteria!) {\n webConfigMsCurrency(input: $input) {\n data {\n code\n guid\n magnifyValue\n name\n status\n }\n }\n }\n `,\n }).pipe(\n map(\n (res) => {\n return {\n data: res.data?? null,\n errors: res.errors?? []\n };\n }\n ),\n catchError(\n (err) => {\n return of(\n {\n data: null as any,\n errors: Array.isArray(err)? err : [err]\n }\n );\n }\n )\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\nimport { GqlParser, QueryResult } from '@unipin/angular-gql';\nimport { RateGroupCodeCriteria, RateGroupCodeRs } from '@unipin/graphql-schema';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class RateGroupCodeService {\n\n constructor(\n protected readonly gql: GqlParser\n ) { }\n\n public query(\n input: RateGroupCodeCriteria = { key: '', page: 0, pageSize: 100 }\n ): Observable<QueryResult<{ productMsSearchRateGroupCodes: RateGroupCodeRs }>>{\n\n return this.gql.query<{ productMsSearchRateGroupCodes: RateGroupCodeRs }>({\n operationName: 'QueryRateGroupCode',\n variables: {\n input\n },\n query: `\n query QueryRateGroupCode($input: RateGroupCodeCriteria) {\n productMsSearchRateGroupCodes(input: $input) {\n data\n }\n }\n `,\n }).pipe(\n map(\n (res) => ({\n data: res.data ?? null,\n errors: res.errors ?? []\n })\n ),\n catchError(\n (err) => {\n return of(\n {\n data: null as any,\n errors: Array.isArray(err)? err : [err]\n }\n );\n }\n )\n );\n }\n}\n","import { Directive, HostListener, ElementRef, output, input, OnInit } from '@angular/core';\nimport { ClassValue } from 'clsx';\nimport { up } from '../utils/up.util';\n\n\n@Directive({\n exportAs: 'upFileDragNDrop',\n selector: '[upFileDragNDrop]'\n})\nexport class UpFileDragNDropDirective implements OnInit {\n\n public readonly draggedClass = input<ClassValue>('');\n public readonly fileDropped = output<File>();\n\n protected currentClass!: ClassValue;\n \n constructor(\n protected readonly el: ElementRef\n ) { }\n\n public ngOnInit(): void{\n this.currentClass = this.el.nativeElement.classList.value;\n }\n \n @HostListener('dragover', [ '$event' ]) \n public dragOver(evt: any): void{\n evt.preventDefault();\n evt.stopPropagation();\n\n this.el.nativeElement.classList.value = up(\n this.currentClass,\n this.draggedClass(),\n );\n }\n\n @HostListener('dragleave', [ '$event' ]) \n public leave(evt: any): void{\n evt.preventDefault();\n\n evt.stopPropagation();\n this.el.nativeElement.classList.value = this.currentClass;\n }\n\n @HostListener('drop', [ '$event' ]) \n public drop(evt: any): void{\n evt.preventDefault();\n evt.stopPropagation();\n\n this.el.nativeElement.classList.value = this.currentClass;\n\n const files = evt.dataTransfer.files;\n if (files.length > 0) {\n this.fileDropped.emit(files);\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":"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"}
|
|
@@ -22,7 +22,7 @@ class UpLazyRouteDirective {
|
|
|
22
22
|
/**
|
|
23
23
|
* Accepts a route config object containing `loadComponent`.
|
|
24
24
|
*/
|
|
25
|
-
this.loadRoute = input.required(...(ngDevMode ? [{ debugName: "loadRoute" }] : []));
|
|
25
|
+
this.loadRoute = input.required(...(ngDevMode ? [{ debugName: "loadRoute" }] : /* istanbul ignore next */ []));
|
|
26
26
|
}
|
|
27
27
|
/**
|
|
28
28
|
* Lifecycle hook that is called after the directive's data-bound properties have been initialized.
|
|
@@ -68,13 +68,12 @@ class UpLazyRouteDirective {
|
|
|
68
68
|
}
|
|
69
69
|
}
|
|
70
70
|
}
|
|
71
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
72
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.
|
|
71
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: UpLazyRouteDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
72
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.10", type: UpLazyRouteDirective, isStandalone: true, selector: "[upLoadRoute]", inputs: { loadRoute: { classPropertyName: "loadRoute", publicName: "loadRoute", isSignal: true, isRequired: true, transformFunction: null } }, exportAs: ["upLoadRoute"], ngImport: i0 }); }
|
|
73
73
|
}
|
|
74
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
74
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: UpLazyRouteDirective, decorators: [{
|
|
75
75
|
type: Directive,
|
|
76
76
|
args: [{
|
|
77
|
-
standalone: true,
|
|
78
77
|
exportAs: 'upLoadRoute',
|
|
79
78
|
selector: '[upLoadRoute]'
|
|
80
79
|
}]
|
|
@@ -113,19 +112,19 @@ class AppletContainerComponent {
|
|
|
113
112
|
* when set the value to false, the component will close the sidebar.
|
|
114
113
|
* @type {boolean}
|
|
115
114
|
*/
|
|
116
|
-
this.isExpanded = signal(false, ...(ngDevMode ? [{ debugName: "isExpanded" }] : []));
|
|
115
|
+
this.isExpanded = signal(false, ...(ngDevMode ? [{ debugName: "isExpanded" }] : /* istanbul ignore next */ []));
|
|
117
116
|
/**
|
|
118
117
|
* A flag variable for indicates whether the sidebar menu is active or not in mobile view.
|
|
119
118
|
* When set false the sidebar menu will be hidden
|
|
120
119
|
* @type {boolean[]}
|
|
121
120
|
*/
|
|
122
|
-
this.isMenuActive = signal(false, ...(ngDevMode ? [{ debugName: "isMenuActive" }] : []));
|
|
121
|
+
this.isMenuActive = signal(false, ...(ngDevMode ? [{ debugName: "isMenuActive" }] : /* istanbul ignore next */ []));
|
|
123
122
|
/**
|
|
124
123
|
* A flag variable that used to control sidebar menu. When set value to true, the component will hide the sidebar menu.
|
|
125
124
|
* When set false, the component will show the sidebar menu.
|
|
126
125
|
* @type {boolean[]}
|
|
127
126
|
*/
|
|
128
|
-
this.isHidden = signal(Array(this.config.containers.length).fill(true), ...(ngDevMode ? [{ debugName: "isHidden" }] : []));
|
|
127
|
+
this.isHidden = signal(Array(this.config.containers.length).fill(true), ...(ngDevMode ? [{ debugName: "isHidden" }] : /* istanbul ignore next */ []));
|
|
129
128
|
this.isHidden.set(this.config.containers.map(({ permissions }) => {
|
|
130
129
|
if (!permissions)
|
|
131
130
|
return false;
|
|
@@ -156,17 +155,17 @@ class AppletContainerComponent {
|
|
|
156
155
|
}
|
|
157
156
|
}));
|
|
158
157
|
}
|
|
159
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
160
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.
|
|
158
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: AppletContainerComponent, deps: [{ token: i1.PermissionService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
159
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.10", type: AppletContainerComponent, isStandalone: true, selector: "up-applet-container", host: { classAttribute: "flex size-full" }, providers: [
|
|
161
160
|
provideIcons({
|
|
162
161
|
matChevronRightRound,
|
|
163
162
|
matSettingsRound
|
|
164
163
|
})
|
|
165
164
|
], ngImport: i0, template: "<nav \n class=\"shrink-0 h-full group flex flex-col transition-all ease-in-out border-r border-border max-md:w-0 max-md:z-10 max-md:absolute [&.expanded]:w-60\"\n [class.show]=\"isMenuActive()\"\n [class.expanded]=\"isExpanded()\"\n>\n <div class=\"shrink-0 p-2 border-b border-border flex items-center gap-2 relative\">\n <img \n class=\"rounded size-9 shrink-0\" \n [alt]=\"config.name\"\n [src]=\"config.icon\" \n />\n\n <div class=\"hidden group-[.expanded]:flex grow flex-col gap-0.5 select-none\">\n <div class=\"font-medium line-clamp-1 text-sm\">{{ config.name }}</div>\n \n <div class=\"text-muted-foreground font-medium text-xs\">\n v{{ config.version }}\n </div>\n </div>\n\n <button \n upButton\n size=\"icon\"\n variant=\"outline\"\n class=\"rounded-full absolute -right-5\"\n (click)=\"toggleSidenav()\"\n >\n <ng-icon \n size=\"18\" \n name=\"matChevronRightRound\" \n class=\"group-[.expanded]:rotate-180 transition-all ease-in-out\"\n />\n </button>\n </div>\n\n <div class=\"grow overflow-y-auto p-2 flex flex-col gap-1\">\n @for (c of config.containers; track $index) {\n <a \n upButton\n variant=\"ghost\"\n routerLinkActive=\"font-medium\"\n class=\"group-[.expanded]:w-full group-[.expanded]:justify-start\"\n [routerLink]=\"c.path\"\n [size]=\"!isExpanded()? 'icon' : 'default'\"\n (click)=\"selectMenu()\"\n >\n <ng-icon \n size=\"18\" \n [name]=\"c.icon\" \n />\n \n <span class=\"line-clamp-1 hidden group-[.expanded]:block\">\n {{ c.label }}\n </span>\n </a>\n }\n </div>\n\n @if (config.enabledSetting) {\n <div class=\"shrink-0 p-2 border-t border-border\">\n <a \n upButton\n variant=\"ghost\"\n routerLink=\"setting\" \n routerLinkActive=\"font-medium\"\n class=\"group-[.expanded]:w-full group-[.expanded]:justify-start\"\n [size]=\"!isExpanded()? 'icon' : 'default'\"\n (click)=\"selectMenu()\"\n >\n <ng-icon size=\"18\" name=\"matSettingsRound\" />\n <span class=\"line-clamp-1 hidden group-[.expanded]:block\">Setting</span>\n </a>\n </div>\n }\n</nav>\n\n<div class=\"grow overflow-y-auto overflow-x-hidden\">\n <ng-content />\n</div>\n", dependencies: [{ kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "directive", type: UpButtonDirective, selector: "[upButton]", inputs: ["size", "variant", "class"], exportAs: ["upButton"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
166
165
|
}
|
|
167
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
166
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: AppletContainerComponent, decorators: [{
|
|
168
167
|
type: Component,
|
|
169
|
-
args: [{
|
|
168
|
+
args: [{ selector: 'up-applet-container', changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
170
169
|
class: 'flex size-full'
|
|
171
170
|
}, imports: [
|
|
172
171
|
NgIcon,
|
|
@@ -191,12 +190,12 @@ class UpColumnContainerComponent {
|
|
|
191
190
|
* @type {{ visible: boolean, route: Route }[]}
|
|
192
191
|
* @default {[]}
|
|
193
192
|
*/
|
|
194
|
-
this.areas = signal([], ...(ngDevMode ? [{ debugName: "areas" }] : []));
|
|
193
|
+
this.areas = signal([], ...(ngDevMode ? [{ debugName: "areas" }] : /* istanbul ignore next */ []));
|
|
195
194
|
/**
|
|
196
195
|
* The default size for the split area: 100 means it will be full width, and 50 means it will be divided in half.
|
|
197
196
|
* This can be resizable with minimum width 20%
|
|
198
197
|
*/
|
|
199
|
-
this.colSize = signal(window.innerWidth <= 768 ? 100 : 50, ...(ngDevMode ? [{ debugName: "colSize" }] : []));
|
|
198
|
+
this.colSize = signal(window.innerWidth <= 768 ? 100 : 50, ...(ngDevMode ? [{ debugName: "colSize" }] : /* istanbul ignore next */ []));
|
|
200
199
|
/**
|
|
201
200
|
* An object to keep track of the position of opened areas based on their route paths.
|
|
202
201
|
* @type {{ [key: string]: number }}
|
|
@@ -283,8 +282,8 @@ class UpColumnContainerComponent {
|
|
|
283
282
|
return newAreas;
|
|
284
283
|
});
|
|
285
284
|
}
|
|
286
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
287
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.
|
|
285
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: UpColumnContainerComponent, deps: [{ token: i1$1.Router }, { token: i0.DestroyRef }, { token: i1$1.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
286
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.10", type: UpColumnContainerComponent, isStandalone: true, selector: "up-column-container", host: { listeners: { "window:resize": "checkScreen()" }, classAttribute: "block size-full" }, ngImport: i0, template: `
|
|
288
287
|
<as-split
|
|
289
288
|
unit="percent"
|
|
290
289
|
[gutterSize]="5"
|
|
@@ -307,10 +306,9 @@ class UpColumnContainerComponent {
|
|
|
307
306
|
</as-split>
|
|
308
307
|
`, isInline: true, dependencies: [{ kind: "ngmodule", type: AngularSplitModule }, { kind: "component", type: i2.SplitComponent, selector: "as-split", inputs: ["gutterSize", "gutterStep", "disabled", "gutterClickDeltaPx", "direction", "dir", "unit", "gutterAriaLabel", "restrictMove", "useTransition", "gutterDblClickDuration"], outputs: ["gutterClick", "gutterDblClick", "dragStart", "dragEnd", "transitionEnd"], exportAs: ["asSplit"] }, { kind: "component", type: i2.SplitAreaComponent, selector: "as-split-area", inputs: ["size", "minSize", "maxSize", "lockSize", "visible"], exportAs: ["asSplitArea"] }, { kind: "directive", type: UpLazyRouteDirective, selector: "[upLoadRoute]", inputs: ["loadRoute"], exportAs: ["upLoadRoute"] }] }); }
|
|
309
308
|
}
|
|
310
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
309
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: UpColumnContainerComponent, decorators: [{
|
|
311
310
|
type: Component,
|
|
312
311
|
args: [{
|
|
313
|
-
standalone: true,
|
|
314
312
|
selector: 'up-column-container',
|
|
315
313
|
host: {
|
|
316
314
|
class: 'block size-full',
|
|
@@ -355,21 +353,21 @@ class UpContentContainerComponent {
|
|
|
355
353
|
* @type {Signal<string>}
|
|
356
354
|
* @default ''
|
|
357
355
|
*/
|
|
358
|
-
this.header = input('', ...(ngDevMode ? [{ debugName: "header" }] : []));
|
|
356
|
+
this.header = input('', ...(ngDevMode ? [{ debugName: "header" }] : /* istanbul ignore next */ []));
|
|
359
357
|
/**
|
|
360
358
|
* Disables the close/back button when set to true.
|
|
361
359
|
* When disabled, the close button will not be shown in the header.
|
|
362
360
|
* @type {Signal<boolean>}
|
|
363
361
|
* @default false
|
|
364
362
|
*/
|
|
365
|
-
this.disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : {}), transform: booleanAttribute });
|
|
363
|
+
this.disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
366
364
|
/**
|
|
367
365
|
* Hides the close/back button when set to true.
|
|
368
366
|
* When hidden, the close button will not be shown in the header.
|
|
369
367
|
* @type {Signal<boolean>}
|
|
370
368
|
* @default false
|
|
371
369
|
*/
|
|
372
|
-
this.hideCloseButton = input(false, { ...(ngDevMode ? { debugName: "hideCloseButton" } : {}), transform: booleanAttribute });
|
|
370
|
+
this.hideCloseButton = input(false, { ...(ngDevMode ? { debugName: "hideCloseButton" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
373
371
|
/**
|
|
374
372
|
* Event emitted when the user clicks the close button.
|
|
375
373
|
* Typically used to handle closing a modal or navigating back.
|
|
@@ -378,10 +376,10 @@ class UpContentContainerComponent {
|
|
|
378
376
|
this.closed = output();
|
|
379
377
|
this._headerClass = computed(() => {
|
|
380
378
|
return up('shrink-0 flex items-center py-2 gap-6 border-b border-[#e0e0e0]', this.hideCloseButton() ? 'px-4' : 'pr-4 pl-1');
|
|
381
|
-
}, ...(ngDevMode ? [{ debugName: "_headerClass" }] : []));
|
|
379
|
+
}, ...(ngDevMode ? [{ debugName: "_headerClass" }] : /* istanbul ignore next */ []));
|
|
382
380
|
}
|
|
383
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
384
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.
|
|
381
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: UpContentContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
382
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.10", type: UpContentContainerComponent, isStandalone: true, selector: "up-content-container", inputs: { header: { classPropertyName: "header", publicName: "header", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, hideCloseButton: { classPropertyName: "hideCloseButton", publicName: "hideCloseButton", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { closed: "closed" }, host: { classAttribute: "flex flex-col size-full" }, providers: [
|
|
385
383
|
provideIcons({ matCloseRound }),
|
|
386
384
|
], ngImport: i0, template: `
|
|
387
385
|
<div [class]="_headerClass()">
|
|
@@ -415,10 +413,9 @@ class UpContentContainerComponent {
|
|
|
415
413
|
</div>
|
|
416
414
|
`, isInline: true, dependencies: [{ kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "directive", type: UpButtonDirective, selector: "[upButton]", inputs: ["size", "variant", "class"], exportAs: ["upButton"] }] }); }
|
|
417
415
|
}
|
|
418
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
416
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: UpContentContainerComponent, decorators: [{
|
|
419
417
|
type: Component,
|
|
420
418
|
args: [{
|
|
421
|
-
standalone: true,
|
|
422
419
|
selector: 'up-content-container',
|
|
423
420
|
host: {
|
|
424
421
|
class: 'flex flex-col size-full'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unipin-angular-applet-containers.mjs","sources":["../../../projects/unipin-angular/containers/column-container/directives/lazy-route.directive.ts","../../../projects/unipin-angular/containers/applet-container/utils/provide-applet-config/provide-applet-config.util.ts","../../../projects/unipin-angular/containers/applet-container/utils/redirect-to-first-menu/redirect-to-first-menu.util.ts","../../../projects/unipin-angular/containers/applet-container/components/applet-container.component.ts","../../../projects/unipin-angular/containers/applet-container/components/applet-container.component.html","../../../projects/unipin-angular/containers/column-container/column-container.component.ts","../../../projects/unipin-angular/containers/content-container/content-container.component.ts","../../../projects/unipin-angular/containers/unipin-angular-applet-containers.ts"],"sourcesContent":["import { ComponentRef, Directive, OnInit, ViewContainerRef, inject, DestroyRef, input, reflectComponentType, ComponentMirror } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ActivatedRoute, NavigationEnd, Router, Route } from '@angular/router';\nimport { distinctUntilChanged, filter, isObservable, firstValueFrom } from 'rxjs';\n\n@Directive({\n standalone: true,\n exportAs: 'upLoadRoute',\n selector: '[upLoadRoute]'\n})\nexport class UpLazyRouteDirective implements OnInit {\n \n protected readonly router = inject(Router);\n protected readonly vcr = inject(ViewContainerRef);\n protected readonly route = inject(ActivatedRoute);\n protected readonly destroyRef = inject(DestroyRef);\n\n /**\n * Accepts a route config object containing `loadComponent`.\n */\n public readonly loadRoute = input.required<Pick<Route, 'loadComponent'>>();\n\n /**\n * Lifecycle hook that is called after the directive's data-bound properties have been initialized.\n * Dynamically loads the component using the `loadComponent` method and creates it within the directive's view container.\n */\n public ngOnInit(): void{\n if (!this.loadRoute().loadComponent) return;\n\n const result = this.loadRoute().loadComponent!();\n const load = isObservable(result)? firstValueFrom(result) : Promise.resolve(result);\n\n load.then(\n (m: any) => {\n const cmp = m.default?? m;\n \n const cr = this.vcr.createComponent(cmp);\n const mirror = reflectComponentType(cmp);\n \n this.setInput(cr, mirror);\n this.router.events.pipe(\n filter(\n (e): e is NavigationEnd => e instanceof NavigationEnd\n ),\n distinctUntilChanged(\n (prev, curr) => {\n return prev.urlAfterRedirects.split('#')[0] === curr.urlAfterRedirects.split('#')[0];\n }\n ),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe({\n next: () => this.setInput(cr, mirror)\n });\n }\n );\n }\n\n /**\n * Method to manually set Input to the child component, because component created by ViewContainerRef won't accept the input from route param directly.\n * @param { ComponentRef<any> } cr\n */\n protected setInput(cr: ComponentRef<any>, mirror: ComponentMirror<unknown> | null): void{\n const params = this.route.firstChild?.snapshot.params ?? {};\n\n if (Object.keys(params).length === 0) {\n return;\n }\n\n for (const key of Object.keys(params)) {\n if (key in cr.instance) {\n cr.setInput(key, params[key]);\n continue;\n }\n\n if (mirror) {\n const match = mirror.inputs.find(\n (i) => i.templateName === key\n );\n \n if (match) {\n cr.setInput(match.templateName, params[key]);\n }\n }\n }\n }\n}\n","import { InjectionToken, Provider } from '@angular/core';\nimport { AppletConfig } from '../../types/applet-config.type';\n\nexport const APPLET_CONFIG = new InjectionToken<AppletConfig>('APPLET_CONFIG');\n\nexport function provideAppletConfig(config: AppletConfig): Provider{\n \n return { \n provide: APPLET_CONFIG, \n useValue: config \n };\n}\n","import { forwardRef, inject } from '@angular/core';\nimport { RedirectFunction } from '@angular/router';\nimport { PermissionService } from '@unipin/angular-applet/auth';\nimport { AppletConfig } from '../../types/applet-config.type';\nimport { APPLET_CONFIG } from '../provide-applet-config/provide-applet-config.util';\n\n/**\n * Redirects the user to their first accessible menu route based on permissions.\n * @returns {RedirectFunction} The first allowed route\n */\nexport function redirectToFirstMenu(): ReturnType<RedirectFunction>{\n \n const { has } = inject(PermissionService);\n const { containers } = inject<AppletConfig>(\n () => forwardRef(() => APPLET_CONFIG)\n );\n\n const firstMenu = containers.find(\n ({ permissions }) => {\n if (!permissions) return true;\n\n const { codes, aggregator } = permissions;\n return codes[aggregator === 'AND'? 'every' : 'some']((code) => has(code));\n }\n );\n return firstMenu?.path?? containers[0].path;\n}\n","import { ChangeDetectionStrategy, Component, inject, signal } from '@angular/core';\nimport { RouterLink, RouterLinkActive } from '@angular/router';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { matChevronRightRound, matSettingsRound } from '@ng-icons/material-icons/round';\nimport { PermissionService } from '@unipin/angular-applet/auth';\nimport { UpButtonDirective } from '@unipin/angular-applet/buttons';\nimport { AppletConfig } from '../types/applet-config.type';\nimport { APPLET_CONFIG } from '../utils/provide-applet-config/provide-applet-config.util';\n\n@Component({\n standalone: true,\n selector: 'up-applet-container',\n templateUrl: './applet-container.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'flex size-full'\n },\n imports: [\n NgIcon,\n RouterLink,\n RouterLinkActive,\n UpButtonDirective,\n ],\n providers: [\n provideIcons(\n { \n matChevronRightRound, \n matSettingsRound \n }\n )\n ]\n})\nexport class AppletContainerComponent {\n\n public readonly config: AppletConfig = inject<AppletConfig>(APPLET_CONFIG); \n\n /**\n * A flag variable that used to control sidebar. When set the the value to true, the component will open the sidebar.\n * when set the value to false, the component will close the sidebar.\n * @type {boolean}\n */\n public readonly isExpanded = signal<boolean>(false);\n\n /**\n * A flag variable for indicates whether the sidebar menu is active or not in mobile view.\n * When set false the sidebar menu will be hidden\n * @type {boolean[]}\n */\n public readonly isMenuActive = signal<boolean>(false);\n\n /**\n * A flag variable that used to control sidebar menu. When set value to true, the component will hide the sidebar menu.\n * When set false, the component will show the sidebar menu.\n * @type {boolean[]}\n */\n public readonly isHidden = signal<boolean[]>(Array(this.config.containers.length).fill(true));\n\n constructor(\n protected readonly permissionService: PermissionService\n ) {\n this.isHidden.set(\n this.config.containers.map(\n ({ permissions }) => {\n if (!permissions) return false;\n \n if (permissions.aggregator === 'AND') {\n return !permissions.codes.every((code) => this.permissionService.has(code));\n }\n return !permissions.codes.some((code) => this.permissionService.has(code));\n }\n )\n );\n }\n\n /**\n * When the method is called, it will change the value of isExpanded to its opposite value. \n * If isExpanded is currently true, it will be set to false, and if it is currently false, it will be set to true. \n * This method is typically used to toggle the visibility of a side navigation menu.\n */\n public toggleSidenav(): void{\n this.isExpanded.update((v) => !v);\n }\n\n /**\n * Handles menu selection by dispatching a custom event.\n * This method is called when a sidebar menu item is selected.\n * It dispatches a custom 'menuEvent' with detail indicating the menu is inactive.\n * This event is typically used to close the sidebar menu.\n */\n public selectMenu(): void{\n dispatchEvent(\n new CustomEvent(\n 'menuEvent', \n { \n detail: { \n isActive: false \n } \n }\n )\n );\n }\n}\n","<nav \n class=\"shrink-0 h-full group flex flex-col transition-all ease-in-out border-r border-border max-md:w-0 max-md:z-10 max-md:absolute [&.expanded]:w-60\"\n [class.show]=\"isMenuActive()\"\n [class.expanded]=\"isExpanded()\"\n>\n <div class=\"shrink-0 p-2 border-b border-border flex items-center gap-2 relative\">\n <img \n class=\"rounded size-9 shrink-0\" \n [alt]=\"config.name\"\n [src]=\"config.icon\" \n />\n\n <div class=\"hidden group-[.expanded]:flex grow flex-col gap-0.5 select-none\">\n <div class=\"font-medium line-clamp-1 text-sm\">{{ config.name }}</div>\n \n <div class=\"text-muted-foreground font-medium text-xs\">\n v{{ config.version }}\n </div>\n </div>\n\n <button \n upButton\n size=\"icon\"\n variant=\"outline\"\n class=\"rounded-full absolute -right-5\"\n (click)=\"toggleSidenav()\"\n >\n <ng-icon \n size=\"18\" \n name=\"matChevronRightRound\" \n class=\"group-[.expanded]:rotate-180 transition-all ease-in-out\"\n />\n </button>\n </div>\n\n <div class=\"grow overflow-y-auto p-2 flex flex-col gap-1\">\n @for (c of config.containers; track $index) {\n <a \n upButton\n variant=\"ghost\"\n routerLinkActive=\"font-medium\"\n class=\"group-[.expanded]:w-full group-[.expanded]:justify-start\"\n [routerLink]=\"c.path\"\n [size]=\"!isExpanded()? 'icon' : 'default'\"\n (click)=\"selectMenu()\"\n >\n <ng-icon \n size=\"18\" \n [name]=\"c.icon\" \n />\n \n <span class=\"line-clamp-1 hidden group-[.expanded]:block\">\n {{ c.label }}\n </span>\n </a>\n }\n </div>\n\n @if (config.enabledSetting) {\n <div class=\"shrink-0 p-2 border-t border-border\">\n <a \n upButton\n variant=\"ghost\"\n routerLink=\"setting\" \n routerLinkActive=\"font-medium\"\n class=\"group-[.expanded]:w-full group-[.expanded]:justify-start\"\n [size]=\"!isExpanded()? 'icon' : 'default'\"\n (click)=\"selectMenu()\"\n >\n <ng-icon size=\"18\" name=\"matSettingsRound\" />\n <span class=\"line-clamp-1 hidden group-[.expanded]:block\">Setting</span>\n </a>\n </div>\n }\n</nav>\n\n<div class=\"grow overflow-y-auto overflow-x-hidden\">\n <ng-content />\n</div>\n","import { Component, HostListener, DestroyRef, signal, OnInit } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ActivatedRoute, NavigationEnd, Route, Router } from '@angular/router';\nimport { filter } from 'rxjs';\nimport { AngularSplitModule } from 'angular-split';\nimport { UpLazyRouteDirective } from './directives/lazy-route.directive';\n\n@Component({\n standalone: true,\n selector: 'up-column-container',\n host: {\n class: 'block size-full',\n },\n imports: [\n AngularSplitModule, \n UpLazyRouteDirective\n ],\n template: `\n <as-split \n unit=\"percent\" \n [gutterSize]=\"5\" \n [useTransition]=\"true\"\n >\n @for (a of areas(); track $index) {\n <as-split-area\n class=\"border-start\"\n [minSize]=\"20\"\n [size]=\"colSize()\"\n [visible]=\"a.visible\"\n [maxSize]=\"$index === areas().length - 1? 80 : null\"\n >\n <ng-container \n upLoadRoute\n [loadRoute]=\"a.route\" \n />\n </as-split-area>\n }\n </as-split>\n `,\n})\nexport class UpColumnContainerComponent implements OnInit {\n \n /**\n * An array of objects representing the columns, each containing a visibility flag and the associated route.\n * @type {{ visible: boolean, route: Route }[]}\n * @default {[]}\n */\n public readonly areas = signal<{ visible: boolean; route: Pick<Route, 'loadComponent'> }[]>([]);\n\n /**\n * The default size for the split area: 100 means it will be full width, and 50 means it will be divided in half.\n * This can be resizable with minimum width 20%\n */\n public readonly colSize = signal<number>(window.innerWidth <= 768? 100 : 50);\n\n /**\n * An object to keep track of the position of opened areas based on their route paths.\n * @type {{ [key: string]: number }}\n * @default {{}}\n */\n protected readonly openedArea: Record<string, number> = {};\n\n constructor(\n protected readonly router: Router,\n protected readonly destroyRef: DestroyRef,\n protected readonly activeRoute: ActivatedRoute\n ){ }\n\n /**\n * Lifecycle hook called after the component has been initialized.\n * Subscribes to router events, initializes columns based on the initial route, and sets up the first visible column.\n */\n public ngOnInit(): void{\n this.checkScreen();\n\n this.router.events.pipe(\n filter(\n (e): e is NavigationEnd => e instanceof NavigationEnd\n ),\n takeUntilDestroyed(this.destroyRef)\n ).subscribe({\n next: () => this.navigate()\n });\n\n const url: string | undefined = this.activeRoute.firstChild?.routeConfig?.path;\n const routeList: Route[] =(this.activeRoute.snapshot.routeConfig as any)._loadedRoutes;\n\n if (routeList?.length) {\n this.next(routeList[0]);\n\n for (let i = 1; i < routeList.length; i++) {\n if (\n url?.startsWith(\n routeList[i].path as string\n )\n ) {\n this.next(routeList[i]);\n }\n }\n }\n }\n\n /**\n * Event listener for the window resize event. Adjusts the default size of the split area based on the screen width.\n */\n @HostListener('window:resize')\n public checkScreen(): void{\n this.colSize.set(window.innerWidth <= 768? 100 : 50);\n }\n\n /**\n * Handles router navigation events and adjusts the display of columns accordingly.\n */\n protected navigate(): void{\n const route: Route = this.activeRoute.firstChild!.routeConfig!;\n const pos = this.openedArea[`r-${ route.path }`];\n\n if (pos <= this.areas().length) {\n this.previous(pos);\n return;\n }\n this.next(route);\n }\n\n /**\n * Adds a new column to the container and updates visibility based on the route navigation.\n * @param {Route} route - Contain next route.\n */\n protected next(route: Route): void{\n this.areas.update(\n (areas) => {\n if (\n this.colSize() === 100 &&\n areas.length >= 1\n ) {\n areas[areas.length - 1].visible = false;\n } else if (areas.length >= 2) {\n areas[areas.length - 2].visible = false;\n }\n\n const newAreas = [\n ...areas,\n { visible: true, route }\n ];\n\n this.openedArea[`r-${ route.path }`] = newAreas.length;\n return newAreas;\n }\n );\n }\n\n /**\n * Removes columns from the container based on the route navigation.\n * @param {number} pos - Contain position of the last active area index.\n */\n protected previous(pos: number): void{\n this.areas.update(\n (areas) => {\n const newAreas = areas.slice(0, pos);\n\n if (this.colSize() === 100 && newAreas.length) {\n newAreas[newAreas.length - 1].visible = true;\n return newAreas;\n }\n\n if (newAreas.length === 1) newAreas[0].visible = true;\n else if (newAreas.length >= 2) {\n newAreas[pos - 1].visible = true;\n newAreas[pos - 2].visible = true;\n }\n return newAreas;\n }\n );\n }\n}\n","import { Component, input, booleanAttribute, computed, output } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { matCloseRound } from '@ng-icons/material-icons/round';\nimport { up } from '@unipin/angular-applet/common';\nimport { UpButtonDirective } from '@unipin/angular-applet/buttons';\n\n@Component({\n standalone: true,\n selector: 'up-content-container',\n host: {\n class: 'flex flex-col size-full'\n },\n imports: [\n NgIcon,\n UpButtonDirective\n ],\n providers: [\n provideIcons({ matCloseRound }),\n ],\n template: `\n <div [class]=\"_headerClass()\">\n <div class=\"grow flex items-center gap-1\">\n @if (!this.hideCloseButton()) {\n <button\n upButton\n size=\"icon\"\n tabindex=\"-1\"\n variant=\"ghost\"\n class=\"shrink-0 rounded-full\"\n [disabled]=\"disabled()\"\n (click)=\"closed.emit()\"\n >\n <ng-icon size=\"20\" name=\"matCloseRound\" />\n </button>\n }\n\n <h3 class=\"grow select-none line-clamp-1 font-semibold text-lg\">\n {{ header() }}\n </h3>\n </div>\n\n <div class=\"shrink-0\">\n <ng-content select=\"[actions]\" />\n </div>\n </div>\n\n <div class=\"grow overflow-auto\">\n <ng-content />\n </div>\n `\n})\nexport class UpContentContainerComponent {\n\n /**\n * The title text displayed in the header.\n * If the text is too long, it will be truncated with an ellipsis.\n * @type {Signal<string>}\n * @default ''\n */\n public readonly header = input<string>('');\n\n /**\n * Disables the close/back button when set to true.\n * When disabled, the close button will not be shown in the header.\n * @type {Signal<boolean>}\n * @default false\n */\n public readonly disabled = input(false, { transform: booleanAttribute });\n\n /**\n * Hides the close/back button when set to true.\n * When hidden, the close button will not be shown in the header.\n * @type {Signal<boolean>}\n * @default false\n */\n public readonly hideCloseButton = input(false, { transform: booleanAttribute });\n\n /**\n * Event emitted when the user clicks the close button.\n * Typically used to handle closing a modal or navigating back.\n * @type {OutputEmitterRef<void>}\n */\n public readonly closed = output<void>();\n\n protected readonly _headerClass = computed(\n () => {\n return up(\n 'shrink-0 flex items-center py-2 gap-6 border-b border-[#e0e0e0]',\n this.hideCloseButton()? 'px-4' : 'pr-4 pl-1'\n );\n }\n );\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"unipin-angular-applet-containers.mjs","sources":["../../../projects/unipin-angular/containers/column-container/directives/lazy-route.directive.ts","../../../projects/unipin-angular/containers/applet-container/utils/provide-applet-config/provide-applet-config.util.ts","../../../projects/unipin-angular/containers/applet-container/utils/redirect-to-first-menu/redirect-to-first-menu.util.ts","../../../projects/unipin-angular/containers/applet-container/components/applet-container.component.ts","../../../projects/unipin-angular/containers/applet-container/components/applet-container.component.html","../../../projects/unipin-angular/containers/column-container/column-container.component.ts","../../../projects/unipin-angular/containers/content-container/content-container.component.ts","../../../projects/unipin-angular/containers/unipin-angular-applet-containers.ts"],"sourcesContent":["import { ComponentRef, Directive, OnInit, ViewContainerRef, inject, DestroyRef, input, reflectComponentType, ComponentMirror } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ActivatedRoute, NavigationEnd, Router, Route } from '@angular/router';\nimport { distinctUntilChanged, filter, isObservable, firstValueFrom } from 'rxjs';\n\n\n@Directive({\n exportAs: 'upLoadRoute',\n selector: '[upLoadRoute]'\n})\nexport class UpLazyRouteDirective implements OnInit {\n \n protected readonly router = inject(Router);\n protected readonly vcr = inject(ViewContainerRef);\n protected readonly route = inject(ActivatedRoute);\n protected readonly destroyRef = inject(DestroyRef);\n\n /**\n * Accepts a route config object containing `loadComponent`.\n */\n public readonly loadRoute = input.required<Pick<Route, 'loadComponent'>>();\n\n /**\n * Lifecycle hook that is called after the directive's data-bound properties have been initialized.\n * Dynamically loads the component using the `loadComponent` method and creates it within the directive's view container.\n */\n public ngOnInit(): void{\n if (!this.loadRoute().loadComponent) return;\n\n const result = this.loadRoute().loadComponent!();\n const load = isObservable(result)? firstValueFrom(result) : Promise.resolve(result);\n\n load.then(\n (m: any) => {\n const cmp = m.default?? m;\n \n const cr = this.vcr.createComponent(cmp);\n const mirror = reflectComponentType(cmp);\n \n this.setInput(cr, mirror);\n this.router.events.pipe(\n filter(\n (e): e is NavigationEnd => e instanceof NavigationEnd\n ),\n distinctUntilChanged(\n (prev, curr) => {\n return prev.urlAfterRedirects.split('#')[0] === curr.urlAfterRedirects.split('#')[0];\n }\n ),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe({\n next: () => this.setInput(cr, mirror)\n });\n }\n );\n }\n\n /**\n * Method to manually set Input to the child component, because component created by ViewContainerRef won't accept the input from route param directly.\n * @param { ComponentRef<any> } cr\n */\n protected setInput(cr: ComponentRef<any>, mirror: ComponentMirror<unknown> | null): void{\n const params = this.route.firstChild?.snapshot.params ?? {};\n\n if (Object.keys(params).length === 0) {\n return;\n }\n\n for (const key of Object.keys(params)) {\n if (key in cr.instance) {\n cr.setInput(key, params[key]);\n continue;\n }\n\n if (mirror) {\n const match = mirror.inputs.find(\n (i) => i.templateName === key\n );\n \n if (match) {\n cr.setInput(match.templateName, params[key]);\n }\n }\n }\n }\n}\n","import { InjectionToken, Provider } from '@angular/core';\nimport { AppletConfig } from '../../types/applet-config.type';\n\nexport const APPLET_CONFIG = new InjectionToken<AppletConfig>('APPLET_CONFIG');\n\nexport function provideAppletConfig(config: AppletConfig): Provider{\n \n return { \n provide: APPLET_CONFIG, \n useValue: config \n };\n}\n","import { forwardRef, inject } from '@angular/core';\nimport { RedirectFunction } from '@angular/router';\nimport { PermissionService } from '@unipin/angular-applet/auth';\nimport { AppletConfig } from '../../types/applet-config.type';\nimport { APPLET_CONFIG } from '../provide-applet-config/provide-applet-config.util';\n\n/**\n * Redirects the user to their first accessible menu route based on permissions.\n * @returns {RedirectFunction} The first allowed route\n */\nexport function redirectToFirstMenu(): ReturnType<RedirectFunction>{\n \n const { has } = inject(PermissionService);\n const { containers } = inject<AppletConfig>(\n () => forwardRef(() => APPLET_CONFIG)\n );\n\n const firstMenu = containers.find(\n ({ permissions }) => {\n if (!permissions) return true;\n\n const { codes, aggregator } = permissions;\n return codes[aggregator === 'AND'? 'every' : 'some']((code) => has(code));\n }\n );\n return firstMenu?.path?? containers[0].path;\n}\n","import { ChangeDetectionStrategy, Component, inject, signal } from '@angular/core';\nimport { RouterLink, RouterLinkActive } from '@angular/router';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { matChevronRightRound, matSettingsRound } from '@ng-icons/material-icons/round';\nimport { PermissionService } from '@unipin/angular-applet/auth';\nimport { UpButtonDirective } from '@unipin/angular-applet/buttons';\nimport { AppletConfig } from '../types/applet-config.type';\nimport { APPLET_CONFIG } from '../utils/provide-applet-config/provide-applet-config.util';\n\n\n@Component({\n selector: 'up-applet-container',\n templateUrl: './applet-container.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'flex size-full'\n },\n imports: [\n NgIcon,\n RouterLink,\n RouterLinkActive,\n UpButtonDirective,\n ],\n providers: [\n provideIcons(\n { \n matChevronRightRound, \n matSettingsRound \n }\n )\n ]\n})\nexport class AppletContainerComponent {\n\n public readonly config: AppletConfig = inject<AppletConfig>(APPLET_CONFIG); \n\n /**\n * A flag variable that used to control sidebar. When set the the value to true, the component will open the sidebar.\n * when set the value to false, the component will close the sidebar.\n * @type {boolean}\n */\n public readonly isExpanded = signal<boolean>(false);\n\n /**\n * A flag variable for indicates whether the sidebar menu is active or not in mobile view.\n * When set false the sidebar menu will be hidden\n * @type {boolean[]}\n */\n public readonly isMenuActive = signal<boolean>(false);\n\n /**\n * A flag variable that used to control sidebar menu. When set value to true, the component will hide the sidebar menu.\n * When set false, the component will show the sidebar menu.\n * @type {boolean[]}\n */\n public readonly isHidden = signal<boolean[]>(Array(this.config.containers.length).fill(true));\n\n constructor(\n protected readonly permissionService: PermissionService\n ) {\n this.isHidden.set(\n this.config.containers.map(\n ({ permissions }) => {\n if (!permissions) return false;\n \n if (permissions.aggregator === 'AND') {\n return !permissions.codes.every((code) => this.permissionService.has(code));\n }\n return !permissions.codes.some((code) => this.permissionService.has(code));\n }\n )\n );\n }\n\n /**\n * When the method is called, it will change the value of isExpanded to its opposite value. \n * If isExpanded is currently true, it will be set to false, and if it is currently false, it will be set to true. \n * This method is typically used to toggle the visibility of a side navigation menu.\n */\n public toggleSidenav(): void{\n this.isExpanded.update((v) => !v);\n }\n\n /**\n * Handles menu selection by dispatching a custom event.\n * This method is called when a sidebar menu item is selected.\n * It dispatches a custom 'menuEvent' with detail indicating the menu is inactive.\n * This event is typically used to close the sidebar menu.\n */\n public selectMenu(): void{\n dispatchEvent(\n new CustomEvent(\n 'menuEvent', \n { \n detail: { \n isActive: false \n } \n }\n )\n );\n }\n}\n","<nav \n class=\"shrink-0 h-full group flex flex-col transition-all ease-in-out border-r border-border max-md:w-0 max-md:z-10 max-md:absolute [&.expanded]:w-60\"\n [class.show]=\"isMenuActive()\"\n [class.expanded]=\"isExpanded()\"\n>\n <div class=\"shrink-0 p-2 border-b border-border flex items-center gap-2 relative\">\n <img \n class=\"rounded size-9 shrink-0\" \n [alt]=\"config.name\"\n [src]=\"config.icon\" \n />\n\n <div class=\"hidden group-[.expanded]:flex grow flex-col gap-0.5 select-none\">\n <div class=\"font-medium line-clamp-1 text-sm\">{{ config.name }}</div>\n \n <div class=\"text-muted-foreground font-medium text-xs\">\n v{{ config.version }}\n </div>\n </div>\n\n <button \n upButton\n size=\"icon\"\n variant=\"outline\"\n class=\"rounded-full absolute -right-5\"\n (click)=\"toggleSidenav()\"\n >\n <ng-icon \n size=\"18\" \n name=\"matChevronRightRound\" \n class=\"group-[.expanded]:rotate-180 transition-all ease-in-out\"\n />\n </button>\n </div>\n\n <div class=\"grow overflow-y-auto p-2 flex flex-col gap-1\">\n @for (c of config.containers; track $index) {\n <a \n upButton\n variant=\"ghost\"\n routerLinkActive=\"font-medium\"\n class=\"group-[.expanded]:w-full group-[.expanded]:justify-start\"\n [routerLink]=\"c.path\"\n [size]=\"!isExpanded()? 'icon' : 'default'\"\n (click)=\"selectMenu()\"\n >\n <ng-icon \n size=\"18\" \n [name]=\"c.icon\" \n />\n \n <span class=\"line-clamp-1 hidden group-[.expanded]:block\">\n {{ c.label }}\n </span>\n </a>\n }\n </div>\n\n @if (config.enabledSetting) {\n <div class=\"shrink-0 p-2 border-t border-border\">\n <a \n upButton\n variant=\"ghost\"\n routerLink=\"setting\" \n routerLinkActive=\"font-medium\"\n class=\"group-[.expanded]:w-full group-[.expanded]:justify-start\"\n [size]=\"!isExpanded()? 'icon' : 'default'\"\n (click)=\"selectMenu()\"\n >\n <ng-icon size=\"18\" name=\"matSettingsRound\" />\n <span class=\"line-clamp-1 hidden group-[.expanded]:block\">Setting</span>\n </a>\n </div>\n }\n</nav>\n\n<div class=\"grow overflow-y-auto overflow-x-hidden\">\n <ng-content />\n</div>\n","import { Component, HostListener, DestroyRef, signal, OnInit } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ActivatedRoute, NavigationEnd, Route, Router } from '@angular/router';\nimport { filter } from 'rxjs';\nimport { AngularSplitModule } from 'angular-split';\nimport { UpLazyRouteDirective } from './directives/lazy-route.directive';\n\n\n@Component({\n selector: 'up-column-container',\n host: {\n class: 'block size-full',\n },\n imports: [\n AngularSplitModule, \n UpLazyRouteDirective\n ],\n template: `\n <as-split \n unit=\"percent\" \n [gutterSize]=\"5\" \n [useTransition]=\"true\"\n >\n @for (a of areas(); track $index) {\n <as-split-area\n class=\"border-start\"\n [minSize]=\"20\"\n [size]=\"colSize()\"\n [visible]=\"a.visible\"\n [maxSize]=\"$index === areas().length - 1? 80 : null\"\n >\n <ng-container \n upLoadRoute\n [loadRoute]=\"a.route\" \n />\n </as-split-area>\n }\n </as-split>\n `,\n})\nexport class UpColumnContainerComponent implements OnInit {\n \n /**\n * An array of objects representing the columns, each containing a visibility flag and the associated route.\n * @type {{ visible: boolean, route: Route }[]}\n * @default {[]}\n */\n public readonly areas = signal<{ visible: boolean; route: Pick<Route, 'loadComponent'> }[]>([]);\n\n /**\n * The default size for the split area: 100 means it will be full width, and 50 means it will be divided in half.\n * This can be resizable with minimum width 20%\n */\n public readonly colSize = signal<number>(window.innerWidth <= 768? 100 : 50);\n\n /**\n * An object to keep track of the position of opened areas based on their route paths.\n * @type {{ [key: string]: number }}\n * @default {{}}\n */\n protected readonly openedArea: Record<string, number> = {};\n\n constructor(\n protected readonly router: Router,\n protected readonly destroyRef: DestroyRef,\n protected readonly activeRoute: ActivatedRoute\n ){ }\n\n /**\n * Lifecycle hook called after the component has been initialized.\n * Subscribes to router events, initializes columns based on the initial route, and sets up the first visible column.\n */\n public ngOnInit(): void{\n this.checkScreen();\n\n this.router.events.pipe(\n filter(\n (e): e is NavigationEnd => e instanceof NavigationEnd\n ),\n takeUntilDestroyed(this.destroyRef)\n ).subscribe({\n next: () => this.navigate()\n });\n\n const url: string | undefined = this.activeRoute.firstChild?.routeConfig?.path;\n const routeList: Route[] =(this.activeRoute.snapshot.routeConfig as any)._loadedRoutes;\n\n if (routeList?.length) {\n this.next(routeList[0]);\n\n for (let i = 1; i < routeList.length; i++) {\n if (\n url?.startsWith(\n routeList[i].path as string\n )\n ) {\n this.next(routeList[i]);\n }\n }\n }\n }\n\n /**\n * Event listener for the window resize event. Adjusts the default size of the split area based on the screen width.\n */\n @HostListener('window:resize')\n public checkScreen(): void{\n this.colSize.set(window.innerWidth <= 768? 100 : 50);\n }\n\n /**\n * Handles router navigation events and adjusts the display of columns accordingly.\n */\n protected navigate(): void{\n const route: Route = this.activeRoute.firstChild!.routeConfig!;\n const pos = this.openedArea[`r-${ route.path }`];\n\n if (pos <= this.areas().length) {\n this.previous(pos);\n return;\n }\n this.next(route);\n }\n\n /**\n * Adds a new column to the container and updates visibility based on the route navigation.\n * @param {Route} route - Contain next route.\n */\n protected next(route: Route): void{\n this.areas.update(\n (areas) => {\n if (\n this.colSize() === 100 &&\n areas.length >= 1\n ) {\n areas[areas.length - 1].visible = false;\n } else if (areas.length >= 2) {\n areas[areas.length - 2].visible = false;\n }\n\n const newAreas = [\n ...areas,\n { visible: true, route }\n ];\n\n this.openedArea[`r-${ route.path }`] = newAreas.length;\n return newAreas;\n }\n );\n }\n\n /**\n * Removes columns from the container based on the route navigation.\n * @param {number} pos - Contain position of the last active area index.\n */\n protected previous(pos: number): void{\n this.areas.update(\n (areas) => {\n const newAreas = areas.slice(0, pos);\n\n if (this.colSize() === 100 && newAreas.length) {\n newAreas[newAreas.length - 1].visible = true;\n return newAreas;\n }\n\n if (newAreas.length === 1) newAreas[0].visible = true;\n else if (newAreas.length >= 2) {\n newAreas[pos - 1].visible = true;\n newAreas[pos - 2].visible = true;\n }\n return newAreas;\n }\n );\n }\n}\n","import { Component, input, booleanAttribute, computed, output } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { matCloseRound } from '@ng-icons/material-icons/round';\nimport { up } from '@unipin/angular-applet/common';\nimport { UpButtonDirective } from '@unipin/angular-applet/buttons';\n\n\n@Component({\n selector: 'up-content-container',\n host: {\n class: 'flex flex-col size-full'\n },\n imports: [\n NgIcon,\n UpButtonDirective\n ],\n providers: [\n provideIcons({ matCloseRound }),\n ],\n template: `\n <div [class]=\"_headerClass()\">\n <div class=\"grow flex items-center gap-1\">\n @if (!this.hideCloseButton()) {\n <button\n upButton\n size=\"icon\"\n tabindex=\"-1\"\n variant=\"ghost\"\n class=\"shrink-0 rounded-full\"\n [disabled]=\"disabled()\"\n (click)=\"closed.emit()\"\n >\n <ng-icon size=\"20\" name=\"matCloseRound\" />\n </button>\n }\n\n <h3 class=\"grow select-none line-clamp-1 font-semibold text-lg\">\n {{ header() }}\n </h3>\n </div>\n\n <div class=\"shrink-0\">\n <ng-content select=\"[actions]\" />\n </div>\n </div>\n\n <div class=\"grow overflow-auto\">\n <ng-content />\n </div>\n `\n})\nexport class UpContentContainerComponent {\n\n /**\n * The title text displayed in the header.\n * If the text is too long, it will be truncated with an ellipsis.\n * @type {Signal<string>}\n * @default ''\n */\n public readonly header = input<string>('');\n\n /**\n * Disables the close/back button when set to true.\n * When disabled, the close button will not be shown in the header.\n * @type {Signal<boolean>}\n * @default false\n */\n public readonly disabled = input(false, { transform: booleanAttribute });\n\n /**\n * Hides the close/back button when set to true.\n * When hidden, the close button will not be shown in the header.\n * @type {Signal<boolean>}\n * @default false\n */\n public readonly hideCloseButton = input(false, { transform: booleanAttribute });\n\n /**\n * Event emitted when the user clicks the close button.\n * Typically used to handle closing a modal or navigating back.\n * @type {OutputEmitterRef<void>}\n */\n public readonly closed = output<void>();\n\n protected readonly _headerClass = computed(\n () => {\n return up(\n 'shrink-0 flex items-center py-2 gap-6 border-b border-[#e0e0e0]',\n this.hideCloseButton()? 'px-4' : 'pr-4 pl-1'\n );\n }\n );\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":";;;;;;;;;;;;;;;MAUa,oBAAoB,CAAA;AAJjC,IAAA,WAAA,GAAA;AAMqB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACvB,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC9B,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC;AAC9B,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAElD;;AAEG;AACa,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,QAAQ,+EAAgC;AAkE3E,IAAA;AAhEC;;;AAGG;IACI,QAAQ,GAAA;AACb,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,aAAa;YAAE;QAErC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,aAAc,EAAE;QAChD,MAAM,IAAI,GAAG,YAAY,CAAC,MAAM,CAAC,GAAE,cAAc,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;AAEnF,QAAA,IAAI,CAAC,IAAI,CACP,CAAC,CAAM,KAAI;AACT,YAAA,MAAM,GAAG,GAAG,CAAC,CAAC,OAAO,IAAG,CAAC;YAEzB,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC;AACxC,YAAA,MAAM,MAAM,GAAG,oBAAoB,CAAC,GAAG,CAAC;AAExC,YAAA,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;YACzB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CACrB,MAAM,CACJ,CAAC,CAAC,KAAyB,CAAC,YAAY,aAAa,CACtD,EACD,oBAAoB,CAClB,CAAC,IAAI,EAAE,IAAI,KAAI;gBACb,OAAO,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACtF,CAAC,CACF,EACD,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AAEpC,iBAAA,SAAS,CAAC;gBACT,IAAI,EAAE,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM;AACrC,aAAA,CAAC;AACJ,QAAA,CAAC,CACF;IACH;AAEA;;;AAGG;IACO,QAAQ,CAAC,EAAqB,EAAE,MAAuC,EAAA;AAC/E,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,IAAI,EAAE;QAE3D,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;YACpC;QACF;QAEA,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AACrC,YAAA,IAAI,GAAG,IAAI,EAAE,CAAC,QAAQ,EAAE;gBACtB,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC7B;YACF;YAEA,IAAI,MAAM,EAAE;AACV,gBAAA,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAC9B,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,KAAK,GAAG,CAC9B;gBAED,IAAI,KAAK,EAAE;AACT,oBAAA,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC9C;YACF;QACF;IACF;+GA3EW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAJhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,aAAa;AACvB,oBAAA,QAAQ,EAAE;AACX,iBAAA;;;MCNY,aAAa,GAAG,IAAI,cAAc,CAAe,eAAe;AAEvE,SAAU,mBAAmB,CAAC,MAAoB,EAAA;IAEtD,OAAO;AACL,QAAA,OAAO,EAAE,aAAa;AACtB,QAAA,QAAQ,EAAE;KACX;AACH;;ACLA;;;AAGG;SACa,mBAAmB,GAAA;IAEjC,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC,iBAAiB,CAAC;AACzC,IAAA,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAC3B,MAAM,UAAU,CAAC,MAAM,aAAa,CAAC,CACtC;IAED,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAC/B,CAAC,EAAE,WAAW,EAAE,KAAI;AAClB,QAAA,IAAI,CAAC,WAAW;AAAE,YAAA,OAAO,IAAI;AAE7B,QAAA,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,WAAW;QACzC,OAAO,KAAK,CAAC,UAAU,KAAK,KAAK,GAAE,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC;AAC3E,IAAA,CAAC,CACF;IACD,OAAO,SAAS,EAAE,IAAI,IAAG,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI;AAC7C;;MCMa,wBAAwB,CAAA;AAyBnC,IAAA,WAAA,CACqB,iBAAoC,EAAA;QAApC,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;AAxBtB,QAAA,IAAA,CAAA,MAAM,GAAiB,MAAM,CAAe,aAAa,CAAC;AAE1E;;;;AAIG;AACa,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAU,KAAK,iFAAC;AAEnD;;;;AAIG;AACa,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAU,KAAK,mFAAC;AAErD;;;;AAIG;AACa,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAY,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,+EAAC;AAK3F,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CACf,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CACxB,CAAC,EAAE,WAAW,EAAE,KAAI;AAClB,YAAA,IAAI,CAAC,WAAW;AAAE,gBAAA,OAAO,KAAK;AAE9B,YAAA,IAAI,WAAW,CAAC,UAAU,KAAK,KAAK,EAAE;gBACpC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC7E;YACA,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC5E,CAAC,CACF,CACF;IACH;AAEA;;;;AAIG;IACI,aAAa,GAAA;AAClB,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IACnC;AAEA;;;;;AAKG;IACI,UAAU,GAAA;AACf,QAAA,aAAa,CACX,IAAI,WAAW,CACb,WAAW,EACX;AACE,YAAA,MAAM,EAAE;AACN,gBAAA,QAAQ,EAAE;AACX;AACF,SAAA,CACF,CACF;IACH;+GApEW,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,SAAA,EATxB;AACT,YAAA,YAAY,CACV;gBACE,oBAAoB;gBACpB;aACD;SAEJ,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC9BH,kxFA+EA,4CD7DI,MAAM,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,KAAA,EAAA,MAAA,EAAA,aAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACN,UAAU,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACV,gBAAgB,8MAChB,iBAAiB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAWR,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAtBpC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,EAAA,eAAA,EAEd,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACJ,wBAAA,KAAK,EAAE;qBACR,EAAA,OAAA,EACQ;wBACP,MAAM;wBACN,UAAU;wBACV,gBAAgB;wBAChB,iBAAiB;qBAClB,EAAA,SAAA,EACU;AACT,wBAAA,YAAY,CACV;4BACE,oBAAoB;4BACpB;yBACD;AAEJ,qBAAA,EAAA,QAAA,EAAA,kxFAAA,EAAA;;;MEUU,0BAA0B,CAAA;AAsBrC,IAAA,WAAA,CACqB,MAAc,EACd,UAAsB,EACtB,WAA2B,EAAA;QAF3B,IAAA,CAAA,MAAM,GAAN,MAAM;QACN,IAAA,CAAA,UAAU,GAAV,UAAU;QACV,IAAA,CAAA,WAAW,GAAX,WAAW;AAvBhC;;;;AAIG;AACa,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAA8D,EAAE,4EAAC;AAE/F;;;AAGG;AACa,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAS,MAAM,CAAC,UAAU,IAAI,GAAG,GAAE,GAAG,GAAG,EAAE,8EAAC;AAE1E;;;;AAIC;QACgB,IAAA,CAAA,UAAU,GAA2B,EAAE;IAMvD;AAEH;;;AAGG;IACI,QAAQ,GAAA;QACb,IAAI,CAAC,WAAW,EAAE;AAElB,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CACrB,MAAM,CACJ,CAAC,CAAC,KAAyB,CAAC,YAAY,aAAa,CACtD,EACD,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CACpC,CAAC,SAAS,CAAC;AACV,YAAA,IAAI,EAAE,MAAM,IAAI,CAAC,QAAQ;AAC1B,SAAA,CAAC;QAEF,MAAM,GAAG,GAAuB,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,WAAW,EAAE,IAAI;QAC9E,MAAM,SAAS,GAAY,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,WAAmB,CAAC,aAAa;AAEtF,QAAA,IAAI,SAAS,EAAE,MAAM,EAAE;YACrB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAEvB,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACzC,gBAAA,IACE,GAAG,EAAE,UAAU,CACb,SAAS,CAAC,CAAC,CAAC,CAAC,IAAc,CAC5B,EACD;oBACA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;gBACzB;YACF;QACF;IACF;AAEA;;AAEG;IAEI,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,IAAI,GAAG,GAAE,GAAG,GAAG,EAAE,CAAC;IACtD;AAEA;;AAEG;IACO,QAAQ,GAAA;QAChB,MAAM,KAAK,GAAU,IAAI,CAAC,WAAW,CAAC,UAAW,CAAC,WAAY;AAC9D,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,CAAA,EAAA,EAAM,KAAK,CAAC,IAAK,CAAA,CAAE,CAAC;QAEhD,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE;AAC9B,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;YAClB;QACF;AACA,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;IAClB;AAEA;;;AAGG;AACO,IAAA,IAAI,CAAC,KAAY,EAAA;QACzB,IAAI,CAAC,KAAK,CAAC,MAAM,CACf,CAAC,KAAK,KAAI;AACR,YAAA,IACE,IAAI,CAAC,OAAO,EAAE,KAAK,GAAG;AACtB,gBAAA,KAAK,CAAC,MAAM,IAAI,CAAC,EACjB;gBACA,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,OAAO,GAAG,KAAK;YACzC;AAAO,iBAAA,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE;gBAC5B,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,OAAO,GAAG,KAAK;YACzC;AAEA,YAAA,MAAM,QAAQ,GAAG;AACf,gBAAA,GAAG,KAAK;AACR,gBAAA,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK;aACvB;AAED,YAAA,IAAI,CAAC,UAAU,CAAC,CAAA,EAAA,EAAM,KAAK,CAAC,IAAK,CAAA,CAAE,CAAC,GAAG,QAAQ,CAAC,MAAM;AACtD,YAAA,OAAO,QAAQ;AACjB,QAAA,CAAC,CACF;IACH;AAEA;;;AAGG;AACO,IAAA,QAAQ,CAAC,GAAW,EAAA;QAC5B,IAAI,CAAC,KAAK,CAAC,MAAM,CACf,CAAC,KAAK,KAAI;YACR,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;YAEpC,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,GAAG,IAAI,QAAQ,CAAC,MAAM,EAAE;gBAC7C,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,OAAO,GAAG,IAAI;AAC5C,gBAAA,OAAO,QAAQ;YACjB;AAEA,YAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;AAAE,gBAAA,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,IAAI;AAChD,iBAAA,IAAI,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE;gBAC7B,QAAQ,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,OAAO,GAAG,IAAI;gBAChC,QAAQ,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,OAAO,GAAG,IAAI;YAClC;AACA,YAAA,OAAO,QAAQ;AACjB,QAAA,CAAC,CACF;IACH;+GArIW,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,eAAA,EAAA,eAAA,EAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAvB3B;;;;;;;;;;;;;;;;;;;;;GAqBT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAxBC,kBAAkB,4iBAClB,oBAAoB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAyBX,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAhCtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,iBAAiB;AACzB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,kBAAkB;wBAClB;AACD,qBAAA;AACD,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;AAqBT,EAAA,CAAA;AACF,iBAAA;;sBAkEE,YAAY;uBAAC,eAAe;;;MCtDlB,2BAA2B,CAAA;AA5CxC,IAAA,WAAA,GAAA;AA8CE;;;;;AAKG;AACa,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAS,EAAE,6EAAC;AAE1C;;;;;AAKG;QACa,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAExE;;;;;AAKG;QACa,IAAA,CAAA,eAAe,GAAG,KAAK,CAAC,KAAK,uFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAE/E;;;;AAIG;QACa,IAAA,CAAA,MAAM,GAAG,MAAM,EAAQ;AAEpB,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CACxC,MAAK;AACH,YAAA,OAAO,EAAE,CACP,iEAAiE,EACjE,IAAI,CAAC,eAAe,EAAE,GAAE,MAAM,GAAG,WAAW,CAC7C;AACH,QAAA,CAAC,mFACF;AACF,IAAA;+GAzCY,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,yBAAA,EAAA,EAAA,SAAA,EAnC3B;AACT,YAAA,YAAY,CAAC,EAAE,aAAa,EAAE,CAAC;SAChC,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EACS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EApCC,MAAM,6GACN,iBAAiB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAqCR,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBA5CvC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE;AACR,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,MAAM;wBACN;AACD,qBAAA;AACD,oBAAA,SAAS,EAAE;AACT,wBAAA,YAAY,CAAC,EAAE,aAAa,EAAE,CAAC;AAChC,qBAAA;AACD,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BT,EAAA;AACF,iBAAA;;;AClDD;;AAEG;;;;"}
|