@unipin/angular-applet 21.0.1 → 21.1.2
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 +334 -37
- package/common/assets/styles/theme.css +3 -0
- package/fesm2022/unipin-angular-applet-accordion.mjs +30 -30
- package/fesm2022/unipin-angular-applet-accordion.mjs.map +1 -1
- package/fesm2022/unipin-angular-applet-alert-dialog.mjs +92 -93
- package/fesm2022/unipin-angular-applet-alert-dialog.mjs.map +1 -1
- package/fesm2022/unipin-angular-applet-alert.mjs +16 -16
- package/fesm2022/unipin-angular-applet-alert.mjs.map +1 -1
- package/fesm2022/unipin-angular-applet-approval.mjs +129 -0
- package/fesm2022/unipin-angular-applet-approval.mjs.map +1 -0
- package/fesm2022/unipin-angular-applet-auth.mjs +45 -26
- package/fesm2022/unipin-angular-applet-auth.mjs.map +1 -1
- package/fesm2022/unipin-angular-applet-avatar.mjs +6 -6
- package/fesm2022/unipin-angular-applet-avatar.mjs.map +1 -1
- package/fesm2022/unipin-angular-applet-badge.mjs +6 -6
- package/fesm2022/unipin-angular-applet-badge.mjs.map +1 -1
- package/fesm2022/unipin-angular-applet-buttons.mjs +13 -17
- package/fesm2022/unipin-angular-applet-buttons.mjs.map +1 -1
- package/fesm2022/unipin-angular-applet-calendar.mjs +25 -25
- package/fesm2022/unipin-angular-applet-calendar.mjs.map +1 -1
- package/fesm2022/unipin-angular-applet-collapsible.mjs +17 -17
- package/fesm2022/unipin-angular-applet-collapsible.mjs.map +1 -1
- package/fesm2022/unipin-angular-applet-common.mjs +60 -23
- package/fesm2022/unipin-angular-applet-common.mjs.map +1 -1
- package/fesm2022/unipin-angular-applet-containers.mjs +22 -22
- package/fesm2022/unipin-angular-applet-containers.mjs.map +1 -1
- package/fesm2022/unipin-angular-applet-dialog.mjs +62 -73
- package/fesm2022/unipin-angular-applet-dialog.mjs.map +1 -1
- package/fesm2022/unipin-angular-applet-forms.mjs +394 -152
- package/fesm2022/unipin-angular-applet-forms.mjs.map +1 -1
- package/fesm2022/unipin-angular-applet-froala.mjs +10 -12
- package/fesm2022/unipin-angular-applet-froala.mjs.map +1 -1
- package/fesm2022/unipin-angular-applet-infinite-scroll.mjs +5 -5
- package/fesm2022/unipin-angular-applet-infinite-scroll.mjs.map +1 -1
- package/fesm2022/unipin-angular-applet-json-viewer.mjs +8 -8
- package/fesm2022/unipin-angular-applet-json-viewer.mjs.map +1 -1
- package/fesm2022/unipin-angular-applet-kbd.mjs +32 -0
- package/fesm2022/unipin-angular-applet-kbd.mjs.map +1 -0
- package/fesm2022/unipin-angular-applet-loading-dialog.mjs +8 -8
- package/fesm2022/unipin-angular-applet-loading-dialog.mjs.map +1 -1
- package/fesm2022/unipin-angular-applet-markdown.mjs +19 -21
- package/fesm2022/unipin-angular-applet-markdown.mjs.map +1 -1
- package/fesm2022/unipin-angular-applet-popover.mjs +21 -25
- package/fesm2022/unipin-angular-applet-popover.mjs.map +1 -1
- package/fesm2022/unipin-angular-applet-progress-bar.mjs +8 -8
- package/fesm2022/unipin-angular-applet-progress-bar.mjs.map +1 -1
- package/fesm2022/unipin-angular-applet-skeleton.mjs +5 -5
- package/fesm2022/unipin-angular-applet-skeleton.mjs.map +1 -1
- package/fesm2022/unipin-angular-applet-spinner.mjs +6 -6
- package/fesm2022/unipin-angular-applet-spinner.mjs.map +1 -1
- package/fesm2022/unipin-angular-applet-swipeable.mjs +26 -26
- package/fesm2022/unipin-angular-applet-swipeable.mjs.map +1 -1
- package/fesm2022/unipin-angular-applet-tabs.mjs +22 -22
- package/fesm2022/unipin-angular-applet-tabs.mjs.map +1 -1
- package/fesm2022/unipin-angular-applet-tooltip.mjs +5 -5
- package/fesm2022/unipin-angular-applet-tooltip.mjs.map +1 -1
- package/package.json +9 -1
- package/types/unipin-angular-applet-alert-dialog.d.ts +3 -1
- package/types/unipin-angular-applet-approval.d.ts +55 -0
- package/types/unipin-angular-applet-common.d.ts +12 -2
- package/types/unipin-angular-applet-dialog.d.ts +1 -2
- package/types/unipin-angular-applet-forms.d.ts +70 -2
- package/types/unipin-angular-applet-kbd.d.ts +11 -0
|
@@ -64,10 +64,10 @@ class UpPricePipe {
|
|
|
64
64
|
transform(value, magnifyValue = 1, format = 'number') {
|
|
65
65
|
return formatPrice(+value, +magnifyValue, format);
|
|
66
66
|
}
|
|
67
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.
|
|
68
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.0.
|
|
67
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: UpPricePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
68
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.0.2", ngImport: i0, type: UpPricePipe, isStandalone: true, name: "upPrice" }); }
|
|
69
69
|
}
|
|
70
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.
|
|
70
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: UpPricePipe, decorators: [{
|
|
71
71
|
type: Pipe,
|
|
72
72
|
args: [{
|
|
73
73
|
pure: true,
|
|
@@ -95,10 +95,10 @@ class UpInitialPipe {
|
|
|
95
95
|
transform(value) {
|
|
96
96
|
return formatInitial(value);
|
|
97
97
|
}
|
|
98
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.
|
|
99
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.0.
|
|
98
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: UpInitialPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
99
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.0.2", ngImport: i0, type: UpInitialPipe, isStandalone: true, name: "upInitial" }); }
|
|
100
100
|
}
|
|
101
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.
|
|
101
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: UpInitialPipe, decorators: [{
|
|
102
102
|
type: Pipe,
|
|
103
103
|
args: [{
|
|
104
104
|
pure: true,
|
|
@@ -123,10 +123,10 @@ class UpLinkifyPipe {
|
|
|
123
123
|
transform(value) {
|
|
124
124
|
return formatLinkify(value, this.sanitizer);
|
|
125
125
|
}
|
|
126
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.
|
|
127
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.0.
|
|
126
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: UpLinkifyPipe, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
127
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.0.2", ngImport: i0, type: UpLinkifyPipe, isStandalone: true, name: "upLinkify" }); }
|
|
128
128
|
}
|
|
129
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.
|
|
129
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: UpLinkifyPipe, decorators: [{
|
|
130
130
|
type: Pipe,
|
|
131
131
|
args: [{
|
|
132
132
|
pure: true,
|
|
@@ -147,10 +147,10 @@ class UpCapitalizaPipe {
|
|
|
147
147
|
transform(value, onlyFirstWord = true) {
|
|
148
148
|
return formatCapitalize(value, onlyFirstWord);
|
|
149
149
|
}
|
|
150
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.
|
|
151
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.0.
|
|
150
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: UpCapitalizaPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
151
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.0.2", ngImport: i0, type: UpCapitalizaPipe, isStandalone: true, name: "upCapitalize" }); }
|
|
152
152
|
}
|
|
153
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.
|
|
153
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: UpCapitalizaPipe, decorators: [{
|
|
154
154
|
type: Pipe,
|
|
155
155
|
args: [{
|
|
156
156
|
pure: true,
|
|
@@ -225,10 +225,10 @@ class CountryService {
|
|
|
225
225
|
});
|
|
226
226
|
}));
|
|
227
227
|
}
|
|
228
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.
|
|
229
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.
|
|
228
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: CountryService, deps: [{ token: i1$1.GqlParser }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
229
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: CountryService, providedIn: 'root' }); }
|
|
230
230
|
}
|
|
231
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.
|
|
231
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: CountryService, decorators: [{
|
|
232
232
|
type: Injectable,
|
|
233
233
|
args: [{
|
|
234
234
|
providedIn: 'root'
|
|
@@ -275,10 +275,47 @@ class CurrencyService {
|
|
|
275
275
|
});
|
|
276
276
|
}));
|
|
277
277
|
}
|
|
278
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.
|
|
279
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.
|
|
278
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: CurrencyService, deps: [{ token: i1$1.GqlParser }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
279
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: CurrencyService, providedIn: 'root' }); }
|
|
280
280
|
}
|
|
281
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.
|
|
281
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: CurrencyService, decorators: [{
|
|
282
|
+
type: Injectable,
|
|
283
|
+
args: [{
|
|
284
|
+
providedIn: 'root'
|
|
285
|
+
}]
|
|
286
|
+
}], ctorParameters: () => [{ type: i1$1.GqlParser }] });
|
|
287
|
+
|
|
288
|
+
class RateGroupCodeService {
|
|
289
|
+
constructor(gql) {
|
|
290
|
+
this.gql = gql;
|
|
291
|
+
}
|
|
292
|
+
query(input = { key: '', page: 0, pageSize: 100 }) {
|
|
293
|
+
return this.gql.query({
|
|
294
|
+
operationName: 'QueryRateGroupCode',
|
|
295
|
+
variables: {
|
|
296
|
+
input
|
|
297
|
+
},
|
|
298
|
+
query: `
|
|
299
|
+
query QueryRateGroupCode($input: RateGroupCodeCriteria) {
|
|
300
|
+
productMsSearchRateGroupCodes(input: $input) {
|
|
301
|
+
data
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
`,
|
|
305
|
+
}).pipe(map((res) => ({
|
|
306
|
+
data: res.data ?? null,
|
|
307
|
+
errors: res.errors ?? []
|
|
308
|
+
})), catchError((err) => {
|
|
309
|
+
return of({
|
|
310
|
+
data: null,
|
|
311
|
+
errors: Array.isArray(err) ? err : [err]
|
|
312
|
+
});
|
|
313
|
+
}));
|
|
314
|
+
}
|
|
315
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: RateGroupCodeService, deps: [{ token: i1$1.GqlParser }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
316
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: RateGroupCodeService, providedIn: 'root' }); }
|
|
317
|
+
}
|
|
318
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: RateGroupCodeService, decorators: [{
|
|
282
319
|
type: Injectable,
|
|
283
320
|
args: [{
|
|
284
321
|
providedIn: 'root'
|
|
@@ -288,7 +325,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0", ngImpor
|
|
|
288
325
|
class UpFileDragNDropDirective {
|
|
289
326
|
constructor(el) {
|
|
290
327
|
this.el = el;
|
|
291
|
-
this.draggedClass = input('', ...(ngDevMode ?
|
|
328
|
+
this.draggedClass = input('', { ...(ngDevMode ? { debugName: "draggedClass" } : {}) });
|
|
292
329
|
this.fileDropped = output();
|
|
293
330
|
}
|
|
294
331
|
ngOnInit() {
|
|
@@ -313,10 +350,10 @@ class UpFileDragNDropDirective {
|
|
|
313
350
|
this.fileDropped.emit(files);
|
|
314
351
|
}
|
|
315
352
|
}
|
|
316
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.
|
|
317
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.0.
|
|
353
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: UpFileDragNDropDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
354
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.0.2", type: UpFileDragNDropDirective, isStandalone: true, selector: "[upFileDragNDrop]", inputs: { draggedClass: { classPropertyName: "draggedClass", publicName: "draggedClass", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { fileDropped: "fileDropped" }, host: { listeners: { "dragover": "dragOver($event)", "dragleave": "leave($event)", "drop": "drop($event)" } }, exportAs: ["upFileDragNDrop"], ngImport: i0 }); }
|
|
318
355
|
}
|
|
319
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.
|
|
356
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: UpFileDragNDropDirective, decorators: [{
|
|
320
357
|
type: Directive,
|
|
321
358
|
args: [{
|
|
322
359
|
standalone: true,
|
|
@@ -338,5 +375,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0", ngImpor
|
|
|
338
375
|
* Generated bundle index. Do not edit.
|
|
339
376
|
*/
|
|
340
377
|
|
|
341
|
-
export { CountryService, CurrencyService, UpCapitalizaPipe, UpFileDragNDropDirective, UpInitialPipe, UpLinkifyPipe, UpPricePipe, compressImage, formatCapitalize, formatInitial, formatLinkify, formatPrice, generateContrastColor, up };
|
|
378
|
+
export { CountryService, CurrencyService, RateGroupCodeService, UpCapitalizaPipe, UpFileDragNDropDirective, UpInitialPipe, UpLinkifyPipe, UpPricePipe, compressImage, formatCapitalize, formatInitial, formatLinkify, formatPrice, generateContrastColor, up };
|
|
342
379
|
//# sourceMappingURL=unipin-angular-applet-common.mjs.map
|
|
@@ -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/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 { 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@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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"}
|
|
@@ -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 ?
|
|
25
|
+
this.loadRoute = input.required({ ...(ngDevMode ? { debugName: "loadRoute" } : {}) });
|
|
26
26
|
}
|
|
27
27
|
/**
|
|
28
28
|
* Lifecycle hook that is called after the directive's data-bound properties have been initialized.
|
|
@@ -68,10 +68,10 @@ class UpLazyRouteDirective {
|
|
|
68
68
|
}
|
|
69
69
|
}
|
|
70
70
|
}
|
|
71
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.
|
|
72
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.0.
|
|
71
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: UpLazyRouteDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
72
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.0.2", 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.0.
|
|
74
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: UpLazyRouteDirective, decorators: [{
|
|
75
75
|
type: Directive,
|
|
76
76
|
args: [{
|
|
77
77
|
standalone: true,
|
|
@@ -113,19 +113,19 @@ class AppletContainerComponent {
|
|
|
113
113
|
* when set the value to false, the component will close the sidebar.
|
|
114
114
|
* @type {boolean}
|
|
115
115
|
*/
|
|
116
|
-
this.isExpanded = signal(false, ...(ngDevMode ?
|
|
116
|
+
this.isExpanded = signal(false, { ...(ngDevMode ? { debugName: "isExpanded" } : {}) });
|
|
117
117
|
/**
|
|
118
118
|
* A flag variable for indicates whether the sidebar menu is active or not in mobile view.
|
|
119
119
|
* When set false the sidebar menu will be hidden
|
|
120
120
|
* @type {boolean[]}
|
|
121
121
|
*/
|
|
122
|
-
this.isMenuActive = signal(false, ...(ngDevMode ?
|
|
122
|
+
this.isMenuActive = signal(false, { ...(ngDevMode ? { debugName: "isMenuActive" } : {}) });
|
|
123
123
|
/**
|
|
124
124
|
* A flag variable that used to control sidebar menu. When set value to true, the component will hide the sidebar menu.
|
|
125
125
|
* When set false, the component will show the sidebar menu.
|
|
126
126
|
* @type {boolean[]}
|
|
127
127
|
*/
|
|
128
|
-
this.isHidden = signal(Array(this.config.containers.length).fill(true), ...(ngDevMode ?
|
|
128
|
+
this.isHidden = signal(Array(this.config.containers.length).fill(true), { ...(ngDevMode ? { debugName: "isHidden" } : {}) });
|
|
129
129
|
this.isHidden.set(this.config.containers.map(({ permissions }) => {
|
|
130
130
|
if (!permissions)
|
|
131
131
|
return false;
|
|
@@ -156,15 +156,15 @@ class AppletContainerComponent {
|
|
|
156
156
|
}
|
|
157
157
|
}));
|
|
158
158
|
}
|
|
159
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.
|
|
160
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.
|
|
159
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: AppletContainerComponent, deps: [{ token: i1.PermissionService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
160
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.2", type: AppletContainerComponent, isStandalone: true, selector: "up-applet-container", host: { classAttribute: "flex size-full" }, providers: [
|
|
161
161
|
provideIcons({
|
|
162
162
|
matChevronRightRound,
|
|
163
163
|
matSettingsRound
|
|
164
164
|
})
|
|
165
165
|
], 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
166
|
}
|
|
167
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.
|
|
167
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: AppletContainerComponent, decorators: [{
|
|
168
168
|
type: Component,
|
|
169
169
|
args: [{ standalone: true, selector: 'up-applet-container', changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
170
170
|
class: 'flex size-full'
|
|
@@ -191,12 +191,12 @@ class UpColumnContainerComponent {
|
|
|
191
191
|
* @type {{ visible: boolean, route: Route }[]}
|
|
192
192
|
* @default {[]}
|
|
193
193
|
*/
|
|
194
|
-
this.areas = signal([], ...(ngDevMode ?
|
|
194
|
+
this.areas = signal([], { ...(ngDevMode ? { debugName: "areas" } : {}) });
|
|
195
195
|
/**
|
|
196
196
|
* The default size for the split area: 100 means it will be full width, and 50 means it will be divided in half.
|
|
197
197
|
* This can be resizable with minimum width 20%
|
|
198
198
|
*/
|
|
199
|
-
this.colSize = signal(window.innerWidth <= 768 ? 100 : 50, ...(ngDevMode ?
|
|
199
|
+
this.colSize = signal(window.innerWidth <= 768 ? 100 : 50, { ...(ngDevMode ? { debugName: "colSize" } : {}) });
|
|
200
200
|
/**
|
|
201
201
|
* An object to keep track of the position of opened areas based on their route paths.
|
|
202
202
|
* @type {{ [key: string]: number }}
|
|
@@ -283,8 +283,8 @@ class UpColumnContainerComponent {
|
|
|
283
283
|
return newAreas;
|
|
284
284
|
});
|
|
285
285
|
}
|
|
286
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.
|
|
287
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.
|
|
286
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: UpColumnContainerComponent, deps: [{ token: i1$1.Router }, { token: i0.DestroyRef }, { token: i1$1.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
287
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.2", type: UpColumnContainerComponent, isStandalone: true, selector: "up-column-container", host: { listeners: { "window:resize": "checkScreen()" }, classAttribute: "block size-full" }, ngImport: i0, template: `
|
|
288
288
|
<as-split
|
|
289
289
|
unit="percent"
|
|
290
290
|
[gutterSize]="5"
|
|
@@ -307,7 +307,7 @@ class UpColumnContainerComponent {
|
|
|
307
307
|
</as-split>
|
|
308
308
|
`, 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
309
|
}
|
|
310
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.
|
|
310
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: UpColumnContainerComponent, decorators: [{
|
|
311
311
|
type: Component,
|
|
312
312
|
args: [{
|
|
313
313
|
standalone: true,
|
|
@@ -355,21 +355,21 @@ class UpContentContainerComponent {
|
|
|
355
355
|
* @type {Signal<string>}
|
|
356
356
|
* @default ''
|
|
357
357
|
*/
|
|
358
|
-
this.header = input('', ...(ngDevMode ?
|
|
358
|
+
this.header = input('', { ...(ngDevMode ? { debugName: "header" } : {}) });
|
|
359
359
|
/**
|
|
360
360
|
* Disables the close/back button when set to true.
|
|
361
361
|
* When disabled, the close button will not be shown in the header.
|
|
362
362
|
* @type {Signal<boolean>}
|
|
363
363
|
* @default false
|
|
364
364
|
*/
|
|
365
|
-
this.disabled = input(false, ...(ngDevMode ?
|
|
365
|
+
this.disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : {}), transform: booleanAttribute });
|
|
366
366
|
/**
|
|
367
367
|
* Hides the close/back button when set to true.
|
|
368
368
|
* When hidden, the close button will not be shown in the header.
|
|
369
369
|
* @type {Signal<boolean>}
|
|
370
370
|
* @default false
|
|
371
371
|
*/
|
|
372
|
-
this.hideCloseButton = input(false, ...(ngDevMode ?
|
|
372
|
+
this.hideCloseButton = input(false, { ...(ngDevMode ? { debugName: "hideCloseButton" } : {}), transform: booleanAttribute });
|
|
373
373
|
/**
|
|
374
374
|
* Event emitted when the user clicks the close button.
|
|
375
375
|
* Typically used to handle closing a modal or navigating back.
|
|
@@ -378,10 +378,10 @@ class UpContentContainerComponent {
|
|
|
378
378
|
this.closed = output();
|
|
379
379
|
this._headerClass = computed(() => {
|
|
380
380
|
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 ?
|
|
381
|
+
}, { ...(ngDevMode ? { debugName: "_headerClass" } : {}) });
|
|
382
382
|
}
|
|
383
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.
|
|
384
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.
|
|
383
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: UpContentContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
384
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.2", 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
385
|
provideIcons({ matCloseRound }),
|
|
386
386
|
], ngImport: i0, template: `
|
|
387
387
|
<div [class]="_headerClass()">
|
|
@@ -415,7 +415,7 @@ class UpContentContainerComponent {
|
|
|
415
415
|
</div>
|
|
416
416
|
`, 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
417
|
}
|
|
418
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.
|
|
418
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: UpContentContainerComponent, decorators: [{
|
|
419
419
|
type: Component,
|
|
420
420
|
args: [{
|
|
421
421
|
standalone: true,
|
|
@@ -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@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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"}
|